Раньше был сервер на постфиксе, там я делал необходимые мне блокировки по хосту в check_client_access regexp:/usr/local/etc/postfix/regexp_client где в файле regexp_client был список тех, кого блокировать. Список я составлял сам, на основе логов, блокировал по шаблонам регулярных выражений всё, что не могло быть адекватным почтовым сервисом, в общем такая была задача. И всё работало так, как мне нужно.
Сейчас сделал exim, он давно работает, но сейчас активно полез спам, и назрела необходимость его почикать. Помогите разобраться в том, что есть что.
В логах в соединениях есть строка, например, H=odfs.com.ua (m.odfs.com.ua) [213.155.6.130] - где первое это host name, в круглых скобках это HELO, ну и ip адрес в квадратных. (Насколько я это понял)
Бывают соединения где host name отсутствует, есть только HELO и IP. (вида H=(abcde.com) [123.123.123.123])
Бывают соединения где отсутствует HELO (вида H=abcde.com [123.123.123.123])
Логика подсказывает, что нормальный почтовый сервер будет иметь все три пункта в наличии (в постфиксе даже вопроса такого не возникало, на этапе smtp подключения показывало хост и айпи). В синтаксисе кондишенов я еще тоже не особо разбираюсь.
Подскажите как записать condition для acl где будет резаться подключение с отсутствующим host name и отсутствующим helo. А если так делать не стоит - то почему?
Ну и не понятна еще одна вещь
Я сделал правило, которое блокирует хосты вида H=ip-109-91-111-73.hsi12.unitymediagroup.de
deny message = "spam rule 2"
condition = ${if match{$sender_host_name}{[0-9]*-[0-9]*-[0-9]*-[0-9]*} {yes}{no}}
Оно работает адекватно.
Попытался таким же образом порезать те хосты, где айпи написан канонически с разделением точками.
deny message = "spam rule 3"
condition = ${if match{$sender_host_name}{[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\.} {yes}{no}}
Но это правило начало резать всё подряд, например H=omp.email.farfetch.com [199.7.206.186] F=<farfetch@email.farfetch.com> rejected RCPT <ttttt@tttttttt.ru>: "spam rule 3"
Вот тут мне совершенно непонятно почему это происходит. Что я понимаю неправильно?
EXIM, acls, блокировка по sender_host_name
Модератор: xM
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- xM
- ст. лейтенант
- Сообщения: 1316
- Зарегистрирован: 2009-01-15 23:57:41
- Откуда: Königsberg
- Контактная информация:
EXIM, acls, блокировка по sender_host_name
Ой, тут долго можно писать многократно написанное и переписанное, в том числе и на этом сайте, на предмет синтаксического разбора SMTP сессии на стадии RCPT. При желании вы это и сами без труда отыщете.
Конкретно по вашей теме. Согласно RFC HELO должен быть обязательно, а имя хоста нет. Если в качестве HELO используется IP адрес, а это автоматически означает, что имя хоста отсутствует, то он должен быть представлен в т.н. literal notaion, то заключён в квадратные скобки.
Принадлежность строки к IP-адресу лучше всего проверять функцией Exim $isip, которая поддерживает и IPv4 и IPv6.
И H= это HELO.
Конкретно по вашей теме. Согласно RFC HELO должен быть обязательно, а имя хоста нет. Если в качестве HELO используется IP адрес, а это автоматически означает, что имя хоста отсутствует, то он должен быть представлен в т.н. literal notaion, то заключён в квадратные скобки.
Принадлежность строки к IP-адресу лучше всего проверять функцией Exim $isip, которая поддерживает и IPv4 и IPv6.
И H= это HELO.
IT voodoo blog https://kostikov.co
-
- рядовой
- Сообщения: 21
- Зарегистрирован: 2012-01-17 9:56:53
EXIM, acls, блокировка по sender_host_name
Практика показывает, что это не просто HELOxM писал(а): И H= это HELO.
например подключаюсь с одного из серверов (не почтового) своих на 25 порт почтовика
root@gate02:/home/dalt # telnet mail.myserver.ru 25
Trying 212.xxx.xxx.130...
Connected to mail.myserver.ru.
Escape character is '^]'.
220 mail.myserver.ru ESMTP
helo test.test.test
250 mail.myserver.ru Hello gate-fxp0.server.ru [212.112.132.123]
в логах вижу
H=gate-fxp0.server.ru (test.test.test) [212.112.132.123]
connection from gate-fxp0.server.ru (test.test.test) [212.112.132.123] closed by QUIT
т.е. первая часть из трех в строке H= это host name
Отправлено спустя 8 минут 7 секунд:
То это автоматически означает, что это спамерxM писал(а): Если в качестве HELO используется IP адрес, а это автоматически означает, что имя хоста отсутствует

Я успешно использовал механизм блокировки спамеров по хост нейму в postfix. Мне нужен простой пример, как это делается в экзим. Так что мой вопрос в силе. Частично я уже разобрался, но у меня нет понимания почему если в sender_host_name задать шаблон содержащий IP адрес (которого не должно быть у нормального почтового сервера) - блокируется всё подряд.
- xM
- ст. лейтенант
- Сообщения: 1316
- Зарегистрирован: 2009-01-15 23:57:41
- Откуда: Königsberg
- Контактная информация:
EXIM, acls, блокировка по sender_host_name
Да, вы правы, там не всегда так однозначно. Вот тут описано что там пишется.
Но, в любом случае, искать строку именно из HELO вам надо в переменной $sender_helo_name.
IT voodoo blog https://kostikov.co
-
- рядовой
- Сообщения: 21
- Зарегистрирован: 2012-01-17 9:56:53
EXIM, acls, блокировка по sender_host_name
меня интересует не sender_HELO_name, а sender_HOST_namexM писал(а):Да, вы правы, там не всегда так однозначно. Вот тут описано что там пишется.
Но, в любом случае, искать строку именно из HELO вам надо в переменной $sender_helo_name.
в частности есть хосты вида ip-109-91-111-73.hsi12.unitymediagroup.de и есть хосты вида ip-109.91.111.73.hsi12.unitymediagroup.de
Правило
deny message = "spam rule 2"
condition = ${if match{$sender_host_name}{[0-9]*-[0-9]*-[0-9]*-[0-9]*} {yes}{no}}
успешно блокирует хосты вида ip-109-91-111-73.hsi12.unitymediagroup.de
правило
deny message = "spam rule 3"
condition = ${if match{$sender_host_name}{[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\.} {yes}{no}}
Должно блокировать ip-109.91.111.73.hsi12.unitymediagroup.de
А блокирует то, что не надо, даже вот такое H=omp.email.farfetch.com [199.7.206.186] F=<farfetch@email.farfetch.com> rejected RCPT <ttttt@tttttttt.ru>: "spam rule 3"
Меня интересует почему это происходит, потому что такого быть просто не должно, в моем понимании.
Такое может быть, если правило по шаблону проверяет всю строку целиком H=omp.email.farfetch.com [199.7.206.186], включая IP адрес в квадратных скобках. Но это ведь ерунда, так быть просто не должно, ведь sender_host_name - должен обрабатывать именно host name часть строки. Или тут косяк в работе экзима?
- xM
- ст. лейтенант
- Сообщения: 1316
- Зарегистрирован: 2009-01-15 23:57:41
- Откуда: Königsberg
- Контактная информация:
EXIM, acls, блокировка по sender_host_name
Включите режим отладки - там будут видны раскрываемые строки в правилах.
IT voodoo blog https://kostikov.co