Blog

Tips, guides, and privacy advice

← Back to Blog
Інструкції

SPF, DKIM і DMARC простими словами (з прикладами)

15 жовтня 2026 р.·7 min read

Навіщо пошті все це взагалі

Ось неприємна правда про електронну пошту: її створили на початку 1980-х для невеликої мережі людей, які довіряли одне одному. За замовчуванням будь-хто може надіслати лист, який нібито прийшов від [email protected]. У базовому протоколі немає нічого, що б цьому завадило.

SPF, DKIM і DMARC додали пізніше, щоб це виправити. Разом вони дають змогу стороні-одержувачу, наприклад Gmail, Outlook чи Yahoo, відповісти на одне запитання: чи справді цей лист від домену, яким він підписаний? Якщо відповідь «ні», лист потрапляє в спам або відхиляється. А якщо на вашому власному домені їх не налаштовано, ваші справжні листи можуть сприйматися як підробка.

Допоможе просте порівняння:

  • SPF — це список гостей: які сервери можуть надсилати пошту від імені вашого домену.
  • DKIM — це сургучна печатка: підпис, який доводить, що лист не змінили дорогою.
  • DMARC — це інструкція для охоронця: що робити, коли лист не пройшов перевірку, і кого про це повідомити.

SPF: список гостей

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

Типовий SPF-запис виглядає так:

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

Читаємо зліва направо:

  • v=spf1: «це SPF-запис».
  • include:_spf.google.com: Google Workspace може надсилати пошту від мого імені.
  • include:sendgrid.net: SendGrid теж (скажімо, для листів мого застосунку).
  • ~all: усе інше — імовірно, не я, тож ставтеся до цього з підозрою. (-all означає «точно не я, відхиляйте».)
Дві найпоширеніші помилки з SPF: два SPF-записи на одному домені (їх треба об’єднати в один рядок) і забутий сервіс. Якщо ваш інструмент для розсилок чи служба підтримки надсилає листи від імені вашого домену, вони теж мають бути в списку.

Є також обмеження: не більше 10 DNS-запитів в одному SPF-записі. Рахується кожен include:, а також вкладені include всередині них. Якщо ви користуєтеся багатьма сервісами, можна перевищити ліміт непомітно, і тоді SPF не проходить ні в кого.

DKIM: сургучна печатка

SPF перевіряє, звідки прийшов лист. DKIM (DomainKeys Identified Mail) перевіряє, що сам лист ніхто не змінював. Ваш поштовий сервіс підписує кожне вихідне повідомлення приватним ключем, який знає лише він. Відповідний публічний ключ ви публікуєте в DNS. Сервер-одержувач використовує цей публічний ключ, щоб перевірити підпис.

Якщо хтось змінив лист дорогою, навіть одне слово в тексті, підпис більше не збігається. Це як сургучна печатка на старовинному листі: якщо печатку зламано, ви знаєте, що лист хтось відкривав.

DKIM-запис публікується під спеціальним іменем, наприклад google._domainkey.yourdomain.com, а його значення виглядає приблизно так:

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1...

Добра новина: вам ніколи не доведеться писати це самостійно. Ваш поштовий провайдер згенерує запис, а ви просто скопіюєте його в DNS. Слово перед ._domainkey (тут google) називається селектором. Він просто дає змогу мати кілька ключів, по одному на кожен сервіс.

DMARC: інструкція для охоронця

SPF і DKIM дають серверу-одержувачу факти. DMARC (Domain-based Message Authentication, Reporting and Conformance) каже йому, що з цими фактами робити. А ще він додає одне важливе правило — вирівнювання (alignment): домен, який пройшов SPF або DKIM, має збігатися з доменом, який читач бачить у полі «Від». Без цього правила шахрай міг би пройти SPF зі своїм доменом, показуючи при цьому ваш.

DMARC-запис розміщується на _dmarc.yourdomain.com і виглядає так:

v=DMARC1; p=none; rua=mailto:[email protected]
  • p=none: лише спостерігати, поки нічого не блокувати. Ідеально для початку.
  • p=quarantine: відправляти листи, що не пройшли перевірку, у спам.
  • p=reject: повністю відхиляти листи, що не пройшли перевірку. Найсильніший захист.
  • rua=mailto:...: куди одержувачі мають надсилати вам щоденні зведені звіти.

Ці звіти — справжній прихований скарб. Вони показують кожен сервер, який надсилає пошту від імені вашого домену, зокрема сервіси, про які ви забули, і всіх, хто намагається видавати себе за вас.

Налаштування крок за кроком

Припустімо, у вас є myshop.com, для пошти ви використовуєте Google Workspace, а для підтверджень замовлень — сервіс на кшталт SendGrid чи Mailgun. Ось у якому порядку ми б це робили:

  1. Складіть список усього, що надсилає пошту від імені вашого домену: поштовий провайдер, сайт або застосунок, інструмент для розсилок, служба підтримки, програма для рахунків. Саме цей крок люди пропускають, і саме він згодом спричиняє найбільше проблем.
  2. Створіть один SPF-запис у DNS (TXT-запис на myshop.com), який містить їх усі й закінчується на ~all.
  3. Увімкніть DKIM у кожному сервісі. Кожен дасть вам запис, який треба скопіювати в DNS. Потім натисніть «verify» або «start authenticating» у цьому сервісі.
  4. Додайте DMARC-запис із p=none і адресою для звітів на _dmarc.myshop.com.
  5. Зачекайте один-два тижні й почитайте звіти. Виправте все легітимне, що не проходить перевірку.
  6. Посильте політику до p=quarantine, а згодом до p=reject, коли будете впевнені, що вся ваша справжня пошта проходить перевірку.
Зміни в DNS можуть поширюватися від кількох хвилин до кількох годин. Якщо перевірка не проходить одразу після додавання запису, дайте трохи часу, перш ніж щось змінювати.

Як перевірити їх у будь-якому отриманому листі

Жодні інструменти не потрібні. Ваш поштовий застосунок уже показує результати:

  • Gmail: відкрийте лист, натисніть три крапки, потім Показати оригінал. Угорі ви побачите рядки на кшталт SPF: PASS, DKIM: PASS і DMARC: PASS.
  • Outlook: відкрийте повідомлення, потім View і View message details (або Message source) і знайдіть заголовок Authentication-Results.
  • Apple Mail: View, потім Message, потім All Headers.

Справжній заголовок виглядає приблизно так:

Authentication-Results: mx.google.com;
  dkim=pass header.d=myshop.com;
  spf=pass smtp.mailfrom=myshop.com;
  dmarc=pass (p=QUARANTINE) header.from=myshop.com

Три pass і домени збігаються: цей лист справжній. Якщо бачите fail або домени не відповідають відправнику, якого ви бачите, будьте обережні. Це одна з тривожних ознак, про які ми пишемо в статті як розпізнати фішинговий лист.

Якщо ви налаштовуєте власний домен, швидкий спосіб перевірки — надіслати лист на тимчасову поштову скриньку і на адресу Gmail, а потім переглянути заголовки копії в Gmail. Це займе дві хвилини й покаже, що саме бачить зовнішній світ.

Типові проблеми та швидкі рішення

  • «SPF: softfail» або «neutral»: сервера, який надіслав лист, немає у вашому SPF-записі. Додайте сервіс за допомогою include:, який він вам надає.
  • «SPF permerror»: зазвичай це два SPF-записи або понад 10 запитів. Об’єднайте все в один запис і приберіть сервіси, якими більше не користуєтеся.
  • «DKIM: fail» після редагування шаблону: щось переписало лист уже після підпису (так роблять деякі сервіси пересилання та підписи-футери). Надішліть лист напряму й перевірте ще раз.
  • DMARC не проходить, хоча SPF проходить: справа у вирівнюванні. SPF пройшов для домену вашого сервісу розсилки, а не для вашого. Увімкніть у цьому сервісі DKIM із власним доменом або налаштуйте власний домен return-path.
  • Листи все одно потрапляють у спам, хоча всі перевірки пройдено: автентифікація доводить, хто ви, а не те, що люди хочуть отримувати ваші листи. Важать також зміст, репутація відправника та кількість скарг. Докладніше ми писали про це у статті чому листи застосунку потрапляють у спам.

Чи справді потрібні всі три?

Так. З 2024 року Gmail і Yahoo вимагають SPF, DKIM і DMARC-запис від усіх, хто надсилає пошту у великих обсягах, і навіть невеликі відправники мають значно кращу доставлюваність, коли налаштовано всі три. А головне, саме DMARC із p=reject не дає шахраям надсилати фальшиві листи від вашого імені вашим же клієнтам.

Налаштування займає пів дня. Після цього воно тихо захищає ваш домен щодня. Якщо у вас є домен і ви це відкладали, вважайте це знаком. Почніть із p=none сьогодні. Посилити можна згодом.