Покритикуйте, плз, настройку exim. Вроде, после того, как сделал так спаму стало поменьше. Хотя наверно из-за выходных...У меня один мой домен. Это настройка почтовика, который висит на внешке (он релеит на и с внутреннего сервака). Критика и дельные советы приветствуются.
Код: Выделить всё
acl_check_rcpt:
# Принимать письма, которые пришли не по TCP/IP
accept hosts = :
# Разрешим слать все постмастеру
accept
condition = ${if eq{$local_part@$domain}{postmaster@example.ru}{yes}{no}}
domains = +local_domains
deny message = "Restricted characters in address"
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
deny message = "Restricted characters in address"
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
# Deny unless the recipient address can be verified.
deny
!verify = recipient
!domains = +local_domains
# Принимать почту от relay_from_hosts (сюда и лотус входит)
accept hosts = +relay_from_hosts
control = submission
# Типа white list
accept hosts = +whitelist_hosts
# Accept from fetchmail
accept hosts = 10.10.1.1
domains = +local_domains : +relay_to_domains
# От внутренних хостов почту мы уже приняли. От всех других такую почту дропаем
drop message = "Access denied - $sender_address_domain is my local domain"
condition = ${if eq{$sender_address_domain}{example.ru}{yes}{no}}
# Wrong helo
drop message = "Access denied - Invalid HELO name (See RFC2821)"
hosts = !127.0.0.1 : !localhost : *
condition = ${if or{\
{ eq{$sender_helo_name}{} }\
{ eq{$sender_helo_name}{$sender_host_address} }\
{ eq{$sender_helo_name}{$interface_address} }\
{ isip{$sender_helo_name} }\
{ eq{$sender_helo_name}{$local_part} }\
{ match_domain{$sender_helo_name}{+local_domains} }\
}{yes}{no}}
# Bounce сообщения никогда не посылаются более чем на один адрес
drop message = "Legitimate bounces are never sent to more than one recipient."
senders = : postmaster@* : mailer-daemon@*
condition = ${if >{$recipients_count}{1}{yes}{no}}
# SPF проверка того, что письмо с домена остылается "правильным" mx
drop message = "$sender_host_address is not allowed to send mail from $sender_address_domain"
hosts = !127.0.0.1 : !localhost : !10.10.1.1 : *
spf = fail
# Deny unless the sender address can be verified.
require verify = sender
# Начинаем считать задержки
warn set acl_c2 = 0
# Check sender domain for blacklisted entry.
warn dnslists = dialup.mail-abuse.org : \
zen.spamhaus.org : \
cbl.abuseat.org : \
smtp.dnsbl.sorbs.net : \
nomail.rhsbl.sorbs.net : \
bl.spamcop.net
set acl_c2 = 15
message = "15s wait: listed in black dns list"
# Check wrong hello for literals only
warn set acl_c2 = ${eval:$acl_c2+10}
condition = ${if match{$sender_helo_name}{\N^\w+$\N}{yes}{no}}
message = "10s wait: Literal helo"
# Check for ptr record
warn set acl_c1 = ${lookup dnsdb{defer_never,ptr=$sender_host_address}{$value}{none}}
# Если нет ptr записи - добавить 15 секунд на размышление
warn condition = ${if eq{$acl_c1}{none}{yes}{no}}
set acl_c2 = ${eval:$acl_c2+15}
message = "15s waiting: No ptr record"
# Сделаем callout. Попробуем у удаленного сервака пройти проверку отправителем
warn !verify = sender/callout=30s,defer_ok,maxwait=20s
set acl_c2 = ${eval:$acl_c2+15}
message = "15s waiting: Callout to server fails"
warn log_message = "TESTING_DELAY: $acl_c2 seconds from: $sender_address to: $local_part@$domain"
set acl_c2 = ${time_interval:$acl_c2}
warn delay = $acl_c2
deny message = "Sorry, no such user. Check recipient mail"
condition = ${if and{\
{\
eq{${lookup{$local_part@$domain}dbm{/usr/local/etc/exim/users.dbm}{$value}{deny}}}\
{deny}\
}\
{\
!match_domain{$sender_address_domain}{+local_domains}\
}\
}\
{yes}{no}}
warn set acl_m0 = $domain
warn set acl_m3 = $sender_address_domain
accept domains = +local_domains : +relay_to_domains
drop message = "I'm not open relay! bb))"