Victor Ustugov wrote:
> скорее всего позже будет пересмотрен механизм взаимодействия с
> cyrus-imapd. я не использую его (как и dbmail), нынешний механизм работы
> с cyrus-imapd был реализован давно и является достаточно примитивным.
>> так что возможно для работы с cyrus-imapd будут опробованы такие же три
> схемы, как для dbmail, а отдельный механизм взаимодействия (CYRUS в
> значении confDELIVERY_TO) будет упразднен.
итак, вот сегодняшние изменения, касающиеся интеграции с cyrus-imapd:
реализована возможность указывать ручные маршруты для проверки
существования получателей по LMTP по аналогии с проверкой существования
получателей по SMTP. имеется ввиду использование суффикса "|callout" в
mailertable.
существенно пересмотрена поддержка доставки в cyrus-imapd:
использование значения CYRUS в переменной confDELIVERY_TO упразднено
(необходимо использовать значение MDIR_VIRT в переменной confDELIVERY_TO)
при необходимости проверки получателей с помощью mbpath необходимо в
переменной confVIRT_MDIR_USERLIST указать CYRUS-IMAPD, а путь к mbpath
указать в переменной confVIRT_MDIR_CYRUS_MBPATH_PATH, а не в переменной
confCYRUS_MBPATH_PATH
переменная confCYRUS_LMTP_SOCKET упразднена путь к файлу сокета должен
быть указан в mailertable
переменная confCYRUS_USER упразднена пользователь, от имени которого
будет произведена запись в UNIX domain socket, должен быть указан в
mailertable
переменная confCYRUS_BATCH_MAX упразднена
для доставки писем cyrus-imapd разработаны несколько схем:
1. доставка через внешний LDA, проверка существования получателей
производится с помощью mbpath:
define(`confDELIVERY_TO', `MDIR_VIRTUAL PIPE')dnl
define(`confVIRT_MDIR_PIPE', `/usr/lib/cyrus-imapd/deliver -f
$sender_address $local_part@$domain')
define(`confVIRT_MDIR_USER', `cyrus')dnl
define(`confVIRT_MDIR_GROUP', `mail')dnl
define(`confVIRT_MDIR_USERLIST', `CYRUS-IMAPD')dnl
define(`confVIRT_MDIR_CYRUS_MBPATH_PATH', `/usr/lib/cyrus-imapd/mbpath')dnl
алтернативным вариантом является доставка через внешний LDA по LMTP:
define(`confDELIVERY_TO', `MDIR_VIRTUAL PIPE-LMTP')dnl
define(`confVIRT_MDIR_PIPE', `/usr/lib/cyrus-imapd/deliver -l')
define(`confVIRT_MDIR_USER', `cyrus')dnl
define(`confVIRT_MDIR_GROUP', `mail')dnl
define(`confVIRT_MDIR_USERLIST', `CYRUS-IMAPD')dnl
define(`confVIRT_MDIR_CYRUS_MBPATH_PATH', `/usr/lib/cyrus-imapd/mbpath')dnl
2. доставка по LMTP, проверка существования получателей производится с
помощью mbpath):
путь к сокету указывается в mailertable, в случае использования
нестандартного LMTP порта его номер нужно указать после имени хоста
через два двоеточия, в случае необходимости указания имени пользователя
и группы, от имени которых необходимо производить запись в файл UNIX
Domain сокета, их нужно указать после имени файла сокета через двоеточия:
mailertable:
cyrus.domain.tld : lmtp : localhost
cyrus.domain.tld : lmtp : localhost::2024
cyrus.domain.tld : lmtpunix : /var/lib/imap/socket/lmtp:cyrus:mail
define(`confDELIVERY_TO', `MDIR_VIRTUAL')dnl
define(`confVIRT_MDIR_USER', `cyrus')dnl
define(`confVIRT_MDIR_GROUP', `mail')dnl
define(`confVIRT_MDIR_USERLIST', `CYRUS-IMAPD')dnl
define(`confVIRT_MDIR_CYRUS_MBPATH_PATH', `/usr/lib/cyrus-imapd/mbpath')dnl
3. доставка почты рилеемых доменов в cyrus-imapd по LMTP через TCP сокет
(проверка существования получателей осуществляется с помощью callout'а,
при этом cyrus-imapd lmtpd должен быть запущен с опцией -a):
mailertable:
cyrus.domain.tld : lmtp : localhost
cyrus.domain.tld|callout : lmtp : localhost
если cyrus-imapd использует lmtp порт, отличный от 24-го, это нужно указать
в явном виде:
cyrus.domain.tld : lmtp : localhost::2024
cyrus.domain.tld|callout : lmtp : localhost::2024
производить доставку почты рилеемых доменов в cyrus-imapd по LMTP через
UNIX Domain сокет не рекомендуется, т. к. в этом случае exim не будет
производить callout для проверки существования адреса получателя.
--
Best wishes Victor Ustugov mailto:victor на corvax.kiev.ua
public GnuPG/PGP key: http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 77186900, 32418694 nic-handle: CRV2-RIPE, CRV-UANIC