Как не попасть в спам? Настройка PTR, SPF, DKIM на Exim

Опубликовано admin - вт, 10/24/2017 - 09:46

Если вы выполнили все шаги, описанные в предыдущей статье, ваш сайт на Drupal готов отправлять письма пользователям. Теперь необходимо сделать так, чтобы отправляемые сайтом уведомления и прочая корреспонденция попадали во “Входящие”, а не “Спам”. В этом материале мы рассмотрим варианты решения этой задачи. 100% результат, к сожалению, гарантировать невозможно, но уменьшить вероятность фильтрации ваших писем в нежелательную почту вполне реально.

Повысить доверие к вашим письмам и, соответственно, уменьшить шансы их попадания в “Спам”, можно с помощью:

  • настройки PTR записи;
  • настройки SPF записи;
  • настройки DKIM.

 

Настройка PTR записи

PTR запись связывает IP адрес с доменом вашего сайта. DNS-серверы хранят так называемые А записи, по которым сопоставляется домен и IP адрес сервера, на котором расположен сайт. PTR запись обратна A записи: она показывает связку IP адреса и домена. Иногда PTR называют Reverse DNS.

В целях борьбы со спамом, почтовые сервисы в большинстве своём проверяют PTR у IP адреса сервера, с которого пришло письмо, а затем либо отправляют это письмо во "Входящее", либо фильтруют его в “Спам”. Соответственно, наличие этой записи и её совпадение с именем домена, который фигурирует в адресе отправителя, повышает доверие к приходящим с этого адреса письмам.

Зачем и как указывать PTR запись?

PTR запись указывается владельцем IP адреса сервера, с которого работает ваш сайт. Нужна та запись только в том случае, если вы используете VPS или выделенный сервер. На виртуальных хостингах PTR обычно есть и так, и указывает эта запись на имя сервера хостинг-провайдера.

Как посмотреть PTR запись?

Узнать PTR запись можно с помощью следующих команд:

1. nslookup

nslookup -type=PTR ip-адрес

2. dig

dig -x ip-адрес

Команды запускаются в терминале (командной строке); вместо “ip адрес” следует подставлять реальный IP.

Настройка SPF записи

SPF расшифровывается как Sender Policy Framework, что можно перевести как “инфраструктура политики отправителя”. Это расширение для протокола отправки электронной почты через SMTP, которое позволяет добавить DNS записи типа TXT к доменному имени и указать в этих записях IP адреса серверов, с которых разрешена отправка электронной почты.

SPF используется как фактор повышения доверия к исходящей от домена почте и в целях снижения вероятности попадания писем в “Спам”. Репутация домена, которую SPF позволяет защитить, также имеет не последнее значение: при рассылке спама или фишинговых писем, злоумышленники могут подставить в поле “От” любой адрес в любом домене, что может стать причиной проблем для владельца такого домена. IP адрес почтового сервера, с другой стороны, подделать невозможно, поэтому когда SPF запись для домена есть, принимающая сторона (почтовая служба) проверяет её и действует соответственно.

Как создать SPF запись?

SPF запись -- текст с определённым синтаксисом. Пример SPF записи:

"v=spf1 +a +mx -all"

В записи указано, что следует принимать почту с IP адресов, которые указаны в DNS записях типа A и MX для домена, сопровождаемого этой записью. Если же адреса иные, почту лучше отклонить. Запись может быть немного короче: "v=spf1 a mx -all", её суть и функциональность от этого не меняются.

Синтаксис SPF записи

"v=spf1" — используемая версия SPF.

"+" — принимать почту. Этот знак не является обязательным.

"-" — отклонять почту.

"~" — принимать почту, но фильтровать её в “Спам”.

"?" — воспринимать письмо нейтрально, то есть применять к нему обычные правила.

"mx" — IP адреса всех серверов, указанных в DNS записях типа MX для домена.

"ip4" — здесь можно указать конкретные IPv4 адреса.

"ip6" — здесь можно указать конкретные IPv6 адреса.

"a" — IP адреса, которые указаны в DNS записях типа A для домена.

"include" — разрешает применение SPF другого домена.

"all" — устанавливает правила для всех других доменов, которых нет в SPF записи.

Пример SPF записи

Рассмотрим такую SPF запись:

"v=spf1 mx a ip4:123.45.125.94 a:example.com mx:example.com include:example.com ~all" 

mx — принимать почту со своих почтовых серверов.

a — принимать почту с серверов, которые указаны в записях типа A для своего домена.

ip4:123.45.125.94— принимать почту, отправленную с IP 123.45.125.94. Здесь можно указывать подсети в формате 123.45.125.0/24.

a:example.com — принимать почту с серверов, которые указаны в записях типа A для домена example.com. Здесь подсети можно указать в формате example.com/24.

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

include:example.com — разрешение на получение почты по правилам, указанным в SPF домена example.com.

~all — вся почта с доменов, не указанных в SPF, будет направляться в “Спам”. Если тильду заменить на минус (-all), такая корреспонденция вообще не будет приниматься.

Настройка DKIM

DKIM расшифровывается как DomainKeys Identified Mail, что можно перевести как “Идентифицированная ключом домена почта”. Это метод аутентификации, дающий возможность проверить, действительно ли письмо отправлено с домена, фигурирующего в поле “От”. DKIM -- эффективный метод борьбы с фишинговыми письмами и спамом.

Создание ключей DKIM при помощи opendkim-tool

1. Для начала, необходимо установить opendkim-tools. Сделать это можно с помощью следующей команды:

apt-get install opendkim-tools

2. Затем надо создать папку dkim, в которой будут хранится ключи:

mkdir /etc/exim4/dkim

3. Права на папку необходимо поменять с root на Debian-exim:

chown -R Debian-exim:Debian-exim /etc/exim4/dkim

4. Следующей командой генерируются открытый и закрытый ключи для домена example.com:

opendkim-genkey -D /etc/exim4/dkim/ -d mydomain.com -s mymail

Здесь:

D - каталог, в который будут сгенерированы ключи;

d - домен, который будет использовать этот ключ для подписания;

s - mymail — имя селектора, строкового идентификатора, который, в принципе, может быть любым.

В результате, вы получите файлы etc/exim4/dkim/mymail.private и /etc/exim4/dkim/mymail.txt с секретным и публичными ключами соответственно.

5. Теперь надо перейти в папку /etc/exim4/dkim/ и переименовать mail.private в example.com.key:

cd /etc/exim4/dkim/

mv mymail.private mydomain.com.key

6. Права на example.com.private (файл закрытого ключа) следует поменять с root на Debian-exim:

chown -R Debian-exim:Debian-exim /etc/exim4/dkim/mydomain.com.key

chmod 640 /etc/exim4/dkim/mydomain.com.key

 

Настройки DNS

В файле mail.txt (cat /etc/exim4/dkim/mymail.txt) должно быть следущее содержимое:

mymail._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC57fv+meeGTF2gtQ/FO1WAT7hYrPTnKir06k3YR6ZBCLhAVbfEOAZ9OkVTAEf67T61eRY8w8hojnN9dxd07XIZ8KyatNXajWfYo3g0YDWopTfVfoaI4XFXqQH8V6iXyobArpSe3MSTSTqNFuS+w498JoHAkeXXhcl6kmjdSGkPtwIDAQAB" ) ;

—--- DKIM key mymail for mydomain.com

Эту информацию необходимо добавить в TXT запись DNS зоны. В поле имя надо добавить

mymail._domainkey

в поле Контент --

v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC57fv+meeGTF2gtQ/FO1WAT7hYrPTnKir06k3YR6ZBCLhAVbfEOAZ9OkVTAEf67T61eRY8w8hojnN9dxd07XIZ8KyatNXajWfYo3g0YDWopTfVfoaI4XFXqQH8V6iXyobArpSe3MSTSTqNFuS+w498JoHAkeXXhcl6kmjdSGkPtwIDAQAB

Теперь mymail.txt можно просто удалить.

Чтобы проверить, всё ли в порядке с добавленными записями, надо выполнить следующую команду:

dig txt mymail._domainkey.mydomain.com | grep DKIM

Ответ должен быть такого вида:

mymail._domainkey.mydomain.com. 2214 IN TXT "v=DKIM1\; k=rsa\...

Определение DKIM Author Domain Signing Practices (DKIM ADSP)

Чтобы указать практики DKIM Author Domain Signing Practices (DKIM ADSP), следует добавить в TXT DNS домена ещё одну запись:

_adsp._domainkey.mydomain.com IN TXT "dkim=all"

Здесь:

all — отправка неподписанных сообщений запрещена;

discardable — все неподписанные сообщения должны быть заблокированы на стороне получателя;

unknown — домен может подписывать некоторые или все письма.

Настройка Exim

Настройка Exim начинается с добавления следующих строк в конфигурационный файл /etc/exim4/exim4.conf.template (перед секцией remote_smtp):

# DKIM:

DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_KEY_FILE = /etc/exim4/dkim/DKIM_DOMAIN.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_KEY_FILE}{DKIM_KEY_FILE}{0}}
DKIM_SELECTOR = mymail

Конфигурационный файл может быть разделён на несколько более мелких файлов в процессе установки exim4. В таком случае, указанные строки необходимо добавить в файл /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp

Ещё один вариант -- ручное создание конфигурационного файла /etc/exim4/exim4.conf. В таком случае, добавлять строки следует в этот файл.

Операцию следует повторить для каждого домена, а затем перезапустить exim командой:

/etc/init.d/exim4 restart

Проверка записей в конфигурационным файле Exim

Чтобы проверить записи в конфигурационном файле Exim, следует выполнить следующую команду:

exim -bP transports | grep dkim

Ответ должен иметь следующий вид:

dkim_domain = ${lc:${domain:$h_from:}}
dkim_private_key = ${if exists{/etc/exim4/dkim/${lc:${domain:$h_from:}}.key}{/etc/exim4/dkim/${lc:${domain:$h_from:}}.key}{0}}
dkim_selector = mymail

где dkim_selector это первое слово перед ._domainkey в открытом ключе

Итого, SPF запись и PTR запись настроены, сервер готов для работы с DKIM. Результат -- больше писем во “Входящих”, а не в “Спаме”.

Теги

Добавить комментарий

Filtered HTML

  • Допустимые HTML-теги: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.
  • Web page addresses and email addresses turn into links automatically.