[exim-conf] новый паровоз 4.69

Victor Ustugov victor на corvax.kiev.ua
Сб Окт 25 20:08:50 EEST 2008


> создана ветка паровоза 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




Подробная информация о списке рассылки exim-conf