Как сделать ключ dkim
DKIM-подпись
С помощью DKIM-подписи получатель письма может удостовериться в том, что оно действительно пришло от предполагаемого отправителя. Чтобы установить DKIM-подпись для писем, отправляемых с вашего домена, создайте для вашего домена TXT-запись с публичным ключом подписи.
Если вы делегировали домен на серверы Яндекса, DKIM-подпись с публичным ключом будет настроена автоматически.
Общая инструкция по настройке DKIM-подписи
Получите TXT-запись с публичным ключом в настройках Почты:
Если нужного домена нет в списке, убедитесь, что он подключен и подтвержден.
В блоке Добавление DKIM-подписи скопируйте значение публичного ключа для вашего домена.
Войдите в панель управления на сайте компании, которая предоставляет вам DNS-хостинг.
Если вы делегировали домен на серверы Яндекса, перейдите в DNS-редактор Коннекта.
Создайте TXT-запись со следующими значениями полей (в разных панелях управления названия полей могут отличаться):
Например, v=DKIM1; k=rsa; t=s; p=MIGfMA0GCSEBtaCOteH4EBqJlKpe.
Подождите, пока изменения в DNS вступят в силу. Может потребоваться до 72 часов, чтобы DNS-серверы в интернете обменялись данными о новых DNS-записях.
Инструкции по настройке DKIM-подписи у некоторых хостинг-провайдеров
Перейдите на страницу Почты в Яндекс.Коннекте и скопируйте значение публичного ключа для вашего домена (см. в общей инструкции по настройке DKIM-подписи).
Откройте страницу https://reg.ru и войдите в ваш аккаунт.
Text — параметры DKIM с публичным ключом, полученные в настройках Почты.
Например, v=DKIM1; k=rsa; t=s; p=MIGfMA0GCSEBtaCOteH4EBqJlKpe.
Подождите, пока изменения в DNS вступят в силу. Может потребоваться до 72 часов, чтобы DNS-серверы в интернете обменялись данными о новых DNS-записях.
Перейдите на страницу Почты в Яндекс.Коннекте и скопируйте значение публичного ключа для вашего домена (см. в общей инструкции по настройке DKIM-подписи).
Откройте страницу https://cp.masterhost.ru и войдите в ваш аккаунт.
значение (IP/host.) — параметры DKIM с публичным ключом, полученные в настройках Почты.
Например, v=DKIM1; k=rsa; t=s; p=MIGfMA0GCSEBtaCOteH4EBqJlKpe.
Поле MX preference оставьте пустым.
Подождите, пока изменения в DNS вступят в силу. Может потребоваться до 72 часов, чтобы DNS-серверы в интернете обменялись данными о новых DNS-записях.
Перейдите на страницу Почты в Яндекс.Коннекте и скопируйте значение публичного ключа для вашего домена (см. в общей инструкции по настройке DKIM-подписи).
Откройте страницу https://mcp.sweb.ru и войдите в ваш аккаунт.
В выпадающем списке выберите нужный домен.
Имя поддомена — mail._domainkey
TXT — параметры DKIM с публичным ключом, полученные в настройках Почты.
Например, v=DKIM1; k=rsa; t=s; p=MIGfMA0GCSEBtaCOteH4EBqJlKpe.
Подождите, пока изменения в DNS вступят в силу. Может потребоваться до 72 часов, чтобы DNS-серверы в интернете обменялись данными о новых DNS-записях.
Перейдите на страницу Почты в Яндекс.Коннекте и скопируйте значение публичного ключа для вашего домена (см. в общей инструкции по настройке DKIM-подписи).
Как попасть в Inbox: технология DKIM
В цикле статей «Как попасть в Inbox» рассказываем о SPF-записи, протоколе DMARC, чёрных списках, тактиках прогрева и многом другом. Эта статья цикла посвящена DKIM‑технологии. Рассказываем, как она работает, зачем её использовать и как настраивать.
Что такое DKIM
DKIM — это технология, объединяющая несколько существующих методов антифишинга и антиспама с целью повышения качества классификации и идентификации легитимной электронной почты.
Проще говоря, DKIM, на ряду с SPF, является ещё одним методом емейл-аутентификации.
Принцип работы
Принцип работы базируется на двух ключах: публичном и приватном. Публичный ключ размещается в DNS‑записи в txt-поле. Приватный ключ размещается на стороне отправляющего сервера. В заголовки каждого отправляемого емейла с помощью приватного ключа в зашифрованном виде добавляются: тело письма, служебные заголовки, время отправки и другие параметры.
Почтовый провайдер обращается к домену отправителя сразу, как только получит подписанное емейл‑сообщение. С помощью публичного ключа расшифровывает заголовок и проверяет соответствие письма и информации в заголовке.
Зачем нужен DKIM
Наличие подписи в массовых емейл-рассылках является обязательным для большинства почтовых провайдеров. Она идентифицирует отправителя, и ISP считает его добросовестным. DKIM в совокупности с SPF-записью делает фишинг-атаки намного более сложными.
Как создать ключи
Пару ключей можно сгенерировать с помощью онлайн-сервисов, например, DKIM Core.
Либо без использования сторонних сервисов — с помощью OpenSSL:
Структура DKIM-заголовка
Заголовок, добавляемый сервером-отправителем, называется DKIM-Signature. Он состоит из списка тегов вида «тег=значение».
Основные теги и их значения:
Таким образом, получив письмо с заголовком из примера, почтовый провайдер обратится к DNS-записи expertsender1k._domainkey.news.emailmatrix.ru для получения публичного ключа. Содержимое данной записи следующее:
Как настроить
В большинстве платформ для емейл-рассылок настройки подписи включены по умолчанию, в таком случае технически рассылки ведутся от имени сервиса рассылок. Для крупных кампаний рекомендуется вести рассылки от имени своего домена для формирования репутации и снижения возможности фишинговых атак.
Крупные ESP предоставляют возможность настройки подписи для вашего домена. В некоторых это является стандартной процедурой при открытии аккаунта, в некоторых дополнительной опцией. В обоих случаях платформа предоставляет сгенерированный публичный ключ, который необходимо разместить в DNS‑записи. После чего подпись писем настроится автоматически.
Если вы используете собственную платформу для рассылок, то воспользуйтесь дополнительными средствами для настройки подписи писем.
Как проверить настройку
После того как настройка подписи произведена и добавлена DNS-запись с ключом, проверим доступность публичного ключа. Сделать это можно известным нам www.dnswatch.info.
Для этого после перехода на сайт введите адрес по следующей структуре — *селектор*._domainkey.*рассылающий домен* и выберите тип записи TXT.
Если содержимое данной записи отображается верно, приступайте к живому тесту подписи, а именно к отправке тестового письма. Рассмотрим на примере веб-интерфейса Mail.ru.
Получив тестовое емейл-сообщение, открываем его. В меню ищем пункт «Служебные заголовки».
Открыв его, вы увидите все служебные заголовки письма. Среди них будет DKIM-Signature.
Немного выше над ним в блоке Authentication-Results при успешной проверке должна быть строка dkim=pass:
Если вместо значения pass там будет fail, проверьте правильность ключей.
Что будет, если не настроить DKIM
Наличие настроенного DKIM является обязательным требованием большинства почтовых провайдеров.
Несмотря на это, емейл-сообщения, не подписанные DKIM, могут быть доставлены, но придут они в папку «Спам». Поэтому не стоит игнорировать данное требование, тем более что, единожды настроив его, вы также обезопасите себя и своих подписчиков от действий злоумышленников.
Кроме того, на основе DKIM работает протокол DMARC, о котором рассказали в одной из статей цикла.
Exim + DKIM на примере FreeBSD 8.2
Что такое DKIM и как оно работает
DKIM (расшифровывается как DomainKeys Identified Mail) — метод идентификации письма по доменным ключам.
DKIM настраивается на почтовом сервере для того, чтобы подписывать исходящие письма цифровой подписью. Наличие такой подписи в заголовке отправленного письма сообщает серверу-получателю, что оно действительно было отправлено с указанного домена.
Известно, что в СПАМ-письмах часто в поле From: ставят е-mail, не имеющий совершенно никакого отношения к отправителю. В этом случае DKIM поможет распознать реальное письмо от спама. В отличие от других методов цифровой подписи письма, DKIM совместим с существующими форматами и протоколами и может быть плавно интегрирован в имеющиеся системы доставки и получения почты.
Настройка DKIM в Exim
В DKIM используются уже устоявшиеся криптографические инструменты. На данный момент для цифровой подписи авторы DKIM предлагают два алгоритма: RSA-SHA256 и RSA-SHA1, но в будущем возможно расширение технологии для поддержки других алгоритмов. Длина ключа ограничина значением в 4096 бит, так как больший по длине ключ не поместится в максимальный размер DNS UDP-пакета — 512 байт. Рекомендованная длина ключа составляет от 1024 до 2048 бит. Слишком большая длина создает вычислительную нагрузку на сервер для обработки каждого сообщения, а слишком малая(384 или 512 бит) — взламывается перебором за актуальное время с помощью ПК или с использованием сервиса облачных вычислений.
По результатам исследований в наше время уже возможно расшифровать данные, зашифрованные RSA с длиной ключа 1024 бита. Поэтому оптимальным на сегодня будет ключ RSA длиной 2048 бит.
Для генерации пары ключей можно воспользоваться online-сервисом www.port25.com/support/domainkeysdkim-wizard или же воспользоваться openssl в консоли.
Генерим секретный ключ через openssl
На выходе имеем ключ вида:
Генерим публичный ключ на основе секретного
На выходе получим что-то вроде:
Правим DNS
Добавляем DKIM селектор
Создаем в DNS запись mail1._domainkey.example.com типа TXT со значением:
(В данном случае это синтаксис для DNS сервера на BIND, и другие DNS сервера могут не требовать знак “\” для экранирования “;”.)
Вместо mail1 можете использовать другой селектор, например, dkim, server, public итд. Подобных записей Public key для DKIM может быть несколько.
Необходимо дождаться, когда обновится ваша DNS запись на других серверах. Это может занять несколько часов.
Проверять свою DKIM запись можно, например, с помощью сервиса DNSWatch.
Добавляем ADSP запись
Правим конфиг Exim
В файл /usr/local/etc/exim/configure добавляем в начало:
Эта конструкция позволит использовать разные Private key для разных доменов.
Подправляем транспорт remote_smtp:
Здесь mail1 — наш селектор.
Сохраняем конфиг и перечитываем его:
Проверка DKIM
Проверить DKIM можно разными способами. Я опишу два из них.
1) Известно, что Gmail проверяет DKIM запись в письмах. Отправляем письмо на свой gmail ящик и смотрим заголовки.
Находим запись вида
Полный синтаксис DKIM, DMARC и SPF
Не так давно прописывала записи DKIM, DMARC и SPF для своего домена. Это оказалось сложнее, чем я думала, потому что мне не удалось нигде найти полный синтаксис всех этих записей. Тогда вместе с Яной Лыновой мы собрали материал. Фактически, эта статья дополняет несколько статей с Хабра (внизу вы найдете ссылки).
Для того, чтобы прописать необходимые записи, нам нужен доступ к DNS. DNS расшифровывается как Domain Name System. Обычно доступ к DNS в компании имеют системные администраторы или, на крайний случай, программисты. Для них вы должны написать ТЗ, по которому они смогут добавить записи в DNS.
Итак, что же такое DKIM?
DKIM (Domain Keys Identified Mail) — это цифровая подпись, которая подтверждает подлинность отправителя и гарантирует целостность доставленного письма. Подпись добавляется в служебные заголовки письма и незаметна для пользователя. DKIM хранит 2 ключа шифрования — открытый и закрытый. С помощью закрытого ключа формируются заголовки для всей исходящей почты, а открытый ключ как раз добавляется в DNS записи в виде TXT файла.
Проверка DKIM происходит автоматически на стороне получателя. Если домен в письме не авторизован для отправки сообщений, то письмо может быть помечено подозрительным или помещено в спам, в зависимости от политики получателя.
Записей DKIM может быть несколько — например, если вы пользуетесь одновременно сервисом Mandrill и при этом отправляете письма через Gmail, у вас будет 2 записи DKIM с разными селекторами:
Название записи | Формат | Содержание |
для Mandrill (селектор — mandrill): mandrill._domainkey.ваш_домен. (в некоторых панелях управления можно указывать без вашего домена, зависит исключительно от вашего хостинга) | TXT | v=DKIM1; k=rsa; p=(сгенерированный публичный ключ) |
для Gmail (селектор — google): google._domainkey.ваш_домен. | TXT | v=DKIM1; k=rsa; p=(сгенерированный публичный ключ) |
Синтаксис DKIM
«v» — версия DKIM, всегда принимает значение v=DKIM1;
«k» — тип ключа, всегда k=rsa;
«p» — публичный ключ, кодированный в base64.
Необязательные элементы:
«t=y» — режим тестирования. Нужно только для отслеживания результатов;
«t=s» — означает, что запись будет использована только для домена, к которому относится; не рекомендуется, если используются субдомены;
«h» — предпочитаемый hash-алгоритм, может принимать значения «h=sha1» и «h=sha256»;
«s» — тип сервиса, использующего DKIM. Принимает значения «s=email» (электронная почта) и «s=*» (все сервисы). По умолчанию «*»;
«;» — разделитель.
Помимо этого можно создать необязательную запись, которая подскажет, что делать с неподписанными письмами:
Название записи | Формат | Содержание |
_adsp._domainkey.ваш_домен. | TXT | dkim=all |
где «all» — отправка неподписанных сообщений запрещена; «discardable» — все неподписанные сообщения должны быть заблокированы на стороне получателя; «unknown» — отправка неподписанных сообщений разрешена (значение по умолчанию).
Обратите внимание, что некоторые хостинги не поддерживают доменные записи длиннее 255, а то и 200 символов. В таком случае нужно разбить строку переводом. Но у некоторых хостингов и это не работает, обратитесь в поддержку вашего хостинга, чтобы узнать это заранее.
Некоторые хостинги проставляют кавычки для всех записей самостоятельно, об этом тоже можно спросить у поддержки или проставить по аналогии с другими TXT-записями домена, если они присутствуют.
Проверить DKIM можно здесь.
SPF (Sender Policy Framework) — это подпись, содержащая информацию о серверах, которые могут отправлять почту с вашего домена. Наличие SPF снижает вероятность попадания вашего письма в спам.
Важно помнить, что SPF запись может быть только одна для одного домена. В рамках одной SPF может быть несколько записей (например, если письма отправляются с нескольких ESP — маловероятно, но все же, чуть позже будет пример). Для поддоменов нужны свои записи.
Синтаксис SPF
» — «мягкое» отклонение (письмо будет принято, но будет помечено как спам);
«?» — нейтральное отношение;
«mx» — включает в себя все адреса серверов, указанные в MXзаписях домена;
«ip4» — позволяет указать конкретный IP-адрес или сеть адресов;
«a» — IP-адрес в A-записи;
«include» — включает в себя хосты, разрешенные SPF-записью указанного домена;
«all» — все остальные сервера, не перечисленные в SPF-записи;
«ptr» — проверяет PTR-запись IP-адреса отправителя (разрешено отправлять всем IP-адресам, PTR-запись которых направлена на указанный домен) (не рекомендуется к использованию согласно RFC 7208);
«exists» — выполняется проверка работоспособности доменного имени;
«redirect» — указывает получателю, что нужно проверять SPF запись указанного домена, вместо текущего домена.
Так как запись должна быть всего одна, через include необходимо прописывать все возможные сервера, через которые вы отправляете письма.
Пример записи SPF, если вы пользуетесь одновременно сервисом Mandrill и при этом отправляете письма через Gmail (несколько записей в рамках одной SPF, как я упоминала ранее):
Проверить SPF можно здесь.
DMARC
DMARC (Domain-based Message Authentication, Reporting and Conformance) — это подпись, которая позволяет принимающему серверу решить, что делать с письмом. DMARC использует DKIM и SPF. Если отправленное сообщение не прошло проверку DKIM и SPF, то оно не пройдет и DMARC. Если же сообщение успешно прошло хотя бы одну проверку (DKIM или SPF), то и проверку DMARC сообщение пройдет успешно. DMARC добавляется только после того, как настроены записи SPF и DKIM.
Пример записи DMARC (не имеет значения, какими сервисами для рассылки вы пользуетесь):
Название записи | Формат | Содержание |
_dmarc.ваш_домен. | TXT | v=DMARC1; p=reject; sp=reject; ruf=mailto:postmaster@your.tld; fo=1 |
Синтаксис DMARC
«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 через запятую без пробелов.
«ruf» — отчеты для писем, не прошедших проверку DMARC.
Тег «fo» служит для генерации отчетов, если один из механизмов сломается. «fo=0» (используется по умолчанию) — присылать отчет, если не пройден ни один этап аутентификации; «fo=1» — присылать отчет, если не пройден хотя бы один этап аутентификации; «fo=d» — присылать отчет, если не пройдена аутентификация DKIM; «fo=s» — присылать отчет, если не пройдена аутентификация SPF.
Запись DMARC может быть одна для домена и поддоменов, т.к. в ней можно явно указать действия для тега «sp». Если вам требуется специфическая запись для поддоменов, можно создать отдельную запись с наименованием «_dmarc.ваш_поддомен.ваш_домен.».
Проверить DMARC можно здесь.
Надеюсь, что эта статья помогла вам разобраться в синтаксисе записей, и теперь вы с легкостью сможете написать ТЗ для системного администратора или программиста на внесение этих записей в DNS.
Настройка DKIM, SPF и DMARC в Zimbra Collaboration Suite
Если при попытке отправить сообщение на почтовые сервера Gmail вы вдруг получили ошибку типа «Our system has detected that this message is 550-5.7.1 likely unsolicited mail. To reduce the amount of spam sent to Gmail, 550-5.7.1 this message has been blocked.», то это почти всегда значит, что на вашем почтовом сервере не настроены DKIM, SFP и DMARC. Крупные почтовые серверы (Gmail, mail.ru, Яндекс) требуют наличие данных записей. Сегодня мы расскажем, как это сделать в Zimbra Collaboration Suite.
Настройка DKIM в Zimbra
DKIM (DomainKeys Identified Mail) — это метод e-mail аутентификации, основанный на проверке подлинности цифровой подписи. DKIM необходим для того, чтобы почтовые сервисы проверяли отправителя и защищали получателя письма от мошеннических рассылок, которые производятся с подменой адреса отправителя.
Метод предусматривает шифрование заголовков исходящих сообщений с помощью закрытого ключа домена, и добавление открытой версии ключа в записи DNS домена, доступного всем. MTA сервера-получателя запрашивает для расшифровки заголовков входящих сообщений открытый ключ у DNS-сервера отправителя, а затем проверяет, действительно ли сообщение отправлено от заявленного источника.
DKIM стал доступен с версии Zimbra 8.0. Настройка подписи состоит из двух этапов:
Первый этап: генерация ключей и селектора
Добавляем данные DKIM к домену, у которого еще нет существующей конфигурации DKIM:
Также можно обновить DKIM данные для домена:
Удалить DKIM данных для домена:
Извлечь сохраненные данных DKIM для домена:
Второй этап: обновление DNS-записей
Публичный ключ нужно добавить как TXT-запись в домен:
Обновите DNS, и проверьте результат выполнения команды:
Если получили ошибку:
opendkim-testkey: /opt/zimbra/conf/opendkim.conf: configuration error at line 0
Это означает, что файла /opt/zimbra/conf/opendkim.conf не существует, создать его можно командой:
Если возникнет необходимость отозвать ключ подписи DKIM, установите пустой «р=» тег в записи TXT.
Sender Policy Framework (SPF)
SPF (Sender Policy Framework) — расширение для протокола отправки электронной почты через SMTP. SPF определен в RFC 7208. SPF-запись защищает от подделки вашего домена и позволяет предотвратить попадание в спам писем, отправленных с ваших адресов. SPF настраивается для адреса, используемого в envelope-from (SMTP конверте).
С помощью spf-записи владелец домена может указать список серверов, имеющих право отправлять email-сообщения для домена. В общем случае порядок следующий:
[версия] [механизмы] [-all |
all | redirect]
Версия всегда spf1, модификаторы сообщают, кто может посылать почту:
Пример 2
example.com. IN TXT «v=spf1 redirect:example.org»
Получить правила с домена example.com.
Настройка DMARC
Domain-based Message Authentication, Reporting and Conformance (идентификация сообщений, создание отчётов и определение соответствия по доменному имени) или DMARC — это техническая спецификация, созданная группой организаций для борьбы со спамерами, подделывающими адреса отправителей. Она основана на идентификации почтовых доменов отправителя на основании правил и признаков, заданных на почтовом сервере получателя.
Таким образом почтовый сервер сам решает, хорошее сообщение или плохое и действует согласно DMARC записи. Благодаря настройке DMARC владельцы доменов могут создавать правила обработки писем, которые поступили с доменов, не прошедших авторизацию.
После создания записей SPF и DKIM необходимо настроить проверку DMARC, добавив в DNS запись типа TXT (аналогично SPF). Параметры могут быть следующими:
Более подробно можно узнать в реестре тегов DMARC.
Правило для домена (что делать серверу-получателю, если проверка на spf и dkim не прошла) может быть одним из трех: