SPF på Debian 12 (Bookworm)

[Uppdatering 2024-03-06: Lägger till länk till Debians manualsida som berör SPF]

Sender Policy Framework (SPF) var en av de tekniker som G-mail (Google) började ställa krav på att e-post-servrar har under 2023. Även DKIM verkade det ställas krav på, visade det sig. DKIM blir i en annan artikel, här blir det bara SPF.

SPF och DKIM är två typer av TXT-poster i DNS som gör det möjligt att upptäcka spoofing av e-post och hjälpa legitim e-post att levereras till mottagarens in-box, istället för i skräp-korgen. Om de inte lade till dig i deras adress-bok.

DNS-posten för SPF beskriver vilken host, eller IP-adresser, som är tillåtna att använda för att skicka e-post för domänen. Du bör bara tillåta din egen e-post-server eller din ISPs server som sänder e-post för din domän.

SPF tolkar jag som, är en teknik som fungerar så att jag skickar e-post från A till B. När B tar emot min e-post, kan den kontrollera på min domän om min e-post kommer från rätt host. Om det finns en SPF-post på min domän. Så den ändrar inget på utgående e-post, bara gör det möjligt att kontrollera inkommande e-post.

Jag har använt många källor innan jag kom till skott. Den som fick mig att ta steget, var den artikel som Xiao Guoan skrev på linuxbabe.com, 2022.

Steg 1: Skapa en TXT-post i DNS för SPF

Där du konfigurerar din DNS, skapa en ny TXT-post, enligt nedan. Detta enligt de källor jag hittat på nätet.

TXT @ v=spf mx ~all

Använder du One.com kan det se ut så här.

TXT @ v=spf include:_custspf.one.com ~all
SPF på one.com
SPF på one.com

Förklaring:

TXT indikerar att detta är en TXT-post.
@ anges i fältet för ”hostname” och jag gissar att det har med alla att göra. Men hur? Och olika för olika webb-hotell. Jag lade bara till host för en under-domän jag har. Så jag har två TXT-poster.
v=spf indikerar att detta är en SPF-post och att det är version SPF1.
ip4:(ip-nr) anger vilken host som är giltig att skicka e-post från.
include:_custspf.one.com anger att SPF från en annan källa också används. Tror jag i alla fall. Det var vad one.com tyckte att man skulle ange, så att deras system kan användas.
mx betyder alla hosts listade med MX-poster har tillåtelse att sända e-post för din domän. Jag använde inte denna.
~all indikerar att e-post från din domän ska bara komma från hosts beskrivna i SPF-posten. Möjliga andra alternativ är [+all, -all, ?all], men är sällan använda.

Steg 2: Kontrollera SPF-posterna i DNS

För att kontrollera om SPF-posten har spridits, så att den kan användas, använd tex ”dig”-verktyget på lin Linux-dator. På Ubuntu behöver man installera paketet bind9-dnsutils för att komma åt kommandot.

sudo apt install bind9-dnsutils
dig ripop.se txt

Attributet txt säger till dig att bara visa TXT-poster.

Du kan även använda ”https://dmarcian.com/spf-survey” för att testa syntax för din SPF-post. Om det finns bättre? Det vet jag inte. Nytt område för mig.

Steg 3: Konfigurera SPF Policy Agent

Postfix behöver också veta något om SPF, för att kontrollera SPF-posterna för inkommande e-post. SPF kontrolleras på inkommande sidan. Inget görs på utgående e-post.

Först installeras de paket som behövs.

sudo apt install postfix-policyd-spf-python

Därefter editeras Postfix konfiguration av huvud-processer.

sudo nano /etc/postfix/master.cf

Lägg till följande linje i slutet av filen. Den säger åt Postfix att starta policy-demonen för SPF när den själv startar. Gör gärna en kommentar i anslutning, så att du vet varför och när.

# 2024-03-03: Rickard: G-mail har börjat kräva detta. 
policyd-spf unix - n n - 0 spawn
  user=policyd-spf argv=/usr/bin/policyd-spf

Nästa steg är att editera Postfix primära fil för konfiguration.

sudo nano /etc/postfix/main.cf

Lägg till följande i slutet av filen. Första linjen anger Postfix timeout för policy-agenten. Efter-följande linjer skapar restriktioner för inkommande e-post genom att avvisa obehörig e-post och kontrollera SPF-posten. Debian rekommenderar 3600, som det verkar på Debians manual-sida som berör SPF.

# 2024-03-03: Rickard: Vad som krävs för att kontrollera SPF på inkommande.
policyd-spf_time_limit = 3600 
  smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_destination,
  check_policy_service unix:private/policyd-spf

Kommentar från Postfix:
reject_unauth_destination behöver vara före check_policy_service.
https://www.postfix.org/SMTPD_POLICY_README.html#client_config
Kommentar om rad 8,9.

Spara. Starta om Postfix.

sudo systemctl restart postfix

Nästa gång jag får en e-post från en domän som har SPF-poster, kan jag se att SPF har kontrollerat resultatet i e-post-headern. Följande header indikerar att sändaren har skickat e-post från en giltig host.

Received-SPF: Pass (sender SPF authorized).

Detta gick förhållandevis smärtfritt. Nästa artikel kommer att handla om mitt äventyr med DKIM. Den var inte lika lätt att fundera ut.

Länkar

Xiao Guoan
https://www.linuxbabe.com/mail-server/setting-up-dkim-and-spf

SPF Debian
https://manpages.debian.org/testing/postfix-policyd-spf-python/policyd-spf.1.en.html

Testa SPF (finns många andra, jag testade med denna)
https://dmarcian.com/spf-survey

SPF på One.com
https://help.one.com/hc/sv/articles/115005595945-L%C3%A4gg-till-en-SPF-post

Postfix SMTPD policy
https://www.postfix.org/SMTPD_POLICY_README.html#client_config

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *