Частина 14. Налаштування DNS для роботи поштового сервера. SPF, DKIM, DMARC

 До переліку статей циклу

 

Для коректної роботи поштового сервера треба правильно налаштувати DNS.

В описі нашої доменної зони треба, як мінімум, зробити MX-записи. Також бажано прописати зворотню зону, SPF, DKIM та DMARC

 

Основні налаштування DNS

Для того, щоб інші сервера знали, що саме наш сервер приймає пошту для нашого домену, в описі зони треба зробити наступні налаштування:

  • Зробити A-запис для нашого сервера (пряма зона)
  • Зробити MX-запис з вказанням приорітету та нашим доменним іменем
  • Надіслати заявку провайдеру, хостеру, чи іншій організації яка надала нам IP-адресу, з проханням прописати зворотню зону (PTR-запис) для нашої IP-адреси з нашим іменем з прямої зони

 

Налаштування SPF

SPF запис — це запис в DNS, в якому вказується, які саме сервера мають право відправляти пошту від імені даного домену.

SPF — це TXT запис, який знаходиться в налаштуваннях DNS зони. Наприклад:

"v = spf1 +a + mx +a:mail.study.local ~all"

Пояснення вмісту запису:

  • + дозволено
  • - заборонено
  • ~ можна, але не бажано
  • v = spf1 використовуємо запис версії 1
  • +a можна відправляти пошту з А запису (тобто з основної адреси домену)
  • +mx можна відправляти пошту з серверів, для яких прописані MX (тобто поштові сервери даного домену)
  • +a:mail.study.local можна відправляти пошту з хоста mail.study.local (можна вказувати хост не з цього домену)
  • ~all від інших пошту приймати можна, але довіри система виставить менше.

 

 

Налаштування DKIM

DKIM це цифровий підпис, який поштовий сервер вставляє в кожен лист на підставі закритого ключа openpgp. Відкритий ключ зберігається в DNS і сервер одержувача перевіряє валідність відправника на підставі відкритого ключа і цифрового підпису.

 

Налаштування DKIM на сервері Postfix

Встановимо необхідні програми:

# apt install opendkim opendkim-tools

 

Далі створюємо теку /etc/mail і переходимо в неї. Там ми генеруємо ключі командою
opendkim-genkey -t -s mail -d study.local


де

mail — це так званий селектор ключа (ім'я) береться довільно

study.local — домен для якого створюємо пару ключів

 

В результаті команди в теці /etc/mail з'являться два файли mail.txt і mail.private — це і є ключі.

 

Далі редагуємо файл /etc/default/opendkim

Вписуємо в нього рядок:

SOCKET="inet:8891@localhost"

тут ми вказуємо, де буде слухати з'єднання OpenDKIM.

 

Файл /etc/opendkim.conf приводимо до вигляду:

 

Syslog yes

UMask 002

Domain study.local # ім'я домену який буде верифікуватися

KeyFile /etc/mail/mail.private

Selector mail #селектор заданий при генерації ключа

AutoRestart yes

Background yes

Canonicalization relaxed/relaxed

DNSTimeout 5

Mode sv

SignatureAlgorithm rsa-sha256

SubDomains no

X-Header no

OversignHeaders From

Statistics /var/log/dkim-filter/dkim-stats #файл логу dkim

 

 

Додаємо рядки в кінець файлу /etc/postfix/main.cf:

# DKIM

milter_default_action = accept

milter_protocol = 2

smtpd_milters = inet:localhost:8891 # рядок має співпадати з рядком /etc/default/opendkim

non_smtpd_milters = inet:localhost:8891 # рядок має співпадати з рядком /etc/default/opendkim

 

Налаштування DKIM в DNS

В DNS для нашого домену додаємо новий запис типу TXT та іменемmail._domainkey. Значення цього запису — це вміст файлу /etc/mail/mail.txt, тобто відкритий ключ для нашого домену.

Для файлу опису зони bind9, наприклад, цей рядок буде виглядати так:

mail._domainkey IN TXT ( "v=DKIM1; k=rsa; t=y; " "p=MIGfMA5GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDhL5g8W+AVPOgiiZyPdayinqMwCasbDh06K9Ixy5D575iYWQZYMGyzlDlUIJLqLDBBCFxRRs36tb4p/EY0OkmyHNisK/Y4cB/joVnQmK/7XVwkQt1GVNuzodRjcQPXGFx5VEaQi7+O54gEF2eOEyGt/FPWG882AFAFpkrJekuiawIDAQAB" )

 

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

 

Налаштування DMARC

Після створення записів SPF і DKIM необхідно налаштувати перевірку DMARC, додавши в записи DNS домену правила у вигляді TXT-запису.

 

DMARC задає політику, як перевіряти пошту в домені і що робити, якщо лист не проходить перевірку SPF або DKIM.

 

Базовий запис DMARC виглядає так:

_dmarc.study.local IN TXT "v = DMARC1; p =;"

 

p -— policy -— політика, може бути:

  • none -— не приймати ніяких особливих дій, все на розсуд поштового сервера;

  • quarantine -— відправити в спам;

  • reject -— не приймати лист.

 

Але таке налаштування підходить тільки в разі одиничного сервера. Більш правильна політика, яка враховує наявність піддоменів з яких може слатися пошта і дозволяє отримувати звіти, виглядає так:

_dmarc. study.local IN TXT "v=DMARC1; p=none; sp=none; rua=mailto:postmaster@study.local"

sp subdomain policy може приймати значення ті ж що і policy;

rua reporting URI for aggregate reports задає поштову адресу в форматі mailto:mbox@ study.local на який раз на добу будуть приходити звіти в XML.

 

 До переліку статей циклу

 

Підтримайте, будь ласка автора

та придбайте книгу

"Налаштування поштового

сервера на базі Postfix, Dovecot

та RoundCube"

В електронному вигляді

Придбати