From f95b9a1c1082a3638ced57728a7fbd2e7182099a Mon Sep 17 00:00:00 2001 From: Alex 'AdUser' Z Date: Wed, 20 Apr 2016 14:00:05 +1000 Subject: [PATCH] + /articles/2016/04/20/hardcore-mail-relay-5/ --- .../10/hardcore-mail-relay-1/index.markdown | 2 +- .../15/hardcore-mail-relay-4/index.markdown | 3 +- .../20/hardcore-mail-relay-5/index.markdown | 99 ++++++++++++++++++ .../update-known-domains.pl.gz | Bin 0 -> 2086 bytes 4 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 articles/2016/04/20/hardcore-mail-relay-5/index.markdown create mode 100644 articles/2016/04/20/hardcore-mail-relay-5/update-known-domains.pl.gz diff --git a/articles/2016/04/10/hardcore-mail-relay-1/index.markdown b/articles/2016/04/10/hardcore-mail-relay-1/index.markdown index 7ac7a1c..8ff2818 100644 --- a/articles/2016/04/10/hardcore-mail-relay-1/index.markdown +++ b/articles/2016/04/10/hardcore-mail-relay-1/index.markdown @@ -20,7 +20,7 @@ tags: mail, spam, exim, zabbix, rspamd, репост * DKIM * антиспам * антивирус -- Обратная связь и переобучение системы +- [Обратная связь и переобучение системы](/articles/2016/04/10/hardcore-mail-relay-1/) * переобучение антиспама * репутация доменов - Базовая настройка rspamd diff --git a/articles/2016/04/15/hardcore-mail-relay-4/index.markdown b/articles/2016/04/15/hardcore-mail-relay-4/index.markdown index aa272b3..a90d786 100644 --- a/articles/2016/04/15/hardcore-mail-relay-4/index.markdown +++ b/articles/2016/04/15/hardcore-mail-relay-4/index.markdown @@ -232,6 +232,7 @@ spamassassin прикручивается почти так же, надо по --- -[К оглавлению](/articles/2016/04/10/hardcore-mail-relay-1/) +[К оглавлению](/articles/2016/04/10/hardcore-mail-relay-1/), +[Далее: Обратная связь и переобучение системы](/articles/2016/04/10/hardcore-mail-relay-1/) [^fn1]: Себя не попиаришь - так и помрёшь в безвестности. diff --git a/articles/2016/04/20/hardcore-mail-relay-5/index.markdown b/articles/2016/04/20/hardcore-mail-relay-5/index.markdown new file mode 100644 index 0000000..559a66d --- /dev/null +++ b/articles/2016/04/20/hardcore-mail-relay-5/index.markdown @@ -0,0 +1,99 @@ +--- +title: Почтовый шлюз: задание со звёздочкой (Обратная связь и переобучение системы) +tags: mail, spam, exim +--- + +Антиспам - это конечно хорошо, но это всего лишь тупой робот с набором правил. +Ошибки в настройке случаются и у наших корреспондентов. + +Типовая ситуация: юзеру лень писать тему в письме из 2х pdf'ок. +Антиспам про лень юзера ничего не знает и видя отсутствие Subject'а - задирает ему итоговый балл. + +Ещё пример: секретарша Марина херачит рассылку на всех 200 клиентов компании одним письмом. +Может ей домой побыстрее надо, или курить - не важно, получается письмо с 200 адресами. +Антиспам опять отреагирует в меру своего разумения: задерёт балл такому письму. + +--- + +Репутация доменов +----------------- + +Так вот, чтобы такого не случалось - можно привлечь к переобучению системы самих пользователей, +причём не требуя от них ничего сверх их обычной работы - писать письма и отвечать на них. + +Логика такая: если юзер регулярно пишет почту на какой-нибудь домен - давать этому домену определённый бонус на антиспаме. +Если писать перестал - через какое-то время удалять. + +Вот небольшой [скриптик](update-known-domains.pl.gz), который на основе логов exim'а ведёт базу "хороших" доменов, +по окончании работы выгружая результат в файлик, который может быть использован в качестве domainlist'а exim'а. + +Запускать в самом конце дня, но перед ротацией логов. Схему sqlite-базы смотри в самом файле, в конце. +Все настройки - в начале скрипта. + +Останется в антиспаме добавить правило, которое будет искать заголовок `X-Known-Domain` и реагировать соответственно. + +Настройки exim'а смотри ниже. + +Хранилище спама +--------------- + +Для удобства обслуживания и контроля работы неплохо бы периодически мониторить систему в части "какие письма попадают в спам". +Здесь показывается, как донастроить exim, что он откладывал копию подозрительных писем в отдельный ящик. + +В данном случае ящик в виде стандартного maildir находится на пересылающем сервере. +К нему можно подцепиться mutt'ом или отдавать по pop3/imap через dovecot наружу. +Это очень удобно -- в почтовом клиенте рядом с "рабочей" просто заводится вторая учётка. +С утра проглядел "улов" за ночь, если надо - поправил настройки, Ctrl-A, Del. + +В секцию с роутерами. Порядок роутеров важен, так что их нужно вставить ДО роутера, который непосредственно доставляет почту. +``no_verify`` - не проверять получателя, ``unseen`` - продолжать поиск роута дальше. + + # отлавливаем подозрительное для последующего разбора + # с этим роутом совпадает всё, что а) идёт в нашу сторону, б) мы посчитали спамом в check_data + gw_possible_spam: + driver = manualroute + condition = ${if eq{$header_x-spam-status:}{Yes} {yes}{no}} + domains = +our_domains + route_list = * localhost + transport = spamarchive + no_verify + unseen + + # отлавливаем заведимо "хорошие" письма (ham), с ограниченного набора хостов, для обучения байеса + gw_certainly_ham: + driver = manualroute + condition = ${if match_ip{$sender_host_address}{+relay_from_hosts} {yes}{no}} + condition = ${if match_domain{$sender_address_domain}{+our_domains} {yes}{no}} + condition = ${if <{$message_body_size}{512K} {yes}{no}} + domains = !+our_domains + route_list = * localhost + transport = hamarchive + no_verify + unseen + +В секцию с транспортами: + + hamarchive: + driver = appendfile + user = spamarchive + group = spamarchive + create_directory = true + maildir_format = true + directory = /usr/home/spamarchive/ham/ + + spamarchive: + driver = pipe + user = spamarchive + group = spamarchive + delivery_date_add + envelope_to_add + command = /usr/lib/dovecot/deliver -d spamarchive -f $sender_address + temp_errors = 64 : 69 : 70 : 71 : 72 : 73 : 74 : 75 : 78 + log_output + +Последний тоже можно заменить на ``appendfile``, но я предпочитаю отдать его dovecot'у с sieve. +Тот же dovecot потом используется для копания в архиве по imap'у, и управления правилами sieve. + +--- + +[К оглавлению](/articles/2016/04/10/hardcore-mail-relay-1/) diff --git a/articles/2016/04/20/hardcore-mail-relay-5/update-known-domains.pl.gz b/articles/2016/04/20/hardcore-mail-relay-5/update-known-domains.pl.gz new file mode 100644 index 0000000000000000000000000000000000000000..7a9311ebc76366adaedd2da7d9bc86a8accde7d1 GIT binary patch literal 2086 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 QZCji8Z#Fl;%k2~Z0N|<(UjP6A literal 0 HcmV?d00001