Настроить dkim для почтового сервера

Настройка DKIM/SPF/DMARC записей или защищаемся от спуфинга

1. DKIM

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

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

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

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

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

Или можно воспользоваться онлайн-сервисом, чего я крайне не советую.

Далее необходимо указать путь с секретному ключу в файле конфигурации (для этого лучше почитать документацию) почтового сервера и публичный ключ в DNS.

Примером записей является
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 записей

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:postmaster@your.tld»
В ней не предпринимаются никакие действия, кроме подготовки и отправки отчета.

Теперь подробнее о тегах:
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:postmaster@your.tld , так же можно указать несколько email через пробел ( rua=mailto:postmaster@your.tld mailto:dmarc@your.tld )

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

Эпилог

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

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

Источник

DKIM — это просто

Хочу поделиться своим небольшим опытом прикручивания DKIM (DomainKeys Identified Mail) к своему домену и почтовому серверу.

Мы имеем:

  • Платформа: Windows WebServer 2008;
  • Сервер DNS: Bind 9.7;
  • Почтовый сервер: hMailServer 5.3.3.

Задача:

  • Разобраться в системе подписи сообщений DKIM, что бы gmail признал её валидной и выдал заветные: dkim=pass.

Начнем с начала. Что такое DKIM вообще и что нам нужно, что бы наша почтовая система отправляла почту с поддержкой DKIM.

DomainKeys Identified Mail метод E-mail аутентификации.
Технология DomainKeys Identified Mail (DKIM) объединяет несколько существующих методов антифишинга и антиспама с целью повышения качества классификации и идентификации легитимной электронной почты. Вместо традиционного IP-адреса, для определения отправителя сообщения DKIM добавляет в него цифровую подпись, связанную с именем домена организации. Подпись автоматически проверяется на стороне получателя, после чего, для определения репутации отправителя, применяются «белые списки» и «чёрные списки».
В технологии DomainKeys для аутентификации отправителей используются доменные имена. DomainKeys использует существующую систему доменных имен (DNS) для передачи открытых ключей шифрования.

Для работы с DKIM нам нужно:

  1. Поддержка DKIM почтовым сервером для подписывания отправляемой почты;
  2. Получение пары приватного и публичного ключа;
  3. Занесение в DNS домена необходимых записей о наличии поддержки DKIM.

С поддержкой DKIM почтовым серверов всё вполне понятно. hMailServer с версии 5.1 поддерживает подпись исходящей корреспонденции ключом.

Теперь необходимо найти, как сформировать пару секретного и публичного ключа. После перебора нескольких вариантов я остановился на web-утилите сервиса port25.com которая, кроме формирования необходимых ключей, так же генерирует и подсказку по DNS записям:
www.port25.com/support/support_dkwz.php

Небольшое пояснение по поводу некого поля «domain selector». Данное поле позволяет привязать к одному домену несколько DKIM записей для разных нужд (например для разных почтовых серверов). В моём случае у меня только один почтовый сервер и у меня нет необходимости в селекторе, так что в роли селектора я выбрал просто «mail».

Полученный приватный ключ сохраняем на сервер в папку, к которой имеет доступ почтовый сервер. Публичный ключ в принципе можно не сохранять в виде файла. Он нам пригодится только для внесения необходимой записи в DNS. В конфигурации домена в hMailServer нам необходимо указать путь к приватному файлу ключа, а так же указать выбранный селектор (напомню, я в виде селектора взял «mail»).

В файле DNS-зоны нам необходимо указать записи вида:


mail._domainkey.example.com. TXT «k=rsa\; t=s\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQmO9AuWRbWPgl/jzDPQodrLfFLFqYYi6bCBnsTOCOJQrFbGgiR1C01j4zLw8XgG3rQ0WAaeg6Z/y39Ah7IONfs5gQuK6eGZMmYwIsZyz2dQoUDmDLCb1WygpkrqsCbyPw3SWGihM4iChOwo7Ovo2mTOWOf5ejeZcP2qqNb9nRMQIDAQAB»

Где «mail» перед _domainkey во второй записи — это не что иное, как наш выбранный селектор, а длинный набор символов в той же записи идущий после «p=» — это наш публичный ключ.

Вроде бы всё. Теперь попробуем отправить письмо с нашего почтового сервера на почту gmail, так как доподлинно известно, что gmail проверяет DKIM. Смотрим в полученное письмо в gmail и видим заветные строки:

Authentication-Results: mx.google.com; spf=pass (google.com: domain of example@example.com designates 123.123.123.123 as permitted sender) smtp.mail=example@example.com; dkim=pass header.i=@example.com

Поздравляем меня с успешным покорением DKIM ))), чего и вам желаю. Удачи.

UPD: Для получения пары ключей без использования внешних сервисов можно воспользоваться OpenSSL:

openssl.exe genrsa -out tstpriv.pem 1024 — генерим секретный ключ (1024 — длина ключа).
openssl.exe rsa -pubout -in tstpriv.pem -out tstpub.pem — получаем публичный ключ из секретного

Спасибо lorc за дополнение.

UPD 2: Небольшое дополнение от nshopik:
Так же можно у домена прописать ADSP запись (RFC5617) — это позволит принимающему серверу понять, должно ли ваше письмо быть подписано или нет.
Запись выгладит таким образом:

_adsp._domainkey.example.com. TXT «dkim=all»

Значений dkim= может быть три:

  • all — Все письма должны быть подписаны
  • discardable — Не подписанные письма не должны приниматься
  • unknown — Аналогично отсутствию записи

Источник

Настроить dkim для почтового сервера

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

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

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

Постмастер проверяет наличие SPF-записи раз в неделю.

DKIM-подпись

DKIM-подпись позволяет подтвердить, что адрес, указанный в поле «От кого», является реальным адресом отправителя письма, а также повышает «доставляемость» писем. Подробнее о 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] должен совпадать с именем вашего домена, по которому вы хотите просматривать статистику в Постмастере Mail.ru.

Если вы не знаете, как устанавливать подпись в письмо, обратитесь к своему системному администратору или в службу поддержки вашего хостинга.

Без DKIM-подписи просматривать статистику в Постмастере невозможно.

DMARC

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

Благодаря настройке DMARC владельцы доменов могут создавать правила обработки писем, которые поступили с доменов, не прошедших авторизацию. Воспользуйтесь нашей статьей для того, чтобы продумать все этапы настройки политики DMARC заранее.

Подготовка к настройке DMARC

Перед настройкой DMARC необходимо:

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

Настройка DMARC

Чтобы настроить политику DMARC:

  1. Перейдите на сайт провайдера, у которого находится DNS-зона управления вашим доменом;
  2. Введите логин и пароль для входа в «Панель управления»;
  3. Перейдите в раздел управления DNS-зонами необходимого домена.
  4. Добавьте новую TXT-запись вида _dmarc.example.com (где вместо example.com должен быть ваш домен), соответствующую выбранной политике.

Пример записи: «v=DMARC1;p=none;rua=mailto:rua@example.com;ruf=mailto:ruf@example.com;fo=s»

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

В TXT-записи можно использовать следующие теги:

Источник

Оцените статью