Селектор dkim что это
2keep.net
IT-Blog
Настройка DKIM в Exim и BIND
Что такое DKIM
DKIM (DomainKeys Identified Mai) — метод идентификации письма по доменным ключам.
Часто в СПАМ-письмах в поле From подставляют адреса который не имеют ни какого отношения к отправителю. DKIM создан для того, что бы бороться с таким видом СПАМ’а.
Используя DKIM, почтовый сервер-получателя всегда может проверить, действительно ли пришедшее письмо отправлено с того сервера/домена, что указано в заголовках письма, в поле From.
Принцип работы DKIM
Принцип работы DKIM
Что имеем
Создание пары Private и Public Key
Нам необходимо создать два ключа, секретный (Private Key) и публичный ключ (Public Key). Публичный ключ мы разместим в файле DNS-зоны домена, а секретный ключ будем использовать с почтовым сервером Exim для подписи писем.
Информация о методе шифрования и длине ключа из википедии:
В DKIM используются уже устоявшиеся криптографические инструменты. На данный момент для цифровой подписи авторы DKIM предлагают два алгоритма: RSA-SHA256 и RSA-SHA1, но в будущем возможно расширение технологии для поддержки других алгоритмов. Длина ключа ограничина значением в 4096 бит, так как больший по длине ключ не поместится в максимальный размер DNS UDP-пакета — 512 байт. Рекомендованная длина ключа составляет от 1024 до 2048 бит. Слишком большая длина создает вычислительную нагрузку на сервер для обработки каждого сообщения, а слишком малая(384 или 512 бит) — взламывается перебором за актуальное время с помощью ПК или с использованием сервиса облачных вычислений.
Ключи будем создавать используя OpenSSL, но можно воспользоваться сервисом www.port25.com/support/domainkeysdkim-wizard.
Создание Private Key
Длинна приватного ключа 2048 бит.
В результате будет:
Создание Public Key на основе Private key
В результате на экране отобразится:
Копируем данный ключ и сохраняем его. В дальнейшем мы будем использовать его в DNS зонах.
Настройка DKIM в DNS (BIND)
Добавляем DKIM селектор и публичный ключ
В файле DNS-зоны создаем запись mail._domainkey.2keep.net. (тут и в дальнейшем, меняем 2keep.net на ваш домен) типа TXT со значением: k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB…
Вместо mail можно использовать другой селектор, например dkim или другой. В дальнейшем, этот селектор нам понадобится во время настройки Exim.
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB… это фрагмент публичного ключа, но тут есть тонкость. BIND не понимает строки длинней 255 символов и поэтому, если вы пропишите публичный ключ в виде одной длинной строки, BIND при перезагрузке выдаст ошибку:
Прописывать ключ нужно следующим образом:
Добавляем ADSP запись
ADSP (Author Domain Signing Practices, http://tools.ietf.org/search/rfc5617 ) — практики использования DKIM в домене.
ADSP это опциональное расширение DKIM, которое позволяет сообщать почтовым серверам-получателям, что делать с письмом пришедшим с якобы нашего домена, но не имеющее подписи.
Запись ADSP имеет три значения:
Я использую тип all, т.к. только с моего почтового сервера будут отправляться письма и соответственно все они будут подписаны. Тип discardable, слишком радикален. Есть вероятность, что во время следования письма, его заголовки и подпись могут слегка изменится и письмо не дойдет, т.к. будет отброшено сервером получателем.
Запись ADSP в DNS-зоне:
Перезапускам BIND
Проверяем DNS-зону
Проверять DNS будем с помощью утилиты dig, а также можно воспользоваться сервисом http://www.dnswatch.info
Проверка с помощью dig:
Проверка с помощью DNSWatch:
Видим, что созданные записи появились в DNS-зоне.
Настройка почтового SMTP-сервера Exim
В конфигурационном файле Exim (/etc/exim/exim.conf) находим транспорт remote_smtp и правим его:
dkim_selector — указываем тот селектор, что мы выше прописывали в DNS-зоне. В данном случае это mail.
В начало конфигурационного файла Exim (/etc/exim/exim.conf) добавляем нижеследующие параметры:
Данная конструкция позволит использовать разные Private Key для разных доменов (домен берется из поля From).
В данном случае секретные (Private) ключи лежат в подкаталоге /etc/exim:
Мой почтовый сервер используется для двух сайтов 2keep.net и azlk-club.ru. Если письмо отправляется с сайта 2keep.net и в поле From: noreplay@2keep.net то и подписывается письмо секретным ключом 2keep.net.key, а если письмо отправляется с сайта azlk-club.ru и в поле From: noreplay@azlk-club.ru, то подписывается azlk-club.ru.key.
Конечно в DNS-зоне azlk-club.ru у меня тоже прописан публичный ключ и ADSP.
Перезапускаем Exim
Проверка DKIM
Gmail и Yandex проверяют DKIM, отправим письма на данные почтовые ящики и посмотрим, какой будет результат.
Результаты на Gmail
Результаты теста DKIM в Gmail
Посмотрим заголовки:
Мы видим: dkim=pass
Результаты Yandex
Результаты теста DKIM в Yandex
DKIM настроен и работает.
Ещё рекомендую настроить в DNS-зоне для вашего домена SPF запись. Настраивается она легко и в Интернете множество инструкция на данную тему.
Ссылки:
Похожие записи.
Андрей Торженов
Latest posts by Андрей Торженов (see all)
Настройка DKIM в Exim и BIND : 5 комментариев
Да почта без DKIM и эцп щас в большинстве случаев идет в спам
Согласен, Иван. Настраивается он легко, так что пора всем его настраивать.
Спасибо за подробную информацию, Андрей! Возникла такая необходимость после смены VPS
спасибо, использовал Вашу статью при настройке почтовика.
Пожалуйста! Рад что пригодилось и спасибо за комментарий!
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Оповещение по e-mail о новых комментариях.
Также вы можете не оставляя комментарий подписаться но новые комментарии.
Полный синтаксис 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.
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/SPF/DMARC записей или защищаемся от спуфинга
1. DKIM
DKIM (DomainKeys Identified Mail) — это метод e-mail аутентификации, основанный на проверке подлинности цифровой подписи. Публичный ключ хранится TXT записи домена.
Зачем же он нужен?
DKIM необходим для того, чтобы почтовые сервисы могли проверять, является ли отправитель достоверным или нет. Т.е. защищает получателя письма от различных мошеннических писем (которые отправлены с подменой адреса отправителя).
Настройка DKIM подписи и DNS записей
Для это нам необходимо создать пару ключей:
Или можно воспользоваться онлайн-сервисом, чего я крайне не советую.
Далее необходимо указать путь с секретному ключу в файле конфигурации (для этого лучше почитать документацию) почтового сервера и публичный ключ в DNS.
Так же стоит прописать 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 записей
» — дополнительные проверки, «?» — нейтрально.
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»
В ней не предпринимаются никакие действия, кроме подготовки и отправки отчета.
ruf — отчеты писем, не прошедшие проверку DMARC. В остальном все так же, как и выше.
Эпилог
Мы научились настраивать DKIM/SPF/DMARC и противостоять спуфингу. К сожалению, это не гарантирует безопасность в случае взлома сервера или же отправки писем на серверы, не поддерживающие данные технологии. Благо, что популярные сервисы все же их поддерживают (а некоторые и являются инициаторами данных политик).
Эта статья — лишь инструкция по самостоятельной настройке записей, своего рода документация. Готовых примеров нет намеренно, ведь каждый сервер уникален и требует своей собственной конфигурации.
Подпись DKIM (Руководство для Начинающих)
Возникли проблемы с email-кампанией? Потратили время и деньги, а ваши электронные письма попадают в спам? Если ответ «да», то вам определённо понадобится подпись DKIM. В этой статье вы узнаете, что это такое и как этим пользоваться, чтобы улучшить доставляемость писем.
Что Такое DKIM?
DKIM-подпись, DKIM-запись, или просто DKIM означает DomainKeys Identified Mail — метод email аутентификации, который добавляет цифровые криптографические подписи к сообщениям электронной почты.
Технология служит подтверждением надёжности источника, а также гарантирует, что письма не были изменены или подделаны по пути от отправляющего к принимающему серверу.
При отправке электронных писем, будет генерироваться ключевая пара из закрытого и открытого ключа.
Закрытый ключ используется для добавления подписей к сообщениям email, а открытый ключ публикуется в DNS вашего домена с использованием записей TXT — типа ресурсных записей DNS, содержащих информацию для источников за пределами вашего домена.
В этом случае запись используется серверами получателя для проверки ваших писем (об этом позже).
Это Важно?
По умолчанию система электронной почты не включает никаких протоколов безопасности. Поэтому мошенники могут легко подделывать электронные письма (спуфинг).
В поддельном сообщении электронной почты адрес, отображаемый получателю, отличается от фактического адреса. Например, получатель видит, что отправителем является primer@proverennyi-istochnik.com, но на самом деле письмо пришло от primer@moshennik.com.
Поскольку получатель не знает фактического отправителя, этот метод часто используется при фишинг- и спам-атаках.
С помощью DKIM, принимающий почтовый сервер (ISP) может проверить, откуда на самом деле пришло сообщение. Таким образом, мошенникам будет сложно рассылать поддельные сообщения от имени вашего бренда.
DKIM также помогает укрепить репутацию вашего домена среди ISP и почтовых серверов. Домены с аутентифицированной почтой имеют лучшую репутацию, что, в свою очередь, предотвращает попадание писем в папки со спамом.
Как Это Работает?
Запись DKIM работает на двух серверах — отправляющем и принимающем.
На отправляющем сервере тело и заголовок исходящего письма преобразуются в хеш (строку уникального текста, также известную как криптограф). Затем закрытый ключ используется для шифрования и подписи хеша.
Принимающий сервер замечает, что входящее сообщение имеет подпись DKIM. Чтобы проверить это, он извлекает открытый ключ из записи TXT/DKIM отправляющего домена и дешифрует подпись обратно в исходный хеш.
Имея уже расшифрованный хеш, следующая задача сервера получателя — создать свой собственный хеш из заголовка и тела письма.
Если расшифрованный хеш совпадает с недавно сгенерированным хешем, это означает, что электронное письмо является подлинным и не было подделано.
Как Настроить DKIM-подпись?
Процесс настройки DKIM может отличаться в зависимости от почтового сервиса. Но, как правило, он включает следующие шаги:
1. Создайте Собственный Селектор
У домена может быть несколько открытых ключей, если он имеет более одного почтового сервера (каждый почтовый сервер имеет свой закрытый ключ, который совпадает только с одним открытым ключом). Селектор — это атрибут в подписи DKIM, который помогает серверу получателя найти правильный открытый ключ из DNS отправителя.
2. Сгенерируйте Пару из Закрытого/Открытого Ключа
На этом этапе вам понадобится специальный инструмент. У каждой операционной системы он свой. SSH-Keygen (англ) — отличный вариант для пользователей Linux и Mac. Между тем, пользователи Windows могут создавать пары ключей, используя PuTTY (англ).
3. Добавьте DKIM-запись к Вашему Домену
Получив открытый ключ, добавьте его в ваши DNS- записи. Процесс может отличаться в зависимости от вашего хостинг-провайдера.
Если вы используете Hostinger, войдите в свою учётную запись и выберите нужный домен. Перейдите в Редактор DNS-зоны и заполните TXT (текстовую) запись в следующем формате:
Если вы используете другой хостинг, попробуйте связаться с вашим провайдером, так как редакторы DNS-зоны могут отличаться.
Выводы
Подделка электронной почты (спуфинг) довольно распространённая проблема. Чтобы защитить своих пользователей, почтовые провайдеры используют разные методы, которые проверяют надёжность источников входящих сообщений.
DKIM — один из методов аутентификации электронной почты.
Мы настоятельно рекомендуем использовать DKIM-подпись для аутентификации писем с вашего домена.
Благодаря DKIM ваш домен будет помеченный как надёжный, а ваши письма не будут попадать в спам.
И хоть вам и придётся потратить некоторое время, чтобы разобраться со всеми настройками, в конечном итоге вы убедитесь, что оно того стоило.
Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.