Данный конфиг - пример того как можно уменьшить количество получаемого спама на небольшом почтовом сервере средствами 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
Возможные ложные срабатывания: