Как всем известно, протокол отправки электронной почты SMTP, подразумевает, что в качестве отправителя можно указать любой почтовый ящик. Таким образом можно послать письмо, подставив в поле "From" вымышленное значение. Процесс такого почтового обмана называется Спуфинг (e-mail spoofing). Чтобы бороться с этим явлением, был разработан и введен в действие стандарт SPF – Sender Policy Framework (структура политики отправителя).
SPF позволяет владельцу домена указать в TXT-записи домена специальным образом сформированную строку, указывающую список серверов, имеющих право отправлять email-сообщения с обратными адресами в этом домене.
Рассмотрим простой пример SPF-записи.
example.org. IN TXT "v=spf1 +a +mx -all" |
Теперь более детально о допустимых опциях. Рассмотрим варианты поведения получателя, в зависимости от используемых опций:
Итак, попробуем разобраться, что же значит SPF-запись, указанная выше.
Для лучшего понимания того, как работает SPF, рассмотрим еще один, более сложный пример.
example.org. IN TXT "v=spf1 mx ip4:195.3.159.250 +a:smtp.mail.ru include:gmail.com ~all" |
Теперь более подробно о используемых опциях...
А теперь рассмотрим еще более "экзотичный" пример. В описании возможных опций указывалось, что возможно указание сетей ip-адресов. Стоит отметить, что это применимо и к записям "a" и "mx". Рассмотрим следующий пример.
example.org. IN TXT "v=spf1 mx/24 a:muff.kiev.ua/24 -all" |
Иногда можно встретить следующие записи (очень редко):
Пример использования:
example.org. IN TXT "v=spf1 ptr:example.org exist:example.org -all" |
Также не будет излишним ознакомиться со следующими опциями: redirect и exp.
"redirect" - указывает получателю, что нужно проверять SPF-запись указаного домена, вместо текущего домена. Пример:
example.org. IN TXT "v=spf1 redirect:example.com ~all" |
В даном примере будет проводится проверка SPF-записи домена example.com, а не example.org.
"exp" - использование даной опции позволяет задать сообщение о ошибке, которое будет передано отправителю при возникновении таковой. Размещается в конце SPF-записи, даже после опции all. Рассмотрим более детально механизм работы опции exp.
Допустим, что у домена example.org следущая SPF-запись:
example.org. IN TXT "v=spf1 +a +mx -all exp=spf.example.org" |
Теперь содаем TXT-запись для домена spf.example.org:
spf.example.org. IN TXT "You host not allowed e-mail to me from this domain!" |
В результате этих шаманских действий SPF-запись будет контролировать, чтобы почта доставлялась только от валидных хостов, а всем остальным будет отправляться сообщение о ошибке, прописанное в TXT-записи домена spf.example.org.
На этой позитивной ноте, пожалуй, статью можно закончить. Азы использования SPF-записи описаны, а механизм работы можно изучить более детально при практическом использовании.
Re: SPF-запись - проверяем валидность отправителя
Привет вот читал на досуге наткнулся, вопрос spf.example.org. IN TXT "You host not allowed e-mail to me" может все же from this domain ?
Re: SPF-запись - проверяем валидность отправителя
Согласен, так будет более информативно. Откоректировал запись.
Re: SPF-запись - проверяем валидность отправителя
А можно ли добавлять в SFP-запись реального домена ip4:127.0.0.1 ? Не нарушает ли это какие-то стандарты/правила? Это для того, чтобы из веб-морды можно было почту отправлять, которая на том же сервере крутится, где и MTA.
Re: SPF-запись - проверяем валидность отправителя
127.0.0.1 не должно фигурировать... Если в заголовках имеем данный IP, значить "что-то пошло не так...".
Настройте веб-интерфейс на работу с "правильным" IP, вот и все.
Re: SPF-запись - проверяем валидность отправителя
Действительно, спасибо за подсказку. Так и сделал, теперь работает и без 127.0.0.1 в SPF-записи.
Re: SPF-запись - проверяем валидность отправителя
Есть проблемка, на сервере написано так (домены и ip заменил):
$ dig txt @ns1.site.ua site.com.ua+short
"v=spf1 a mx ip4:200.200.100.50 ~all"
в toolbox.googleapps.com выдает ошибку spf:
Re: SPF-запись - проверяем валидность отправителя
Скорее всего Google хочет видеть свои сервера в составе прочих:
"v=spf1 a mx ip4:200.200.100.50 include:_spf.google.com ~all"