EXIM, acls, блокировка по sender_host_name
Добавлено: 2017-06-27 16:12:22
Раньше был сервер на постфиксе, там я делал необходимые мне блокировки по хосту в 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, он давно работает, но сейчас активно полез спам, и назрела необходимость его почикать. Помогите разобраться в том, что есть что.
В логах в соединениях есть строка, например, 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"
Вот тут мне совершенно непонятно почему это происходит. Что я понимаю неправильно?