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

Настройка SPF-записи

Основной синтаксис Прочие механизмы Примеры настроек

SPF (Sender Policy Framework) — это DNS-запись, содержащая список доверенных серверов, с которых может отправляться почта данного домена, и сведения о механизме обработки писем, отправленных с других серверов. Корректная настройка SPF позволит снизить вероятность рассылки спама злоумышленниками от вашего имени.

В панели управления DNS записями необходимо добавить TXT запись с параметрами SPF.

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

SPF-запись выглядит следующим образом: 

v=spf1 include:_spf.timeweb.ru ~all

Основной синтаксис

Любая SPF-запись начинается с v=spf1, этот параметр не изменяется. Он указывает на версию записи, и в настоящее время поддерживается только spf1. 

Далее указываются параметры (механизмы). Чаще всего используются следующие: all, ip4, ip6, a, mx, include, redirect. Также существуют, но используются значительно реже: ptr, exists, exp. Они все будут рассмотрены ниже.

Помимо механизмов используются префиксы (определители):

  • + Pass, принимать почту. Прописывать этот параметр необязательно, он установлен по умолчанию (т.е. значения «+a +mx» и «a mx» — идентичны).
  • Fail, отклонять почту.
  • ~ SoftFail, «мягко» отклонять (принимать почту, но помещать ее в «Спам»). 
  • ? нейтрально (обрабатывать как обычное письмо).

all

Параметр «all» подразумевает все серверы, не упомянутые отдельно в SPF-записи. «All» задает обработку полученных с них писем и указывается в конце записи. 

Например:  

v=spf1 ip4:174.23.147.0/24 ~all

— принимать почту только из подсети 174.23.147.0/24,; письма с других адресов должны быть помечены как спам.

v=spf1 a -all

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

ip4 / ip6

Используется для указания конкретных адресов и подсетей, из которых могут отправляться письма. Синтаксис для IPv4 и IPv6 идентичен.

v=spf1 ip4:174.23.147.0/24 ~all

— принимать почту из подсети 174.23.147.0/24.

v=spf1 ip6:2005:da8::12 ~all

— принимать почту с IPv6-адреса 2005:da8::12.

a

IP отправителя проверяется на соответствие A-записи домена. 

v=spf1 a ~all

— принимать почту с A-записи текущего домена.

v=spf1 a:sub.domain.ru ~all

— принимать почту с A-записи домена sub.domain.ru.

mx

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

v=spf1 mx mx:sub.domain.ru -all

— принимать почту с MX-серверов текущего домена и домена sub.domain.ru.

v=spf1 mx/24 -all

— принимать почту из подсети, в которую входят MX-серверы текущего домена.

include

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

v=spf1 a include:other-domain.ru -all

— принимать почту с A-записи текущего домена и серверов, указанных в SPF-записи домена other-domain.com. 

При такой настройке проверяется SPF домена other-domain.ru; если это, допустим, «v=spf1 a -all», то далее IP отправителя проверяется на соответствие A-записи домена other-domain.ru.

redirect

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

v=spf1 redirect=other-domain.ru

— почта должна приниматься или отклоняться согласно настройкам домена other-domain.ru.

Прочие механизмы

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

ptr

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

v=spf1 ptr:other-domain.ru -all

— принимать почту со всех адресов, PTR-запись которых направлена на домен other-domain.ru. 

exists

Запрашивается А-запись указанного домена; если она существует, проверка считается пройденной. Другими словами, проверяется, резолвится ли домен на какой-либо (любой) IP-адрес.

v=spf1 exists:mydomain.ru -all

— принимать почту, если существует A-запись домена mydomain.ru. 

exp

Параметр «exp» применяется для отправки сообщения об ошибке отправителю письма. С помощью «exp» в SPF прописывается определенный поддомен, в TXT-записи которого указан текст сообщения об ошибке. Имя поддомена и текст ошибки может быть любым.

Параметр «exp» всегда указывается в конце записи (после all). 

Например: 

v=spf1 mx -all exp=error-spf.mydomain.ru

При этом TXT-запись домена error-spf.mydomain.ru содержит: «Not authorized to send mail for this domain».

Примеры настроек

Настройка SPF для «Почты для доменов» от mail.ru

Если вы отправляете почту только с серверов mail.ru: 

v=spf1 redirect=_spf.mail.ru

Если вы отправляете почту так же и с других серверов (укажите IP-адреса или подсети вместо IP1, IP2 и т.д.):

v=spf1 ip4:IP1 ip4:IP2 ip4:IP3 include:_spf.mail.ru ~all

Настройка SPF для Яндекс.Почты

При использовании только серверов Яндекса:

v=spf1 redirect=_spf.yandex.net

При использовании также и других серверов (укажите IP-адреса или подсети вместо IP1, IP2 и т.д.):

v=spf1 ip4:IP1 ip4:IP2 ip4:IP3 include:_spf.yandex.net ~all

Настройка SPF для Google

При использовании только серверов Google:

v=spf1 include:_spf.google.com ~all

При использовании также и других серверов (укажите IP-адреса или подсети вместо IP1, IP2 и т.д.):

v=spf1 ip4:IP1 ip4:IP2 include:_spf.google.com ~all

Другие примеры

v=spf1 a ip4:174.25.203.1 include:domain2.ru -all

— принимать почту с IP-адресов, соответствующих A-записям текущего домена, с IP-адреса 174.25.203.1 и серверов, указанных в SPF-записи domain2.ru; прочие письма отклонять.

v=spf1 mx/24 a:domain2.ru/24 ~all

— принимать почту из подсети, в которую входят MX-серверы текущего домена, и из подсети, в которую входят A-записи домена domain2.ru; прочие письма помещать в спам.

Настройка DKIM

Для писем, отправляемых с сервера функцией php mail(), указать DKIM-подпись очень сложно. На помощь в данном случае приходит библиотека PHPMailer или же специальные плагины для отправки писем в CMS. 

В этом случае для того, чтобы письма, отправляемые с сервера виртуального хостинга, проходили проверку DKIM, необходимо выполнить следующую настройку:

  1. Подключиться к серверу по SSH.
  2. Сгенерировать закрытый ключ командой ниже, указав вместо domain.ru имя вашего домена:
openssl genrsa -out domain.ru.private 1024 
  1. Сохранить путь к сгенерированному ключу — файлу domain.ru.private (путь потребуется ввести в процессе настройки далее). Файл будет создан в той же директории, откуда выполнялась команда.
  2. Сгенерировать открытый ключ командой ниже, указав вместо domain.ru имя вашего домена:
openssl rsa -in domain.ru.private -out domain.ru.public -pubout

Содержимое файла domain.ru.public после генерирования ключа будет следующим:

-----BEGIN PUBLIC KEY-----
ключ
-----END PUBLIC KEY-----

5. В разделе «Домены и поддомены» в настройках домена создать TXT-запись для поддомена mail._domainkey.domain.ru со следующим содержимым:

v=DKIM1; k=rsa; p=ключ_из_предыдущего_пункта

Ключ должен быть указан в одну строку, без BEGIN и END.

  1. В настройках скрипта библиотеки PHPMailer или используемого для отправки писем плагина CMS указать полный путь к файлу domain.ru.private, который был сгенерирован в пункте 2 (например, /home/u/user/domain.ru.private).

В случае если вы используете PHPMailer, необходимо указать путь в параметре DKIM_private; в параметре DKIM_selector указать mail

<?php

// config.php
return [
    'mail_tpls' => 'emails/',
    'mail' => [
        'from' => '[email protected]',
        'name' => 'robot'
    ],
    'dkim' => [
        'enabled'    => true,
        'domain'     => 'domain.ru',
        'private'    => '/root/keys/domain.ru.private',
        'selector'   => 'mail',
        'passphrase' => ''
    ],
];
// метод класса для отправки почты
function sendMail($recipient, $subj, $message, $files = null) {
    $mail = new PHPMailer(true);

    try {
        // убираем заголовки PhpMailer из письма
        $mail->XMailer = null;
        $mail->setLanguage('ru');
        $mail->CharSet = PHPMailer::CHARSET_UTF8;

        $mail->setFrom($this->config['mail']['from'], $this->config['mail']['name']);
        $mail->addAddress($recipient);

        $mail->isHTML(true);
        $mail->Subject = $subj;
        $mail->Body = $message;

        if ($files && count($files)) {
            foreach ($files as $file) {
                $filename = basename($file);
                $mail->addEmbeddedImage($file, $filename);
            }
        }

        if ($this->config['dkim'] && $this->config['dkim']['enabled']) {
            $mail->DKIM_domain = $this->config['dkim']['domain'];
            $mail->DKIM_private = $this->config['dkim']['private'];
            $mail->DKIM_selector = $this->config['dkim']['selector'];
            $mail->DKIM_passphrase = $this->config['dkim']['passphrase'];
            $mail->DKIM_identity = $mail->From;
        }

        $res = $mail->send();
    } catch (Exception $e) {
        $res = "Message could not be sent. mailer Error: {$mail->ErrorInfo}";
    }
    return $res;
}

Настройка DMARC

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

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

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

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

  1. Настроить SPF-запись;
  2. Настроить DKIM-подпись.

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

Настройка DMARC

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

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

Пример записи: «v=DMARC1;p=none;rua=mailto:[email protected];ruf=mailto:[email protected];fo=s»

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

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

Название тегаНазначениеПримерТребуетсяДополнительно
vВерсия протоколаv=DMARC1да
pПравила для доменаp=rejectдаnone — не принимать никаких действий quarantine — отправлять сообщения в спам reject  — не принимать сообщения
aspfРежим проверки соответствия для SPF-записей aspf=sнетr (relaxed) — разрешать частичные совпадения,
например субдоменов данного домена s (strict) — разрешать только 
полные совпадения
pctСообщения, подлежащие фильтрации (в %) pct=40нет
spПравила для субдоменов sp=rejectнетnone — не принимать никаких действий quarantine — отправлять сообщения в спам reject  — не принимать сообщения
ruaАдрес для сводных отчетов rua=mailto:[email protected]нет

Если вы хотите получать отчеты (rua) на домен, который отличается от домена DMARC, необходимо разместить TXT запись для почтового домена специального вида. Например, если домен с DMARC — example.com, а получать отчеты вы хотите на домен test.ru, необходимо в DNS домена test.ru добавить следующую TXT-запись: example.com._report._dmarc.test.ru со значением «v=DMARC1»

Примеры:

  1. Отклонять все сообщения, не прошедшие проверку DMARC: «v=DMARC1; p=reject» 
  2. Отклонять все сообщения, не прошедшие проверку DMARC, и отправлять все отчеты на ящик [email protected]«v=DMARC1; p=reject; rua=mailto:[email protected]»
  3. 30% сообщений, которые приходят от вашего домена, но не проходят проверки DMARC, помещаются в карантин: «v=DMARC1; p=quarantine; pct=30»

Политика DMARC: «v=DMARC1; p=none» не защищает вас от спуфинга. Используйте ее только как промежуточный этап при настройке DMARC. 

По материалам сайта timeweb.com

От ltvjybn14

Один комментарий к “Настройка сервера и домена для отправки почты (SPF, DKIM, DMARC)”

Добавить комментарий для ltvjybn14 Отменить ответ

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


Срок проверки reCAPTCHA истек. Перезагрузите страницу.