Как сделать так чтобы от меня вкусно пахло

Как сделать так чтобы от меня вкусно пахло
Как сделать так чтобы от меня вкусно пахло

Пару лет назад, я написала статью «Как сделать, чтобы письма не попадали в спам ящик».

Вчера мы с коллегами настроили ещё один метод подтверждения писем, под названием DKIM. Его можно использовать вместе с SPF.

Authentication-Results: mxfront7.mail.yandex.net; spf=pass (mxfront7.mail.yandex.net: domain of usabili.ru designates 209.85.212.180 as permitted sender) smtp.mail=; dkim=pass header.i=@usabili.ru

Разница в том, что SPF - подтверждает IP адрес отправителя. DKIM же ip-адрес не учитывает, но подтверждает факт того, что конкретно отправитель имеет секретный ключ, который можно проверить публичным ключом, указанным в днс-записи.

Яндекс, судя по всему, считает DKIM более приоритетным средством борьбы со спамом. См. статью  «Цифровая подпись — Яндекс.Помощь: Почта». По этой причине, только письма проверенные через DKIM получают красивенькую медальку рядом с адресом отправителя.

Проверка DKIM для получателя гораздо проще, чем SPF. Так как для проверки DKIM требуется запросить всего одну днс запись, например для моего домена default._domainkey.usabili.ru, и получить оттуда публичный ключ домена, которым можно проверить хеш заголовков, т.е. цифровую подпись (что докажет что я владелец секретного ключа).

В случае же с SPF, процедура проверки сложнее, т.к. надо взять днс запись, из неё взять список разрешённых ip, и ссылки на другие spf записи, которые тоже надо рекурсивно обработать и т.п. Затем сверить ip отправителя с данным списком. В случае, когда письмо проходит через несколько серверов, желательно подписать их все.

А вот отправителю, наоборот, настроить у себя поддержку SPF на порядок проще, чем настроить DKIM. Как я уже писала, для настройки SPF достаточно создать запись:

usabili.ru. IN TXT "v=spf1 a include:_spf.google.com all"

Эта строчка разрешает слать почту только с ip указанного в A-записи домена, и с серверов гугл.

Как настроить DKIM в службах для домена от Google

Всё подробно написано вот в этом мануале:
http://support.google.com/a/bin/answer.py?hl=ru&answer=174124
если вкратце, то

  1. Зайти на нужную страницу в панели владельца домена гугл
  2. Выбрать домен и получить код для вставки в днс
  3. Вставить нужный код в TXT запись поддомена. Например, у меня google2._domainkey.usabili.ru
  4. Активировать
  5. ...
  6. Profit. Ваши письма, посланные из Gmail, теперь подписываются ключом домена.

Как настроить подпись писем с сервера, при отправке через PHP

Если вы отправляете письма в PHP через SMTP сервера гугла, то всё уже сделано. Гугл использует подпись при отправке через SMTP.

Если же вы отправляете почту функцией mail, то в системе необходимо установить пакет dkim-filter.

yum install dkim-filter

Или

aptitude install dkim-filter

Затем сгенерировать ключ через dkim-genkey. Лентяи вроде нас, могут использовать его для всех доменов на сервере. Сгенерированный в файле .txt публичный ключ нужно добавить в днс записи доменов.

Далее читаем статьи

 Личные комментарии по настройке sendmail.

  • Для sendmail нужно редактировать файл /etc/mail/sendmail.mc, не submit.mc.
  • Для компиляции конфига удобно вместо m4 использовать прилагающийся make (он сам запустит m4).

Как проверить записи DKIM

Для этого можно воспользоваться онлайн сервисом http://dkimcore.org/c/keycheck, либо послать письмо на указанный тут адрес http://appmaildev.com/en/dkim/.

Пользователи линукса могут набрать команду # dig google2._domainkey.usabili.ru TXT

Либо послать письмо на ящик в гугле или яндексе.

В гмайл, если нажать на стрелочку, будет видно что-то типа

от:  BoughCMS Notify кому:  
дата:  28 июня 2012 г., 15:08 тема:  Usabili.ru: Письмо с сайта отправлено через:  .ru подписан:  usabili.ru

Заключение

Хочу обратить внимание на ещё несколько пунктов.

Если вы используете возможность гмайла "Отправлять письма как:", т.е. не отправлять их напрямую со своего ящика. То гмайл будет подписывать DKIM оригинальным ящиком отправителя, а не вашим доменом.

Если вы абсолютно уверены, что успешно настроили DKIM, то можете запретить другим серверам принимать письма с вашим доменом, но без подписи, добавив ADSP запись:

_adsp._domainkey IN TXT "dkim=all"

Update

Я совсем забыла рассказать про то как присваивать доменные подписи конкретным email адресам. Дело в том что вы можете отправить почту с домена X, через почтовый сервер домена Y, а подписать его ключом домена Z. И это даже будет работать =). Настройка ключей происходит в файле /etc/mail/dkim-milter/keys/keypath. Здесь стоит обратить внимание на часть строк, задающую sender-pattern, она может содержать звёздочку, как часть или весь домен. В случае указания просто звёздочки, данным ключом и доменом будут подписываться все письма.

# sender-pattern:signing-domain:keypath # :example.com:selector @usabili.ru:usabili.ru:/etc/mail/dkim-milter/keys/default # тут всякие остальные домены, а ниже домен для подписи по-умолчанию. :verytec.ru:/etc/mail/dkim-milter/keys/default

Внимательный читатель заметил, что путь к секретному ключу один на все домены. Это ничуть не мешает работе подписей.

Всего вам доброго =)



Как сделать так чтобы от меня вкусно пахло

Как сделать так чтобы от меня вкусно пахло

Как сделать так чтобы от меня вкусно пахло

Как сделать так чтобы от меня вкусно пахло

Как сделать так чтобы от меня вкусно пахло

Как сделать так чтобы от меня вкусно пахло