Поиск по сайту:

DKIM, DMARC и SPF: настройка безопасности электронной почты


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

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

SPF

Сначала мы возьмем SPF, так как это самый простой и самый старый элемент в списке. SPF использует записи DNS для определения IP-адресов серверов, которые могут отправлять электронные письма в качестве домена.

Запись SPF обычно выглядит так:

v=spf1 ip4:123.123.123.123 ~all

Если бы эта запись была установлена на example.com, только сервер по адресу 123.123.123.123 мог бы отправлять электронные письма с FROM: user@example.com заголовок. ~all исключает все остальные IP-адреса, кроме указанных в списке.

SPF применяется принимающим почтовым сервером. Он проверит IP-адрес отправляющего сервера, домен в заголовке FROM электронной почты и список разрешенных отправителей в DNS-записи SPF этого домена. Доставка не будет выполнена, если IP-адрес отправляющего сервера отсутствует в списке.

SPF различает «мягкие» и «жесткие» отказы. Написание ~all в заголовке указывает на программный сбой при обнаружении неавторизованного отправителя; -all указывает принимающему серверу использовать жесткий сбой.

Электронное письмо будет полностью удалено в случае жесткого сбоя. Мягкие сбои могут привести к тому, что электронное письмо будет доставлено в папку нежелательной почты получателя. Теперь DMARC широко доступен, что мы увидим ниже, обычно рекомендуется использовать ~all (мягкий сбой). Это позволяет избежать ложных срабатываний с законными электронными письмами, дает больше контроля DMARC и может помочь в отладке на более поздних этапах проверки.

Настройка SPF

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

Записи SPF поддерживают несколько видов токенов белого списка:

  • ip4:123.123.123.123 — разрешить указанный адрес IPv4.
  • ip6:abcd:1234:90ab:cdef:5678:90de:fabc – разрешить указанный адрес IPv6.
  • a:example.com – разрешить IP-адрес, заданный записью DNS A для example.com.
  • mx:example.com — разрешить IP-адреса, заданные одной из записей DNS MX для example.com.
  • include:example.com – также запросите запись SPF этого домена и используйте его белый список в дополнение к своим прямым определениям. Упрощает интеграцию популярных сторонних почтовых сервисов.
  • redirect:example.com — игнорировать другие токены и использовать запись SPF, рекламируемую example.com.

Вы можете объединить несколько источников, добавив в заголовок несколько токенов:

v=spf1 ip4:123.123.123.123 include:example.com ~все

ДКИМ

DKIM расшифровывается как «DomainKeys Identified Mail». В то время как SPF указывает, может ли сервер отправлять как ваш домен, DKIM просматривает сами электронные письма. Это система подписи, которая позволяет принимающим серверам отслеживать электронные письма до их происхождения.

DKIM помогает принимающим почтовым серверам ответить на следующие вопросы:

  • Были ли изменены заголовки электронного письма после отправки отправителем?
  • Было ли изменено тело письма после того, как оно было отправлено отправителем?
  • Авторизован ли отправляющий сервер для отправки в качестве этого домена? (совпадает с SPF)

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

Настройка ДКИМ

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

Закрытый ключ хранится в секрете и становится частью конфигурации вашего почтового сервера. Программное обеспечение будет использовать этот ключ для подписи каждого отправляемого им электронного письма. Когда принимающий сервер получает новое сообщение, он запрашивает DNS-запись DKIM домена и использует открытый ключ, чтобы проверить, не было ли подделано электронное письмо.

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

# Install OpenDKIM implementation
sudo apt install opendkim opendkim-tools

# Add the Postfix user to the OpenDKIM group
sudo gpasswd -a postfix opendkim

Откройте /etc/opendkim.conf и раскомментируйте или добавьте следующие строки:

Canonicalization    relaxed/simple
Mode                sv
AutoRestart         yes
AutoRestartRate     5/1H
SignatureAlgorithm  rsa-sha256
UserID              opendkim

Это настраивает OpenDKIM для использования в качестве подписывающего лица исходящей почты и верификатора входящих сообщений. Вот что вы устанавливаете:

  • Канонизация — определяет, насколько строг OpenDKIM при проверке того, было ли подделано входящее электронное письмо. По умолчанию используется простой, который не допускает никаких изменений. Обычно это приводит к тому, что законные электронные письма пропадают, поскольку сообщения, которые промежуточные почтовые серверы слегка изменили, например, путем настройки пробелов или длины строк, будут отброшены. расслабленный/простой допускает более некритические расхождения.
  • Режим — включите режимы подписи (s) и проверки (v).
  • AutoRestart и AutoRestartRate – перезапуск в случае сбоя при условии, что в час не более пяти перезапусков.
  • SignatureAlgorithm — алгоритм шифрования, используемый при подписании исходящих сообщений.

Затем добавьте в файл следующие дополнительные строки:

# Maps domains to the keys used to sign emails
KeyTable            refile:/etc/opendkim/key.table
SigningTable        refile:/etc/opendkim/signing.table

# Ignore these hosts when verifying incoming signatures
ExternalIgnoreList  /etc/opendkim/trusted.hosts

# Internal hosts to enable outgoing mail signing for
InternalHosts       /etc/opendkim/trusted.hosts

Сохраните и закройте файл конфигурации. Затем создайте файлы сопоставления, указанные выше:

sudo mkdir /etc/opendkim
sudo mkdir /etc/opendkim/keys
sudo chown -R opendkim:opendkim /etc/opendkim
sudo chmod go-rw /etc/opendkim/keys

Сначала создайте /etc/opendkim/trusted.hosts:

127.0.0.1
localhost

*.example.com

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

Откройте /etc/opendkim/signing.table и добавьте следующее содержимое:

*@example.com       default._domainkey.example.com

Это указывает OpenDKIM, что сообщения, отправленные с любого адреса example.com, должны быть подписаны ключом default._domainkey.example.com.

Теперь откройте /etc/opendkim/key.table и добавьте этот контент:

default._domainkey.example.com     example.com:default:/etc/opendkim/keys/example.com/default.private

Определенный выше селектор default._domainkey.example.com настроен на использование закрытого ключа в /etc/opendkim/keys/example.com/default.private. Далее мы сгенерируем этот ключ.

sudo opendkim-genkey -d example.com -D /etc/opendkim/keys/example.com -s default -v
sudo chown opendkim:opendkim /etc/opendkim/keys/example.com/default.private
sudo chmod 600 /etc/opendkim/keys/example.com/default.private

Команда генерации ключей создаст ваш открытый и закрытый ключи.

Затем вам нужно добавить открытый ключ в качестве записи DNS в вашем домене. Откройте /etc/opendkim/keys/example.com/default.txt. Скопируйте все после TXT и вставьте в качестве значения вашей записи DNS. Используйте default._domainkey в качестве имени хоста DNS, так как это имя селектора, используемого в приведенных выше командах.

Последний шаг — подключить OpenDKIM к Postfix. Снова откройте файл конфигурации OpenDKIM и добавьте следующую строку, если ее еще нет:

Socket      inet:8891@localhost

Это создает сокет TCP, который Postfix будет использовать для передачи электронной почты в OpenDKIM для подписи и проверки. Затем откройте файл конфигурации Postfix, /etc/postfix/main.cf:

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

Если последние две строки уже существуют со значениями, разделенными запятыми, вы уже используете некоторые фильтры Postfix. Добавьте фильтр OpenDKIM в конец существующего списка вместо создания новой строки. Это обеспечит применение OpenDKIM в дополнение к вашим существующим фильтрам.

Теперь вы можете перезапустить Postfix (service postfix restart) и пользоваться сообщениями, подписанными DKIM. Вы можете проверить правильность настройки ключа с помощью команды opendkim-testkey:

sudo opendkim-testkey -d example.com -s default -vvv
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key 'default._domainkey.example.com'
opendkim-testkey: key secure
opendkim-testkey: key OK

Чтобы проверить реальную электронную почту, отправьте сообщение на check-auth@verifier.port25.com. Найдите в результатах DKIM check: pass. Если указан сбой, проверьте журнал Postfix в /etc/var/mail.log, чтобы найти ошибки подписи.

==========================================================
Summary of Results
==========================================================
SPF check:          pass
DomainKeys check:   neutral
DKIM check:         pass

DMARC

DMARC — это «Аутентификация сообщений на основе домена, отчетность и соответствие». Это еще один протокол для предотвращения несанкционированного использования доменных имен путем отправки почтовых серверов.

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

  • none — сервер может продолжать доставлять сообщение.
  • карантин — отправить сообщение в спам.
  • reject — отклонить и вернуть сообщение.

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

Вот пример DNS-записи DMARC. Его следует добавить в виде записи TXT для имени хоста _dmarc.example.com.

v=DMARC1; p=none; rua=mailto:user@example.com

  • p=none. Тег p сообщает почтовым серверам, что делать, когда приходит сообщение, не прошедшее проверку подлинности. Его значение должно быть одним из указанных выше действий.
  • rua=mailto... — Тег rua указывает серверам, куда отправлять отчетные данные. В этом случае он будет отправлен вам по электронной почте. Отчеты обычно отправляются ежедневно и позволяют отслеживать несанкционированную отправку.

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

Краткое содержание

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

SPF и DMARC — это простые записи DNS. DKIM объединяет общедоступную запись DNS с закрытым ключом, который обрабатывается вашим почтовым сервером. SPF предназначен для ограничения серверов, которые могут отправлять как ваш домен; DKIM — это более новая альтернатива, включающая проверку целостности сообщения.

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