Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Перестать вести с ними бизнес, потому что не умеют настроить почту богоугодно?Ну, например, добавить их в whitelist. А вообще, написать письмо ихъ админу и объяснить что он не прав. А если совсем взглянуть правде в глаза, то ООО" Окорочка" не будет своего почтового сервера вовсе, в лучшем случае они заведут домен и скинут почту с него на тот же yandex или google. А ещё вернее у них будут обычные ящики на бесплатных серверах.
жеганинский callback-milterCallback verification считается abusive техникой. В лучшем случае попадёте в ips.backscatterer.org, в худшем — вас используют для атаки на другой SMTP сервер.
Неплохие правила, но считаю что надо действовать жёстче...Понижать очки — это правильно. Действовать жёстче — это не по RFC (см. RFC 5321, п. 7.9).
acl_whitelist:
accept condition = ${lookup mysql{SQL_WHOST_QUERY}{yes}{no}}
accept hosts = ${if exists{CONFDIR/local_host_whitelist}{CONFDIR/local_host_whitelist}{}}
deny
acl_is_work_time: # Рабочее время 08:00 - 19:00 = 03:00 - 14:00 (02 << 15)
accept condition = ${if and { {>{$acl_c2}{2}} {<{$acl_c2}{15}} } {yes}{no}}
deny
acl_check_connect:
warn set acl_c0 = ${eval:0}
warn set acl_c3 = ${eval:0}
deny message = Empty HELO is not allowed ERR_MES_ADD
condition = ${if eq{$sender_helo_name}{}{yes}{no}}
deny message = Your IP in HELO is not allowed
condition = ${if eq{$sender_helo_name}{$sender_host_address}{yes}{no}}
deny message = Our IP in HELO is not allowed
condition = ${if eq{$sender_helo_name}{OUR_IP1}{yes}{no}}
deny message = Our IP in HELO is not allowed
condition = ${if eq{$sender_helo_name}{OUR_IP2}{yes}{no}}
deny message = Localhost in HELO is not allowed ERR_MES_ADD
condition = ${if eq{$sender_helo_name}{localhost}{yes}{no}}
deny message = 127.0.0.1 in HELO is not allowed
condition = ${if eq{$sender_helo_name}{127.0.0.1}{yes}{no}}
deny message = Host name in HELO must contents letters
!acl = acl_whitelist
condition = ${if match{$sender_helo_name}{\N^\d+$\N}{yes}{no}}
defer message = 4 numbers in HELO is not allowed ERR_MES_ADD
!acl = acl_whitelist
condition = ${if match{$sender_helo_name}{\N(\d{1,3}[-\.]){3}\d{1,3}\N}{yes}{no}}
delay = 10s
defer message = Text in HELO ($sender_helo_name) must be hostname ERR_MES_ADD
!acl = acl_whitelist
!condition = ${if match{$sender_helo_name}{\N^([a-zA-Z\d][-a-zA-Z\d_]{0,19}\.){1,5}[a-zA-Z]{2,5}$\N}{yes}{no}}
delay = 10s
defer message = Hostname in HELO is not allowed ERR_MES_ADD
!acl = acl_whitelist
condition = ${if match{$sender_helo_name} \
{home|dialup|dialin|ppp|dsl|pool|peer|dhcp|dynamic|transcapbank}{yes}{no}}
delay = 10s
warn set acl_m1 = ${lookup dnsdb{defer_never,a=$sender_helo_name}}
defer message = Hostname in HELO does not resolve ERR_MES_ADD
!acl = acl_whitelist
condition = ${if eq{$acl_m1}{}{yes}{no}}
delay = 10s
acl_check_rcpt:
...
defer message = Bad reverse DNS ERR_MES_ADD
!acl = acl_whitelist
condition = ${if eq{$sender_host_name}{}{yes}{no}}
!acl = acl_is_work_time
defer message = Bad helo hostname ERR_MES_ADD
!acl = acl_whitelist
!verify = helo
!acl = acl_is_work_time
defer message = Limit for bad reverse DNS ERR_MES_ADD
!acl = acl_whitelist
condition = ${if eq{$sender_host_name}{}{yes}{no}}
set acl_c5 = 2
delay = 35s
ratelimit = 1 / 2h / strict / $sender_host_address
set acl_m0 = ${lookup mysql{SQL_INS_BHOST}{}}
defer message = Limit for bad helo hostname ERR_MES_ADD
!acl = acl_whitelist
!verify = helo
set acl_c5 = 3
delay = 35s
ratelimit = 1 / 2h / strict / $sender_host_address
set acl_m0 = ${lookup mysql{SQL_INS_BHOST}{}}
deny message = Your IP in blacklist $dnslist_domain ($dnslist_text) ERR_MES_ADD
!acl = acl_whitelist
log_message = Sender IP in $dnslist_domain ($dnslist_text)
dnslists = bl.spamcop.net : dul.ru : dnsbl.sorbs.net
# dnslists = dnsbl.njabl.org : relays.ordb.org : list.dsbl.org : bl.spamcop.net : dul.ru
# dynablock.njabl.org : xbl-sbl.spamhaus.org : dnsbl.net.au
# xbl.spamhaus.org : cbl.abuseat.org
deny message = Sender verification failed ERR_MES_ADD
domains = +local_domains
!acl = acl_whitelist
!verify = sender/callout=30s,defer_ok
acl_check_mime:
warn decode = default
deny message = File type is not allowed ($mime_filename)
condition = ${if match {${lc:$mime_filename}} \
{\N(\.exe|\.pif|\.bat|\.cmd|\.scr|\.lnk|\.com|\.vbs|\.cpl|\.sql)$\N} {1}{0}}
deny message = Chinese text is not allowed ERR_MES_ADD
condition = ${if eq{$mime_charset}{gb2312}{1}{0}}
accept
Рубаем тех, кто в блэк-листахЧерные списки есть, а белых списков нет. Непорядок.
Метод отлова спама, который я опишу в этой статье, дает эффективность, примерно 97%Вероятно, оставшиеся 3% приходятся на тех спамеров, которые арендуют VDS и используют сносно настроенные MTA.
Боремся со спамом стандартными средствами почтовика (на примере Exim)