Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
tachtler:postfix_centos_7_-_spf_anbinden_spf-milter [2015/10/19 11:09] – [/etc/postfix/main.cf] klaus | tachtler:postfix_centos_7_-_spf_anbinden_spf-milter [2024/02/08 10:03] (aktuell) – klaus |
---|
====== Postfix CentOS 7 - SPF anbinden (spf-milter) ====== | ====== Postfix CentOS 7 - SPF anbinden (spf-milter) ====== |
| |
Mit Hilfe von [[http://www.openspf.org/|SPF]] kann definiert werden, welche Mailserver für welche Domains e-Mails verschicken darf, oder eben nicht darf. Dies soll das Fälschen von Absender-Angaben erschwert werden. Dabei wird via [[http://www.openspf.org/|SPF]] festgelegt, welcher **MTA** (Mail Transport Agent) z.B. [[http://www.postfix.org|Postfix]] **ausgehend** für den Versandt von e-Mails einer Domain zugelassen ist. | Mit Hilfe von [[http://www.open-spf.org/|SPF]] kann definiert werden, welche Mailserver für welche Domains e-Mails verschicken darf, oder eben nicht darf. Dies soll das Fälschen von Absender-Angaben erschwert werden. Dabei wird via [[http://www.open-spf.org//|SPF]] festgelegt, welcher **MTA** (Mail Transport Agent) z.B. [[http://www.postfix.org|Postfix]] **ausgehend** für den Versandt von e-Mails einer Domain zugelassen ist. |
| |
Mit [[http://www.openspf.org/|SPF]] soll hauptsächlich das fälschen von e-Mail Absender Adressen verhindert werden. | Mit [http://www.open-spf.org/|SPF]] soll hauptsächlich das fälschen von e-Mail Absender Adressen verhindert werden. |
| |
Probleme tauchen mit unter bei Mailumleitungen, Mailinglisten und/oder Webformularen bzw. elektronischen Grusskarten auf. Auch wird bei sehr konservativen SPF-Definition die Möglichkeit verhindert, e-Mails mit der eigenen Absender e-Mail-Adresse über einen dritten Server zu versenden. Es wäre also nur möglich e-Mails über den Mail-Server zu versenden, auf dem auch das Postfach liegt! | Probleme tauchen mit unter bei Mailumleitungen, Mailinglisten und/oder Webformularen bzw. elektronischen Grusskarten auf. Auch wird bei sehr konservativen SPF-Definition die Möglichkeit verhindert, e-Mails mit der eigenen Absender e-Mail-Adresse über einen dritten Server zu versenden. Es wäre also nur möglich e-Mails über den Mail-Server zu versenden, auf dem auch das Postfach liegt! |
| |
Technisch gesehen wird bei [[http://www.openspf.org/|SPF]] ein **TXT-Record** im DNS in der Zonendatei der betreffenden Domain eingetragen. Hier wird definiert, welche SMTP-Server berechtigt sind, Nachrichten für diese Domain zu verschicken. Mailserver können dann bei der Annahme einer e-Mail abfragen, ob der sendende Mailserver überhaupt berechtigt ist, diese Nachricht zuzustellen. | Technisch gesehen wird bei [[http://www.open-spf.org/|SPF]] ein **TXT-Record** im DNS in der Zonendatei der betreffenden Domain eingetragen. Hier wird definiert, welche SMTP-Server berechtigt sind, Nachrichten für diese Domain zu verschicken. Mailserver können dann bei der Annahme einer e-Mail abfragen, ob der sendende Mailserver überhaupt berechtigt ist, diese Nachricht zuzustellen. |
| |
| ^ Beschreibung ^ Externer Link ^ |
| | Homepage | [[http://www.open-spf.org/]] | |
| | Dokumentation | [[http://www.open-spf.org/SPF_Record_Syntax]] | |
| | FAQ | [[http://www.open-spf.org/FAQ]] | |
| |
| Ab hier werden zur Ausführung nachfolgender Befehle **''root''**-Rechte benötigt. Um der Benutzer ''root'' zu werden, melden Sie sich bitte als ''root''-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer ''root'': |
| <code> |
| $ su - |
| Password: |
| </code> |
| |
===== Herunterladen ===== | ===== Herunterladen ===== |
===== iptables Regel ====== | ===== iptables Regel ====== |
| |
Damit der [[http://www.openspf.org/|SPF]] auch über den [[http://www.postfix.org|Postfix]] - **''spf-milter''** erreichbar ist und nicht das Empfangen der IP-Paket vom Paketfilter ''iptables'' blockiert wird, muss nachfolgende Regel zum ''iptables''-Regelwerk hinzugefügt werden. | Damit der [[http://www.open-spf.org/|SPF]] auch über den [[http://www.postfix.org|Postfix]] - **''spf-milter''** erreichbar ist und nicht das Empfangen der IP-Paket vom Paketfilter ''iptables'' blockiert wird, muss nachfolgende Regel zum ''iptables''-Regelwerk hinzugefügt werden. |
| |
Um die aktuellen ''iptables''-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann: | Um die aktuellen ''iptables''-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann: |
==== /etc/mail/smfs/smf-spf.conf ==== | ==== /etc/mail/smfs/smf-spf.conf ==== |
| |
Standardmäßig wird nach der Installation von [[http://www.openspf.org/|SPF]] - **''spf-milter''** in nachfolgendem Verzeichnis mit nachfolgendem Namen die Konfigurationsdatei für den [[http://www.openspf.org/|SPF]] - **''spf-milter''** hinterlegt: | Standardmäßig wird nach der Installation von [[http://www.open-spf.org/|SPF]] - **''spf-milter''** in nachfolgendem Verzeichnis mit nachfolgendem Namen die Konfigurationsdatei für den [[http://www.open-spf.org/|SPF]] - **''spf-milter''** hinterlegt: |
* **''etc/mail/smfs/smf-spf.conf''** | * **''/etc/mail/smfs/smf-spf.conf''** |
| |
Nachfolgende Änderungen sind an der Konfigurationsdatei ''etc/mail/smfs/smf-spf.conf'' durchzuführen: | Nachfolgende Änderungen sind an der Konfigurationsdatei ''/etc/mail/smfs/smf-spf.conf'' durchzuführen: |
| |
(**Komplette Konfigurationsdatei**) | (**Komplette Konfigurationsdatei**) |
* <code bash>Socket inet:10011@192.168.0.70</code> | * <code bash>Socket inet:10011@192.168.0.70</code> |
| |
Socket über den mit dem [[http://www.openspf.org/|SPF]] - **''spf-milter''** über die **IP-Adresse: ''192.168.0.70''** und den **Port: ''10011''** kommuniziert werden kann. | Socket über den mit dem [[http://www.open-spf.org/|SPF]] - **''spf-milter''** über die **IP-Adresse: ''192.168.0.70''** und den **Port: ''10011''** kommuniziert werden kann. |
| |
==== SPF Dienst/Daemon-Start einrichten ==== | ==== SPF Dienst/Daemon-Start einrichten ==== |
| |
Um den [[http://www.openspf.org/|SPF]] der als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann: | Um den [[http://www.open-spf.org/|SPF]] der als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann: |
<code> | <code> |
# systemctl enable smf-spf | # systemctl enable smf-spf |
</code> | </code> |
| |
Eine Überprüfung, ob beim Neustart des Server der ''spamassassin''-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben: | Eine Überprüfung, ob beim Neustart des Server der ''smf-spf''-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben: |
<code> | <code> |
# systemctl list-unit-files --type=service | grep -e smf-spf | # systemctl list-unit-files --type=service | grep -e smf-spf |
==== Erster Start SPF ==== | ==== Erster Start SPF ==== |
| |
Um den [[http://www.openspf.org/|SPF]] zu starten kann nachfolgender Befehl angewandt werden: | Um den [[http://www.open-spf.org/|SPF]] zu starten kann nachfolgender Befehl angewandt werden: |
<code> | <code> |
# systemctl start smf-spf | # systemctl start smf-spf |
</code> | </code> |
| |
Eine Überprüfung ob der Start des [[http://www.openspf.org/|SPF]] erfolgreich war kann mit nachfolgendem Befehl durchgeführt werden, welcher eine Ausgabe in etwa wie nachfolgende erzeugen sollte: | Eine Überprüfung ob der Start des [[http://www.open-spf.org/|SPF]] erfolgreich war kann mit nachfolgendem Befehl durchgeführt werden, welcher eine Ausgabe in etwa wie nachfolgende erzeugen sollte: |
<code> | <code> |
# systemctl status smf-spf | # systemctl status smf-spf |
* **''/etc/postfix/main.cf''** | * **''/etc/postfix/main.cf''** |
* **''/etc/postfix/master.cf''** | * **''/etc/postfix/master.cf''** |
durchgeführt, um eine Anbindung des [[http://www.postfix.org|Postfix]] an den [[http://www.openspf.org/|SPF]] zu realisieren. | durchgeführt, um eine Anbindung des [[http://www.postfix.org|Postfix]] an den [[http://www.open-spf.org/|SPF]] zu realisieren. |
| |
Dabei soll die Anbindung von [[http://www.postfix.org|Postfix]] an den [[http://www.openspf.org/|SPF]] mit dem Verfahren | Dabei soll die Anbindung von [[http://www.postfix.org|Postfix]] an den [[http://www.open-spf.org/|SPF]] mit dem Verfahren |
* **''spf-milter''** erfolgen. | * **''spf-milter''** erfolgen. |
| |
smtpd pass - - n - - smtpd | smtpd pass - - n - - smtpd |
-o smtpd_milters=${spf_milter} | -o smtpd_milters=${spf_milter} |
# Tachtler - new - | |
# Outgoing traffic from trusted networks, with amavisd-new (altermime). | |
192.168.1.60:smtp inet n - n - - smtpd | |
-o content_filter= | |
-o smtpd_proxy_filter=192.168.0.70:10024 | |
-o smtpd_client_connection_count_limit=4 | |
-o smtpd_proxy_options=speed_adjust | |
192.168.0.60:smtp inet n - n - - smtpd | |
-o content_filter= | |
-o smtpd_proxy_filter=192.168.0.70:10024 | |
-o smtpd_client_connection_count_limit=4 | |
-o smtpd_proxy_options=speed_adjust | |
127.0.0.1:smtp inet n - n - - smtpd | |
-o content_filter= | |
-o smtpd_proxy_filter=192.168.0.70:10024 | |
-o smtpd_client_connection_count_limit=4 | |
-o smtpd_proxy_options=speed_adjust | |
# Tachtler - new - | |
# Outgoing traffic, BACK from amavisd-new from smtpd_proxy_filter. | |
192.168.0.60:10025 inet n - n - - smtpd | |
-o content_filter= | |
-o smtpd_proxy_filter= | |
-o smtpd_milters= | |
-o smtpd_authorized_xforward_hosts=127.0.0.0/8,192.168.0.0/24,192.168.1.0/24,192.168.2.0/24,88.217.171.167/32 | |
-o smtpd_client_restrictions= | |
-o smtpd_helo_restrictions= | |
-o smtpd_sender_restrictions= | |
-o smtpd_relay_restrictions= | |
-o smtpd_recipient_restrictions=permit_mynetworks,reject | |
-o smtpd_data_restrictions= | |
-o mynetworks=0.0.0.0/32,127.0.0.0/8,10.7.0.0/24,10.7.1.0/24,192.168.0.0/25,88.217.171.167/32 | |
-o receive_override_options=no_unknown_recipient_checks | |
# Tachtler - new - | |
# Outgoing traffic, BACK from amavisd-new from content_filter. | |
192.168.0.60:10027 inet n - n - - smtpd | |
-o content_filter= | |
-o smtpd_proxy_filter= | |
-o smtpd_milters= | |
-o smtpd_authorized_xforward_hosts=127.0.0.0/8,192.168.0.0/24,192.168.1.0/24,192.168.2.0/24,88.217.171.167/32 | |
-o smtpd_delay_reject=no | |
-o smtpd_client_restrictions= | |
-o smtpd_helo_restrictions= | |
-o smtpd_sender_restrictions= | |
-o smtpd_relay_restrictions= | |
-o smtpd_recipient_restrictions=permit_mynetworks,reject | |
-o smtpd_data_restrictions=reject_unauth_pipelining | |
-o smtpd_end_of_data_restrictions= | |
-o smtpd_restriction_classes= | |
-o mynetworks=0.0.0.0/32,127.0.0.0/8,10.7.0.0/24,10.7.1.0/24,192.168.0.0/25,88.217.171.167/32 | |
-o smtpd_error_sleep_time=0 | |
-o smtpd_soft_error_limit=1001 | |
-o smtpd_hard_error_limit=1000 | |
-o smtpd_client_connection_count_limit=0 | |
-o smtpd_client_connection_rate_limit=0 | |
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters | |
-o local_header_rewrite_clients= | |
... | |
... | |
... | |
# Tachtler - enabled - | |
submission inet n - n - - smtpd | |
-o syslog_name=postfix/submission | |
-o content_filter=lmtp:[192.168.0.70]:10026 | |
-o smtpd_tls_security_level=encrypt | |
-o smtpd_sasl_auth_enable=yes | |
-o smtpd_reject_unlisted_recipient=no | |
# -o smtpd_client_restrictions=$mua_client_restrictions | |
# -o smtpd_helo_restrictions=$mua_helo_restrictions | |
# -o smtpd_sender_restrictions=$mua_sender_restrictions | |
-o smtpd_recipient_restrictions= | |
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject | |
-o milter_macro_daemon_name=ORIGINATING | |
... | |
... | |
... | |
pickup unix n - n 60 1 pickup | |
-o content_filter=lmtp:[192.168.0.70]:10024 | |
... | ... |
</code> | </code> |
Hint: Some lines were ellipsized, use -l to show in full. | Hint: Some lines were ellipsized, use -l to show in full. |
</code> | </code> |
| |
| ===== Test ===== |
| |
| Nachfolgend soll ein Test darin bestehen, dass eine e-Mail von einem externen Server an [[http://www.postfix.com|Postfix]] gesendet wird, und dieser dann den SPF-Record des absendenden e-Mail-Servers prüft. |
| |
| Wichtig sind zwei **Einträge**, in |
| * den **Header-Zeilen** der **eingehenden e-Mail** |
| * die **LOG-Einträge** im Server, auf dem [[http://www.open-spf.org/|SPF]] - **''spf-milter''** läuft: |
| |
| ==== Überprüfung: Header-Zeilen ==== |
| |
| Nachfolgender Eintrag sollte in den **Header-Zeilen** einer **eingehenden e-Mail** zu finden sein, um das Ergebnis der [[http://www.open-spf.org/|SPF]] - **''spf-milter''** Überprüfung zu zeigen: |
| <code> |
| Authentication-Results: mx1.tachtler.net; spf=pass smtp.mailfrom=<michael@nausch.org> smtp.helo=mx01.nausch.org |
| </code> |
| * //Das Ergbenis kann hier ''pass'', ''fail'' und ''none'' sein.// |
| |
| ==== Überprüfung: /var/log/maillog ==== |
| |
| Nachfolgender Eintrag sollte in den **LOG-Einträgen** des Servers auf dem der [[http://www.open-spf.org/|SPF]] - **''spf-milter''** läuft bei einer **eingehenden e-Mail** zu finden sein, um das Ergebnis der [[http://www.open-spf.org/|SPF]] - **''spf-milter''** Überprüfung zu dokumentieren: |
| <code> |
| Oct 19 06:56:56 server70 smf-spf[2157]: SPF pass: ip=217.91.103.190, fqdn=mx01.nausch.org, helo=mx01.nausch.org, from=<michael@nausch.org> |
| </code> |
| * //Das Ergbenis kann hier ''pass'', ''fail'' und ''none'' sein.// |
| |
| ===== Test Werkzeuge ===== |
| |
| Nachfolgende externe Links führen zu verschiedenen Test Werkzeugen: |
| * **[[http://www.open-spf.org/|SPF]]** - [[https://dmarcian.com/spf-survey/|dmarcian - SPF Surveyor]] |
| * **[[http://www.opendkim.org/|OpenDKIM]]** - [[http://protodave.com/tools/dkim-key-checker/|protodave - DKIM Key Checker]] |
| * **[[http://www.trusteddomain.org/opendmarc/|OpenDMARC]]** - [[https://dmarcian.com/dmarc-inspector/|dmarcian - DMARC Inspector]] |
| |