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