[exim-conf] фильтрация по SPF записям домена отправителя

Victor Ustugov victor на corvax.kiev.ua
Пн Ноя 22 20:24:43 EET 2010


Victor Ustugov wrote:
> приветствую
> 
> фильтрация по A и MX записям домена отправителя есть.
> 
> давненько уже надо было прикрутить фильтрацию по TXT записям домена
> отправителя.
> 
> пока единственным применением такому фильтру может служить фильтрация по
> SPF записям домена отправителя для случаев сильно хитроизогнутых
> товарищей, которые прописывают в SPF записях несколько сетей с маской 2
> бита, покрывая таким образом все адресное пространство.
> 
> это еще в июне обсуждалось в русскоязычном exim-users:
> http://mailground.net/pipermail/exim-users/2010-June/000065.html
> 
> и хотя SPF записи всех доменов, упомянутых в том треде, уже
> перенастроены, хочется иметь механизм фильтрации писем от них, не
> вписывая регулярные выражения прямо в конфигурационный файл exim'а.
> 
> т. о. по образу и подобию механизмов confCHECK_MAIL_DOMAIN_A и
> confCHECK_MAIL_DOMAIN_MX был создан механизм проверки TXT записей.

т. к. SPF записи могут быть опубликованы не только в виде TXT записей,
но в виде собственно записей типа SPF (bind поддерживает такие записи с
версии 9.4), показалось целесообразным сделать фильтр и по именно SPF
записям доменов отправителей

> для включения механизма используется переменная confCHECK_MAIL_DOMAIN_TXT

для включения механизма проверки синтаксиса SPF записей используется
переменная confCHECK_MAIL_DOMAIN_SPF

> список возможных значений традиционный:
> NO          - не проводить проверку
> REJECT      - возврата клиенту кода 5xx
> DEFER       - возврата клиенту кода 451
> WARN        - вывод в лог файл предупреждения
> GREYLIST:XX - добавить XX баллов к счетчику опционального грейлистинга
> QUARANTINE  - принять письмо с сохранением в карантин без доставки
> получателям
> REJECT:XX   - добавить XX баллов к счетчику опционального reject'а
> DELAY:XX    - задержка XX секунд перед ответом на RCPT TO

список возможных значений confCHECK_MAIL_DOMAIN_SPF такой же, как и у
confCHECK_MAIL_DOMAIN_TXT

> черный список TXT записей доменов отправителей находятся в файле
> CONFDIR/access-mail-domain-txt в виде:
> txt_record : действие : сообщение SMTP клиенту : сообщение в лог файл
> 
> в качестве "действия" могут выступать:
> ok                  - принимать сообщения
> warn                - выдача предупреждения в лог файл и добавление в
>                     заголовки сообщения в поле X-Warn-Mail-TXT, текст
>                     сообщения об ошибке может быть указан через
>                     двоеточие
> deny или reject     - отказ в приеме сообщения
> drop                - отказ в приеме сообщения с обрывом соединения
> discard             - прием письма без доставки получателю
> defer               - возврат клиенту временной ошибки 4xx
> quarantine          - принять письмо с сохранением в карантин без
>                     доставки получателям
> greylist:xx         - добавление xx баллов к счетчику опционального
>                     greylisting'а
> greylisting:xx      - синоним greylist:xx
> reject:yy           - добавление yy баллов к счетчику опционального
>                     reject'а
> deny:yy             - синоним reject:yy
> delay:zz            - задержка на zz секунд перед продолжением
>                     обработки сообщения
> pause:zz            - синоним delay:zz

список действий, которые можно указывать в файле
CONFDIR/access-mail-domain-spf такой же, как и для
CONFDIR/access-mail-domain-txt

> поля "сообщение SMTP клиенту" и "сообщение в лог файл" могут отсутствовать.
> 
> если в файле CONFDIR/access-mail-domain-txt будет отсутствовать и поле
> "действие", то будет выполнено действие по умолчанию из переменной
> confCHECK_MAIL_DOMAIN_TXT
> 
> пример:
> 
> \N^v=spf.*/2\s\-all$\N : deny : Access denied : Suspicious SPF record
> "$acl_m_key"

все тоже самое касается проверки SPF записей с помощью
confCHECK_MAIL_DOMAIN_SPF и файла данных CONFDIR/access-mail-domain-spf


теперь об отличиях.

в отличии от записей типа TXT dnsdb до сих пор не поддерживает записи
типа SPF, хотя в exim-dev об этом писали более года назад:

http://www.mail-archive.com/exim-dev@exim.org/msg02995.html

патч получился более чем скромный:
http://mta.org.ua/exim-4.69-conf/patches/exim-4.72-dnsdb-spf/patch-src::dnsdb-spf.patch

сегодня этот патч уже безусловно включен механизм сборки порта exim под
FreeBSD:
http://mta.org.ua/exim-4.69-conf/ports-freebsd/exim-4.72/

в ближайшие дни патч будет безусловно включен в механизмы сборок для
поддерживаемых версий Linux систем, BSD систем и Solaris/OpenSolaris.

бинарные пакеты для RedHat/CentOS/Fedora с наложенным патчем будут
выложены на http://mta.org.ua/updates/

для остальных системным бинарные пакеты нужно будет собрать самостоятельно.

еще раз упомяну - поддержка SPF записей реализована в bind 9.4 и выше.
так что тем, у кого bind более старый, нельзя использовать
confCHECK_MAIL_DOMAIN_SPF

при этом безусловное наложение патча patch-src::dnsdb-spf.patch ничему
не повредит. размер исполняемого файла практически не увеличивается при
этом, а добавленный тип записей просто не будет использоваться.

-- 
Best wishes Victor Ustugov   mailto:victor на corvax.kiev.ua
public GnuPG/PGP key:        http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 77186900, 371808614 nic-handle: CRV-UANIC




Подробная информация о списке рассылки exim-conf