Страница 1 из 1
Не срабатывают некоторые правила в acl exim
Добавлено: 2008-04-29 10:26:58
princeps
Периодически прорывается почта с хостов с названиями типа: dsl.static859895170.ttnet.net.tr, хотя должен посылаться нах как минимум в двух пунктах: во-первых, в нем четыре точки, во-вторых, слово "dsl". При этом в отношении других хостов эти правила работают. В чем может быть дело?
В отчетах eximstats такие хосты обычно в круглых скобках, вот так:
В логах по их поводу следующее:
Код: Выделить всё
no IP address found for host dsl.static859895170.ttnet.net.tr (during SMTP connection from (dsl.static859895170.ttnet.net.tr) [85.98.95.170] I=[192.168.0.13]:25)
1JqiDp-000Cxa-4B <= edagrinavic@prodigy.net H=(dsl.static859895170.ttnet.net.tr) [85.98.95.170] I=[192.168.0.13]:25 P=esmtp S=10192 id=01c8a9c9$0d7ee600$aa5f6255@edagrinavic from <edagrinavic@prodigy.net> for user@mydomain.ru
1JqiDp-000Cxa-4B => user <user@mydomain.ru> R=mysqluser T=mysql_delivery
1JqiDp-000Cxa-4B Completed
no IP adress found кажется мне подозрительным - такое ощущение, что после него acl дальше не применяются. А вот где проводится эта проверка на соответствие ip-адресу - не могу найти. Помню, что копировал откуда-то. Вот кусок acl с проверкой на количество точек, который, по идее, должен применяться к этому хосту:
Код: Выделить всё
# Считем число точек в доменном имени. (больше 4-х - в топку)
deny condition = ${if match{$sender_host_name} \
{\N((?>\w+[\.]){4,})\N}{yes}{no}}
hosts = !+relay_from_hosts : *
!senders = :
message = "Too many dots"
Украдено из какого-то конфига Лиса.
Re: Не срабатывают некоторые правила в acl exim
Добавлено: 2008-04-29 11:22:16
dikens3
в полезных скриптах я выложил описание как произвести отладку.
Возможно у тебя письмо было принято раньше этой проверки.
Re: Не срабатывают некоторые правила в acl exim
Добавлено: 2008-04-29 13:21:14
princeps
Вот что получается:
Код: Выделить всё
sender_fullhost = mxs.mail.ru (dsl.static859895170.ttnet.net.tr) [194.67.23.20]
sender_rcvhost = mxs.mail.ru ([194.67.23.20] helo=dsl.static859895170.ttnet.net.tr)
check condition = ${if match{$sender_host_name} {\N((?>\w+[\.]){4,})\N}{yes}{no}}
= no
[b]deny: condition test failed[/b]
Это был тест на количество точек. Я, наверное, не совсем что-то понял, имеется в виду больше четырех или больше или равно четырем?
Теперь на плохие слова:
Код: Выделить всё
processing "deny"
check !senders = :
address match: subject=user@ttnet.net.tr pattern=
ttnet.net.tr in ""? no (end of list)
user@ttnet.net.tr in ":"? no (end of list)
search_open: wildlsearch "/usr/local/etc/exim/bad_words_in_hostname"
search_find: file="/usr/local/etc/exim/bad_words_in_hostname"
key="mxs.mail.ru" partial=-1 affix=NULL starflags=0
LRU list:
F/usr/local/etc/exim/bad_words_in_hostname
End
internal_search_find: file="/usr/local/etc/exim/bad_words_in_hostname"
type=wildlsearch key="mxs.mail.ru"
file lookup required for mxs.mail.ru
in /usr/local/etc/exim/bad_words_in_hostname
[b]mxs.mail.ru in "^.*dsl.*"? no (end of list)[/b]
......
Я думал, он HELO проверяет на плохие слова

Если я в правиле, проверяющем на неправильные слова заменю $sender_host_name на $sender_helo_name, то произойдет что-нибудь нехорошее? И как вообще правильнее написать? Может быть два правила сделать, чтоб одно по helo проверяло, второе по sender_host_name? И еще вопрос: при чем здесь вообще mxs.mail.ru?
Re: Не срабатывают некоторые правила в acl exim
Добавлено: 2008-04-29 16:14:02
dikens3
при чем здесь вообще mxs.mail.ru?
Нефига тупо копировать.
IP Адрес какой у тебя в скрипте? 194.67.23.20?
Re: Не срабатывают некоторые правила в acl exim
Добавлено: 2008-04-29 16:56:05
princeps
А, действительно, айпи адреса я не заметил

А какой айпи мне писать, если экзим в логи сообщает, что айпи-адрес для этого компа не найден?
Re: Не срабатывают некоторые правила в acl exim
Добавлено: 2008-04-29 17:26:25
princeps
Судя по всему происходит следующее: $sender_host_name видимо берется после проверки соответствия имени хоста его айпишнику. Поскольку у меня ip adress for this host not found, exim вставляет вместо $sender_host_name то, что берет из адреса отправителя после собаки. Я все правильно понимаю? Таким нехитрым способом спамеры обманывают мой фильтр

Как с этим бороться?
Re: Не срабатывают некоторые правила в acl exim
Добавлено: 2008-04-29 20:52:59
dikens3
Поскольку у меня ip adress for this host not found, exim вставляет вместо $sender_host_name то, что берет из адреса отправителя после собаки.
$sender_host_name должна быть пустая. (Блокировать в таком случае не следует)
Re: Не срабатывают некоторые правила в acl exim
Добавлено: 2008-04-29 21:00:32
princeps
И как же бороться с такими ребятами? Может все-таки добавить еще проверку на количество точек-тире в helo? Но тогда все правила, где есть $sender_host_name надо будет продублировать.
Re: Не срабатывают некоторые правила в acl exim
Добавлено: 2008-04-29 21:06:05
dikens3
И как же бороться с такими ребятами?
1. Читать RFC.
2. Если там обязательно MX сервер (это тот, который с тобой соединяется) должен иметь обратную запись, тогда:
2.a. Осознаёшь, что RFC это всего лишь рекомендации, а не точные инструкции. Отсюда - у тебя будут проблемы, если им тупо следовать (Т.е. блокировать серваки при отсутствии обратного имени)
2.б. Читаешь всё вышеперечисленное до прояснения. :-)
P.S. Оптимальных правил в данном случае нет, всё по опыту.
P.S2. Свои проверки HELO я тебе скидывал.
Re: Не срабатывают некоторые правила в acl exim
Добавлено: 2008-04-29 22:03:29
princeps
Я пробовал футболить по несоответствию mx записи в обратной зоне - 5-10 писем в день, из них
все - правильные

Завтра буду экспериментировать с правилами по $sender_host_name и $sender_helo_name. Большое спасибо за помощь.