Назад | Перейти на главную страницу

Аутентификация Horde Kronolith с использованием IMAP

Я установил сервер Horde Groupware Webmail Edition, в основном для использования веб-почты (предоставляется поставщиком услуг хостинга) и календаря (предоставляется нами). Аутентификация настраивается с использованием аутентификации IMAP через компонент IMP (веб-почта):

Главная Орда config/conf.php:

$conf['auth']['params']['app'] = 'imp';
$conf['auth']['driver'] = 'application';

IMP 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';

Я понятия не имею, действительно ли нужна последняя строка, но пользователи ждали, поэтому я не пытался экспериментировать.