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
Этот период в минутах не совсем понимаю как читать - в общей сложности
двое суток?