Я настроил сервер Horde Groupware Webmail Edition, в основном для использования веб-почты (предоставляется хостинг-провайдером) и календарь (предоставляется нами). Аутентификация настраивается с использованием аутентификации IMAP через компонент IMP (веб-почта):
config / conf.php
: $conf['auth']['params']['app'] = 'imp';
$conf['auth']['driver'] = 'application';
config / backends.local.php
: $servers['imap']['hostspec'] = 'sub5.mail.dreamhost.com';
$servers['imap']['hordeauth'] = 'full';
// ... (port, secure, etc.)
Это успешно аутентифицирует пользователей на сервере IMAP DreamHost, чтобы они могли войти в Horde. После входа в систему через IMP они также могут получить доступ к Kronolith (компонент календаря).
Сейчас я пытаюсь настроить поддержку CalDAV для календаря, но не могу заставить работать аутентификацию. В качестве простого теста я беру URL-адрес календаря Орды, который выглядит так - https://horde.example.com/rpc.php/calendars/ myusername@example.com/ calendar ~ CALENDAR_ID /
- и я пытаюсь использовать CURL (с опцией -u username: password
) для получения календаря. Horde возвращает следующий ответ:
<?xml version="1.0" encoding="utf-8"?>
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:exception>Sabre\DAV\Exception\NotAuthenticated</s:exception>
<s:message>Username or password does not match</s:message>
<s:sabredav-version>1.8.12</s:sabredav-version>
</d:error>
Есть ли способ заставить Horde использовать IMAP-логин для календаря в CalDAV, как это работает для веб-интерфейса?
В конце концов, мне пришлось переключить основную аутентификацию Horde, чтобы также использовать IMAP напрямую, вместо того, чтобы передавать ее обратно в IMP.
Вот что я добавил в conf.local. php
:
$conf['auth']['driver'] = 'imap';
$conf['auth']['params']['hostspec'] = 'sub5.mail.dreamhost.com';
$conf['auth']['params']['port'] = 143;
$conf['auth']['params']['secure'] = 'tls';
$conf['auth']['params']['hordeauth'] = 'full';
Я понятия не имею, действительно ли нужна последняя строка, но пользователи ждали, поэтому я не пытался экспериментировать.