SPF запись для почтового сервера

SPF запись для почтового сервера добавляется DNS доменного имени для ограничения количества серверов с которых могут отправляться письма подписываемые доменом.

Каждый раз сервер, принимающий почту делает запрос к DNS и выясняет имеется ли запись типа SPF — если запись есть он анализирует ее и поступает с полученным письмом так как запись предписывает.

SPF запись для почтового сервера

Записи SPF задаются в конфигурационном файле BIND или, на практике, часто в личном кабинете компании на NS серверы которого делегировано доменное имя.

 

 

SPF запись для почтового сервера: правила задания

 

Для домена example.com запись может выглядеть так:

. IN TXT v=spf1 mx -all

SPF добавляется в виде TXT записи. Правила записи могут отличаться в зависимости от принципов работы интерфейса провадера DNS (чаще всего, это относится к наличию или отсутствию кавычек), их всегда следует уточнять, но в общем случае запись формируется по одному и тому же принципу

v=spf1 — указывает версию, данный элемент присутствует всегда

mx— говорит о том, что письма могут отправляться от всех хостов заданных в MX записях домена, аналогом может быть a:mail.example.com, т.е. указание определенного доменного имени. mx используется значительно чаще.

-all — предписывает отвергать все письма, поступающие с хостов, включение которых не предполагается mx/a тэгами. Альтернативой является задание ~all с тильдой в качестве первого знака, письма при этом будут доставляться, но в служебных заголовках будет пометка о том, что отправитель подделан. Эта опция используется чаще поскольку снижает риск потери нужным писем.

 

SPF запись в отличие от DKIM может присутствовать в DNS при отсутствии конфигурации Postfix, в случае с DKIM добавлять запись не рекомендуется.

 

 

Добавление SPF в конфигурацию Postfix

 

Прежде всего установим необходимые пакеты

apt-get install postfix-policyd-spf-python postfix-pcre

 

Открываем для редактирования файл /etc/postfix/master.cf в его конец дорбавляем две строки, которые обеспечат поддержку policyd-spf

 

mcedit /etc/postfix/master.cf

policyd-spf unix — n n — 0 spawn
user=policyd-spf argv=/usr/bin/policyd-spf

 

 

Также увеличим таймаут Postfix, это не даст пакету завершить процесс принудительно если транзакция выполняется слишком долго

 

mcedit /etc/postfix/main.cf

policyd-spf_time_limit = 3600

 

 

В этот же конфиг добавим check_policy_service entry:

smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination,check_policy_service unix:private/policyd-spf

 

Значения лучше указывать друг за другом через запятую без пробелов, иначе могут возникать ошибки. Опция reject_unauth_destination обязательна должна идти перед check_policy_service unix:private/policyd-spf

 

Перезапускаем Postfix

/etc/init.d/postfix restart

 

Чтобы проверить все ли получилось отправляем письмо из командной строки

mail testmailbox@example.com -s 'testing SPF' < /dev/null

 

Получив письмо просматриваем служебные заголовки — spf=pass будет свидетельствовать об успехе.