В процессе отправки письма имеется возможность сфальсифицировать отправителя, т. е. Послать письмо где в поле From (От кого) внести произвольный почтовый адрес. Для того, чтобы не было такого обмана сообщество ввело в действие стандарт именуемый, как SPF (Sender Policy Framework) — структура политики отправителя.
Данный стандарт позволяет Администратору домена указать в TXT-записи определенную строку, где содержится список всех серверов для которых разрешено отправлять @-сообщения с обратными адресами в этом самом домене. Чтобы применить данный стандарт необходимо:
1. Права Администратора на редактирование Ваших DNS записей купленного доменного имени.
2. Адрес сервера с которого к Вам будет отправляться сообщения.
На заметку: созданное правило применяется не сразу, а может достигать период до 72 часов, так что не следует паниковать по напрасну что Вы все сделали, а изменений не видно.
В основе правил написания задействуется следующий синтаксис разделенный на три блока:
а) Версия, на текущий момент она одна: v=spf1
б) Префикс-механизм, т. е. (+,-,~,?)
и (all,ip4,ipv6,a,mx,include
(взять данные с другого сервера))
в) Модификаторы: redirect
(использовать данные другого сервера) и exp
(ссылка на сообщение при отказе принятия сообщения).
Примеры записей:
Пример №1:
v=spf1 mx -all
, где:
v=spf1
→ используемая версия SPF
mx
→содержит все адреса серверов, указанные в MX-записях Вашего домена
-all
→ отклонить письма от всех остальных серверов которые не указаны в SPF-записи.
Расшифровывается, как принимать всю почту из серверов указанных в MX-записях, а от всех остальных отклонять.
Существуют и другие опции:
- «+» → принимать почту (параметр по дефолту)
- «-» → не принимать почту
- «~» → письмо будет принято, но будет отметка что оно идет как «СПАМ»
- «v»=spf1 → используемая версия SPF
- «?» → нейтральное отношение, нужна дополнительная проверка
- «mx» → содержит все адреса серверов, указанные в MX-записях Вашего домена
- «ip4» → можно указать одиночный IP-адрес или же всю сеть адресов
- «a» → объяснение что делать с письмом от определенного домена
- «include» → включает в себя хосты, разрешенные SPF-записью указанного домена
- «all» → все остальные сервера, не перечисленные в SPF-записи.
Пример №2:
v=spf1 +a +mx -all
, где:
«+a»
→ разрешаем прием корреспонденции от узла, адрес которого совпадает с IP-адресом в записи типа (А) для определенного домена (к примеру ekzorchik.ru)
«+mx»
→ разрешаем прием писем, если в роли отправляющего хоста указаны mx-записи опеределенного дома (к примеру ekzorchik.ru)
«-all»
→ если сообщение не попало ни под одно правило, что его следует изничтожить (отвергнуть).
Расшифровывается, как приём сообщений с серверов в записях A & MX, а от всех остальных доменов сообщения отклоняются.
Пример №3:
v=spf1 -all
Расшифровывается, как игнорировать все почту с домена (т. е. Текущего)
Пример №4:
v=spf1 +mx ~all
Расшифровывается, как принимать все почту с текущих mx серверов, а со всех остальных сообщения буду приниматься, но отправлять как СПАМ письма (А потому данные письма могут быть изучены более тщательно)
Пример №5:
v=spf1 redirect:yahoo.com
Расшифровывается, как вместо того чтобы писать правила работы их можно забрать с указанного домена (т. е. Yahoo.com)
Пример №6:
v=spf1 ipv4:ekzorchik.ru/24 -all
Расшифровывается, как идет доверие всей почты из сети класса С в котором располагается данный домен, т. е. (ekzorchik.ru (185.98.87.231)) значит доверять из сети: 185.98.87.[0-255], а остальная почта будет проигнорирована.
Пример №7:
v=spf1 ptr:ekzorchik.ru exist:ekzorchik.ru -all
Расшифровывается, как проверяется наличие PTR записи отправителя. Если она соответствует указанному домену, то почта пропускается, где параметр exist осуществляет обычную проверку работоспособности доменного имени.
Пример №8:
v=spf1 +a +mx -all exp:spf.remote.org
Расшифровывается, как доверие всей почты указанной из доменных имен перечисленных в записях (A & MX) , если это не так почта игнорируется и отправляется сообщение из предварительно созданной TXT-записи: spf.remote.org IN TXT «You host not allowed @-mail to me»
Чтобы составить собственное SPF правило для хостинга (почтового сервера), нужно сперва проверить, а может все таки есть SPF–запись (к примеру проверяю наличие записи у рабочего почтового сервера)
ekzorchik@ekzorchik:~$ dig TXT nemdom.ru
nemdom.ru. 38400 IN TXT "v=spf1 mx -all"
, данная запись говорит, что в роли отправителя могут быть указаны только адреса с доменом текущего сервера, а все остальные отклоняются и поэтому можно для собственного почтового сервера применить ее настройки:
v=spf1 redirect=nemdom.ru
По началу, следует для составления собственной записи проанализировать с популярных доменных имен наличие вот такой вот записи, разобрать все что она делает и как работает почта. И только так придет понимание как настраивать в первую очередь самим чтобы ни от кого не зависеть. Надо быть уверенным только в себе. На этом я прощаюсь, в последствии я разберу еще несколько способов которыми можно обезопасить собственный почтовый сервер. До новых встреч, с уважением автор блога — ekzorchik.