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

Sasha Usov blessendor на gmail.com
Ср Окт 29 11:45:46 EET 2008


Victor Ustugov пишет:
> 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
>
>
Спасибо. Настроил. А фишки с записью в лог, что отправитель в AWL - 
поэтому доставляем без проверок, нету? Или о факте занесения адреса в 
белый список...

define(`confAWL_PERIOD', `60*24*2')dnl

Этот период в минутах не совсем понимаю как читать - в общей сложности 
двое суток?





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