Reputationspflege 1: SPF

Vor einigen Jahren hatte ich den Einsatz von Postfix als Relay-Server zur Weiterleitung von E-Mails mit Hilfe einer spamanfälligen Minimalkonfiguration noch auf die leichte Schulter genommen, aber mittlerweile ist der Anteil der von mir weitergeleiteten E-Mails, die seriöse Mail-Provider als Spam einordnen, auf ein ungesundes Maß gestiegen. Es besteht Handlungsbedarf, und darüber hinaus verlangt das Gesetz von der Erhaltung der Komplexität, die Vereinfachung meines Webstacks mit einem komplexen serverseitigen Mailstack auszugleichen.

Der Einstieg in den Kaninchenbau der E-Mail-Seriosität beginnt ganz harmlos mit dem Sender Policy Framework (SPF), das zur Autorisierung von Relay-Servern in Bezug auf die Domain der Briefumschlag-Adresse gedacht ist. Wenn ich also den SMTP-Server meines Mail-Providers in einem DNS-Eintrag der Form

eden.one 3600 IN TXT v=spf1 include:posteo.de ~all

referenziere, können Spammer gegenüber aufmerksamen Zielservern nicht mehr unbemerkt meine Domain für ihre Briefumschläge verwenden (und meine E-Mails werden mit etwas geringerer Wahrscheinlichkeit als Spam betrachtet). Ein erster Schritt für die Reputation meiner Domain, aber für die weitergeleiteten E-Mails ist damit wenig gewonnen: SPF ist inkompatibel mit Weiterleitungen. Zum Glück handelt es sich nicht um ein besonders originelles Problem, für das bereits vor knapp 20 Jahren eine Lösung gefunden wurde. Eine Implementierung für Postfix ist rasch installiert (apt-get install postsrsd), in /etc/default/postsrsd muss die neue Absenderdomain (SRS_DOMAIN) konfiguriert werden, und Postfix benötigt vier zusätzliche Zeilen in /etc/postfix/main.cf:

sender_canonical_maps = tcp:localhost:10001 sender_canonical_classes = envelope_sender recipient_canonical_maps = tcp:localhost:10002 recipient_canonical_classes= envelope_recipient,header_recipient

Nach service postsrsd start und service postfix reload wird aus suite41@rp.limango.de SRS0=s1Ce=SV=rp.limango.de=suite41@eden.one, und ich kann beruhigt meinen SPF record um einen Verweis auf meinen Mailserver erweitern:

v=spf1 mx include:posteo.de ~all

Leider ist postsrsd sehr gewissenhaft und bearbeitet auch Spam-Nachrichten:

Jan 23 01:17:18 eden postsrsd[561604]: srs_forward: <fososy@tdatabrasil.net.br> rewritten as <SRS0=yYMQ=SV=tdatabrasil.net.br=fososy@eden.one>

Im Hinblick auf mein Ansehen bei Posteo ist das natürlich kontraproduktiv – jetzt leite ich Spam nicht nur kommentarlos weiter, sondern verknüpfe ihn mit meinem Mailserver und meiner Domain. Mein Mailserver muss also Nachrichten mit zweifelhaften SPF-Eigenschaften selbst aussortieren, und zwar mit Hilfe von python-policyd-spf. Nach der Installation (apt-get install postfix-policyd-spf-python) muss auch dieser Dämon in die Postfix-Konfiguration integriert werden

# /etc/postfix/master.cf policyd-spf unix - n n - 0 spawn user=policyd-spf argv=/usr/bin/policyd-spf # /etc/postfix/main.cf smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination, reject_unknown_sender_domain, check_policy_service unix:private/policyd-spf policyd-spf_time_limit = 3600

– und schon scheitern dubiose Mails:

Jan 23 23:06:42 eden policyd-spf[650603]: prepend Received-SPF: Softfail (mailfrom) identity=mailfrom; client-ip=191.6.123.64; helo=gmail.com; envelope-from=gkvcwhereabouts@gmail.com; receiver=<UNKNOWN>