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
, відбувається:
DNS-запит до
example.com
— шукають MX-записиПотім — A-записи поштового хосту (
mail.example.com
)Також можуть перевірити 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?
rua=mailto:dmarc@example.com
у DMARC?У DMARC-записі rua
означає:
Reporting URI for Aggregate reports Тобто: куди надсилати агреговані звіти про те, як інші поштові системи бачать твої листи.
Ці звіти допомагають дізнатися:
чи інші поштові сервери отримують твої листи
чи проходить SPF, DKIM
чи хтось не підробляє твою пошту
які IP-адреси розсилають пошту з твого домену
🔧 Чи обов’язково створювати скриньку dmarc@example.com
?
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
буде різним?
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