poznámka · sítě

SPF, Postfix a rspamd: běžné problémy s doručováním

SPF selhává častěji kvůli drobnostem v záznamu nebo v nastavení příjemce než kvůli skutečnému podvržení odesílatele. Přehled toho, na co se narazí nejčastěji.

  • Jen jeden SPF záznam na doménu. Dva TXT záznamy začínající v=spf1 znamenají permerror a kontrola selže pro veškerou poštu.
  • Limit deseti DNS dotazů. Mechanismy include, a, mx, ptr, exists a modifikátor redirect se počítají do limitu deseti dotazů; dlouhé řetězy include od poskytovatelů ho snadno překročí. Výsledkem je opět permerror.
  • Prázdné odpovědi. Norma omezuje i počet dotazů, které nevrátí žádný záznam (void lookups); include na doménu bez SPF je častý zdroj chyby.
  • ptr nepoužívat – je pomalý, nespolehlivý a norma ho nedoporučuje.
  • ~all versus -all: softfail pošta obvykle projde s penalizací, fail ji odmítne. Přechod na -all až ve chvíli, kdy jsou známé všechny odesílající servery.
  • Makra (%{i}, %{s} a další) jednotlivé implementace podporují různě. Záznam s makry ověřovat proti skutečnému příjemci, ne jen syntaktickým validátorem, a makra používat jen tam, kde jsou opravdu nutná.

SPF ověřuje obálkovou adresu (MAIL FROM) a HELO, ne hlavičku From, kterou vidí uživatel. Soulad mezi nimi řeší až DMARC.

Přeposlaná pošta přichází z adresy přeposílajícího serveru, kterou SPF původní domény nezná, a kontrola selže. Řešením je SRS (Sender Rewriting Scheme) na přeposílajícím serveru, v Postfixu například přes postsrsd.

  • Kontrola přes check_policy_service patří do smtpd_recipient_restrictions až za reject_unauth_destination, aby výsledek SPF nemohl otevřít relay.
  • Autentizovaní uživatelé (permit_sasl_authenticated) mají projít dřív, jinak se kontroluje i vlastní odchozí pošta odesílaná přes submission.
  • Démon politiky se spouští přes spawn v master.cf; jeho časový limit (policyd-spf_time_limit) je potřeba nastavit v main.cf, jinak ho Postfix ukončí dřív, než odpoví.
  • Výsledek SPF nesou symboly R_SPF_ALLOW, R_SPF_FAIL, R_SPF_SOFTFAIL, R_SPF_NA, R_SPF_PERMFAIL a R_SPF_DNSFAIL – v historii zprávy je hned vidět, proč kontrola dopadla, jak dopadla.
  • Pošta přicházející přes vlastní relé nebo filtr se musí vyhodnocovat proti poslední vnější adrese; vlastní relé a sítě proto patří mezi lokální, jinak se SPF kontroluje proti adrese relé.
  • R_SPF_DNSFAIL většinou neznamená chybu odesílatele, ale nespolehlivý resolver na straně příjemce.
  • Když SPF kontroluje rspamd i policyd-spf, výsledky se mohou rozejít. Kontrola má mít jedno místo.

Záznam ověřit posláním skutečné zprávy na testovací adresu (např. mail-tester) a přečtením výsledku v hlavičkách a v historii rspamd, ne jen syntaktickým validátorem.

publikováno 05/2026aktualizováno 09/2026 tagy: postfix · mail · spf · rspamd sítě →

← zpět na Objevuj