Настройка dkim


Данная настройка позволяет подписывать все ваши письма персональным ключем DKIM вашего домена, что в свою очередь положительно влияет на репутацию и доставку ваших писем. А так же скрывает основной домен сервера отправителя «estismailer.com».

Для активации данной функции, ваш емейл должен быть расположен на вашем личном домене. На доменах почтовых служб данная функция не работает.

 

Пример стандартной подписи (DKIM не активен)

В почтовом интерфейсе Gmail, при получении письма видно, что доменом сервера отправителя является домен estismailer.com.

Как выглядит домен отправителя

На рис № 1 мы видим, что почта отправителя находится на домене yandex.ru, а отправитель является estismailer.com

 

 

Проверка DKIM записи домена отправителя

На рисунке № 2 мы можем увидеть более подробные данные. Видно, что сервер подписан доменом estismailer.com, а соответственно и письмо подписано данным доменом.

 

Пример функции с активной подписью DKIM

Если же мы активирум функцию «Собственная подпись DKIM», то все наши письма будут подписаны именно нашим доменом.


Собственная DKIM позволяет подписывать письма вашим доменом

На рисунке № 3 видно, что надпись «через estismailer.com» отсутствует.

 

DKIM подпись в письме. Письмо подписано DKIM sale-system.com

На рисунке № 4 видно, что емейл отправителя находится на личном домене, а так же он указан в графе «подписан».

 

Получение ключа DKIM

  1. Перейдите в раздел «Настройки отправителя» в ваш аккаунт в сервисе.
  2. Во вкладке DKIM будет предоставлен публичный ключ DKIM, который необходимо скопировать и разместить на вашем домене.
  3. После того, как вы добавите ключ на ваш домен, необходимо подождать 3-4 часа для обновление DNS записей вашего домена. 

 

Добавления ключа на домен

Добавление ключа на ваш домен, происходит в настройках вашего домена. Вам необходимо добавить новую запись TXT и уже в нее поместить ключ. При добавлении, укажите следующие значения:

Имя: estismail._domainkey

Значение: (Ваш ключ DKIM)

Если вы все сделает правильно, то в разделе «Настройки отправителя» во вкладке «DKIM» вы увидите статус «Активный»


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

Если вы не понимаете о чем речь или у вас просто не получается, обратитесь к своему почтовому Администратору или службе поддержки регистратора вашего домена. Покажите данную инструкцию и вам помогут. 

Добавление новой TXT записи и настройка DKIM подписи — процедура очень распространенная и для данных специалистов не будет являться сложной задачей.

www.estismail.com

Настройка SPF (Sender Policy Framework).

Настройка SPF является достаточно простой. Для этого достаточно создать записи DNS, определяющие, с каких серверов разрешена отправка почты для данного домена. Использоваться могут два типа записи — TXT и SPF.

domain.ru    TXT    "v=spf1 a mx ip4: -all"  domain.ru    SPF    "v=spf1 a mx ip4: -all"  

В данном примере указывается,  что отправка почты данного домена разрешена только с хоста с адресом , для которого есть записи типа A и MX, со всех остальных отправка запрещена.


Для своего домена можно сгенерировать SPF-запись, например, здесь.
Поправка: Microsoft прикрыл лавочку, поэтому рекомендую официальную страницу OpenSPF, на которой можно подробно почитать о структуре записи SPF на английском языке.

После добавления записей не забудьте изменить serial для зоны DNS и перезагрузить информацию о доменной зоне. Если вы всё сделали правильно, то при отправке письма на другой домен, например, на gmail.com, в заголовках письма вы увидите следующий заголовок:

Received-SPF: pass

Настройка DKIM (DomainKeys Identified Mail).

Настройка DKIM несколько сложнее, чем настройка SPF. Для работы этого механизма необходимо следующее:

— Почтовый сервер должен уметь подписывать письма
— Должны быть созданы приватный и публичный ключи
— Должны присутствовать записи в DNS, указывающие на наличие поддержки DKIM

Генерация ключей.

Ключи можно сгенерировать при помощи OpenSSL. Генерация приватного ключа:

# openssl genrsa -out dkimprivate.key 1024  Generating RSA private key, 1024 bit long modulus  .++++++  .....................++++++  e is 65537 (0x10001)  

После генерации приватного ключа необходимо изменить права доступа к нему:

chmod 400 /etc/ssl/private/dkimprivate.key

Генерация публичного ключа:


# openssl rsa -pubout -in dkimprivate.key -out dkimpublic.key  writing RSA key  

Ключи готовы. Их можно разместить в директории, где хранятся другие ключи. Для Debian’а это директория /etc/ssl/private. Сгенерировать их можно также при помощи программы opendkim-genkey, входящую в пакет opendkim-tools. Теперь надо добавить записи в DNS. Записей будет две.

_domainkey.domain.ru. TXT "o=~;"  mail._domainkey.domain.ru. TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCoCH8kcKOUHIx1Gbv461a9iZYaqS3LfjGLHR1aJEQkAChMEB5xc74UeEcTWo0rx5sBAgbhUj/5nefL4K4cxFLnFIKkPZZp/e2euTsKd0c3kE3Go5vu9jERzXnsb0jAQO0K85Jfw/gQahTC4qDOce5B5REsXtMtUR8r9J+dnACpzQIDAQAB"  _adsp._domainkey.domain.ru. TXT "dkim=all"  

То, что идет после «p=» — это ключ, содержащийся в файле dkimpublic.key, он записывается в одну строчку. А запись «_adsp._domainkey.domain.ru» определяет, должны ли подписываться письма. Возможные варианты:
«dkim=all» — все письма должны подписываться
«dkim=discardable» — неподписанные письма не должны приниматься
«dkim=unknown» — то же самое, что и отсутствие такой записи.
После создания записей изменяем serial и перезагружаем настройки bind’а, если у вас установлен он. И теперь осталось последнее — настроить почтовый сервер. В качестве почтового сервера возьмем Postfix.

Настройка поддержки DKIM почтовым сервером Postfix.


Последняя и, пожалуй, самая важная часть — включение подписи писем почтовым сервером. Самое первое, что нужно сделать на этом этапе, — это установить opendkim:

apt-get install opendkim

Теперь необходимо настроить этот сервис. Первым делом поменяем файл /etc/default/opendkim. Впишем туда следующую строчку:

SOCKET="inet:10024@localhost"  

Теперь наш сервер будет запускаться на порту 10024 на loopback-интерфейсе. Следующий файл, который необходимо изменить, — это /etc/opendkim.conf.

Раскомментируем строчку со словом Domain, вписываем название нашего домена:

Domain    domain.ru  

Теперь указываем файл с приватным ключом:

KeyFile    /etc/sll/private/dkimprivate.key  

После этого указываем селектор, который мы использовали для сгенерированного ранее публичного ключа, указывая его в записи DNS. В нашем случае это «mail»:

Selector    mail  

Дописываем строчку:

Background    yes  

Теперь можно рестартовать opendkim:

service opendkim restart  

И последний шаг — настройка непосредственно Postfix’а. Изменяем файл /etc/postfix/main.cf. Добавим туда следующие строчки:

milter_default_action = accept  milter_protocol = 2  smtpd_milters = inet:localhost:10024  non_smtpd_milters = inet:localhost:10024  

Теперь перезапускаем postfix и отправляем письмо. После получения смотрим заголовки письма. В них должен присутствовать следующий заголовок:


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

Если вы видите строчки «spf=pass» и «dkim=pass», значит вы все сделали правильно и ваш почтовый сервер теперь будет значительно лучше восприниматься другими почтовыми серверами, с чем я вас и поздравляю.

mnorin.com

Принцип работы DKIM

  1. Пользователь с e-mail’ом keeper@2keep.net отправляет письмо пользователю user@example.org.
  2. Почтовый сервер-отправителя (2keep.net) принимает письмо и подписывает его секретным (Private) ключом.
  3. Почтовый сервер-отправителя (2keep.net) отсылает подписанное письмо на почтовый сервер-получателя (example.org).
  4. Почтовый сервер-получателя делает запрос к DNS серверу и получает публичный ключ для домена 2keep.net и ADSP запись.
  5. Получив публичный ключ, сервер-получателя проверяет подпись и если она соответствует, то dkim=pass, а если нет то dkim=fail. Если dkim=fail, то почтовый сервер смотрит, что рекомендует делать adsp запись. Отбрасывать такие письма или пропускать дальше для дополнительной проверки на спам.
  6. Если dkim=pass, письмо доходит до получателя (возможно, предварительно, прошедшее дополнительные спам фильтры).
  • CentOS Linux release 7.1.1503 (Core)
  • Exim version 4.84 #2 built 10-Oct-2014 09:17:22
  • BIND 9.9.4-RedHat-9.9.4-18.el7_1.3

Нам необходимо создать два ключа, секретный (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-зоны создаем запись 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 имеет три значения:

  • unknown — сервер может подписывать некоторые или все письма;
  • all — сервер подписывает все письма;
  • discardable — сервер подписывает все письма, но если письмо приходит не подписанное или с неверной подписью, то домен предлагает отклонить данное письмо.

Я использую тип all, т.к. только с моего почтового сервера будут отправляться письма и соответственно все они будут подписаны. Тип discardable, слишком радикален. Есть вероятность, что во время следования письма, его заголовки и подпись могут слегка изменится и письмо не дойдет, т.к. будет отброшено сервером получателем.

Запись ADSP в DNS-зоне:

Проверяем DNS-зону

Проверять DNS будем с помощью утилиты dig, а также можно воспользоваться сервисом http://www.dnswatch.info

Проверка с помощью dig:

Проверка с помощью DNSWatch:

Видим, что созданные записи появились в DNS-зоне.

В конфигурационном файле 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

Gmail и Yandex проверяют DKIM, отправим письма на данные почтовые ящики и посмотрим, какой будет результат.

Результаты на Gmail

Посмотрим заголовки:

Мы видим: dkim=pass

Результаты Yandex

DKIM настроен и работает.

Ещё рекомендую настроить в DNS-зоне для вашего домена SPF запись. Настраивается она легко и в Интернете множество инструкция на данную тему.

2keep.net

Данная статья являет продолжением темы по настройке почтового сервера. На этот раз будет рассмотрен процесс настройки домена для отправки почтовых сообщений, а именно добавление записей SPF, DKIM и DMARC.

1. Добавление записи SPF

SPF – это расширение для протокола отправки почты через SMTP сервер. С его помощью проверяется легитимность домена отправителя. Владелец домена в TXT-записи указывает перечень серверов которые могут отправлять почту, с обратным адресом в этом домене.

Запись SPF имеет следующие опции:

  • v=spf1 – указывается на используемую версию SPF;
  • + – сообщает серверу, что письма необходимо принимать, является значением по умолчанию;
  •  – сообщает о необходимости отклонить почту;
  • ~ – сообщает о необходимости принять письмо с пометкой СПАМ;
  • ? – нейтральное отношение к принимаемой почте;
  • mx – состоит со всех адресов серверов, указанных в MX-записях домена;
  • a – позволяет добавить какое-либо доменное имя;
  • ip4 – позволяет добавить в запись SPF один или несколько IPv4 адресов;
  • ip6 – позволяет добавить один или несколько IPv6 адресов;
  • include – добавляет сервера, которые включены в запись SPF указанного домена;
  • ptr – проверяет PTR-запись IP-адреса отправителя на сходство с текущим доменом;
  • all – все сервера, которые не были перечислены в текущей записи;
  • exp – позволяет задать текст ошибки, в случае её возникновения;
  • redirect – указывает серверу-получателю, что необходимо проверять запись в заданного домена, вместо текущего.

Простая TXT-запись для сайта site.com имеет вид:

В ней сообщается серверу, что необходимо принимать почту со всех серверов, указанных в MXзаписи, а также с сервера 8.8.8.8, остальную же почту принимать, но помечать как СПАМ.

2. Добавление записи DKIM

DKIM – технология позволяющая производить проверку легитимности почтового отправителя, путем добавления к сообщению специальной цифровой подписи.

Добавление записи DKIM состоит из двух этапов:

  • генерация публичного и приватного ключей;
  • редактирование DNS.

Для начала, если ранее не делалось, необходимо внести в конфиг Exim информацию о DKIM:

Добавляем в раздел “MAIN CONFIGURATION SETTINGS”:

Добавляем сразу после:

это:

Здесь следует заметить, что dkim_selector (в нашем случае имеет значение mail) будет использоваться при внесении записей в DNS.

Следующим шагом является генерация ключей. Сначала генерируем приватный ключ (RSA 2048 бит):

Приватный ключ остается на сервере, с ним ничего делать не нужно. Далее необходимо сгенерировать публичный ключ на основе уже созданного приватного:

После чего будет получен, примерно, следующий результат, который и необходимо добавить в DNS:

Следующим, финальным, шагом является добавление публичного ключа в запись DKIM:

Стоит отметить, что mail в данной записи, это dkim_selector который мы указывали в конфиге Exim.

3. Добавление записи DMARC

DMARC – это техническая спецификация, основной целью которой является борьба с отправителями, которые подделывают обратные адреса. DMARC не является обязательной записью, её основная польза заключается в сохранении чистоты репутации почтовых сервисов и интернет-провайдеров, так как дает возможность исключить несанкционированные рассылки.

DMARC добавляется только после того, как были добавлены записи SPF и DKIM, и сообщает серверу-получателю, что делать с письмами, которые не прошли проверку легитимности отправителя.

Основные опции:

  • v=DMARC1 – версия протокола;
  • p – правило для домена (есть 3 варианта: none – не принимать никаких действий; quarantine – отправлять сообщения в спам; reject  – не принимать сообщения);
  • aspf – режим проверки для SPF-записей;
  • pct – процент сообщений, которые подлежат фильтрации;
  • sp – правило для субдоменов, аналогичны правилу для доменов;
  • rua – адрес для отчетов.

Примеры конечных записей:

  • отклонять все сообщения, которые не прошли проверку:

  • пропускать все сообщения, но отправлять отчет на почту admin@site.com:

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

На этом настройка DNS-записей домена для отправки почты завершена. Возникшие вопросы задаем в комментариях.

valerykoretsky.com

Чтобы ваши письма подписывались электронными ключами вашего домена, надо изменить несколько DNS-записей типа TXT в настройках домена, обратный адрес которого вы будете использовать в письмах.

Если вы не знаете, что такое DNS и как вносить TXT-записи – обратитесь к вашему системному администратору. Наши сотрудники также могут настроить вам email-аутентификацию (см. ниже).

Настройка email-аутентификации пользователем

Итак, надо добавить следующие записи:

@ TXT v=spf1 include:spf.unisender.com ~all  us._domainkey TXT k=rsa; p=XXXXXXXXXXXXXXXXXXXXX  

Где XXXXXXXXXXXXXXXXXXXXX — уникальный код, чтобы его получить, перейдите по ссылке и нажмите «добавить». Во всплывающем окне ввести свой домен и нажать «Получить настройки».

Если вы отправляете рассылки на адреса группы mail.ru (inbox.ru, mail.ua, list.ru, bk.ru)

Необходимо настроить постмастер и пересылку fbl, чтобы отметки «это спам» корректно обрабатывались и ваш домен не был блокирован на mail.ru.

Для этого нужно иметь почтовый ящик на Mail.ru (лучше для этой цели завести новый отдельный ящик). Залогинившись в почте, переходите на страницу https://postmaster.mail.ru/add/ и добавляете по инструкции те домены, от имени которых отправляете рассылки. Через сутки Вам будет доступна информация, сколько писем отправлено на домены Mail.ru, сколько блокировано и сколько попало в папку «Спам», а также масса другой полезной информации.

При этом обязательно следует на странице  https://postmaster.mail.ru/settings/ для всех доменов указать адрес FBL – на него поступает информация о том, какие адресаты нажали кнопку «Спам» после получения письма. В качестве такого адреса обязательно следует указать fbl@ваш_домен, а с этого адреса настроить форвард (автоматическое перенаправление писем) на адрес fbl@unisender.com, чтобы письма необходимым образом обрабатывались.

Комментарии:

@ TXT v=spf1 include:spf.unisender.com ~all  

— это запись стандарта SPF. Вкратце, она гласит, что с вашего домена разрешено слать почту только серверам, перечисленным в spf.unisender.com. Но, скорее всего, вы шлёте почту не только через UniSender, но и со своих серверов, и нельзя отключать эту возможность. Чтобы корректно поступить в этом случае, рассмотрим два варианта:

  1. Если у вас уже есть запись «@ TXT v=spf1», то добавьте в её конец, но перед последним выражением (перед ~all или -all или аналогичным) строку include:spf.unisender.com.
  2. У вас ещё нет TXT-записи для @ с v=spf1. В этом случае вы должны выяснить, какие именно сервера используются для отправки почты с Вашего домена и добавить их наряду со строкой include:spf.unisender.com в соответствии с синтаксисом SPF.
us._domainkey TXT k=rsa; p=XXXXXXXXXXXXXXXXXXXXX  

— эта строка содержит публичный ключ для подписей, используемых по селектору «us».

Рассмотрим пример добавления TXT-записей на домене, который обслуживается Яндекс.

Итак, допустим мы уже получили все необходимые записи и изначально наши настройки выглядят так:

Настройка dkim

  1. Первое что необходимо добавить — это spf1 запись —
    @ TXT v=spf1 include:spf.unisender.com ~all

    Согласно инструкции , описанной выше, при условии что у нас уже есть spf1 строка, требуется include:spf.unisender.com добавить в её конец, но перед последним выражением (перед ~all или -all или аналогичным) следующим образом:

    Настройка dkim

    Примечание 1: при добавлении нужно учесть что
    @ — это имя записи (хост)
    TXT — тип записи
    include:spf.unisender.com ~all — значение записи.

    Примечание 2 : на Яндексе есть особые правила внесения SPF записей, о которых можно узнать по ссылке

    В итоге получаем :

    Настройка dkim

  2. Вносим наш DKIM ключ
    us._domainkey TXT k=rsa; p=xxx :

    Настройка dkim

В итоге, наши записи должны выглядеть так :

Настройка dkim

Настройка завершена.

Настройка email-аутентификации службой поддержки UniSender

Если у вас возникли какие-либо проблемы, или просто нет времени и желания разбираться со всеми техническими деталями, описанными выше, вы можете создать обращение в службу поддержки UniSender, и наши специалисты внесут необходимые записи в настройки вашего домена, а также проверят корректность работы SPF/DKIM. Стоимость услуги — 20 у.е за один домен.

www.unisender.com

SPF-запись — проверка отправителя.

Как всем известно, протокол отправки электронной почты SMTP, подразумевает, что в качестве отправителя можно указать любой почтовый ящик. Таким образом можно послать письмо, подставив в поле «From» вымышленное значение. Процесс такого почтового обмана называется Спуфинг (e-mail spoofing). Чтобы бороться с этим явлением, был разработан и введен в действие стандарт SPF – Sender Policy Framework (структура политики отправителя).

SPF позволяет владельцу домена указать в TXT-записи домена специальным образом сформированную строку, указывающую список серверов, имеющих право отправлять email-сообщения с обратными адресами в этом домене.

Рассмотрим простой пример SPF-записи:

example.org. IN TXT «v=spf1 +a +mx -all»

Теперь более детально о допустимых опциях. Рассмотрим варианты поведения получателя, в зависимости от используемых опций:

 

  • «v=spf1» — используемая версия SPF.
  • «+» — принимать корреспонденцию (Pass). Этот параметр установлен по умолчанию. Тоесть, если никаких параметров не установлено, то это «Pass»;
  • «-» — Отклонить (Fail);
  • «~» — «мягкое» отклонение (SoftFail). Письмо будет принято, но будет помечено как СПАМ;
  • «?» — нейтральное отношение;
  • «mx» — включает в себя все адреса серверов, указанные в MX-записях домена;
  • «ip4» — опция позволяет указать конкретный IP-адрес или сеть адресов;
  • «a» — указываем поведение в случае получения письма от конкретного домена;
  • «include» — включает в себя хосты, разрешенные SPF-записью указанного домена;
  • «all» — все остальные сервера, не перечисленные в SPF-записи.

 

Итак, попробуем разобраться, что же значит SPF-запись, указанная выше.

 

  • «+a» — разрешает прием писем от узла, IP-адрес которого совпадает с IP-адресом в A-записи для example.org;
  • «+mx» — разрешает прием писем, если отправляющий хост указан в одной из MX-записей для example.org;
  • «-all» — все сообщения, не прошедшие верификацию с использованием перечисленных механизмов, следует отвергать.

 

Для лучшего понимания того, как работает SPF, рассмотрим еще один, более сложный пример:

example.org. IN TXT «v=spf1 mx ip4:78.110.50.123 +a:mail.ht-systems.ru include:gmail.com ~all»

Теперь более подробно о используемых опциях…

 

  • «mx» — принимать письма от серверов, указанных в MX-записях;
  • «ip4:78.110.50.123» — принимать письма, отправленные с IP-адреса 78.110.50.123;
  • «+a:mail.ht-systems.ru» — то же, что и a:mail.ht-systems.ru. Принимать от mail.ht-systems.ru;
  • «include:gmail.com» — принимать письма с серверов, разрешенных SPF-записями 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.

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

adminunix.ru

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

1. DKIM

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

Принцип работы DKIM (взято с Wikipedia)

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

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

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

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

openssl genrsa -out private.pem 1024 //генерируем секретный ключ длинной 1024

openssl rsa -pubout -in private.pem -out public.pem //получаем публичный ключ из секретного

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

Далее необходимо указать путь с секретному ключу в файле конфигурации (для этого лучше почитать документацию) почтового сервера и публичный ключ в 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 (взято с просторов интернета)

Настройка 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 записей

Типичная запись выглядит так: _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 и противостоять спуфингу. К сожалению, это не гарантирует безопасность в случае взлома сервера или же отправки писем на серверы, не поддерживающие данные технологии. Благо, что популярные сервисы все же их поддерживают (а некоторые и являются инициаторами данных политик).

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

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

habr.com

DMARC — TXT-запись в зоне DNS домена, определяющая политику обработки исходящих писем. Она необходима для защиты репутации доменного имени: адрес отправителя часто подделывается и используется для спама и фишинга. Например, клиенты вашего интернет-магазина получат письма с предложением купить товары по акции, а ссылки на них будут фальшивыми: при переходе откроется мошеннический сайт.

Почтовые сервисы защищают пользователей от таких писем, проверяя записи SPF и DKIM доменов-отправителей. В DMARC указывается, как действовать серверу, когда сообщение не проходит проверку.

Если ваши письма попадают в спам или не доходят до получателя, укажите в зоне DNS домена (раздел «Управление сайтами» → «Настройка DNS» в Панель управления) три записи: SPF, DKIM и DMARC.

Настройка SPF

SPF (Sender Policy Framework) — TXT-запись с перечнем серверов, которым разрешено отправлять почту с обратным адресом в домене.

SPF состоит из трех частей:

  1. Версия,
  2. Префикс и механизм,
  3. Модификатор.

Версия протокола — spf1.

Префиксы:

  • + — принимать сообщение. Этот параметр установлен по умолчанию;
  • — — отклонить сообщение;
  • ~ — отправить в спам;
  • ? — требуется дополнительная проверка.

Основные механизмы:

  • all — любой сервер;
  • ip4 — IP-адрес или подсеть адресов;
  • a — определенный домен;
  • mx — все серверы, указанные в MX-записях домена;
  • include — получить данные с другого адреса.

Модификатор:

  • redirect — проверить SPF-запись указанного домена вместо используемого.

Пример

domain.com. TXT "v=spf1 a mx ip4:141.8.194.175 ~all" Принимать сообщения:

  • c основного домена (a);
  • домена из MX-записи (mx);
  • IP-адреса 141.8.194.175 (ip4:141.8.194.175).

C других серверов (all) — перемещать в папку спам.

Если домен делегирован на наши NS-серверы, SPF настроена по умолчанию.

Настройка DKIM

DKIM (DomainKeys Identified Mail) — технология подтверждения почтового домена, с помощью добавления зашифрованной подписи в заголовки исходящих писем. Ключ для расшифровки указывается в TXT-записи доменного имени.

Запись имеет вид: mail._domainkey.domain.com. TXT "k=rsa; t=s; p=..." где:

  • mail._domainkey — имя записи типа DKIM;
  • k, t, p — параметры ключа.

Включите DKIM-подпись в Панели управления, блок «Электронная почта» раздела «Управление сайтами».

Если почта обслуживается внешним сервисом:

  • запросите публичный ключ у провайдера;
  • перейдите в раздел «Управление сайтами» → ваш сайт → «Настройка DNS» Панели управления;
  • добавьте запись DKIM, указав полученный ключ после «p=».

Настройка DMARC

После настройки SPF и DKIM укажите политику их обработки: добавьте запись DMARC.

Она выглядит так:
_dmarc.domain.com TXT «v=; p=; ...»

Параметры:

Тег Описание Значение
v Версия протокола DMARC1
p Правила для домена none — бездействовать;
quarantine — поместить в спам;
reject — отклонить.
aspf Режим проверки соответствия SPF-записей r (relaxed) — разрешить частичные совпадения;
s (strict) — разрешить только полные совпадения.
pct Сообщения, подлежащие фильтрации (в %) Процент сообщений, для которых применяется политика. По умолчанию 100%.
sp Правила для поддоменов none — бездействовать;
quarantine — поместить в спам;
reject — отклонить.

Обязательно укажите атрибуты, выделенные цветом.

Примеры

"v=DMARC1; p=quarantine; sp=quarantine; aspf=r;" Все сообщения с ящика в домене или поддомене, не прошедшие проверку записи SPF, помещать в спам.

"v=DMARC1; p=reject; sp=quarantine; ptc=50;" Отклонять 50% сообщений, не прошедших проверку.

help.sprinthost.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

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