Для коректної роботи поштового сервера треба правильно налаштувати DNS.
В описі нашої доменної зони треба, як мінімум, зробити MX-записи. Також бажано прописати зворотню зону, SPF, DKIM та DMARC
Основні налаштування DNS
Для того, щоб інші сервера знали, що саме наш сервер приймає пошту для нашого домену, в описі зони треба зробити наступні налаштування:
- Зробити A-запис для нашого сервера (пряма зона)
- Зробити MX-запис з вказанням приорітету та нашим доменним іменем
- Надіслати заявку провайдеру, хостеру, чи іншій організації яка надала нам IP-адресу, з проханням прописати зворотню зону (запис) для нашої 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
s
Після створення записів 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.