[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
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