====== Ограничение спама средствами postfix ======
Данный конфиг - пример того как можно уменьшить количество получаемого спама на небольшом почтовом сервере средствами postfix (некоторые из указанных ниже директив работают в версии 2.5 и позднее)
main.cf:
# имеет смысл убедиться, что в mynetworks нет ничего лишнего
mynetworks = 127.0.0.0/8
smtpd_helo_required = yes
# требовать, чтобы адреса в SMTP командах MAIL FROM и RCPT TO были заключены в <>
strict_rfc821_envelopes = yes
# Если отправитель сделал больше 2-х ошибок (обычно это попытка отправки письма на несуществующий ящик)
# после каждой команды делаем задержку 5 секунд.
# это частично помогает от перебора (bruteforce) названий ящиков спамерами
smtpd_soft_error_limit = 2
smtpd_error_sleep_time = ${stress?0}${stress:10s}
smtpd_hard_error_limit = ${stress?3}${stress:20}
# уменьшение таймаута в случае перегрузки сервера
smtpd_timeout = ${stress?30}${stress:300}
# настройки верификации адресов
address_verify_map = btree:$data_directory/postfix_verify
address_verify_positive_expire_time = 90d
address_verify_positive_refresh_time = 30d
# к сожалению верификация в postfix не различает ошибки 4xx и 5xx, поэтому для уменьшения задержек
# из за сочетания локальная врификация+удаленный greylisting параметр address_verify_negative_refresh_time приходится выставлять небольшим
address_verify_negative_refresh_time = 3m
address_verify_sender = <>
unverified_sender_reject_code = 550
# это необходимо для реализации задержки перед выдачей greeting в smtpd_client_restrictions
smtpd_delay_reject = no
# задержка перед выдачей начального приветствия сервера (greeting)
# не стоит применять на серверах с большой нагрузкой, поскольку это значительно увеличивает необходимое кол-во процессов smtpd
# помогает от некоторых спамботов (затрояненных машин), но в последнее время эффективность данного метода упала
smtpd_client_restrictions =
permit_mynetworks,
# адреса с которых пропускаем почту без greeting delay
check_client_access hash:$config_directory/maps/no_delay
sleep 5,
reject_unauth_pipelining,
smtpd_recipient_restrictions =
reject_non_fqdn_sender,
reject_unknown_sender_domain,
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname,
check_helo_access pcre:$config_directory/maps/helo_access,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
smtpd_data_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
# адреса для которых отключен greylisting
check_client_access hash:$config_directory/maps/no_delay
# порт 2501 слушает policy сервер, реализующий greylisting, например http://sqlgrey.sourceforge.net/
check_policy_service inet:127.0.0.1:2501,
smtpd_end_of_data_restrictions =
permit_sasl_authenticated,
reject_unverified_sender,
maps/no_delay:
# в данный файл стоит добавить как минимум крупные почтовые сервера
# в целом можно добавлять любые почтовые сервера - против спама отправляемого через них greeting delay и greylisting все равно не поможет
# Rambler
81.19.66 OK
81.19.67 OK
81.19.88 OK
# Yandex
77.88.60 OK
77.88.61 OK
77.88.32 OK
77.88.47 OK
213.180.200 OK
# Mail.Ru
194.67.23 OK
194.67.45 OK
194.67.57 OK
194.186.55 OK
195.222.173 OK
195.239.211 OK
maps/helo_access:
# helo в виде [ip] допустим по RFC2821, но такой helo часто используется спамботами, а почтовыми серверами используется очень редко
/^\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\]$/ REJECT need fully-qualified hostname
/^localhost\.localdomain$/ REJECT need fully-qualified hostname
/^Network-Tools\.com$/ REJECT
/^SpeedTouch\.lan$/ REJECT
/^dsldevice\.lan$/ REJECT
Возможные ложные срабатывания:
* Если письма нужно получать не только от живых людей, но и от роботов (письма с сайтов), то придется убрать **reject_unverified_sender** - письма с сайтов часто шлются с несуществующих адресов.
* Если нужно получать письма с сайта RussianEuro.com, то нужно убрать **reject_non_fqdn_helo_hostname** (другие крупные сервера не замечены в использовании non fqdn helo).
* **RBL** - для уменьшения процента ложных срабатываний можно убрать bl.spamcop.net, а zen.spamhaus.org заменить на xbl.spamhaus.org и pbl.spamhaus.org