В Postfix существует много встроенных средств которые помогают блокировать спамерские атаки на ваш почтовый сервер.
Эта короткая записка содержит краткую информацию про то, как отсеивать спам используя заложенные функции в MTA Postfix.Вот кусок конфигурационного файла /etc/postfix/main.cf
header_checks = regexp:/etc/postfix/header_checks
smtpd_restriction_classes = OnlyFromMyUsers
OnlyFromMyUsers = permit_mynetworks,
permit_sasl_authenticated,
reject
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_authenticated_sender_login_mismatch,
check_client_access hash:/etc/postfix/whitelist,
check_sender_access hash:/etc/postfix/whitelist,
check_recipient_access hash:/etc/postfix/whitelist,
check_client_access hash:/etc/postfix/blacklist,
check_sender_access hash:/etc/postfix/blacklist,
check_recipient_access hash:/etc/postfix/blacklist,
check_helo_access hash:/etc/postfix/helo_checks,
check_helo_access pcre:/etc/postfix/helo_checks.pcre,
check_recipient_access pcre:/etc/postfix/recipient_checks.pcre,
reject_unauth_destination,
check_policy_service unix:/var/spool/postfix/postgrey/socket,
reject_non_fqdn_recipient,
reject_unauthenticated_sender_login_mismatch,
reject_invalid_hostname,
reject_unknown_recipient_domain,
reject_unknown_client,
reject_unlisted_recipient,
reject_unverified_recipient,
reject_unauth_pipelining,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client dialups.mail-abuse.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client sbl-xbl.spamhaus.org,
permit
smtpd_client_restrictions =
reject_unauth_pipelining,
permit_sasl_authenticated,
permit_mynetworks,
reject_unknown_client_hostname,
permit
smtpd_helo_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_invalid_hostname,
reject_invalid_helo_hostname,
reject_unknown_hostname,
reject_non_fqdn_helo_hostname,
permit
smtpd_sender_restrictions =
check_sender_access hash:/etc/postfix/access_sender,
reject_authenticated_sender_login_mismatch,
reject_unauthenticated_sender_login_mismatch,
permit_sasl_authenticated,
reject_sender_login_mismatch
reject_non_fqdn_sender,
reject_unknown_sender_domain,
permit
content_filter = scan:127.0.0.1:10025
receive_override_options = no_address_mappings
strict_rfc821_envelopes = yes
disable_vrfy_command = yes
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_discard_ehlo_keywords = etrn, silent-discard
smtpd_forbidden_commands = CONNECT GET POST
broken_sasl_auth_clients = yes
address_verify_sender = $double_bounce_sender
Создаем файлы:
# vi /etc/postfix/header_checks
/^To:$/ REJECT Spamer go away
В этом файле описывается блокировка заголовка в теле письма TO:
Если спамер напишет что-то левое, будет блокировка. Продвинутая блокировка спама по поле TO - доступна в Spamassasin при написании своих правил.
# vi /etc/postfix/access_sender
company.kz OK
company.ua OK
В этом файле мы перечисляем домены, только по этим доменам может отправлятся почта из Postfix. Если спамер захочет отправит письмо с вашего сервера с левым доменом, у него ничего не выйдет.
# vi /etc/postfix/whitelist
fco.gov.uk OK
mail.ru OK
dropbox.com OK
gmail.com OK
yandex.kz OK
yandex.ru OK
yandex.net OK
yahoo.com OK
rambler.ru OK
Белый список, сюда ставите доверенные почтовые сервера.
# vi /etc/postfix/blacklist
e-pochta.kz REJECT
Черный список, здесь блокируем надоевших.
# vi /etc/postfix/helo_checks
# Reject anybody that HELO's as being in our own domain(s)
# (Note that if you followed the order suggested in the main.cf
# examples, above, that machines in mynetworks will be okay.)
company.kz REJECT You are not in anal
company.ua REJECT You are not in anal
# Somebody HELO'ing with our IP address?
xxx.xxx.xxx.xxx REJECT You are not me
yyy.yyy.yyy.yyy REJECT You are not me
Здесь указываем блокировку писем если чужой почтовик указывает в Helo наш домен или IP адрес, это не правильно. Ставим свои IP и домен.
# vi /etc/postfix/helo_checks.pcre
/[^[] *[0-9]+((\.|-)[0-9]+){3}/ REJECT Invalid hostname (ipable)
/(modem|dia(l|lup)|dsl|p[cp]p|cable|catv|poo(l|les)|dhcp|client|customer|user|[0-9]{4,})(-|\.|[0-9])/ REJECT Invalid hostname (client)
/[0-9]+-[0-9]+/ REJECT Invalid hostname (D-D)
Блокируем кривые и косые hostname.
# vi /etc/postfix/recipient_checks.pcre
/[@!%].*[@!%]/ 550 Please use user@domain address forms only.
Блокируем не правильные почтовые ящики.
Теперь завершаем настройку командами:
# postmap /etc/postfix/header_checks
# postmap /etc/postfix/access_sender
# postmap /etc/postfix/whitelist
# postmap /etc/postfix/blacklist
# postmap /etc/postfix/helo_checks
# postmap /etc/postfix/helo_checks.pcre
# postmap /etc/postfix/recipient_checks.pcre
Перезапускаем Postfix:
# service postfix reload