Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
centos:mail_c6:mta_10 [16.03.2014 11:09. ] – django | centos:mail_c6:mta_10 [22.07.2019 15:07. ] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== SPF - Sender Policy Framework ====== | ====== SPF - Sender Policy Framework ====== | ||
- | {{:centos:mailserver:spf_logo.png?96 |SPF Logo}} | + | {{:centos:mail_c6:spf-logo-medium.png?nolink |
- | Der Einsatz des SPF((**S**ender **P**olicy **F**rameworks)) | + | Mit Hilfe von SPF((**S**ender **P**olicy **F**rameworks)) |
- | Es würde auch die Möglichkeit | + | Mit SPF soll hauptsächlich Absenderadressfälschungen verhindert werden, nicht jedoch direkt Spam zu bekämpfen. Dieses here Ziel wirft bei genauerer Betrachtung viele Fragen auf und erzeugt bei manchen Mailserver-Betreibern nicht gerade viel Begeisterungsstürme. Probleme tauchen mit unter bei Mailumleitungen, |
- | Aus den genannten Gründen sollte eine Sender Policy Framework Definition so gewählt werden, das diese Beschränkung nicht zuschlägt. | + | Beim **SPF** wird ein TXT-Record in der Zonendatei der betreffenden (Mail)Domain eingetragen. Dort wird definiert, welche SMTP-Server berechtigt sind, Nachrichten der (Mail)Domain zu verschicken. Mailserver können dann bei der Annahme der eMails abfragen, ob der sendende Mailserver überhaupt berechtigt ist, diese Nachricht zu verschicken. |
- | Über den Dialog beim [[http://old.openspf.org/wizard.html|The | + | <uml w=800> |
+ | |||
+ | title Mailversand einer eMail\n | ||
+ | skin BlueModern | ||
+ | participant " | ||
+ | participant " | ||
+ | participant " | ||
+ | |||
+ | links -> mitte | ||
+ | note left : \n Verbindungsaufbau \n vom Quell- zum \n Zielserver \n | ||
+ | links <-- mitte : . 220 mx1.tachtler.net ESMTP Postfix | ||
+ | links --> mitte : HELO mx01.nausch.org | ||
+ | links <-- mitte : . 250 mx1.tachtler.net | ||
+ | links --> mitte : MAIL FROM:< | ||
+ | |||
+ | mitte -> rechts : host -t TXT nausch.org | ||
+ | note right : \n Abfrage der \n SPF-Records \n | ||
+ | mitte <- rechts : nausch.org descriptive text " | ||
+ | note left : \n Der Mailserver | ||
+ | links <-- mitte : . 250 2.1.0 Ok | ||
+ | |||
+ | links --> mitte : RCPT TO:< | ||
+ | links <-- mitte : . 250 2.1.0 Ok | ||
+ | |||
+ | links --> mitte : Übermittlung der Nachricht | ||
+ | links <-- mitte : 250 2.0.0 Ok: queued as 5950581 | ||
+ | note left : \n Beenden der Verbindung \n | ||
+ | |||
+ | </ | ||
- | Das Ergebnis dieses Online-Tools tragen wir dann in unserem DNS-Server ein. | ||
- | | ||
- | Unser "// | ||
- | \\ | ||
- | ^Schlüssel | ||
- | | v=spf1 | ||
- | |ip4: | ||
- | | a | Die im A-Record bezeichnete Adresse, hat die Erlaubnis e-Mails im Namen von nausch.org zu senden | ||
- | | mx | Die Server welche im MX-Record genannt sind, haben die Erlaubnis e-Mails im Namen von nausch.org zu senden | ||
- | | include: | ||
- | | ?all | e-Mails, welche nicht von den spezifizierten Servern kommen, können e-Mails im Namen von nausch.org senden | ||
- | \\ | ||
Weitere Informationen rund um SPF findet man im übrigen auf der [[http:// | Weitere Informationen rund um SPF findet man im übrigen auf der [[http:// | ||
+ | |||
+ | ===== Definition unseres SPF-Records ===== | ||
+ | Aus den eingangs genannten Gründen sollte eine Sender Policy Framework Definition so gewählt werden, das auch weiterhin Nachrichten umgeleitet, Mailinglisten oder bei Bedarf Webformulare genutzt werden können. | ||
+ | |||
+ | Ein SPF-Record beinhaltet mehrere Angaben, die jeweils von links nach rechts ausgewertet werden. Der erste Wert gibt an, welche SPF-Version genutzt wird, aktuell SPF-Version " | ||
+ | * **+** : **positiv** Die nachfolgende IP-Adresse ist als legitimer Sender definiert. Wird kein Qualifer angegeben, wird automatisch der Wert **+** herangezogen (Defaulteinstellung). | ||
+ | * **-** : **negativ** Die nachfolgende IP-Adresse definiert ein nicht autorisiertes Sendesystem Fail die Direktive definiert nicht autorisierte Sender | ||
+ | * **?** : **neutral** Über die Rechtmäßigkeit des Sendesystems kann nichts ausgesagt werden; Der Sender muß daher akzeptiert werden. | ||
+ | * **~** : **soft-fail** Die nachfolgende IP-Adresse definiert ein nicht autorisiertes Sendesystem. Das Empfangssystem soll jedoch die Annahme der Nachricht dennoch annehmen (Test-Qualifier). | ||
+ | |||
+ | Neben der IP-Adressangabe mittels **ip4** bzw.**ip6**, | ||
+ | |||
+ | * **a** definiert einen A-Record der Domäne | ||
+ | * **mx** definiert eine IP-Adresse, die im MX-Record der Domäne definiert wurde. | ||
+ | * **all** Alle anderen IP-Adressen, | ||
+ | * **include** Einbinden einer weiteren SPF-Abfrage. | ||
+ | |||
+ | In der Regel wird man bei der Definition folgenden Festlegung treffen: //**eMails werden normalerweise immer von den IP-Adressen des zuständigen Mailserver versandt, können aber auch von anderen Servern verschickt werden.**// Als SPF-Record ergibt das dann "// | ||
+ | | ||
+ | Wir tragen also bei unserem zuständigen DNS entsprechend die richtigen Daten ein. | ||
+ | | ||
+ | |||
+ | Über die URL [[http:// | ||
+ | ===== SPF-Bewertung bei der Mailannahme ===== | ||
+ | Neben der Befragung von [[centos: | ||
+ | |||
+ | <WRAP round tip> \\ Auf den ersten Blick erscheint der Postfix Poliyd-Daemon **pypolicyd-spf** aus dem [[centos: | ||
+ | |||
+ | Möchte man aber hingegen später **[[centos: | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Installation ==== | ||
+ | Als laden wir uns das aktuelle RPM auf unseren Server. | ||
+ | # cd / | ||
+ | |||
+ | # wget http:// | ||
+ | |||
+ | Dann installieren wir das Paket. | ||
+ | # yum localinstall smf-spf-2.0.4-1.el6.x86_64.rpm | ||
+ | |||
+ | Altenativ können wir das Paket natürlich auch direkt von [[http:// | ||
+ | # yum localinstall http:// | ||
+ | |||
+ | Ein Update des Paketes geht entsprechend der Installation. | ||
+ | # yum localupdate http:// | ||
+ | |||
+ | Was uns das Paket alles mitbringt, zeigt uns wie immer der Aufruf von **rpm -qil < | ||
+ | # rpm -qil smf-spf | ||
+ | < | ||
+ | Version | ||
+ | Release | ||
+ | Install Date: Tue 01 Apr 2014 10:41:43 PM CEST Build Host: vml010039.intra.nausch.org | ||
+ | Group : System Environment/ | ||
+ | Size : 50591 License: GPLv2+ | ||
+ | Signature | ||
+ | Packager | ||
+ | URL : http:// | ||
+ | Summary | ||
+ | Description : | ||
+ | smf-spf is a lightweight, | ||
+ | Sender Policy Framework technology with the help of the libspf2 library. It | ||
+ | checks SPF records to make sure that e-mail messages are authorized by the | ||
+ | domain that it is coming from. It's an alternative for the spfmilter, | ||
+ | spf-milter, and milter-spiff milters. | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | ==== Konfiguration ==== | ||
+ | Die Konfiguration des **smf-spf**-Daemons gestaltet sich vergleichsweise einfach und erfolgt lediglich mit Hilfe Der Datei // | ||
+ | |||
+ | Mit unserem Editor der Wahl, z.B. **vim** bearbeiten wir diese Konfigurationsdatei. | ||
+ | # vim / | ||
+ | |||
+ | <file bash / | ||
+ | # | ||
+ | # smf-spf configuration file v2.0.2 (it's read at start) | ||
+ | # | ||
+ | |||
+ | # Whitelist by a sender IP address | ||
+ | # | ||
+ | # The syntax is an IP address followed by a slash | ||
+ | # and a CIDR netmask (if the netmask is omitted, /32 is assumed) | ||
+ | # | ||
+ | WhitelistIP 127.0.0.0/ | ||
+ | WhitelistIP 10.0.0.0/ | ||
+ | # Django : 2014-02-26 | ||
+ | # nicht benutzte (private) Netzbereiche entfernt | ||
+ | # WhitelistIP 172.16.0.0/ | ||
+ | # WhitelistIP 192.168.0.0/ | ||
+ | |||
+ | # Whitelist by a sender PTR record (reverse DNS record) | ||
+ | # | ||
+ | # Performs a case insensitive substring match | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | |||
+ | # Whitelist by an envelope sender e-Mail address | ||
+ | # | ||
+ | # Performs a case insensitive substring match | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | |||
+ | # Whitelist by an envelope recipient e-Mail address | ||
+ | # | ||
+ | # Performs a case insensitive substring match | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | |||
+ | # Refuse e-Mail messages at SPF Fail results (RFC-4408) | ||
+ | # | ||
+ | # Default: on | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | |||
+ | |||
+ | # Subject tagging of e-Mail messages at SPF SoftFail | ||
+ | # and Fail (if RefuseFail set to off) results | ||
+ | # | ||
+ | # Default: on | ||
+ | # | ||
+ | # | ||
+ | |||
+ | # Subject tagging string | ||
+ | # | ||
+ | # Default: [SPF:fail] | ||
+ | # | ||
+ | # | ||
+ | |||
+ | # Build a standard Received-SPF: | ||
+ | # | ||
+ | # Default: on | ||
+ | # | ||
+ | # | ||
+ | |||
+ | # Quarantine of e-Mail messages at SPF SoftFail | ||
+ | # and Fail (if RefuseFail set to off) results | ||
+ | # | ||
+ | # Default: off | ||
+ | # | ||
+ | # | ||
+ | |||
+ | # Quarantine mailbox | ||
+ | # | ||
+ | # Default: postmaster | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | |||
+ | # In-memory cache engine TTL settings | ||
+ | # | ||
+ | # The time is given in seconds, except if a unit is given: | ||
+ | # m for minutes, h for hours, and d for days | ||
+ | # Specify zero to disable caching | ||
+ | # | ||
+ | # Default: 1h | ||
+ | # | ||
+ | #TTL 1h | ||
+ | |||
+ | # Run as a selected user (smf-spf must be started by root) | ||
+ | # | ||
+ | # Default: smfs | ||
+ | # | ||
+ | #User smfs | ||
+ | |||
+ | # Socket used to communicate with Sendmail daemon | ||
+ | # | ||
+ | # Default: unix:/ | ||
+ | # | ||
+ | # | ||
+ | # Django : 2014-03-25 | ||
+ | Socket inet: | ||
+ | |||
+ | # Facility for logging via Syslog daemon | ||
+ | # | ||
+ | # Default: mail | ||
+ | # | ||
+ | # | ||
+ | |||
+ | </ | ||
+ | |||
+ | In der Konfigurationsdatei **main.cf** unseres Postfix-Mailserver tragen wir nun noch am Ende nachfolgende Zeilen ein. | ||
+ | # vim / | ||
+ | <file bash / | ||
+ | |||
+ | # Django : 2014-03-16 | ||
+ | # SPF-Check via SMF-SPF-Milter einbinden. | ||
+ | smtpd_milters = inet: | ||
+ | |||
+ | ... | ||
+ | </ | ||
+ | |||
+ | ==== Programmstart ==== | ||
+ | === erster manueller Start === | ||
+ | Nun können wir das erste mal den Daemon anstarten. | ||
+ | # service smf-spf start | ||
+ | |||
+ | Starting smf-spf: | ||
+ | |||
+ | In der Prozessliste finden wir nun unseren Prozess smf-spf, der mit den Rechten des Users smf läuft: | ||
+ | # ps auxw | grep smf-spf | ||
+ | |||
+ | smfs | ||
+ | |||
+ | Mittels lsof können wir nun noch überprüfen, | ||
+ | # lsof -i :10010 | ||
+ | |||
+ | COMMAND | ||
+ | smf-spf 28462 smfs 4u IPv4 2597844 | ||
+ | |||
+ | === automatisches Starten des Dienste beim Systemstart | ||
+ | Damit der smf-spf-Daemon automatisch bei jedem Systemstart startet, denn ohne laufenden **smf-spf-daemon** verweigert nun unser **postfix** die Annahme der Nachrichten, | ||
+ | # chkconfig smf-spf on | ||
+ | |||
+ | Die Überprüfungung ob der Dienst (Daemon) smf-spfwirklich bei jedem Systemstart automatisch mit gestartet wird, kann durch folgenden Befehle erreicht werden: | ||
+ | # chkconfig --list | grep smf-spf* | ||
+ | |||
+ | smf-spf | ||
+ | |||
+ | Wichtig sind jeweils die Schalter **on** bei den Runleveln - **2 3 4 5**. | ||
+ | |||
+ | Anschließend starten wir unseren Postfix-Mailserver einmal durch, damit unsere zuvor eingetragene Konfigurationsänderung aktiv werden kann. | ||
+ | # service postfix condrestart | ||
+ | |||
+ | Shutting down postfix: | ||
+ | Starting postfix: | ||
+ | |||
+ | ==== Tests und Logging ==== | ||
+ | Zum Testen schicken wir uns von einem fremden Mailserver aus, der einen gültigen SPF-Record vorweisen kann eine eMail an unseren Mailserver und beobachten unser Maillog. | ||
+ | # less / | ||
+ | |||
+ | Mar 26 14:27:32 vml000080 smf-spf[26416]: | ||
+ | |||
+ | Damit nicht bei jeder Anfrage, der SPF-Record beim DNS abgerufen werden muss, cacht der Daemon auch entsprechend den SPF-Record. Wir sehen dann bei der Nutzung dieser gecachten Daten im maillog. | ||
+ | Mar 26 14:40:18 vml000080 smf-spf[26416]: | ||
+ | |||
+ | Natürlich wird ein Fehler beim Überprüfen des SPF-records auch im maillog vermerkt. | ||
+ | Dec 15 14:39:49 vml000080 smf-spf[1501]: | ||
+ | |||
+ | Im Mailheader der empfangenen eMail findet sich dann auch die entsprechenden Einträge: | ||
+ | Authentication-Results: | ||
+ | | ||
+ | ===== SRS - Sender Rewriting Scheme ===== | ||
+ | Zu Beginn dieses Artikels wurde bereits darauf hingewiesen, | ||
+ | |||
+ | ====== Links ====== | ||
+ | * **[[[[centos: | ||
+ | * **[[centos: | ||
+ | * **[[wiki: | ||
+ | * **[[http:// | ||
+ | |||