wordpress hosting - vpn - cloud - statistiekservice - email

SPF, wat is het en waarom gebruiken

Wat is SPF

SPF heeft iets met maken met email en het bestrijden van spam. De afkorting staat voor Sender Policy Framework, dat is leuk maar wat doet het? SPF kent twee kanten:

  • De DNS van een domein krijgt een TXT record waarin staat welke servers er voor het domein email mogen versturen.
  • De SMTP server controleert of een binnenkomende email af komt van een server die voor dat domein email mag versturen.

Waarom SPF gebruiken

Dat is vrij eenvoudig, het zorgt er voor dat email die binnenkomt gecontroleerd wordt of deze afkomstig is van smtp servers die voor een bepaald domein geautoriseerd zijn om email te verzenden. Hiermee kan vrij eenvoudig een deel van spam en phising worden geblokkeerd. In veel gevallen komt deze kwaadaardige email af van smtp servers die niet geautoriseerd zijn om die email te versturen. Een andere reden om SPF te gebruiken is dat de configuratie niet lastig is en het door veel grote emailaanbieders zoals Google ook gebruikt wordt.

SPF gebruiken

Zoals al aangeven bestaat het gebruik van SPF uit twee delen: de configuratie van de DNS en de SMTP server.

DNS configuratie

In de DNS moet een (extra) TXT record worden opgenomen waarin de emailservers voor dat domein staan aangeven. Zo’n TXT record kan er als volgt uit zien:

v=spf1 mx include:mail.example.com ip4:1.2.3.4 ip6:2a01:4f8:aaa:1355:2 -all

Uitleg:

v=spf1 betreft een SPF versie 1 configuratie
mx alle mailservers die als MX in de DNS voor dit domein staan mogen hiervoor email versturen
include naast de in de DNS staande servers met een MX records mag ook de server mail.example.com, een server met ip-adres 1.2.3.4 en met het ipv6 address 2a01:4f8:aaa:1355:2 mail voor dit domein versturen.
-all alle mail van andere servers is niet geauthoriseerd om email te versturen voor dit domein.

Opmerking: In plaats van -all (weiger email van een domain als de betreffende SMTP server niet geauthoriseerd is kan ook een ~all worden gebruikt, email wordt dan wel geaccepteerd maar kan als SPAM worden gemarkeerd. Ook kan de optie +all worden gebruikt, dan wordt de controle wel gedaan maar volgt er altijd een pass uit en wordt de email geaccepteerd.

Je kan met dig txt linuxpro.nl ons TXT record opvragen, je krijgt dat iets te zien als:

linuxpro.nl. 13372 IN TXT "v=spf1 mx -all"

In ons geval hebben we dus geen extra servers maar alleen de mailservers die in de MX-records staan mogen email versturen voor linuxpro.nl

SMTP server configuratie

We gaan hier uit van een werkende postfix configuratie waar we SPF willen implementeren op een Red Hat of daarmee vergelijkbare distro.

De eerste stap is de installatie van pypolicyd-spf, de is beschikbaar is de veelgebruikte epel repository en die moet dan ook aanwezig en enabled zijn.

Na de installatie moet de postfix configuratie op twee plaatsen worden aangepast, in de master.cf moet worden opgenomen:

policy unix - n n - - spawn user=nobody argv=/usr/libexec/postfix/policyd-spf

En in de main.cf komt onder smtpd_recipient_restrictions voor de laatste regel (waar permit zou moeten staan) de volgende regel:

check_policy_service unix:private/policy,

Herstart hierna postfix en controleer de logfile, je komt dan, als alles goed gaat, oa. de volgende logregels tegen:

policyd-spf[7663]: Pass; identity=mailfrom; client-ip=34.208.113.12;......
policyd-spf[3479]: None; identity=helo; client-ip=183.164.91.100; helo=mtpmc.com...
policyd-spf[3954]: Fail; identity=helo; client-ip=95.213.207.110; helo=....