Postfix: Описание smtpd_*_restrictions против спама вариант 1
Автор: Axel (aka RaVeN) 2006
 



main.cf:
Код:

#Создаю классы:
smtpd_restriction_classes = verify_sender, client_ok, drbl, greylist_pls, spf_pls, rbl_dul_ru, rbl_spamcop, rbl_sorbs, rbl_ordb, bogon_ip, virbl, surbl

#Описание классов:
verify_sender = reject_unverified_sender, permit
rbl_dul_ru = reject_rbl_client dul.ru
rbl_spamcop = reject_rbl_client bl.spamcop.net
rbl_sorbs = reject_rbl_client dnsbl.sorbs.net
rbl_ordb = reject_rbl_client relays.ordb.org
client_ok = check_client_access hash:$config_directory/access_client_ok
client_access = check_client_access hash:$config_directory/access_client
block_dsl = regexp:$config_directory/dsl_stoplist.txt
bogon_ip = reject_rbl_client bogons.cymru.com
virbl = reject_rbl_client virbl.dnsbl.bit.nl
surbl = reject_rbl_client multi.surbl.org
spf_pls = check_policy_service unix:private/policy
greylist_pls = check_policy_service inet:127.0.0.1:2525

#Далее сами restrictions:
smtpd_client_restrictions =
    bogon_ip
    reject_unknown_address
    reject_unknown_recipient_domain
    reject_unknown_sender_domain
    client_ok
    client_access
    block_dsl
    permit_sasl_authenticated
    permit_mynetworks
    reject_unauth_destination
    reject_unauth_pipelining
    check_helo_access pcre:$config_directory/helo_checks
    surbl
    virbl
    rbl_ordb
    rbl_dul_ru
    rbl_spamcop

smtpd_sender_restrictions =
    reject_authenticated_sender_login_mismatch
    check_sender_access hash:$config_directory/access_vip_sender
    reject_unknown_address
    reject_unknown_sender_domain
    reject_unauth_pipelining
    reject_non_fqdn_sender
    check_sender_access hash:$config_directory/access_sender
    check_sender_access hash:$config_directory/verify_sender
    permit_sasl_authenticated
    permit_mynetworks
    check_sender_mx_access cidr:$config_directory/mx_access
    reject_unlisted_sender
    reject_unauth_destination
    reject_rhsbl_sender dsn.rfc-ignorant.org

smtpd_recipient_restrictions =
    check_recipient_access hash:$config_directory/access_vip_sender
    reject_unknown_recipient_domain
    reject_unknown_sender_domain
    reject_non_fqdn_recipient
    reject_non_fqdn_sender
    check_access $${sender}|$$recipient hash:$config_directory/users.hash
    check_recipient_access $smtpd_access_maps
    reject_unauth_pipelining
    permit_sasl_authenticated
    permit_mynetworks
    check_helo_access pcre:$config_directory/helo_checks
    reject_unlisted_recipient
    reject_unknown_address
    reject_unauth_destination
    reject_multi_recipient_bounce
    check_recipient_access hash:$config_directory/users_gls_spf_pls

smtpd_data_restrictions = reject_unauth_pipelining, reject_multi_recipient_bounce, permit
smtp_skip_5xx_greeting = no

smtpd_reject_unlisted_sender = yes
smtpd_reject_unlisted_recipient = yes
smtpd_sender_login_maps=mysql:$config_directory/sql/senders.cf

policy_time_limit = 3600
127.0.0.1:2525_time_limit = 3600
smtpd_policy_service_max_idle = 3600s
smtpd_policy_service_max_ttl = 3600s
smtp_cname_overrides_servername=no



Описание внешних подключаемых файлов:

$config_directory/users_gls_spf_pls - содержит список пользователей, которые хотят/не хотят использовать GreyListing, SPF.
Примерная структура:
Код:

user@local_domain.ru [tab] spf_pls, greylist_pls
user1@local_domain.ru [tab] greylist_pls
user2@local_domain.ru [tab] spf_pls


$config_directory/access_client_ok - содержит IP адреса, которые нужно пропускать не смотря ни на что (т.е. не проверять их в RBL листах и так далее. Т.о. исключаются все дальнейшие проверки в отношении IP клиента).
Структура:
Код:

1.1.1.1 [tab] OK
2.2.2.2 [tab] OK


$config_directory/access_client - содержит IP адреса, которые нужно заблокировать. (также все остальные проверки в RBL исключаются).
Структура:
Код:

1.1.1.2 [tab] REJECT
2.2.2.3 [tab] 550 GO AWAY


$config_directory/dsl_stoplist.txt - содержит правила для блокировки dsl/модемные пулы, с которых подключаются клиенты.
Пример:
Код:

/dsl.*\.swbell\.net$/   553 You network have been identified as a spammer network. Sorry. (SPAM-ID: c20031 229-DSL001)
/\.dial\.rol\.ru$/      553 You network have been identified as a spammer network. Sorry. (SPAM-ID: c20031 229-DSL049)

Описание: Первым правилом блокирую все обращения с DSL-хостов swbell.net.
Последним приавилом к примеру блокирую весь диалапный пул ROL.RU...

$config_directory/helo_checks - содержит правила по блокировке в отношении поля helo.
Пример:
Код:

/^\[?10\.\d{1,3}\.\d{1,3}\.\d{1,3}\]?$/ REJECT Address in RFC 1918 private network
/^xxx\.xxx\.xxx\.xxx$/     550 Don't use my own IP address
/^(((newm|em|gm|m)ail|yandex|rambler|hotbox|chat|rbc|subscribe|spbnit)\.ru)$/   REJECT Faked hostname ($1)
/^(((mcim|newm|em)ail|post|hotbox|msn|microsoft|aol|news|compuserve|yahoo|google|earthlink|netscape)\.(com|net))$/      REJECT Faked hostname ($1)


$config_directory/access_vip_sender - содержит e-mail адреса VIP клиентов, от которых нужно получать почту в любом случае.
Пример:
Код:

postmaster@mydomain.com           OK


$config_directory/verify_sender - содержит список доменов, для которых нужно делать обратную проверку на существование адреса в системе (callback).
Структура:
Код:

rambler.ru      verify_sender
ya.ru           verify_sender
newmail.ru      verify_sender
nm.ru           verify_sender
orc.ru          verify_sender
hotmail.ru      verify_sender
nightmail.ru    verify_sender
earthlink.net   verify_sender
hotmail.com     verify_sender
lycos.com       verify_sender
msn.com         verify_sender
netscape.com    verify_sender
netscape.net    verify_sender
vip.ru          verify_sender
aport.ru        verify_sender
ewealthy.org    verify_sender
km.ru           verify_sender
freemail.ru     verify_sender
shopping.ru     verify_sender
mail.com        verify_sender
microsoft.com   verify_sender
microsoft.ru    verify_sender
subscribe.ru    verify_sender
sendmail.ru     verify_sender
aol.com         verify_sender
msk.lanck.ru    verify_sender
flashmail.com   verify_sender
comcast.net     verify_sender


$config_directory/mx_access - содержит список приватных сетей, которые по всем канонам глобальной сети интернет не могут быть использованы в качестве IP для MX записей:
Структура:
Код:

127.0.0.1       DUNNO
127.0.0.2       550 Domains not registered properly. Can't assign requested address
0.0.0.0/8       REJECT Domain MX in broadcast network
10.0.0.0/8      REJECT Domain MX in RFC 1918 private network
127.0.0.0/8     REJECT Domain MX in loopback network
169.254.0.0/16  REJECT Domain MX in link local network
172.16.0.0/12   REJECT Domain MX in RFC 1918 private network
192.0.2.0/24    REJECT Domain MX in TEST-NET network
192.168.0.0/16  REJECT Domain MX in RFC 1918 private network
224.0.0.0/4     REJECT Domain MX in class D multicast network
240.0.0.0/5     REJECT Domain MX in class E reserved network
248.0.0.0/5     REJECT Domain MX in reserved network


$config_directory/users.hash - используется для Per-User Senders Blocklist. Содержит список отправителей для конкретных получателей и код ошибки.
Структура:
Код:

sender@list.ru|recipient@mydomain.ru  DISCARD
sender@rambler.ru|recipient@mydomain.ru     554 User unknown
spamer@spambox.com|recipient@mydomain.ru    550 I dont need your mails. Sorry
sender@rambler.ru|recipient1@mydomain.ru     554 User unknown
spamer@spambox.com|recipient1@mydomain.ru    DISCARD


Установленные патчи:
MySQL support
VDA
Per-User Senders BlockList


Axel (aka RaVeN) © 2006