[exim-conf] auto whitelist средствами exim-conf

Victor Ustugov victor на corvax.kiev.ua
Вт Окт 28 16:57:18 EET 2008


Sasha Usov wrote:
>> Здравствуйте, exim-users. Может быть кто-то уже делал подобное 
>> решение. Подскажите, пожалуйста, как можно сделать так, чтоб домены, 
>> на которые пользователи пишут автоматом добавлялись в whitelist???
>> -- С уважением, Sarafonov mailto:sarafonov на rudgormash.ru
> 
> Приветствую.
> Виктор, существует ли наработка, доступная для exim-conf, позволяющая 
> делать что-то подобное с автоматическим занесением в белый список 
> адресов получателей, из проходящих через релей наружу писем?
> Чтобы не следовать наколенным вставкам в сгенерированный конфиг, а 
> указывая тот же лукап к мускулу (если на нем реализовано) на этапе 
> сборки конфига.

фрагмент m4/conf.default:

использование автоматического белого списка (необходимо использование 
confCHECK_COMPAT):
NO          - не использовать автоматический белый список
DBM         - хранить данные автоматического белого списка в dbm файле
SQLITE      - хранить данные автоматического белого списка в БД SQLite
MYSQL       - хранить данные автоматического белого списка в БД MySQL
define(`confAWL', `NO')dnl

домены отправителей, на основании писем от которых будет формироваться 
белый список
define(`confAWL_SENDER_DOMAINS', `+local_domains')

в ряде случаев (например, для транзитных рилеев, которые одновременно 
являются смартхостами) можно указывать необходимость формирования белых 
списков и на основании писем от рилеемых доменов
define(`confAWL_SENDER_DOMAINS', `+local_domains : +relay_to_domains')

период жизни записи в кеше белого списка (в мин):
define(`confAWL_PERIOD', `60*24*2')

при DBM в confAWL:

путь к DBM файлу
define(`confAWL_DBM_FILE', `/var/spool/exim/db/awl.dbm')

ключ записи в AWL файле такой же, как в access-compat значением записи 
является время жизни записи

при SQLITE в confAWL:

путь к SQLITE файлу
define(`confAWL_SQLITE_FILE', `/var/spool/exim/db/awl.db')

define(`confAWL_SQLITE_CHECK',  `SELECT expires FROM awl WHERE 
recipient="${quote_sqlite:$local_part@$domain}" AND 
sender="${quote_sqlite:$sender_address}" AND expires > $tod_epoch;')

define(`confAWL_SQLITE_SELECT', `SELECT expires FROM awl WHERE 
recipient="${quote_sqlite:$sender_address}" AND 
sender="${quote_sqlite:$local_part@$domain}" AND expires > $tod_epoch;')

define(`confAWL_SQLITE_INSERT', `INSERT INTO awl (recipient, sender, 
expires) VALUES ("${quote_sqlite:$sender_address}", "${quote_sqlite:$lo
cal_part@$domain}", $tod_epoch+60*confAWL_PERIOD);')

define(`confAWL_SQLITE_UPDATE', `UPDATE awl SET expires = 
$tod_epoch+60*confAWL_PERIOD WHERE 
recipient="${quote_sqlite:$sender_address}" AND 
sender="${quote_sqlite:$local_part@$domain}";')

define(`confAWL_SQLITE_DELETE', `DELETE FROM awl WHERE expires < 
strftime(\"%s\",\"now\");')

при MYSQL в confAWL:

define(`confAWL_MYSQL_CHECK',  `SELECT UNIX_TIMESTAMP(expires) FROM awl 
WHERE recipient="${quote_mysql:$local_part@$domain}" AND 
sender="${quote_mysql:$sender_address}" AND expires > NOW()')

define(`confAWL_MYSQL_SELECT', `SELECT UNIX_TIMESTAMP(expires) FROM awl 
WHERE recipient="${quote_mysql:$sender_address}" AND 
sender="${quote_mysql:$local_part@$domain}" AND expires > NOW()')\

define(`confAWL_MYSQL_INSERT', `INSERT INTO awl (recipient, sender, 
expires) VALUES ("${quote_mysql:$sender_address}", 
"${quote_mysql:$local_part@$domain}", ADDTIME(NOW(), 
SEC_TO_TIME(60*confAWL_PERIOD)))')

define(`confAWL_MYSQL_UPDATE', `UPDATE awl SET expires = ADDTIME(NOW(), 
SEC_TO_TIME(60*confAWL_PERIOD)) WHERE 
recipient="${quote_mysql:$sender_address}" AND 
sender="${quote_mysql:$local_part@$domain}"')

define(`confAWL_MYSQL_DELETE', `DELETE FROM awl WHERE expires < NOW()')dnl


-- 
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