Я установил сервер 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
), чтобы получить календарь. Орда возвращает следующий ответ:
<?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';
Я понятия не имею, действительно ли нужна последняя строка, но пользователи ждали, поэтому я не пытался экспериментировать.