Замечания по борьбе со спамом в postfix



postfix: Было много спама... теперь меньше ;)
-------------------

...спам начал достовать...
Прочитал все доки на opennet.ru по ключевому клову "spam" и вот чуток
поправил конфиг файл.

MTA Postfix-2.1.x

[code]
strict_rfc821_envelopes = yes
disable_vrfy_command = yes

smtpd_client_restrictions = reject_rbl_client blackholes.mail-abuse.org,
reject_rbl_client dialups.mail-abuse.org,
reject_rbl_client relays.ordb.org,
reject_rbl_client dul.ru,
reject_rbl_client opm.blitzed.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client dul.dnsbl.sorbs.net,
reject_rbl_client dnsbl.njabl.org,
reject_rbl_client dynablock.njabl.org,
reject_rbl_client combined.njabl.org,
permit_mynetworks,
reject_unknown_client,
permit

smtpd_helo_required = yes
smtpd_helo_restrictions = reject_invalid_hostname,
permit_mynetworks,
check_helo_access hash:/etc/postfix/helo_checks,
reject_non_fqdn_hostname

smtpd_sender_restrictions = reject_non_fqdn_sender,
reject_unknown_sender_domain,
check_sender_access hash:/etc/postfix/sender_checks

smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unauth_destination

smtpd_data_restrictions = reject_unauth_pipelining,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unknown_sender_domain,
permit
[/code]

* за детальным разбором welcome to man postconf


Конечно хочется видеть результат работы.

1) устанавливаем pflogsumm для делатьного отчета
(http://jimsun.linxnet.com/postfix_contrib.html)

2) и рисуем графики с помощью mailgraph
(http://people.ee.ethz.ch/~dws/software/mailgraph/)

По поводу mailgraph, класная штука, но требуется маленький тюнинг ;)

1) Если вы используете drweb, откройте файл mailgraph.pl в своем любимом
редакторе, найдите по контексту "drweb" и замените регулярное выражение на:

if($text =~ /infected with/) {
event($time, 'virus');
}

* то выражение, которое распространяется в дистрибутиве расчитано на старые версии.

Еще рекомендую прямо под этим кодом добавить:

elsif($text =~ /rejected by daemon filtering rule/) {
event($time, 'spam');
}

* все что режется фильтрами настроеными в drwebd, так же является спамом
и это надо считать.

2) Дальше находим в коде строки:

## uncomment the following lines if you want to graph
## mail rejected because of a RBL as spam:

Раскомментариваем то, что нам предлагают, правда чуть-чуть изменяя:

elsif($text =~ /NOQUEUE: reject:/) {
event($time, 'spam');
}

* т.к. все что отброшена нашим MTA тоже спам.

Обновлено: 13.03.2015