SPF, DKIM, DMARC

Якщо ситуація така: домени зареєстровані у реєстратора доменів (є можливість додавати/змінювати записи), а сайти і пошта знаходяться на сервері, на якому ти писала, обов'язково - "Додати SPF, DKIM, DMARC записи у DNS". То чи треба налаштовувати DNS на серері, чи достатньо буде налаштувань у реєстраторва доменів?

Цілком достатньо налаштувань у панелі реєстратора доменівналаштовувати DNS-сервер на своєму Ubuntu-сервері НЕ потрібно, якщо:

  • ти використовуєш DNS-хостинг самого реєстратора (або стороннього DNS-провайдера: Cloudflare, DigitalOcean DNS тощо)

  • ти можеш додавати/редагувати там A, MX, TXT, SPF, DKIM, DMARC та інші записи


✅ Як це працює

DNS-записи не зобов’язані зберігатися на тому ж сервері, де знаходиться сайт або пошта. Коли хтось хоче надіслати листа на user@example.com, відбувається:

  1. DNS-запит до example.com — шукають MX-записи

  2. Потім — A-записи поштового хосту (mail.example.com)

  3. Також можуть перевірити TXT-записи (SPF, DKIM, DMARC)

І все це залежить від записів у DNS, а не від того, чи є на твоєму сервері налаштований DNS-сервер (BIND, unbound, dnsmasq тощо).


📌 Ти маєш зробити одне:

У реєстратора в панелі DNS керування треба додати записи типу:

1. A-запис

mail     A     <твоє_публічне_IP>

2. MX-запис

@        MX    10 mail.example.com.

Крапка в кінці mail.example.com. — важлива у деяких реєстраторів


3. SPF

@    TXT   "v=spf1 mx a ip4:<твоє_IP> ~all"

Або спрощено:

@    TXT   "v=spf1 mx ~all"

4. DKIM

  • Генерується окремо (opendkim або rspamd)

  • Запис виглядає приблизно так:

default._domainkey  TXT   "v=DKIM1; k=rsa; p=..."

5. DMARC

_dmarc   TXT   "v=DMARC1; p=none; rua=mailto:dmarc@example.com"

або:

"v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com"

🧠 Висновок:

Питання
Відповідь

Чи потрібно піднімати DNS-сервер на Ubuntu?

Ні

Де додавати SPF/DKIM/DMARC?

У DNS панелі у реєстратора доменів

Що має бути на сервері?

A-запис має вказувати на публічний IP

Хто "керує" DNS?

Той, у кого розміщений DNS-зонфайл (реєстратор, Cloudflare, etc.)


Якщо скажеш, який у тебе реєстратор (наприклад, NIC.UA, Namecheap, Cloudflare тощо), можу показати конкретно, куди йти й що додавати.

Ащо це за адреса: "rua=mailto:dmarc@example.com"? Ця скринька повинна бути створена на сервері?

Чудове питання. Поясню:


📩 Що таке rua=mailto:dmarc@example.com у DMARC?

У DMARC-записі rua означає:

Reporting URI for Aggregate reports Тобто: куди надсилати агреговані звіти про те, як інші поштові системи бачать твої листи.

Ці звіти допомагають дізнатися:

  • чи інші поштові сервери отримують твої листи

  • чи проходить SPF, DKIM

  • чи хтось не підробляє твою пошту

  • які IP-адреси розсилають пошту з твого домену


🔧 Чи обов’язково створювати скриньку dmarc@example.com?

Не обов’язково, але бажано.

  • Якщо ти вказуєш rua=mailto:dmarc@example.com, то сервіси на кшталт Gmail, Yahoo, Outlook будуть пробувати надіслати на цю адресу XML-звіт

  • Якщо скринька не існує — звіт не буде доставлений, але все інше працюватиме


🛠 Що можна зробити:

Вариант 1 — Створити поштову скриньку:

useradd dmarc

або у твоїй базі virtual_users додати:

dmarc@example.com

Це дозволить отримувати звіти про доставку й перевірки твоїх листів.


Вариант 2 — Використати сторонню скриньку або сервіс:

Можна вказати іншу адресу:

rua=mailto:dmarc-report@gmail.com

або скористатися спеціальними сервісами:

Вони дають адресу типу rua=mailto:dmarc@your-id.dmarcian.com, і звіти йдуть до вебінтерфейсу.


🧠 Підсумок:

Питання
Відповідь

Чи обов’язково створювати dmarc@example.com?

Ні, але тоді звіти губитимуться

Для чого ця адреса?

Отримувати XML-звіти про перевірки пошти

Що буде, якщо її нема?

Все працює, але без звітності

Чи можна використати зовнішню скриньку?

Так, хоч Gmail, хоч спеціальний сервіс

Хочеш, покажу приклад такого XML-звіту і як його читати?

Ні, звіти DMARC не надсилаються на кожен лист — і це дуже добре, бо інакше в тебе була б повна пошта.


📊 Які саме звіти надсилаються?

DMARC генерує агреговані звіти (aggregate reports) — це щоденні зведення (раз на добу, або трохи рідше) від поштових провайдерів (Gmail, Yahoo, Outlook, Apple Mail, тощо).

У цих звітах:

  • скільки листів з твого домену надійшло за день

  • з яких IP-адрес ці листи надійшли

  • чи пройшли вони SPF і DKIM

  • яку політику застосували: прийняли, відхилили, помістили в спам


📥 Як виглядає типовий звіт?

Це XML-файл, який, наприклад, Google надсилає з адреси типу:

dmarc-support@google.com

У листі буде прикріплений файл, наприклад:

google.com!example.com!20240625!20240626.xml.gz

🧪 Приклад вмісту звіту (спрощено):

<record>
  <row>
    <source_ip>203.0.113.45</source_ip>
    <count>25</count>
    <policy_evaluated>
      <dkim>fail</dkim>
      <spf>pass</spf>
      <disposition>quarantine</disposition>
    </policy_evaluated>
  </row>
  <identifiers>
    <header_from>example.com</header_from>
  </identifiers>
</record>

Це означає, що з IP 203.0.113.45 за добу прийшло 25 листів, SPF пройшов, DKIM — ні, політика: quarantine (тобто, можливо, в спам)


📌 Як часто надсилаються звіти?

  • Переважно раз на день

  • Залежить від провайдера

  • Якщо листів нема — звіт можуть не надсилати


🧠 Підсумок

Питання
Відповідь

На кожен лист звіт?

Ні, лише щоденна зведена статистика

Хто надсилає?

Gmail, Yahoo, Outlook, і т.д.

Як виглядає?

XML-файл у вкладенні

Що вказує?

IP, кількість листів, SPF/DKIM результат

Як часто приходить?

Зазвичай 1 раз на добу

Можеш протестувати, надіславши листа з домену на адресу @gmail.com, а потім подивитися, чи прийде звіт наступного дня. Якщо хочеш, можу показати, як їх автоматично аналізувати.

Якщо у мене на сервері буде декілька поштових доменів, то для кожного буде свій DKIM, і, можливо DMARC, якщо rua буде різним?

Так, усе правильно — якщо на твоєму сервері працюють декілька поштових доменів, то:


✅ DKIM — окремий ключ для кожного домену

  • DKIM — це криптографічний підпис, прив'язаний до конкретного домену

  • Тому для кожного домену має бути свій DKIM-ключ (приватний і публічний)

Як виглядає запис DKIM у DNS:

default._domainkey.example.com.   TXT  "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."

Якщо у тебе:

  • example.com

  • second.org

Тоді:

  • має бути два окремих ключі

  • два DNS-записи:

    default._domainkey.example.com
    default._domainkey.second.org

default — це селектор. Його можна змінити (наприклад, mail2024, postfix1), якщо хочеш мати кілька ключів або ротацію.


✅ DMARC — окремий запис для кожного домену

  • DMARC також налаштовується пер-домен

  • Тобто, кожен домен має свій власний TXT-запис:

_dmarc.example.com   TXT   "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com"
_dmarc.second.org    TXT   "v=DMARC1; p=reject; rua=mailto:dmarc@second.org"

Адреси в rua можуть бути однакові або різні — як тобі зручно.


📌 Підсумок

Що
Окремо для кожного домену?
Коментар

DKIM ключ

✅ Так

Власний приватний/pублічний ключ

DKIM DNS запис

✅ Так

Наприклад, default._domainkey.*

DMARC запис

✅ Так

rua можна змінювати

SPF запис

✅ Так

Залежить від поштових IP/структури

MX запис

✅ Так

Вказує на твій поштовий сервер


Можеш згенерувати DKIM для кожного домену через:

  • opendkim-genkey (якщо використовуєш opendkim)

  • або автоматично, якщо працюєш із Mailcow, rspamd, etc.

Хочеш приклад генерації DKIM ключа вручну через opendkim-genkey?

Last updated