[exim-conf] acls/check_rcpt.m4 updated for spamtrap using

Victor Ustugov victor на corvax.kiev.ua
Вс Мар 11 00:25:18 EET 2007


Victor Ustugov wrote:

> после спора в одной частной беседе о пользе и вреде паранойи при приеме
> писем для всех несуществующих получателей локальных доменов (типа чтобы
> не дать спамеру инфы о том, существует ли такой получатель) появилась у
> меня мысль написать в лист о работе со спамтрапами средствами паровоза.
> 
> адреса получателей, являющиеся spamtrap'ами, указываются в access-rcpt
> (в site/conf переменная confCHECK_RCPT_ACCESS должна содержать значение,
> отличное от `NO').
> 
> итак:
> 
> 1. на этапе RCPT TO ответить 5xx, залистить хост в DNSBL, письмо будет
> доставлено получателям, адреса которых были указаны раньше адреса
> spamtrap'а:
> spamtrap на corvax.kiev.ua : submit_rbl reject : User unknown : Host
> sending message to spamtrap blacklisted
> 
> 2. на этапе RCPT TO ответить 5xx, залистить хост в DNSBL, письмо не
> будет доставлено остальным получателям, клиенту будет возвращена ошибка
> 5xx в ответ на команду DATA (до получения тела письма):
> spamtrap на corvax.kiev.ua : submit_rbl reject reject_all : User unknown :
> Host sending message to spamtrap blacklisted
> 
> 3. на этапе RCPT TO ответить 5xx, залистить хост в DNSBL, если до
> указания адреса spamtrap'ы были указаны другие адреса получателей,
> письмо будет доставлено в карантин:
> spamtrap на corvax.kiev.ua : submit_rbl reject quarantine_other : User
> unknown : Host sending message to spamtrap blacklisted
> 
> 4. после приема письма ответить 5xx, залистить хост в DNSBL, содержимое
> письма отправить на автообучение spamassassin'у:
> spamtrap на corvax.kiev.ua : submit_rbl quarantine reject : User unknown :
> Host sending message to spamtrap blacklisted
> 
> 5. после приема письма ответить 250, залистить хост в DNSBL, содержимое
> письма отправить на автообучение spamassassin'у:
> spamtrap на corvax.kiev.ua : submit_rbl quarantine : User unknown : Host
> sending message to spamtrap blacklisted
> 
> 
> действие submit_rbl доступно пользователям enterprise версии паровоза. в
> двух последних вариантах необязательно использовать submit_rbl.

прошу обратить внимание, что ранее при использовании действия quarantine 
в карантин доставлялись письма для остальных получателей данного письма. 
обычно quarantine использовалось одновременно с reject

сейчас данное действите переименовано в quarantine_other

при использовании действия quarantine письмо доставляется в катантин.
если при этом было также указано действие reject, то клиенту 
возвращается 550 после data.

в случае использования quarantine одновременно с reject также необходимо 
устанавливать значение confFAKE_REJECT равным `YES'. я обнаружил, что и 
на моих серверах не везде это так. посему, учитывая, что кода в конфиг 
добавляется при этом немного, значение по умолчанию для confFAKE_REJECT 
изменено с `NO' на `YES'

> для вариантов 4 и 5 необходимо также в site/system_filter_top настроить
> доставку копий писем для автообучения bayes'ового фильтра spamassassin'а
> (либо любого другого статистического фильтра):

вот поправленный вариант:

if $h_X-Quarantine-Rcpt: matches "Host sending message to spamtrap 
blacklisted" then
   if
     not $h_X-Spam-Report: contains "BAYES_99"
     and not $h_X-Spam-Status: contains "autolearn=spam"
     and not $h_X-Spam-Report: contains "FUZZY_OCR"
   then
     logwrite "$tod_log $message_id saved for learning; original 
recipients: $recipients"
     unseen save /var/vmail/localhost/admin/.spam.sa-learn-spam/ 640
   endif
endif

кроме исправления недостающий "$h_" в начале названия переменной с 
именем поля добавлены проверки на максимальную оценку bayes фильтра 
spamassassin'а, флаг автообучения и оценки FuzzyOCR плагина

> после matches должны быть указана подстрока, которая в файле access-rcpt
> указана после сообщения smtp клиенту. это же сообщение будет выведено в
> файл протокола exim'а.
> 
> доставлять вообщение необходимо в каталог, специфичный для используемого
> вами статистического фильтра.
> 
> можно доставлять в этот каталоге не копию письма, а оригинал. тогда
> unseen нужно просто заменить на seen.
> 
> если в каталог для обучения доставляется копия письма, то оригинал будет
> доставлен в каталог, указанный в confSYSTEM_FILTER_QUARANTINE_DIR
> (подкаталог rcpt). это описано в site/system_filter_quarantine_quarantined

далее, я обнаружил, что если при необходимости доставить письмо в 
карантин для спамтрапного адреса просто пропустить проверку 
существования локального пользователя (в противном случае пришлось бы 
все спамтрапные адреса прописывать в списке локальных пользователей), то 
часто письмо отвергается по ряду других признаков. поэтому пр 
использовании действия quarantine для такого письма accept выполняется 
сразу в acl_check_rcpt сразу при проверке, являтеся ли адрес спамтрапом


p. s. в качестве спамтрапа можно использовать и такую запись в access-rcpt:

\N^[\da-f]{8}\.\d{3,7}@\N : submit_rbl reject quarantine : User unknown 
: Host sending message to spamtrap blacklisted

видимо, это ошибка в каком-то спамомете. ибо под данный регексп обычно 
попают части Message-ID до символа "@". цифирек после точки обычно 
бывает 7. видел вариант с 3-мя и 4-мя цифрами.

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