Страница 1 из 1

exim фильтрация HELO\EHLO

Добавлено: 2013-04-01 17:39:33
deisler
Приветствую всех.
Хочу послушать мнения товарищей на счёт фильтрации HELO\EHLO.
в acl_smtp_rcpt я установил фильтрацию сообщений для клиентов:

Код: Выделить всё

    # Запрещщаем тех, кто не обменивается приветственными
    # сообщениями (HELO/EHLO)
    deny    message       = "Access denied - HELO/EHLO require by SMTP (See RFC2821 4.1.1.1)"
            condition     = ${if eq{$sender_helo_name}{}}

    # Рубаем тех, кто подставляет в HELO ip адрес.
    deny    message       = "Access denied - HELO/EHLO must contain a FQDN or IP literal"
            !authenticated = *
            hosts         = !127.0.0.1 : !localhost : *
            condition     = ${if isip{$sender_helo_name}}

    # Проверка HELO на literal ipv4, блочить если literal ipv4 отличается от ip отправителя или HELO/EHLO не содержит FQDN..
    deny    message       = "Access denied - Your literal ip in HELO/EHLO isn't your IP address or HELO/EHLO don't contain a FQDN"
            !authenticated = *
            hosts         = !127.0.0.1 : !localhost : *
            condition     = ${if or{\
                                     {and{\
                                         {match{$sender_helo_name}{\N\[((25[0-5]|2[0-4][0-9]|[1][0-9][0-9]|[1-9][0-9]?)\.)((25[0-5]|2[0-4][0-9]|[1][0-9][0-9]|[1-9][0-9]?|0)\.){2}(25[0-5]|2[0-4][0-9]|[1][0-9][0-9]|[1-9][0-9]?)\]\N}}\
                                         {!eq{$sender_helo_name}{[$sender_host_address]}}}}\
                                     {!match{$sender_helo_name}{\N(((([[:lower:][:digit:]]+)(((-)([[:lower:][:digit:]]+))*))\.)+)([[:lower:][:digit:]]{2,})\N}}}}

    # Рубаем тех, кто подставляет в HELO пихает мой hostname
    deny    message       = "Access denied - HELO/EHLO don't must contain a [$sender_helo_name]"
            hosts         = !127.0.0.1 : !localhost : *
            condition     = ${if eq{$sender_helo_name}{$primary_hostname}}

   # Рубаем тех, кто подставляет в HELO домены из локальных доменов.
    deny    message       = "Access denied - HELO/EHLO don't must contain a [$sender_helo_name]"
            hosts         = !127.0.0.1 : !localhost : !+relay_from_hosts : *
            condition     = ${if match_domain{$sender_helo_name}{+local_domains}}
Количество спама поуменьшилось.

Обдумываю дополнительный вариант фильтрации: запрещать почту с релеев, которые в HELO подставляют несуществующий FQDN, т.е. без A записи.
Всё никак не могу прийти в выводу зарежет ли мне такое правило валидную почту от криво настроенных серверов или нет (а если сервера настолько кривые, так ли нужна от них почта?). То же самое на соответствие helo literal ip address или FQDN (по rfc).
Есть ли у вас какие-нибудь мысли?
Спасибо.

Re: exim фильтрация HELO\EHLO

Добавлено: 2013-04-01 18:34:08
ChihPih
Лучше делать на основе спам очков, ибо гибче, ИМХО. Вот как за пример.

Re: exim фильтрация HELO\EHLO

Добавлено: 2013-04-01 18:42:09
wildman
мое скромное мнение:
- проверять существование домена -всегда.
- проверять существование отправителя - всегда.
- проверять PTR - всегда.

Re: exim фильтрация HELO\EHLO

Добавлено: 2013-04-01 19:19:24
deisler
ChihPih писал(а):Лучше делать на основе спам очков, ибо гибче, ИМХО. Вот как за пример.
Да можно, конечно, было бы на основе спам очков.
Только я использую dspam определения спамности только по содержимому письма.
В идеале хотелось бы сделать такую схему - подсчёт очков, и установление начального spam score для dspam, на который он накидывал бы свои очки и принимал решение о спамности письма или нет, т.е. чтобы последней инстанцией был dspam, т.к. пользователи у меня сами переучивают dspam фильтр под себя.
Проблема в том, что dspam не позволяет устанавливать начальный spam scrore, к сожалению...

Вот я и думаю как сохранить решение dspam как последней инстанции и максимально средствами exim прибивать спам без потенциальной потери важных писем с криво настроенных серверов.

Re: exim фильтрация HELO\EHLO

Добавлено: 2013-04-05 12:08:13
ASY
deisler писал(а):Обдумываю дополнительный вариант фильтрации: запрещать почту с релеев, которые в HELO подставляют несуществующий FQDN, т.е. без A записи.
К сожалению, RFC 2821 запрещает отлуп по данному основанию в явном виде:

An SMTP server MAY verify that the domain name parameter in the EHLO
command actually corresponds to the IP address of the client.
However, the server MUST NOT refuse to accept a message for this
reason if the verification fails: the information about verification
failure is for logging and tracing only.

Так что, остаётся только синтаксис проверять, а ля "10.1.1.1" или "[localhost]".

Re: exim фильтрация HELO\EHLO

Добавлено: 2013-04-05 14:10:35
deisler
ASY писал(а):
deisler писал(а):Обдумываю дополнительный вариант фильтрации: запрещать почту с релеев, которые в HELO подставляют несуществующий FQDN, т.е. без A записи.
К сожалению, RFC 2821 запрещает отлуп по данному основанию в явном виде:

An SMTP server MAY verify that the domain name parameter in the EHLO
command actually corresponds to the IP address of the client.
However, the server MUST NOT refuse to accept a message for this
reason if the verification fails: the information about verification
failure is for logging and tracing only.

Так что, остаётся только синтаксис проверять, а ля "10.1.1.1" или "[localhost]".
Да, я читал этот пункт.
Тут статистика такова, что 99,....% отправляющих с helo который не является literal ip или fqdn, являются спамерами, либо клиентами, которые юзают почтовые программы, а клиентов из такой проверки мы исключаем.
В принципе, можно конечно и не резать, а накидывать баллы.