> создана ветка паровоза 4.69. все вышеперечисленные изменения перенесены
> в нее вместе в последними изменениями во встречной проверке отправителя.
...
> к тому же планируются еще несколько серьезных изменений, среди которых
> упразднение отдельных типов доставки для dbmail (DBMAIL_PIPE или
> DBMAIL_LMTP в значении confDELIVERY_TO).
features/dbmail.m4 упразднен
две схемы с проверкой существования пользователей в БД отработаны и
настройки описаны ниже.
> уже сейчас возможно взаимодействие с dbmail по LMTP без
> непосредственного доступа к ее БД.
> для этого необходимо:
> - внести домены dbmail в список рилеемых доменов
> - включить использование mailertable (confMAILERTABLE)
> - в файле mailertable указать ручной маршрут доставки почты и проверки
> существования адресов:
> dbmail.domain.tld : lmtp : localhost
>> если dbmail использует lmtp порт, отличный от 24-го, это нужно указать в
> явном виде:
> dbmail.domain.tld : lmtp : localhost::2024
>> при необходимости проверки существования пользователей dbmail
> непосредственно в БД планируется использование двух схем:
> 1. доставка с использованием внешнего LDA:
> - указание доставки в виртуальные maildir'ы (MDIR_VIRTUAL в значении
> confDELIVERY_TO)
> - указание хранения списка пользователей в БД (MYSQL или SQLITE в
> значении confVIRT_MDIR_USERLIST)
> - указание доставки через внешний LDA (PIPE в confDELIVERY_TO)
> - указание пути к бинарнику dbmail-smtp в confVIRT_MDIR_PIPE
> возможно понадобится отдельная переменная, в которой надо будет
> указывать имя пользователя, от которого будет запущен dbmail-smtp
define(`confDELIVERY_TO', `MDIR_VIRTUAL PIPE')dnl
define(`confVIRT_MDIR_PIPE', `/usr/sbin/dbmail-smtp -d
$local_part@$domain')dnl
define(`confVIRT_MDIR_USER', `dbmail')dnl
define(`confVIRT_MDIR_GROUP', `dbmail')dnl
define(`confVIRT_MDIR_USERLIST', `SQLITE')dnl
define(`confSQLITE', `/var/lib/dbmail/dbmail.db')
define(`confVIRT_MDIR_SQLITE', `SELECT userid as id FROM dbmail_users
WHERE userid="${quote_mysql:$local_part@$domain}"')dnl
define(`confVIRT_MDIR_SQLITE2', `SELECT alias FROM dbmail_aliases WHERE
alias="${quote_mysql:$local_part@$domain}" OR
alias="${quote_mysql:@$domain}"')dnl
синтаксис запросов в случае использования MySQL и PgSQL в качестве
backend'ов для dbmail:
define(`confVIRT_MDIR_MYSQL', `SELECT userid FROM dbmail_users WHERE
userid="${quote_mysql:$local_part@$domain}"')dnl
define(`confVIRT_MDIR_MYSQL2', `SELECT alias FROM dbmail_aliases WHERE
alias="${quote_mysql:$local_part@$domain}" OR
alias="${quote_mysql:@$domain}"')dnl
changequote(<<, >>)
define(<<confVIRT_MDIR_PGSQL>>, <<SELECT userid FROM dbmail_users WHERE
userid='${quote_pgsql:$local_part@$domain}'>>)dnl
define(<<confVIRT_MDIR_PGSQL2>>, <<SELECT alias FROM dbmail_aliases
WHERE alias='${quote_pgsql:$local_part@$domain}' OR
alias='${quote_pgsql:@$domain}'>>)dnl
dnl changequote
использование двойных угловых скобок в описании запросов к PgSQL
обусловлено тем, что в SQL запросах к этой БД нужно использовать именно
одиночные кавычки, а они в свою очередь используются в качестве
разделителей в m4. подобные проблемы уже приходилось решать, когда для
dbmail пришлось реализовать работу с PgSQL backend в свое время.
> 2. доставка с использованием протокола LMTP:
> - указание доставки в виртуальные maildir'ы (MDIR_VIRTUAL в значении
> confDELIVERY_TO)
> - указание хранения списка пользователей в БД (MYSQL или SQLITE в
> значении confVIRT_MDIR_USERLIST)
> - указание в файле mailertable ручного маршрута доставки почты доменов,
> обслуживаемых dbmail, с указанием доставки по lmtp. при необходимости
> можно указать номер порта, если он отличается от 24-го.
define(`confDELIVERY_TO', `MDIR_VIRTUAL')dnl
define(`confVIRT_MDIR_USERLIST', `SQLITE')dnl
define(`confSQLITE', `/var/lib/dbmail/dbmail.db')
define(`confVIRT_MDIR_SQLITE', `SELECT userid as id FROM dbmail_users
WHERE userid="${quote_mysql:$local_part@$domain}"')dnl
define(`confVIRT_MDIR_SQLITE2', `SELECT alias FROM dbmail_aliases WHERE
alias="${quote_mysql:$local_part@$domain}" OR
alias="${quote_mysql:@$domain}"')dnl
mailertable:
dbmail.domain.tld : lmtp : localhost
если dbmail использует lmtp порт, отличный от 24-го, это нужно указать
в явном виде:
dbmail.domain.tld : lmtp : localhost::2024
синтаксис запросов в случае использования MySQL и PgSQL в качестве
backend'ов для dbmail такой же, как для предыдущей схемы
> скорее всего позже будет пересмотрен механизм взаимодействия с
> cyrus-imapd. я не использую его (как и dbmail), нынешний механизм работы
> с cyrus-imapd был реализован давно и является достаточно примитивным.
>> так что возможно для работы с cyrus-imapd будут опробованы такие же три
> схемы, как для dbmail, а отдельный механизм взаимодействия (CYRUS в
> значении confDELIVERY_TO) будет упразднен.
--
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