Servery a DevOps

SPF, DKIM a DMARC: aby vaše e-maily nekončily ve spamu

Jak nastavit SPF, DKIM a DMARC pro vlastní doménu, odesílání z VPS i přes externí službu, postupné zpřísnění politiky a ověření hlaviček e-mailu.

12. 10. 2026 · 5 min čtení

Aplikace na VPS posílá registrační e-maily a ty končí ve spamu – nebo nedorazí vůbec. Velcí poskytovatelé schránek (Gmail, Outlook, Seznam) dnes vyžadují, aby odesílatel prokázal, že má právo posílat poštu za svou doménu. Slouží k tomu tři DNS mechanismy: SPF, DKIM a DMARC.

Jak spolu souvisejí

Mechanismus Co ověřuje Kde je záznam
SPF smí tento server posílat za doménu? TXT na mojeapp.cz
DKIM je zpráva podepsaná klíčem domény a nezměněná? TXT na selektor._domainkey.mojeapp.cz
DMARC co dělat, když kontroly selžou, + reporty TXT na _dmarc.mojeapp.cz

DMARC navíc vyžaduje zarovnání (alignment): doména, kterou ověřilo SPF nebo DKIM, musí odpovídat doméně v hlavičce From:, kterou vidí příjemce.

SPF

SPF je seznam serverů oprávněných odesílat poštu. Příklad pro doménu, která posílá z VPS a přes externí službu:

mojeapp.cz.  IN TXT "v=spf1 ip4:203.0.113.10 include:_spf.example-mailer.com -all"
Část Význam
v=spf1 verze, povinné na začátku
ip4: / ip6: konkrétní adresa nebo rozsah
mx servery z MX záznamů domény
include: převezme SPF jiné domény (typicky poskytovatele)
-all ostatní odmítnout (hard fail)
~all ostatní označit jako podezřelé (soft fail)

Pravidla, na která se zapomíná:

  • Jen jeden SPF záznam na doménu. Další služby přidávejte do stejného záznamu.
  • Limit 10 DNS dotazů – každý include, a, mx a redirect se počítá, včetně vnořených. Při překročení končí SPF chybou permerror.
  • SPF ověřuje doménu z obálky (Return-Path), ne z From:. U externích služeb proto bývá potřeba nastavit vlastní return-path doménu, aby fungovalo zarovnání.

DKIM

DKIM podepisuje každou odeslanou zprávu privátním klíčem; příjemce ověří podpis veřejným klíčem z DNS.

Externí služba (transakční mailer, Google Workspace, Microsoft 365): v administraci služby vygenerujete DKIM a ona vám dá záznam (TXT nebo CNAME) k vložení do DNS.

Vlastní Postfix na VPS s OpenDKIM:

sudo apt install opendkim opendkim-tools
sudo mkdir -p /etc/opendkim/keys/mojeapp.cz
sudo opendkim-genkey -b 2048 -d mojeapp.cz -s mail2026 -D /etc/opendkim/keys/mojeapp.cz
sudo chown -R opendkim:opendkim /etc/opendkim/keys
sudo cat /etc/opendkim/keys/mojeapp.cz/mail2026.txt

Výstup obsahuje záznam pro mail2026._domainkey.mojeapp.cz ve tvaru v=DKIM1; k=rsa; p=MIIBIjAN.... Klíč 2048 bitů je delší než 255 znaků, takže ho v DNS rozdělte na více řetězců v jednom TXT záznamu (většina webových rozhraní to udělá sama).

V /etc/opendkim.conf pak nastavte doménu, selektor, cestu ke klíči a socket, který napojíte na Postfix přes smtpd_milters a non_smtpd_milters. Detaily se liší podle verze, proto vycházejte z komentářů ve výchozím konfiguračním souboru.

Selektor (mail2026) umožňuje mít víc klíčů současně a bezpečně je rotovat.

DMARC

DMARC říká příjemcům, co dělat se zprávami, které neprojdou SPF ani DKIM se zarovnáním, a kam posílat reporty.

Začněte jen monitorováním:

_dmarc.mojeapp.cz.  IN TXT "v=DMARC1; p=none; rua=mailto:[email protected]"
Parametr Význam
p=none jen sbírat reporty, nic neblokovat
p=quarantine neprošlé zprávy do spamu
p=reject neprošlé zprávy odmítnout
rua= kam posílat souhrnné reporty (XML)
pct= na kolik procent zpráv politiku uplatnit
adkim= / aspf= r = volné zarovnání (subdomény OK), s = přesné

Postup zpřísňování:

  1. p=none – pár týdnů sbírejte reporty a zjistěte, kdo všechno za vaši doménu posílá (newsletter, fakturační systém, CRM…).
  2. Všem legitimním odesílatelům nastavte SPF a DKIM.
  3. p=quarantine, případně nejprve s pct=25.
  4. p=reject, jakmile reporty neukazují legitimní selhání.

XML reporty jsou nečitelné ručně – použijte analyzátor reportů (existují open-source i hostované varianty).

Odesílání přímo z VPS: na co myslet

  • PTR záznam IP adresy musí ukazovat na hostname serveru (mail.mojeapp.cz) a ten zpět na stejnou IP. Nastavuje se u poskytovatele VPS.
  • Port 25 bývá u mnoha poskytovatelů VPS pro odchozí poštu zablokovaný, nebo se odblokovává na žádost.
  • Reputace IP – nová IP nebo IP po předchozím zneužití může být na blacklistu.

Pro transakční e-maily z aplikace je často jednodušší odesílat přes SMTP relay specializované služby a na serveru mít jen SPF include a DKIM záznam od ní.

Ověření

Pošlete si testovací e-mail do Gmailu a otevřete „Zobrazit originál“. Hledejte:

Authentication-Results: mx.google.com;
       dkim=pass [email protected] header.s=mail2026;
       spf=pass smtp.mailfrom=bounce.mojeapp.cz;
       dmarc=pass (p=QUARANTINE) header.from=mojeapp.cz

Kontrola DNS z příkazové řádky:

dig +short TXT mojeapp.cz | grep spf1
dig +short TXT mail2026._domainkey.mojeapp.cz
dig +short TXT _dmarc.mojeapp.cz

Na serveru s OpenDKIM ověříte klíč proti DNS:

sudo opendkim-testkey -d mojeapp.cz -s mail2026 -vvv

Doména, ze které neposíláte

I doména, která poštu vůbec neodesílá, by měla mít ochranu proti podvržení:

mojeapp.cz.         IN TXT "v=spf1 -all"
_dmarc.mojeapp.cz.  IN TXT "v=DMARC1; p=reject"

Pokud si nejste jistí, proč zprávy padají do spamu, vložte hlavičky e-mailu do ColdHost AI v režimu Server a DevOps – rozebere výsledky SPF, DKIM a DMARC a navrhne úpravy DNS záznamů.