Yvision.kz
kk
Разное
Разное
399 773 постов42 подписчика
Всяко-разно
0
09:24, 21 января 2014

Борьба со спамом средствами Postfix

В 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

 
0
1823
0