Доброго времени суток.Имеется FreeBSD 6.2
EXIM 4.67
Настраивал по статье http://www.lissyara.su/?id=1200
Несуществующие локальные пользователи, почему то не отрубаются ACL, а проходят до роутера и уже там отваливаются с ошибкой Unknown User.
Части из конфига:
acl_check_rcpt:
# Allow all LOCAL rcpt, using standart IO
accept hosts = :
# Проверяем недопустимые символы для локальных получателей:
deny local_parts = ^[.] : ^.*[@%!/|]
domains = +local_domains
message = "Incorrect symbol in address"
# Проверяем недопустимые символы для нелокальных получателей:
deny local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
domains = !+local_domains
message = "Incorrect symbol in address"
accept local_parts = postmaster
domains = +local_domains
# Принимаем сообщения от тех, кто аутентифицировался:
accept authenticated = *
# Рубим тех, кто в блеклисте
deny message = "you in blacklist - $dnslist_domain \n $dnslist_text"
dnslists = opm.blitzed.org : \
cbl.abuseat.org : \
bl.csma.biz : \
dynablock.njabl.org
# Запрещаем тех, кто не обменивается приветственными сообщениями (HELO/EHLO)
deny message = "HELO/EHLO require by SMTP RFC"
condition = ${if eq{$sender_helo_name}{}{yes}{no}}
# Рубаем нах, тех, кто подставляет свой IP в HELO
deny message = "Your IP in HELO - access denied!"
hosts = * : !+relay_from_hosts
condition = ${if eq{$sender_helo_name}\
{$sender_host_address}{true}{false}}
# Рубаем тех, кто в HELO пихает мой IP
deny message = "main IP in your HELO! Access denied!"
condition = ${if eq{$sender_helo_name}\
{$interface_address}{yes}{no}}
hosts = !127.0.0.1 : !localhost : *
# Рубаем тех, кто в HELO пихает только цифры (не бывает хостов ТОЛЬКО из цифр)
deny message = "can not be only number in HELO!"
condition = ${if match{$sender_helo_name}\
{\N^\d+$\N}{yes}{no}}
hosts = !127.0.0.1 : !localhost : *
# Рубаем хосты типа *adsl*; *dialup*; *pool*;....
# Нормальные люди с таких не пишут. Если будут
# проблемы - уберёте проблемный пункт (у меня клиенты
# имеют запись типа asdl-1233.zone.su - я ADSL убрал...)
deny message = "your hostname is bad (adsl, poll, ppp & etc)."
condition = ${if match{$sender_host_name} \
{adsl|dialup|pool|peer|dhcp} \
{yes}{no}}
warn
# ставим дефолтовую задержку в 30 секунд
set acl_m0 = 30s
warn
# ставим задержку в 0 секунд своим хостам
hosts = +relay_from_hosts
set acl_m0 = 0s
warn
# пишем в логи задержку (если оно вам надо)
logwrite = Delay $acl_m0 for $sender_host_name \
[$sender_host_address] with HELO=$sender_helo_name. Mail \
from $sender_address to $local_part@$domain.
delay = $acl_m0
# Если отправитель сообщения может быть проверен, то Next, иначе - deny
require verify = sender
message = "Unknown Sender"
# Как я понял, письма, которые идут на несуществующих локальных пользователей
# должны рубиться здесь
accept
domains = +local_domains
endpass
verify = recipient
message = "This user is not exist on this MailServer"
# Final Rule
deny
message = "This server is not open relay"