Citrin's site

Персональный сайт Антона Южанинова

Инструменты пользователя

Инструменты сайта


mail:myconf

Ограничение спама средствами 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
mail/myconf.txt · Последние изменения: 2008-10-13 15:27 UTC — citrin

.