Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
centos:mail_c7:spam_10 [17.12.2014 13:16. ] – [SPF-Bewertung bei der Mailannahme] djangocentos:mail_c7:spam_10 [20.04.2018 10:32. ] – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
-<WRAP center round info 75%> 
-Artikel befindet sich gerade in der Bearbeitung! 
-</WRAP> 
- 
 ====== SPF - Sender Policy Framework unter CentOS 7.x ====== ====== SPF - Sender Policy Framework unter CentOS 7.x ======
 {{:centos:mail_c6:spf-logo-medium.png?nolink |SPF Logo}} {{:centos:mail_c6:spf-logo-medium.png?nolink |SPF Logo}}
Zeile 66: Zeile 62:
 Über die URL [[http://www.kitterman.com/spf/validate.html|SPF Record Testing Tools]] kann man online bei Bedarf testen, ob der SPF-Eintrag soweit richtig ist. Über die URL [[http://www.kitterman.com/spf/validate.html|SPF Record Testing Tools]] kann man online bei Bedarf testen, ob der SPF-Eintrag soweit richtig ist.
  
 +<WRAP center round tip 100%>
 +**Hinweise:** \\
 +
 +Will man neben dem **SPF**-Record in Form eines TXT-Records auch noch einem **google-site-verification** TXT-Record anlegen, dann kann man nicht zwei TXT-Records für die Domain im DNS hinterlegen. Um dennoch beide Funktionenn nutzen zu können, trägt man beide Werte in einem TXT-Record ein. So z.B. <code>@ 300 IN TXT "v=spf1 ip4:217.92.13.131/32 mx ?all " "google-site-verification=oghnZ6HahxTGKkknsap_i-iX8nMi9iz0n6ArEvxuLFA"</code>
 +</WRAP>
 +
 +
 + 
 ===== SPF-Bewertung bei der Mailannahme ===== ===== SPF-Bewertung bei der Mailannahme =====
 Neben der Befragung von [[centos:mail_c6:mta_3?&#access-dateien|Black-/White-Listen]], dem Nutzen von  [[centos:mail_c7:spam_3|Postscreen]] oder [[centos:mail_c7:spam_1|greylisting]] und [[centos:mail_c7:spam_2|policyd-weight]], können wir auch **SPF** bei der Bewertung von eingehenden Sendungen heranziehen.  Neben der Befragung von [[centos:mail_c6:mta_3?&#access-dateien|Black-/White-Listen]], dem Nutzen von  [[centos:mail_c7:spam_3|Postscreen]] oder [[centos:mail_c7:spam_1|greylisting]] und [[centos:mail_c7:spam_2|policyd-weight]], können wir auch **SPF** bei der Bewertung von eingehenden Sendungen heranziehen. 
Zeile 71: Zeile 75:
 <WRAP round tip> \\ Auf den ersten Blick erscheint der Postfix Poliyd-Daemon **pypolicyd-spf** aus dem [[centos:epel7|EPEL-Repository]] eine leicht zu installierende und vielversprechende Möglichkeit zu sein. Betrachtet man **SPF** alleine, stimmt dies auch. <WRAP round tip> \\ Auf den ersten Blick erscheint der Postfix Poliyd-Daemon **pypolicyd-spf** aus dem [[centos:epel7|EPEL-Repository]] eine leicht zu installierende und vielversprechende Möglichkeit zu sein. Betrachtet man **SPF** alleine, stimmt dies auch.
  
-Möchte man aber hingegen später **[[centos:mail_c7:spam_12|DMARC]]** bei der Bewertung von **[[centos:mail_c7:spam_10|SPF]] __und__ [[centos:mail_c7:spam_9|DKIM]]** einsetzen, so weicht man besser auf den SPF-Milter **smf-spf** aus Django'Repository **[[centos:mailserver.guru|mailserver.guru]]** aus. +Möchte man aber hingegen später **[[centos:mail_c7:spam_12|DMARC]]** bei der Bewertung von **[[centos:mail_c7:spam_10|SPF]] __und__ [[centos:mail_c7:spam_9|DKIM]]** einsetzen, so weicht man besser auf den SPF-Milter **smf-spf** aus Djangos Repository **[[centos:mailserver.guru|mailserver.guru]]** aus. 
  
 </WRAP> </WRAP>
  
 +==== Installation ====
 +Die einfachste und schnellste Variante bei der Installation ist die aus dem Repository **[[centos:mailserver.guru|mailserver.guru]]**. Hier reicht ein einfacher Aufruf von **yum** und alles wird automatisch installiert inkl. der Paketabhängigkeiten. 
 +   # yum install smf-spf
 +
 +Will oder kann man nicht auf das Repository **[[centos:mailserver.guru|mailserver.guru]]** zurückgreifen, steht immer noch der Installation per Hand nichts im Wege.
 +   # yum localinstall http://repo7.mailserver.guru/7/x86_64/libspf2-1.2.10-1.el7.centos.x86_64.rpm \ 
 +                      http://repo7.mailserver.guru/7/x86_64/smf-spf-2.0.4-1.el7.centos.x86_64.rpm
 +
 +Was das RPM alle mitbrachte zeigt ein Blick in die RPM-Datenbank.
 +   # rpm -qil smf-spf
 +<code>Name        : smf-spf
 +Version     : 2.0.4
 +Release     : 1.el7.centos
 +Architecture: x86_64
 +Install Date: Wed 17 Dec 2014 02:01:33 PM CET
 +Group       : System Environment/Daemons
 +Size        : 26876
 +License     : GPLv2+
 +Signature   : RSA/SHA1, Wed 17 Dec 2014 02:00:24 PM CET, Key ID 60ecfb9e8195aea0
 +Source RPM  : smf-spf-2.0.4-1.el7.centos.src.rpm
 +Build Date  : Wed 17 Dec 2014 02:00:16 PM CET
 +Build Host  : vml000200.dmz.nausch.org
 +Relocations : (not relocatable)
 +Packager    : Django <django@mailserver.guru>
 +Vendor      : django
 +URL         : http://smfs.sourceforge.net/smf-spf.html
 +Summary     : Mail filter for Sender Policy Framework verification
 +Description :
 +smf-spf is a lightweight, fast and reliable Sendmail milter that implements the
 +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.
 +/etc/mail/smfs
 +/etc/mail/smfs/smf-spf.conf
 +/run/smfs
 +/run/smfs/smf-spf.sock
 +/usr/lib/systemd/system/smf-spf.service
 +/usr/lib/tmpfiles.d/smfs.conf
 +/usr/sbin/smf-spf
 +</code>
 +
 +==== Konfiguration ====
 +Die Konfiguration des **smf-spf**-Daemons gestaltet sich vergleichsweise einfach und erfolgt lediglich mit Hilfe Der Datei //**/etc/mail/smfs/smf-spf.conf**//. In der Default-Konfiguration wird der Daemon über einen UNIX-Datei-Socket angesprochen. Diesen Parameter **Socket** weisen wir einem localen Port zu, über den wir später von Postfix aus, den SPF-Milter ansprechen wollen.
 +
 +Mit unserem Editor der Wahl, z.B. **vim** bearbeiten wir diese Konfigurationsdatei.
 +   # vim /etc/mail/smfs/smf-spf.conf
 +
 +<file bash /etc/mail/smfs/smf-spf.conf># /etc/mail/smfs/smf-spf.conf
 +#
 +# 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/8
 +WhitelistIP 10.0.0.0/8
 +# Django : 2014-12-17
 +# nicht benutzte (private) Netzbereiche entfernt
 +# WhitelistIP 172.16.0.0/12
 +# WhitelistIP 192.168.0.0/16
 +
 +# Whitelist by a sender PTR record (reverse DNS record)
 +#
 +# Performs a case insensitive substring match
 +#
 +#WhitelistPTR .friendlydomain.tld
 +#WhitelistPTR friendlyhost.friendlydomain.tld
 +
 +# Whitelist by an envelope sender e-Mail address
 +#
 +# Performs a case insensitive substring match
 +#
 +#WhitelistFrom friend@
 +#WhitelistFrom @friendlydomain.tld
 +#WhitelistFrom friend@friendlydomain.tld
 +
 +# Whitelist by an envelope recipient e-Mail address
 +#
 +# Performs a case insensitive substring match
 +#
 +#WhitelistTo postmaster@
 +#WhitelistTo @yourspamloverdomain.tld
 +#WhitelistTo spamlover@yourdomain.tld
 +
 +# Refuse e-Mail messages at SPF Fail results (RFC-4408)
 +#
 +# Default: on
 +#
 +#RefuseFail on # (on|off)
 +#RefuseFail off
 +
 +
 +# Subject tagging of e-Mail messages at SPF SoftFail
 +# and Fail (if RefuseFail set to off) results
 +#
 +# Default: on
 +#
 +#TagSubject on # (on|off)
 +
 +# Subject tagging string
 +#
 +# Default: [SPF:fail]
 +#
 +#Tag [SPF:fail]
 +
 +# Build a standard Received-SPF: header
 +#
 +# Default: on
 +#
 +#AddHeader on # (on|off)
 +
 +# Quarantine of e-Mail messages at SPF SoftFail
 +# and Fail (if RefuseFail set to off) results
 +#
 +# Default: off
 +#
 +#Quarantine off # (on|off)
 +
 +# Quarantine mailbox
 +#
 +# Default: postmaster
 +#
 +#QuarantineBox postmaster
 +#QuarantineBox spambox@yourdomain.tld
 +
 +# 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:/var/run/smfs/smf-spf.sock
 +#
 +#Socket unix:/var/run/smfs/smf-spf.sock
 +# Django : 2014-12-17
 +Socket inet:8890@127.0.0.1
 +
 +# Facility for logging via Syslog daemon
 +#
 +# Default: mail
 +#
 +#Syslog mail # (daemon|mail|local0...local7)
 +
 +</file>
 +
 +In der Konfigurationsdatei **main.cf** unseres Postfix-Mailserver definieren wir uns nun eine eigene Variable, die wir dann in der Datei //**/etc/postfix/master.cf**// dann verwenden wollen. Wir tragen also nun in der Section **MILTER**e nachfolgende Zeilen ein.
 +   # vim /etc/postfix/main.cf
 +<file bash /etc/postfix/main.cf>...
 +
 +################################################################################
 +## MILTER
 +# Django : 2014-11-18
 +# DMARC Test
 +spf_milter       = inet:127.0.0.1:8890
 +#opendkim_milter  = inet:127.0.0.1:8891
 +#opendmarc_milter = inet:127.0.0.1:8892
 +amavisd_milter   = inet:10.0.0.67:8899
 +...
 +</file>
 +
 +In der Konfigurationsdatei //**/etc/postfix/master.cf**// legen wir nun fest, dass bei der Annahme auf Port **25** unser gerade definierte **smf-spf**-milter verwendet werden soll.
 +   # vim /etc/postfix/master.cf
 +
 +<code>...
 +
 +smtp      inet  n                               postscreen
 +smtpd     pass  -                               smtpd
 +  -o smtpd_sasl_auth_enable=no
 +  -o smtpd_milters=${spf_milter},${amavisd_milter}
 +dnsblog   unix  -                               dnsblog
 +tlsproxy  unix  -                               tlspr
 +</code>
 +
 +==== Programmstart ====
 +Das Starten des Daemon erfolgt über folgenden Aufruf.
 +   # systemctl start smf-spf
 +
 +Den erfolgreichen Start bzw. den Status des **smf-spf**-Daemon können wir bei Bedarf mit folgendem Aufruf abfragen.
 +   # systemctl status smf-spf
 +
 +<code>smf-spf.service - Sender Policy Framework milter
 +   Loaded: loaded (/usr/lib/systemd/system/smf-spf.service; disabled)
 +   Active: active (running) since Wed 2014-12-17 14:05:12 CET; 40min ago
 +  Process: 19140 ExecStart=/usr/sbin/smf-spf (code=exited, status=0/SUCCESS)
 + Main PID: 19141 (smf-spf)
 +   CGroup: /system.slice/smf-spf.service
 +           └─19141 /usr/sbin/smf-spf
 +
 +Dec 17 14:05:12 vml000087.dmz.nausch.org systemd[1]: Started Sender Policy Framework milter
 +</code>
 +
 +
 +Im Maillog wird der Start des Daemon entsprechend dokumentiert.
 +   # less /var/log/maillog
 +
 +   Dec 17 14:05:12 vml000087 smf-spf[19140]: starting smf-spf 2.0.2 listening on inet:8890@127.0.0.1
 +   Dec 17 14:05:12 vml000087 smf-spf[19140]: running as uid: 993, gid: 99
 +
 +
 +Mit Hilfe von **netstat** können wir überprüfen, ob der Port **8890** geöffnet wurde.
 +   # netstat -tulpen
 +
 +<code>#Active Internet connections (only servers)
 +Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
 +tcp        0      0 0.0.0.0:25              0.0.0.0:              LISTEN      0          114172     19358/master        
 +tcp        0      0 127.0.0.1:8890          0.0.0.0:              LISTEN      993        112487     19141/smf-spf
 +</code>
 +
 +Gleiches können wir natürlich auch mit dem Befehl **lsof** erreichen.
 +   # lsof -i:8890
 +
 +   COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
 +   smf-spf 19141 smfs    4u  IPv4 112487      0t0  TCP localhost:rxapi (LISTEN)
 +
 +Damit der Daemon automatisch beim Hochfahren des Servers gestartet wird, nutzen wir folgenden Aufruf.
 +   # systemctl enable smf-spf.service
 +
 +   ln -s '/usr/lib/systemd/system/smf-spf.service' '/etc/systemd/system/multi-user.target.wants/smf-spf.service'
 +
 +Wollen wir überprüfen ob der Dienst automatisch startet, verwenden wir folgenden Aufruf. 
 +
 +   # systemctl is-enabled smf-spf.service
 +
 +   enabled
 +
 +Die Rückmeldung **enabled** zeigt an, dass der Dienst automatisch startet; ein **disabled** zeigt entsprechend an, dass der Dienst __nicht__ automatisch startet.
 +
 +==== 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 /var/log/maillog
 +
 +  Mar 26 14:27:32 vml000080 smf-spf[26416]: SPF pass: 200.46.208.138, lists.horde.org, lists.horde.org, <horde-bounces@lists.horde.org>
 +
 +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]: SPF none (cached): 72.26.200.202, mail.centos.org, mail.centos.org, <centos-bounces@centos.org>
 +
 +Natürlich wird ein Fehler beim Überprüfen des SPF-records auch im maillog vermerkt.
 +  Dec 15 14:39:49 vml000080 smf-spf[1501]: SPF fail: ip=88.217.171.167, fqdn=mx1.tachtler.net, helo=mx1.tachtler.net, from=<newsletter@aktuell.erwinmueller.de>
 +
 +Im Mailheader der empfangenen eMail findet sich dann auch die entsprechenden Einträge:
 +   Authentication-Results: mx01.nausch.org; spf=fail smtp.mailfrom=<newsletter@aktuell.erwinmueller.de> smtp.helo=mx1.tachtler.net
 +
 +Zum Testen des SPF-Records kann man auch auf Dienste im WWW zurückgreifen. So kann man seinen SPF-Record z.B. über den **[[http://spf.myisp.ch/|SPF Record Checker]]** überprüfen lassen.
  
 +{{ :centos:mail_c7:spf.myisp.ch.png?800 |Bild: Ergebnisseite eines SPF-Scans auf der Seite http://spf.myisp.ch/}}
  
 +Alternativ dazu bietet sich auch kitterman's **[[http://www.kitterman.com/spf/validate.html|SPF Record Testing Tools - SPF Query Tool]]** an.
 ===== SRS - Sender Rewriting Scheme ===== ===== SRS - Sender Rewriting Scheme =====
 Zu Beginn dieses Artikels wurde bereits darauf hingewiesen, dass mit unter Probleme bei Mailumleitungen und/oder WebFormularen auftauchen können. Mit **SRS**((**S**ender **R**ewriting **S**cheme)) kann ein Mailserver die eMail-Adresse im Envelop umschreiben und anpassen. Eine genauere Beschreibung zu SRS ist im Kapitel **[[centos:mail_c7:spam_11|SRS - Sender Rewriting Scheme]]** zu finden. Zu Beginn dieses Artikels wurde bereits darauf hingewiesen, dass mit unter Probleme bei Mailumleitungen und/oder WebFormularen auftauchen können. Mit **SRS**((**S**ender **R**ewriting **S**cheme)) kann ein Mailserver die eMail-Adresse im Envelop umschreiben und anpassen. Eine genauere Beschreibung zu SRS ist im Kapitel **[[centos:mail_c7:spam_11|SRS - Sender Rewriting Scheme]]** zu finden.
  
-FIXME+====== Links ====== 
 +  * **⇐ [[centos:mail_c7:start#spam-_und_virenschutz_mechanismen|Zurück zum Kapitel "SPAM- und Virenschutz Mechanismen unter CentOS 7"]]** 
 +  * **⇒ [[centos:mail_c7:spam_11|Weiter zum Kapitel "SRS - Sender Rewriting Scheme unter CentOS 7.x"]]** 
 +  * **[[centos:mail_c7:start|Zurück zum Kapitel >>Mailserverinstallation unter CentOS 7<<]]** 
 +  * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]** 
 +  * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
  
 +~~AUTOTWEET:~~
  
  
  
  • centos/mail_c7/spam_10.txt
  • Zuletzt geändert: 27.11.2022 20:56.
  • von django