Необходима настройка dns записей для работы dkim. Зачем же он нужен? Генерация пары ключей с использованием OpenSSL

С помощью DKIM-подписи получатель письма может удостовериться в том, что оно действительно пришло от предполагаемого отправителя.

Вы можете установить DKIM-подпись для писем, отправляемых с вашего домена: достаточно создать для вашего домена TXT-запись с публичным ключом подписи. Чтобы подписывать письма, которые вы отправляете не через серверы Яндекса, необходима также TXT-запись с секретным ключом. Настраивать её нужно на том сервере, с помощью которого производится отправление писем.

Если вы делегировали домен на Яндекс, DKIM-подпись с публичным ключом будет настроена автоматически. Вы можете просмотреть и отредактировать ее параметры в DNS-редакторе Почты для домена.

Значения публичного и приватного ключей можно получить с помощью (в интерфейсе доступен только публичный ключ). Управлять TXT-записями обычно можно на странице управления DNS на сайте компании, предоставляющей вам услуги DNS-хостинга.

    Получите TXT-запись с публичным ключом в Почте для домена:

    1. В правой колонке страницы найдите раздел Цифровая подпись 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 часов.

Инструкции по настройке DKIM-подписи у некоторых хостинг-провайдеров

reg.ru

RU-CENTER (nic.ru)

masterhost.ru

Домен на sweb.ru

Домен на majordomo.ru

Панель управления https://control.majordomo.ru/

Настройка SPF, DKIM, DMARC, FBL

SPF-запись

SPF-запись защищает от подделки вашего домена и позволяет предотвратить попадание в спам писем, отправленных с ваших адресов. SPF настраивается для адреса? используемого в envelope-from (SMTP конверте). Подробнее об SPF-записи вы можете . Для того, чтобы узнать о распространённых заблуждениях относительно SPF и часто встречающихся ошибках при её настройке, прочтите .

Чтобы настроить SPF-запись:

  1. Перейдите на сайт провайдера, у которого находится DNS-зона управления вашим доменом;
  2. Введите логин и пароль для входа в «Панель управления»;
  3. Перейдите в раздел управления DNS-зонами необходимого домена;
  4. Добавьте новую ТХТ-запись. Пример такой записи: "v=spf1 ip4:165.165.165.0/24 ip4:136.136.136.0/20 a mx ~all"

Некоторые провайдеры ставят кавычки для SPF-записи самостоятельно, поэтому вы можете уточнить необходимость кавычек у вашего хостинг-провайдера или поступить по аналогии с другими ТХТ-записями домена, если они присутствуют.

Если вы не знаете, где находятся настройки SPF-записи у вашего провайдера, воспользуйтесь инструкциями для пользователей biz.mail.ru. Не забудьте заменить содержимое TXT-записи на актуальное для вас.

Postmaster Mail.ru проверяет наличие SPF-записи раз в неделю.

DKIM-подпись

Чтобы настроить 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 невозможно.

DMARC

Чтобы начать настройку, перейдите по ссылке «Настройки » и нажмите «указать» напротив имени домена.



В появившемся окне введите адрес электронной почты, на который вы хотите получать отчеты и нажмите «Сохранить». На указанный адрес электронной почты будет отправлено письмо-подтверждение. Как только вы подтвердите адрес, перейдя по ссылке в письме, отчеты будут приходить вам.

  • Администрирование доменных имен ,
  • Спам и антиспам
  • Приветствую, Хабр! В этой статье будет инструкция по настройке DKIM/SPF/DMARC записей. А побудило меня написать эту статью полное отсутствие документации на русском языке. Все статьи на эту тему, которые были мной найдены, были крайне не информативны.

    1. DKIM

    DKIM (DomainKeys Identified Mail) - это метод e-mail аутентификации, основанный на проверке подлинности цифровой подписи. Публичный ключ хранится TXT записи домена.

    Зачем же он нужен?

    DKIM необходим для того, чтобы почтовые сервисы могли проверять, является ли отправитель достоверным или нет. Т.е. защищает получателя письма от различных мошеннических писем (которые отправлены с подменой адреса отправителя).

    Настройка DKIM подписи и DNS записей

    Для это нам необходимо создать пару ключей:

    Openssl genrsa -out private.pem 1024 //генерируем секретный ключ длинной 1024
    openssl rsa -pubout -in private.pem -out public.pem //получаем публичный ключ из секретного
    Или можно воспользоваться онлайн-сервисом, чего я крайне не советую.

    Примером записей является
    mail._domainkey.your.tld TXT "v=DKIM1; k=rsa; t=s; p=<публичный ключ>"

    Где
    mail - селектор. Можно указать несколько записей с разными селекторами, где в каждой записи будет свой ключ. Применяется тогда, когда задействовано несколько серверов. (на каждый сервер свой ключ)
    v - версия DKIM, всегда принимает значение v=DKIM1 . (обязательный аргумент)
    k - тип ключа, всегда k=rsa . (по крайней мере, на текущий момент)
    p - публичный ключ, кодированный в base64. (обязательный аргумент)
    t - Флаги:
    t=y - режим тестирования. Такие отличают отличаются от неподписанных и нужны лишь для отслеживания результатов.
    t=s - означает, что запись будет использована только для домена, к которому относится запись, не рекомендуется, если используются субдомены.
    возможные:
    h - предпочитаемый hash-алгоритм, может принимать значения h=sha1 и h=sha256
    s - Тип сервиса, использующего DKIM. Принимает значения s=email (электронная почта) и s=* (все сервисы) По-умолчанию "*".
    ; - разделитель.

    Так же стоит прописать ADSP запись, которая позволяет понять, обязательно должно быть письмо подписано или нет.
    _adsp._domainkey.example.com. TXT "dkim=all"

    Значений может быть три:
    all - Все письма должны быть подписаны
    discardable - Не принимать письма без подписи
    unknown - Неизвестно (что, по сути, аналогично отсутствию записи)

    2. SPF

    SPF (Sender Policy Framework) - расширение для протокола отправки электронной почты через SMTP. SPF определен в RFC 7208 (Wiki). Если простым языком, то SPF - механизм для проверки подлинности сообщением, путем проверки сервера отправителя. Как по мне, данная технология полезна в связке в другими (DKIM и DMARC)

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

    Примером обычной SPF записи является your.tld. TXT "v=spf1 a mx ~all"
    Здесь:
    v=spf1 является версией, всегда spf1
    a - разрешает отправляет письма с адреса, который указан в A и\или AAAA записи домена отправителя
    mx - разрешает отправлять письма c адреса, который указан в mx записи домена
    (для a и mx можно указать и другой домен, например, при значении a:example.com , будет разрешена а запись не домена отправителя, а example.com )
    Так же можно добавлять и отдельные ip адреса, используя ip4: и ip6: . Например, ip4:1.1.1.1 ip6: 2001:0DB8:AA10:0001:0000:0000:0000:00FB . Еще есть include: (include:spf.example.com), позволяющий дополнительно подключать spf записи другого домена. Это все можно комбинировать через пробел. Если же нужно просто использовать запись с другого домена, не дополняя её, то лучше всего использовать redirect: (redirect:spf.example.com)
    -all - означает то, что будет происходить с письмами, которые не соответствуют политике: "-" - отклонять, "+" - пропускать, "~" - дополнительные проверки, "?" - нейтрально.

    3.DMARC

    Domain-based Message Authentication, Reporting and Conformance (идентификация сообщений, создание отчётов и определение соответствия по доменному имени) или DMARC - это техническая спецификация, созданная группой организаций, предназначенная для снижения количества спамовых и фишинговых электронных писем, основанная на идентификации почтовых доменов отправителя на основании правил и признаков, заданных на почтовом сервере получателя (Wiki). То есть почтовый сервер сам решает, хорошее сообщение или плохое (допустим, исходя из политик выше) и действует согласно DMARC записи.

    Настройка DMARC записей

    Типичная запись выглядит так: _dmarc.your.tld TXT "v=DMARC1; p=none; rua=mailto:[email protected]"
    В ней не предпринимаются никакие действия, кроме подготовки и отправки отчета.

    Теперь подробнее о тегах:
    v - версия, принимает значение v=DMARC1 (обязательный параметр)
    p - правило для домена. (Обязательный параметр) Может принимать значения none , quarantine и reject , где
    p=none не делает ничего, кроме подготовки отчетов
    p=quarantine добавляет письмо в СПАМ
    p=reject отклоняет письмо
    Тэг sp отвечает за субдомены и принимает такие же значения, как и p
    aspf и adkim позволяют проверять соответствиям записям и могут принимать значения r и s , где r - relaxed более мягкая проверка, чем s - strict.
    pct отвечает за кол-во писем, подлежащих фильтрации, указывается в процентах, например, pct=20 будет фильтровать 20% писем.
    rua - позволяет отправлять ежедневные отчеты на email, пример: rua=mailto:[email protected] , так же можно указать несколько email через пробел (rua=mailto:[email protected] mailto:[email protected])

    Пример отчета

    1.1.1.1 1 none your.tld your.tld pass your.tld pass 1.1.1.1 1 none forwarded your.tld your.tld pass your.tld pass


    ruf - отчеты писем, не прошедшие проверку DMARC. В остальном все так же, как и выше.

    Эпилог

    Мы научились настраивать DKIM/SPF/DMARC и противостоять спуфингу. К сожалению, это не гарантирует безопасность в случае взлома сервера или же отправки писем на серверы, не поддерживающие данные технологии. Благо, что популярные сервисы все же их поддерживают (а некоторые и являются инициаторами данных политик).

    Эта статья - лишь инструкция по самостоятельной настройке записей, своего рода документация. Готовых примеров нет намеренно, ведь каждый сервер уникален и требует своей собственной конфигурации.

    Буду рад конструктивной критике и правкам.

    В этой статье будет рассмотрена настройка цифровой подписи для Вашего домена.

    Технология DomainKeys Identified Mail (DKIM) - это метод e-mail аутентификации: к отправленному письму добавляется заголовок DKIM-Signature , в котором содержится зашифрованная информация о домене отправителя. Таким образом, содержимое заголовка DKIM-Signature подтверждает отправителя письма. На стороне получателя подпись автоматически проверяется, после чего для определения репутации отправителя применяются "белые списки " и "черные списки ". После оценки репутации отправителя письма это письмо может быть принято, помещено в папку "Спам ", либо отправлено на дополнительную проверку.

    Настройка DKIM при отправке рассылок через хостинг Beget

    На хостинге Beget можно настроить DKIM-подпись для следующих способов отправки писем:

    • через SMTP-сервер ;
    • через функцию PHP mail() , он же sendmail

    Для создания DKIM-подписи для писем, отправляемых средствами PHP mail() , потребуется выделенный IP-адрес - его стоимость составляет 660 руб./год, подключить можно из , в разделе . Далее для настройки DKIM-подписи необходимо написать тикет из раздела , указав в нём домен сайта.

    Для создания DKIM-подписи для писем, отправляемых средствами SMTP , необходимо написать тикет из , раздел , указав в нём домен сайта. Настройка DKIM для SMTP возможна только на оплаченных аккаунтах (минимум на месяц по текущему тарифному плану). Настройка DKIM-подписи с нашей стороны возможна только в том случае, когда рассылки отправляются через наш хостинг и почта работает через нас, то есть, в качестве MX записи у домена, будут значения:

    mx1.сайт mx2.сайт

    Настройка DKIM при отправке рассылок через сторонний сервис (на примере unisender.com)

    Рассмотрим внесение нужных записей на примере сервиса unisender.com . Для других сервисов рассылки инструкция будет похожей.

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

    Вчера мы с коллегами настроили ещё один метод подтверждения писем, под названием 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-записи домена, и с серверов гугл.

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

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

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

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

    Если вы отправляете письма в 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"

    Update

    Я совсем забыла рассказать про то как присваивать доменные подписи конкретным 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

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

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



    Есть вопросы?

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам: