Skip to content →

SPF – Sender Policy Framework

Když jsem před pár dny psal svůj příspěvek Tvořme opět dobrý email marketing, ani jsem netušil, že mi začne psát mnoho lidí na všechny možné komunikační kanály, že jim nejsou známé hlavně technologie jako je SPF, DKIM nebo DMARC. A to jsem nezmínil ještě ani třeba takový Sender ID a chystaná pravidla od roku 2020, s čím nyní koketuje Google 🙂

Nicméně i v závěsu neustálých diskusí u nás z práce, kde SPF a DKIM sekáme, jak Baťa cvičky, tak by bylo asi fajn se opět vrátit ke kořenům elektronické komunikace a srozumitelně si vysvětlit, proč tyto věci je potřeba řešit a k čemu to je.

Tákže… dnes začínám technologií SPF.

Co a k čemu to je?

Za SPF nehledejme žádnou vědu. Jedná se o relativně jednoduchou textovou (TXT) větu, která se zanáší v podobě SPF záznamu do DNS serveru, který má na starosti správu domény, se kterou potřebujeme nakládat.

Je to email–validační systém navržený pro detekci email spoofingu poskytnutím mechanismu, který umožňuje obdržet emailovou zprávu pouze od těch povolených domén a IP záznamů, které jsou uvedeny v TXT záznamu DNS za pomocí určitého řádu, který právě definuje ona technologie.

Tím se výrazně zamezuje případům, kdyby se kdokoliv mohl v síti Internet vydávat za někoho jiného – co se týče elektronické korespondence.

Jak to vypadá?

Uvedu příklad třeba na své doméně hakos.cz.

DNS SPF záznam pro 'hakos.cz'

Na výše uvedeném obrázku, který pochází z terminálového prostředí macOS je vidět výpis všech textových záznamů pro doménu hakos.cz. Tento výpis není jen doménou geeků, ale můžete se k němu dostat mnoha různými způsoby – např. využitím online nástrojů v síti Internet, jako je třeba MxToolbox.

Nejdůležitější ze všech záznamů je zvýrazněn červeným obrysem – to je totiž onen SPF:

v=spf1 a mx include:clevermonitor.net ~all

Jedná se o zkrácený záznam z terminálu. Oficiálně platným a úplným zápisem je notace DNS:

hakos.cz. 3600 IN TXT "v=spf1 a mx include:clevermonitor.net ~all"

SPF záznam se pozná dle toho, že informace začíná buď pomocí v=spf1, nebo pokročilejším v=spf2.0/*. Za tímto úvodem poté musí pokračovat restrikce, které se mají aplikovat.

V mém případě je tam uvedeno a mx, které stanovuje, že odesílat poštu za doménu hakos.cz smí pouze webový server sám (položka „a„) a poté i všechny poštovní servery (položka „mx„), které jsou nadefinované v DNS jako MX záznamy.

DNS MX záznam pro 'hakos.cz'

Samozřejmě, dá se to různě upravovat a nastavovat – to v případě, že doména je nastavena zcela jinak. V mém případě se jedná spíše o takový standard, jak je většina doména nastavena. Takový příklad, jak to může vypadat taky jinak, lze znázornit třeba na doméně facebook.com.

DNS TXT záznam pro 'facebook.com'

Nebo třeba na doméně clevermonitor.net, kterou používáme v práci jako doménu pro všechny naše technologie a infrastrukturu.

DNS TXT záznam pro 'clevermonitor.net'

Posledními položkami v mé doméně je include:clevermonitor.net a ~all.

Include: a hodnota za tím udává, které další záznamy se mají vnořit do správy dané domény. To jednak proto, aby byl SPF čitelnější a také proto, že technologicky vzato je povoleno pouze tzv. 10 loops, tedy skoků, ve čtení záznamů.

A k čemu je ta poslední položka? 🙂 Jedná se o aplikační pravidlo, jak naložit s vyhodnocením poštovních záznamů vůči validaci domény, kterou validuji. V tomto případě mohou být nastavena pravidla čtyři:

  • + (Pass)
  • ~ (SoftFail)
  • – (Fail)
  • ? (Neutral)

Jednoduché?!

Bohužel, nastavení SPF jako takové sice svádí k tomu, že je to je děsně jednoduché, ale nenechme se zmást. Lze tím natropit více škody, než užitku a to zejména v případech, kdy máme špatně nastavená pravidla, snažíme se je různě kombinovat, nebo si zbytečně ponecháváme tyto záznamy bez validace.

Obecně pro základní nastavení doporučuji online nástroj SPFWizard. Tím základním vás provede snadno. To pokročilejší je potřeba si již nastudovat a opatrně zkoušet 🙂

No – že to není zase tak hrozné? 😀

Published in Práce

One Comment

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *