8.9.2016

foto Petr Bravenec

Petr Bravenec
+420 777 566 384
petr.bravenec@hobrasoft.cz

Odkazy

www.openspf.org
Syntax SPF záznamů

Pošta na servery Google se vrací jako nedoručitelná?

Pokud se budete snažit posílat poštu na gmail z vlastního serveru s nastavenou IPv6 adresou, můžete narazit. Servery Google jsou nastavené poměrně restriktivně a vyžadují nastavit v DNS dva důležité záznamy:

  • PTR záznam pro IPv6 adresu. Záznam by měl překládat IPv6 adresu zpět na jméno stroje.
  • SPF záznam pro vlastní doménu a pro poštovní server.

Bez nastavení těchto záznamů se vám budou maily poslané na adresu gmail.com vracet jako nedoručitelné. Stejně tak se vám nepodaří doručit mail na jakoukoliv jinou doménu hostovanou na serverech google.

Co je SPF záznam

SPF je zkratka z anglického "Sender Policy Framework". Pomocí SPF můžete ostatním účastníkům poštovního provozu na internetu slíbit, že veškerá pošta odcházející z vaší domény půjde pouze ověřenými cestami a poštu, která dorazí z neověřeného zdroje, je možné považovat za podvrženou, nebo alespoň podezřelou.

Poštovní server na straně příjemce vaší pošty tak může při přijetí podvržené zprávy zareagovat několika různými způsoby:

  • Na vše může kašlat a poštu doručit (obvyklé chování).
  • Poštu může odmítnout a poslat odesilateli (vám) zprávu s vysvětlením.
  • Označit poštu jako spam.

SPF záznam se ukládá do DNS k informacím o vaší doméně do záznamu typu TXT. Server na straně příjemce zjištuje podle SPF záznamu dvě důležité informace:

  • Je odesílající server oprávněný k odesílání pošty?
  • Je odesílající server oprávněný k odesílání pošty s vaší adresou?

Obě informace se zjištují v různém fázi komunikace pomocí SMTP protokolu a obě informace jsou uložené v rozdílných SPF záznamech.

Průběh SMTP protokolu

V následujícím textu je odesilatel označený modře, příjemce červeně, poznámky nepatřící do SMTP protokolu černě.

Připojuji se k SMTP serveru příjemce z vlastního serveru z IPv6 adresy 2001:DB8::1, představuji se příkazem HELO:

HELO smtp.hobrasoft.cz

Server příjemce nyní hledá PTR záznam pro IPv6 adresu 2001:DB8::1, nalézá smtp.hobrasoft.cz. Odesílající server se představil jako smtp.hobrasoft.cz, podle DNS záznamů je tedy skutečně tím, kým říká, že je. Následuje kontrola SPF: Příjímající server zjistí například tento záznam:

smtp.hobrasoft.cz txt "v=spf1 a -all"

Server příjemce zjistí, že obě informace sedí. PTR ukazuje na správný server, SPF záznam říká, že tento počítač může odesílat poštu. Příjemce proto odpovídá:

250 ok

Může se samozřejmě stát, že SPF záznam vypadá jinak a server smtp.hobrasoft.cz má zakázáno poštu odesílat:

smtp.hobrasoft.cz txt "v=spf1 -all"

V takovém případě může přijímající server poštu odmítnout hned v tento okamžik, například:

521 Does not accept mail

Řekněme, že kontrola prošla a SMTP protokol pokračuje:

MAIL FROM: petr.bravenec@hobrasoft.cz

V tento moment se startuje další kontrola. Přijímající server vyhledá záznam SPF pro doménu hobrasoft.cz a nalézá například:

hobrasoft.cz txt "v=spv1 ip6:2001:DB8::1 -all"

V záznamu je uvedeno, že poštu z domény hobrasoft.cz může odesílat pouze IPv6 adresa 2001:DB8::1 a nikdo jiný (v praxi zde bude uvedená obvykle i IPv4 adresa). Protože vše sedí, je možné poštu přijmout:

250 ok

V případě, že kontrola ukázala některé nesrovnalosti, může v tento moment přijímající server poštu odmítnout.

Nastavení SPF záznamů v praxi

V praxi může být nastavení SPF záznamů velmi jednoduché. Takto máme nastavenou například vlastní doménu hobrasoft.cz:

hobrasoft.cz.           1800    IN      MX      10 potkan.hobrasoft.cz.
potkan.hobrasoft.cz.    779     IN      A       178.238.42.9
potkan.hobrasoft.cz.    779     IN      AAAA    2a01:430:59:1:3::1
potkan.hobrasoft.cz.    1800    IN      TXT     "v=spf1 a -all"
hobrasoft.cz.           1800    IN      TXT     "v=spf1 mx -all"
*.hobrasoft.cz.         1800    IN      TXT     "v=spf1 -all"

Pojďme si jednotlivé řádky rozebrat:

hobrasoft.cz.           1800    IN      MX      10 potkan.hobrasoft.cz.
potkan.hobrasoft.cz.    779     IN      A       178.238.42.9
potkan.hobrasoft.cz.    779     IN      AAAA    2a01:430:59:1:3::1

Příchozí poštu pro doménu hobrasoft.cz vyřizuje počítač potkan.hobrasoft.cz. Ostatní servery by měly kontaktovat tento server při pokusu doručit poštu do domény hobrasoft.cz, nikdo jiný nedokáže poštu vyřídit. Záznamy A a AAAA říkají, jakou adresu má počítač potkan.hobrasoft.cz na IPv4 a IPv6.

Další záznam se uplatňuje při zpracování příkazu HELO:

potkan.hobrasoft.cz.    1800    IN      TXT     "v=spf1 a -all"

První kontrola při příkazu HELO zjišťuje existenci tohoto záznamu. Pravidlo "a" říká, že jako "potkan.hobrasoft.cz" se může představovat pouze počítač s odpovídajícím záznamem typu A nebo AAAA. Pokud se představí jako počítač "potkan.hobrasoft.cz" jakýkoliv jiný počítač s adresou jinou, než je uvedeno v A nebo AAAA (tj. 178.238.42.9 nebo 2a01:430:59:1:3::1), zabere pravidlo "-all", které říká, že taková pošta se má zahodit.

Další záznam se uplatňuje při zpracování příkazu MAIL FROM:

hobrasoft.cz.           1800    IN      TXT     "v=spf1 mx -all"

Zde se kontroluje, kdo může odesílat poštu z domény hobrasoft.cz: pravidlo "mx" v SPF záznamu říká, že poštu mohou odesílat pouze počítače, které jsou uvedené v MX záznamu, zde potkan.hobrasoft.cz. Pokud se pokusí odeslat poštu kdokoliv jiný, jde o podvrženou poštu a měla by se zahodit (pravidlo "-all").

Poslední záznam se uplatňuje pro poddomény:

*.hobrasoft.cz.         1800    IN      TXT     "v=spf1 -all"

Pokud se někdo pokusí odeslat poštu například z adresy petr.bravenec@potkan.hobrasoft.cz, měl by příjemce takovou poštu zahodit.

Rozdíl mezi pravidly -all a ~all

V tomto článku je všude uvedené pravidlo "-all", v praxi se však můžete častěji setkat s pravidlem "~all". Rozdíl mezi těmito pravidly může znamenat například toto (záleží na nastavení přijímajícího serveru):

  • -all - Víme, co děláme a máme poštu nastavenou správně. Pokud přijde něco odjinud, zahoďte to.
  • ~all - Nejsme si úplně jistí, jestli máme všechny své zdroje pošty nastavené správně, ale asi ano. Pokud přijde něco odjinud, naložte s takovou poštou dle vlastního uvážení.

V praxi bych se přikláněl k restriktivnější variantě. Je samozřejmě nutné, abyste měli své poštovní servery nastavené správně.

Další opatření

Zavést SPF záznamy pro odesílanou poštu není složité a většinou si vystačíte se dvěmi či třemi TXT záznamy v DNS. Složitější může pak být nastavení celého poštovního systému: je třeba zajistit, aby skutečně veškerá pošta odcházející do světa pocházela pouze z počítačů nastavených v DNS. Obvyklá opatření mohou zahrnovat:

  • Správu uživatelů na poštovním serveru.
  • Důsledné přihlašování k smtp serveru z každého klientského počítače.
  • Nastavení firemního firewallu tak, aby pošta fungovala uvnitř vlastní sítě i vně sítě.
  • Nastavení SSL pro klientské počítače (v některých sítích bývá zakázaný port 25).
  • Nastavení dalších serverů tak, aby odesílaly poštu přes určený smtp server (objednávkové systémy, noční úlohy a podobně).

Zároveň je vhodné nastavit kontrolu SPF záznamů při příjmu pošty - získáte tak další doplňkový mechanismus pro rozeznávání spamu.

Závěr

Pokud máte na svém SMTP serveru nastavenou IPv6 adresu, je pro vás nastavení SPF záznamů díky serverům Google pravděpodobně nutnost. V případě, že používáte pouze IPv4 a na nutnost používat SPF jste dosud nenarazili, dáváte nastavením SPF záznamů příjemcům vaší pošty vědět, že dbáte na správné nastavení poštovního serveru a vkládáte příjemci pošty účinný nástroj na odhalení podvržené pošty a případné odmítnutí spamu.

Hobrasoft s.r.o. | Kontakt