Пару лет назад, я написала статью « Как сделать, чтобы письма не попадали в спам ящик ».
Вчера мы с коллегами настроили ещё один метод подтверждения писем, под названием DKIM. Его можно использовать вместе с SPF.
Authentication-Results: mxfront7.mail.yandex.net; spf=pass (mxfront7.mail.yandex..85.212.180 as permitted sender) smtp.mail=askme@сайт; dkim=pass header.i=@сайт
Разница в том, что SPF - подтверждает IP адрес отправителя. DKIM же ip-адрес не учитывает, но подтверждает факт того, что конкретно отправитель имеет секретный ключ, который можно проверить публичным ключом, указанным в днс-записи.
Яндекс, судя по всему, считает DKIM более приоритетным средством борьбы со спамом. См. статью « Цифровая подпись — Яндекс.Помощь: Почта ». По этой причине, только письма проверенные через DKIM получают красивенькую медальку рядом с адресом отправителя.
Проверка DKIM для получателя гораздо проще, чем SPF. Так как для проверки DKIM требуется запросить всего одну днс запись, например для моего домена default._domainkey.сайт, и получить оттуда публичный ключ домена, которым можно проверить хеш заголовков, т.е. цифровую подпись (что докажет что я владелец секретного ключа).
В случае же с SPF, процедура проверки сложнее, т.к. надо взять днс запись, из неё взять список разрешённых ip, и ссылки на другие spf записи, которые тоже надо рекурсивно обработать и т.п. Затем сверить ip отправителя с данным списком. В случае, когда письмо проходит через несколько серверов, желательно подписать их все.
А вот отправителю, наоборот, настроить у себя поддержку SPF на порядок проще, чем настроить DKIM. Как я уже писала , для настройки SPF достаточно создать запись:
сайт. IN TXT "v=spf1 a include:_spf.google.com ~all"
Эта строчка разрешает слать почту только с ip указанного в A-записи домена, и с серверов гугл.
Всё подробно написано вот в этом мануале:
http://support.google.com/a/bin/answer.py?hl=ru&answer=174124
если вкратце, то
Если вы отправляете письма в PHP через SMTP сервера гугла, то всё уже сделано. Гугл использует подпись при отправке через SMTP.
Если же вы отправляете почту функцией mail , то в системе необходимо установить пакет dkim-filter .
Yum install dkim-filter
Aptitude install dkim-filter
Затем сгенерировать ключ через dkim-genkey. Лентяи вроде нас, могут использовать его для всех доменов на сервере. Сгенерированный в файле.txt публичный ключ нужно добавить в днс записи доменов.
Пользователи линукса могут набрать команду # dig google2._domainkey.сайт TXT
Либо послать письмо на ящик в гугле или яндексе.
В гмайл, если нажать на стрелочку, будет видно что-то типа
Хочу обратить внимание на ещё несколько пунктов.
Если вы используете возможность гмайла "Отправлять письма как:" , т.е. не отправлять их напрямую со своего ящика. То гмайл будет подписывать DKIM оригинальным ящиком отправителя, а не вашим доменом.
Если вы абсолютно уверены, что успешно настроили DKIM, то можете запретить другим серверам принимать письма с вашим доменом, но без подписи, добавив ADSP запись:
_adsp ._domainkey IN TXT "dkim=all"Я совсем забыла рассказать про то как присваивать доменные подписи конкретным email адресам. Дело в том что вы можете отправить почту с домена X, через почтовый сервер домена Y, а подписать его ключом домена Z. И это даже будет работать =). Настройка ключей происходит в файле /etc/mail/dkim-milter/keys/keypath . Здесь стоит обратить внимание на часть строк, задающую sender-pattern , она может содержать звёздочку, как часть или весь домен. В случае указания просто звёздочки, данным ключом и доменом будут подписываться все письма.
# sender-pattern:signing-domain:keypath # *:example.com:selector *@сайт :сайт:/etc/mail/dkim-milter/keys/default # тут всякие остальные домены, а ниже домен для подписи по-умолчанию. * :verytec.ru:/etc/mail/dkim-milter/keys/default
Внимательный читатель заметил, что путь к секретному ключу один на все домены. Это ничуть не мешает работе подписей.
Всего вам доброго =)
Цель данной статьи: настроить бесплатный почтовый сервер Hmailserver (Windows) так, чтобы письма отправляемые вашим сервером от имени вашего домена не попадали в СПАМ на других серверах, в том числе на MAIL.RU, YANDEX.RU и GMAIL.COM
Имеется корпоративный домен вида domainname.tld и локальный почтовый сервер Hmailserver под Windows. С почтовых адресов домена ведется только деловая переписка, общее количество отправляемых писем не превышает 100 штук в сутки, массовые рассылки отсутствуют как класс.
В последнее время все больше и больше получателей стали жаловаться, что отправляемые нами письма у них попадают в СПАМ. При этом у пользователей MAIL.RU попадание в СПАМ было 100% вне зависимости от содержимого письма.
Я написал письмо в поддержку MAIL.RU. В ответе мне сообщили, что причиной блокировки писем является массовый спам, который отправляется от имени моего домена.
Ответ службы поддержки MAIL.RU
Для того, чтобы настроить SPF, DKIM и DMARC нам понадобиться доступ к NS серверам управляющими записями для вашего домена и доступ к Windows серверу на котором работает Hmailserver.
Напомню, что SPF-запись указывает список серверов, которые имеют право отправлять письма от имени домена.
Чтобы настроить SPF необходимо добавить TXT запись для вашего домена. Для большинства доменов подойдет следующая универсальная запись:
Хост | Тип | Значение |
---|---|---|
domainname.tld | TXT | v=spf1 +a +mx -all |
Опубликовав такую запись для своего домена вы даете четкие инструкции всем почтовым серверам в интернете как поступать с письмами с отправителями из вашего домена. Письма отправленные с серверов, IP адреса которых не указаны в записях A и MX, не являются легитимными и могут получателями трактоваться как SPAM письма.
DKIM-подпись позволяет получателю проверить, что письмо действительно было отправлено с заявленного домена. Для определения отправителя сообщения DKIM добавляет в него цифровую подпись, связанную с именем домена организации. Эта подпись автоматически проверяется на стороне получателя.
При этом используются пары публичных (открытых) и частых (закрытых) ключей шифрования. Открытый ключ указывается в соответствующей TXT записи домена и используется получателями при декодировании подписи, а закрытый ключ используется на стороне почтового сервера для шифрования подписи.
Таким образом, для настройки DKIM нужно сделать следующее:
Самый простой способ сгенерировать пару необходимых нам ключей для DKIM — это воспользоваться сервисом https://port25.com/dkim-wizard/
Поле DomainKey Selector позволяет привязать к одному домену несколько DKIM записей для разных нужд, например если у вас несколько почтовых серверов. У меня только один почтовый сервер и в роли селектора я выбрал просто «mail». Нажмите кнопку и вы получите пару ключей.
Не забывайте указать Selector , который вы назначили при генерации ключа.
Добавьте подобную TXT запись для вашего домена:
Хост | Тип | Значение |
---|---|---|
mail._domainkey.domainname.tld | TXT | v=DKIM1; k=rsa; t=s; p=MIIBIjANBg |
DMARC - это политика действий с пришедшими письмами, у которых в поле From используется публикующий политику домен. DMARC позволяет не только указать, как поступать с такими письмами, но и собрать статистику от всех получателей, поддерживающих серверную часть DMARC.
Настройка SPF, DKIM, DMARC, FBL
SPF-запись защищает от подделки вашего домена и позволяет предотвратить попадание в спам писем, отправленных с ваших адресов. SPF настраивается для адреса? используемого в envelope-from (SMTP конверте). Подробнее об SPF-записи вы можете . Для того, чтобы узнать о распространённых заблуждениях относительно SPF и часто встречающихся ошибках при её настройке, прочтите .
Чтобы настроить SPF-запись:
Некоторые провайдеры ставят кавычки для SPF-записи самостоятельно, поэтому вы можете уточнить необходимость кавычек у вашего хостинг-провайдера или поступить по аналогии с другими ТХТ-записями домена, если они присутствуют.
Если вы не знаете, где находятся настройки SPF-записи у вашего провайдера, воспользуйтесь инструкциями для пользователей biz.mail.ru. Не забудьте заменить содержимое TXT-записи на актуальное для вас.
Postmaster Mail.ru проверяет наличие SPF-записи раз в неделю.
Чтобы настроить DKIM-подпись:
1. Сгенерируйте ключевую пару DKIM (приватный и публичный ключи).
Генерация пары ключей с использованием OpenSSL |
Генерация пары ключей с использованием OpenDKIM |
Для генерации приватного ключа в командной строке введите: openssl genrsa -out privatekey.pem 1024, где «privatekey.pem» — файл приватного ключа, «1024» — длина ключа. Пример результата: Для генерации публичного ключа введите команду: openssl rsa -pubout -in privatekey.pem -out publickey.pem , где «publickey.pem» — файл публичного ключа Пример результата: |
Для генерации ключей используйте команду opendkim-genkey -d example.ru -s mail , где «example.ru» — ваш домен, «mail» — селектор. При этом в текущей директории будут созданы файлы mail.private с приватным ключом и mail.txt с готовым публичным ключом в формате DNS-записи. |
2. Поместите приватный ключ в файл в директории с ограниченным доступом на вашем отправляющем сервере. Обратите внимание, почтовый сервер должен иметь доступ к этому файлу.
3. Включите поддержку DKIM в вашем почтовом сервере. В некоторых серверах поддержка встроена, в некоторых может быть реализована с помощью бесплатных программ.
4. Перейдите на сайт провайдера, у которого находится DNS-зона управления вашим доменом.
5. Введите логин и пароль для входа в «Панель управления».
6. Перейдите в раздел управления DNS-зонами домена.
7. Добавьте новую ТХТ-запись, указав в теге "p" сгенерированный публичный ключ. Помните, что время обновления записи может занимать до 48 часов. Пример TXT-записи:
8. Некоторые регистраторы ставят кавычки для TXT (SPF и DKIM)-записи самостоятельно, поэтому для надежности впишите или скопируйте ее так, как представлено в инструкции — с кавычками.
Корректность настройки подписи DKIM можно узнать по наличию подписи DKIM-Signature в заголовках письма, а также строчке dkim=pass в заголовке "Authentication-Results".
Пример DKIM-подписи в заголовках письма:
В DKIM-подписи параметр [d] должен совпадать с именем вашего домена, по которому вы хотите просматривать статистику в Postmaster Mail.ru.
Если вы не знаете, как устанавливать подпись в письмо, обратитесь к своему системному администратору или в службу поддержки вашего хостинга.
Без DKIM-подписи просматривать статистику в Postmaster невозможно.
Чтобы начать настройку, перейдите по ссылке «Настройки » и нажмите «указать» напротив имени домена.
В появившемся окне введите адрес электронной почты, на который вы хотите получать отчеты и нажмите «Сохранить». На указанный адрес электронной почты будет отправлено письмо-подтверждение. Как только вы подтвердите адрес, перейдя по ссылке в письме, отчеты будут приходить вам.
С помощью DKIM-подписи получатель письма может удостовериться в том, что оно действительно пришло от предполагаемого отправителя.
Вы можете установить DKIM-подпись для писем, отправляемых с вашего домена: достаточно создать для вашего домена TXT-запись с публичным ключом подписи. Чтобы подписывать письма, которые вы отправляете не через серверы Яндекса, необходима также TXT-запись с секретным ключом. Настраивать её нужно на том сервере, с помощью которого производится отправление писем.
Если вы делегировали домен на Яндекс, DKIM-подпись с публичным ключом будет настроена автоматически. Вы можете просмотреть и отредактировать ее параметры в DNS-редакторе Почты для домена.
Значения публичного и приватного ключей можно получить с помощью (в интерфейсе доступен только публичный ключ). Управлять TXT-записями обычно можно на странице управления DNS на сайте компании, предоставляющей вам услуги DNS-хостинга.
Получите TXT-запись с публичным ключом в Почте для домена:
В правой колонке страницы найдите раздел Цифровая подпись DKIM и нажмите ссылку Показать содержимое записи . Этого раздела может не быть, если DKIM-подпись уже была настроена ранее. В этом случае публичный ключ можно увидеть в значении записи в DNS-редакторе.
Запись состоит из трех частей:
Имя записи («mail._domainkey» ). В некоторых панелях управления нужно указывать полное имя поддомена, например, «mail._domainkey.yourdomain.tld».
Параметры DKIM:
V=DKIM1; k=rsa; t=s; p=MIGfMA0GCSEBtaCOteH4EBqJlKpe...
Параметр p содержит публичный ключ DKIM.
Указание на домен («DKIM key mail for yourdomain.tld» ).
Скопируйте содержимое записи.
Откройте страницу редактирования DNS в панели управления на сайте компании, предоставляющей вам услуги DNS-хостинга.
Создайте TXT-запись со следующими значениями полей:
Имя - «mail._domainkey» . В некоторых панелях управления DNS для публичного ключа DKIM необходимо также указывать домен, например, «mail._domainkey.yourdomain.tld» .
Значение - параметры DKIM с публичным ключом, полученные в Почте для домена.
Например, «v=DKIM1; k=rsa; t=s; p=MIGfMA0GCSEBtaCOteH4EBqJlKpe...» .
Чтобы подписывать письма, отправляемые с серверов, не принадлежащих Яндексу, нужно также (в рамках нашего сервиса это можно сделать только с помощью API Почты для домена). Полученный ключ нужно указать на том сервере, с помощью которого производится отправление писем.
Подождите, пока изменения в DNS вступят в силу. Этот процесс может длиться до 72 часов.
reg.ru
RU-CENTER (nic.ru)
masterhost.ru
Домен на sweb.ru
Домен на majordomo.ru
Панель управления https://control.majordomo.ru/
SPF-запись — проверка отправителя.
Как всем известно, протокол отправки электронной почты 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:78.110.50.123 +a:mail.ht-systems.ru include:gmail.com ~all»
Теперь более подробно о используемых опциях...
А теперь рассмотрим еще более «экзотичный» пример. В описании возможных опций указывалось, что возможно указание сетей ip-адресов. Стоит отметить, что это применимо и к записям «a» и «mx». Рассмотрим следующий пример:
example.org. IN TXT «v=spf1 mx/24 a:hts.ru/24 -all»
«mx/24» — в список разрешенных отправителей входят все IP-адреса, находящихся в тех же сетях класса С, что и MX-ы домена;
«a:hts.ru/24» — в список разрешенных отправителей входят все IP-адреса, находящихся в тех же сетях класса С, что и А-записи домена hts.ru;
«-all» — всех остальных отправителей — блокируем.
Иногда можно встретить следующие записи (очень редко):
«ptr» — проверяет PTR-запись IP-адреса отправителя. Если она сходится с указаным доменом, то механизм проверки выдает положительный результат. Тоесть, разрешено отправлять всем IP-адресам, PTR-запись которых направлены на указанный домен. Серьезным недостатком даного метода есть то, что генерируется очень большое количество DNS-запросов;
«exists» — выполняется проверка, резолвится ли домен на какой-либо IP-адрес. Тоесть, по существу, выполняется проверка работоспособности доменного имени. Кстати, не имеет значения, на какой IP-адрес резолвится домен, даже если это «серые» сети (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) или loopback (127.0.0.1).
Пример использования:
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»
В результате этих шаманских действий SPF-запись будет контролировать, чтобы почта доставлялась только от валидных хостов, а всем остальным будет отправляться сообщение о ошибке, прописанное в TXT-записи домена spf.example.org.
Так же стоит обратить внимание, что любое решение о блокировке или маркировке письма как спам, решает программа которая обрабатывает получение почты на сервере, иногда даже почтовые программы это тоже делают.