Die 7 effektivsten Tipps zum Blockieren von E-Mail-Spam mit Postfix auf CentOS/RHEL
15:59, 15.12.2023
Was bedeutet E-Mail-Spam eigentlich? Wie funktioniert er? Warum bekommen Sie so viel Spam?
Kurz gesagt, E-Mail-Spam ist unerwünschte E-Mail. Ein ständig überfüllter persönlicher Posteingang kann frustrierend sein. Außerdem können nutzlose oder betrügerische E-Mails, die zum Spam-Konzept gehören, Ihr Unternehmen auf lange Sicht Geld kosten.
Viele Tools können Ihnen bei der effektiven Bekämpfung von Spam helfen, darunter Postfix.
Der Postfix SMTP-Server auf CentOS/RHEL ermöglicht es, Spam-Mails zu blockieren, bevor sie den Posteingang erreichen.
Sehen wir uns an, was Spam ist und wie man ihn mit Postfix auf CentOS/RHEL stoppen kann.
Verständnis von Spam
Bei E-Mail-Spam handelt es sich im Grunde um unerwünschte E-Mails, die der Nutzer über seine E-Mail-Adresse erhält. Leider ist E-Mail-Spam kein neues Konzept, denn es gibt ihn schon seit einiger Zeit. Es gibt Milliarden von Spam-E-Mails, die Nutzer täglich erhalten.
E-Mail-Spam wird häufig mit Hilfe von Software, die automatisch E-Mails generiert und versendet, an eine große Gruppe von Personen verschickt. E-Mail-Spam kann aber auch manuell versendet werden.
Es gibt gängige Arten von E-Mail-Spam, darunter:
- Werbe-E-Mails. In solchen E-Mails werden kommerzielle Produkte oder Dienstleistungen gegen eine Provision des Werbenden beworben. E-Mail-Spam kann Links zu Websites mit ähnlichem Inhalt oder Angebote von Waren und Dienstleistungen enthalten, die nicht direkt mit Ihren Interessen in Verbindung stehen.
- Viren. Viren sind bösartige Programme, die das Betriebssystem infizieren und persönliche Daten stehlen. E-Mail-Viren können bösartigen Code enthalten, der das System infiziert.
- Phishing-E-Mails. Beim Phishing werden betrügerische E-Mails verschickt, die darauf abzielen, die Benutzer zur Preisgabe ihrer privaten oder finanziellen Daten zu verleiten, damit die Betrüger sie für ihre Zwecke nutzen können. Phishing-E-Mails enthalten in der Regel einen Link zu einer anderen Website.
Auch hier verwenden Spammer oft automatisierte Programme (Bots), um Tausende von E-Mails auf einmal zu versenden. Das bedeutet, dass einige E-Mails in Ihrem Posteingang landen können, auch wenn Sie sich nie für Newsletter oder Werbeaktionen angemeldet haben.
Tipp Nr. 1: Erfordern Sie PTR-Einträge für SMTP-Clients
PTR-Datensätze oder Pointer-Datensätze sind umgekehrte DNS-Datensätze, die für die DNS-Suche verwendet werden.
Im Domain Name System (DNS) werden die Daten der registrierten Domains gespeichert. Wenn Sie die Registrierungen einsehen wollen, führen Sie eine DNS-Abfrage durch. Browser tun dies in der Regel, wenn Benutzer ihre E-Mail-Adressen eingeben, und erhalten dadurch die IP-Adresse eines Mail-Servers. Das Ergebnis einer solchen Abfrage ist normalerweise ein A-Eintrag.
Eine umgekehrte DNS-Abfrage liegt vor, wenn der Server die Domäne über eine IP-Adresse erhält. Das Ergebnis einer solchen Abfrage ist ein PTR-Eintrag.
Warum sind PTR-Einträge also so wichtig? Auf dem Weg zum E-Mail-Posteingang durchläuft die E-Mail Server. Dabei führen die E-Mail-Anbieter DNS- und Reverse-DNS-Abfragen durch. Wenn diese nicht übereinstimmen, wird eine E-Mail als Spam eingestuft. Daher verlangen E-Mail-Anbieter, dass SMTP-Clients über die richtigen PTR-Einträge verfügen; normalerweise ist dies die Aufgabe eines SMTP-Server-Administrators.
Nun können Sie selbst einen Reverse-DNS-Lookup durchführen. Fragen Sie dazu den folgenden Befehl unter CentOS/RHEL ab, um den Domänennamen und die IP-Adresse zu erhalten:
host <IP address>
Viele Mailserver verlangen gültige PTR-Einträge, die mit den IP-Adressen übereinstimmen. Wenn dies der Fall ist, wird im Postfix-Protokoll (/var/log/maillog) die folgende Zeile angezeigt, wenn der SMTP-Client PTR-Einträge hat:
Verbinden von "Hostname" [IP-Adresse]
Wenn die IP-Adresse des SMTP-Clients keine PTR-Einträge hat, steht im Postfix-Protokoll "unknown" anstelle eines "hostname".
Sie können E-Mails, die nicht mit PTR-Einträgen verknüpft sind, über Postfix filtern. Dazu müssen Sie die Postfix-Konfigurationsdatei mit dem folgenden Befehl öffnen:
sudo nano /etc/postfix/main.cf
Dann müssen Sie in den "smtpd_sender_restrictions" hinzufügen:
reject_unknown_reverse_client_hostname
Anschließend müssen Sie Postfix speichern und neu starten, damit die Änderungen wirksam werden:
sudo systemctl restart postfix
Tipp Nr. 2: Implementieren Sie HELO/EHLO-Hostnamen-Beschränkungen
Das EHLO-Verfahren ermöglicht es einem Client, sich dem SMTP-Server vorzustellen. Das HELO-Verfahren ist dem EHLO-Verfahren sehr ähnlich, übermittelt aber weniger Daten an den Server.
So kann es vorkommen, dass im SMTP-Dialog ein nicht existierender oder ein nicht voll funktionsfähiger Domänenname angegeben wird; dies deutet höchstwahrscheinlich auf eine E-Mail von Spammern hin. Sie müssen die Postfix-Konfigurationsdatei bearbeiten, um HELO/EHLO-Beschränkungen zu aktivieren:
sudo nano /etc/postfix/main.cf
Damit der Client eine Hostname-Abfrage stellen kann, muss Folgendes geschehen:
smtpd_helo_required = ja
Um Einschränkungen zu aktivieren, fügen Sie hinzu:
smtpd_helo_restrictions =
zulassungs_mynetworks
permit_sasl_authenticated
Wenn Sie Clients abweisen möchten, die einen ungültigen Hostnamen angeben, verwenden Sie diesen Befehl:
reject_invalid_helo_hostname
Um eine E-Mail abzulehnen, für die keine Datensätze vorhanden sind, verwenden Sie:
reject_unknown_helo_hostname
Zusammenfassend lässt sich sagen, dass alle Instanzen, die Sie ablehnen können, in etwa so aussehen werden:
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_invalid_helo_hostname
reject_unknown_helo_hostname
Speichern Sie dann die Datei und starten Sie Postfix neu:
sudo systemctl reload Postfix
Manchmal müssen auch legitime Mailserver die HELO/EHLO-Standards erfüllen. Um Fehler mit Postfix zu vermeiden, müssen Sie diese Server auf eine Whitelist setzen:
check_helo_access hash:/etc/postfix/helo_access
Dann erstellen Sie die Datei /etc/postfix/helo_access mit:
sudo nano /etc/postfix/helo_access
Das Beispiel einer Whitelist kann wie folgt aussehen:
optimus-webapi-prod-2.localdomain OK
va-massmail-02.rakutenmarketing.com OK
Nachdem Sie die Server in die Liste aufgenommen haben, erstellen Sie die Datei /etc/postfix/helo_access.db:
sudo postmap /etc/postfix/helo_access
Dann laden Sie Postfix neu:
sudo systemctl reload Postfix
Tipp Nr. 3: Überprüfen Sie A-Einträge für SMTP-Client-Hostnamen
Spam-Server haben oft keine gültigen A-Einträge zu ihren IP-Adressen. Sie können IP-Adressen ohne A-Records herausfiltern, indem Sie die Postfix-Konfigurationsdatei wie in den vorherigen Beispielen bearbeiten.
Fügen Sie die folgenden Befehle in den Abschnitt "smtpd_sender_restrictions" ein:
reject_unknown_reverse_client_hostname reject_unknown_client_hostname
Speichern Sie die Konfigurationsdatei und starten Sie Postfix neu.
Beachten Sie, dass die beiden genannten Befehle die betrügerischen HELO/EHLO-Hostnamen nicht zurückweisen.
Tipp Nr. 4: Ablehnen von E-Mails mit unzureichenden MX- oder A-Einträgen
MX steht für "Mail From"-Adresse, die auch als "Envelope From"-Adresse bezeichnet wird.
Manchmal wird E-Mail-Spam von nicht existierenden Domänen in der Absenderadresse gesendet, die überhaupt keine Einträge haben. Wenn die Domäne des Absenders keine Einträge hat, kann Postfix keine E-Mails an diese Domäne senden, so dass Sie die E-Mail ablehnen können.
Um diese Art von E-Mail-Spam zu blockieren, müssen Sie die Postfix-Konfigurationsdatei erneut bearbeiten, ähnlich wie in den vorherigen Tipps beschrieben.
Um E-Mails vom Domainnamen von einer Adresse abzulehnen, die weder MX- noch A-Einträge hat, fügen Sie Folgendes zum Abschnitt "smtpd_sender_restrictions" hinzu:
reject_unknown_sender_domain
Der Domänenname der Adresse, für die keine Einträge vorhanden sind, wird abgelehnt.
Das kann folgendermaßen aussehen:
smtpd_sender_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unknown_sender_domain
reject_unknown_reverse_client_hostname
reject_unknown_client_hostname
Speichern Sie dann die Datei und starten Sie Postfix neu.
Es ist besser, den Befehl reject_unknown_sender_domain über alle anderen "reject"-Befehle zu stellen, um Probleme zu vermeiden.
Tipp Nr. 5: Einsatz von Greylisting mit Postfix
Greylisting ist eine Technik zur Abwehr von E-Mail-Spam, die jeden Mailserver ablehnt, der der Greylisting-Funktion nicht bekannt ist. Wenn der sendende Server nicht betrügerisch ist, sendet er die E-Mail erneut. Die meisten Spammer senden die E-Mail jedoch nicht erneut. Daher wird der Spam blockiert. Durch die Greylisting-Funktion werden Server, die E-Mails erneut versenden, in die Liste aufgenommen und werden in Zukunft nicht mehr unterbrochen; die Greylisting-Funktion verhindert, dass Server, die keine E-Mails erneut versenden, ihre Aktivitäten fortsetzen.
Um die Greylisting-Funktion mit Postfix einzusetzen, müssen Sie auf den Postgrey-Dienst zugreifen. Für CentOS/RHEL-Benutzer ist die Postgrey-Installation über das EPEL-Repository verfügbar. Nach der Installation geben Sie den folgenden Befehl mit ein:
sudo systemctl start postgrey
und starten Sie es:
sudo systemctl enable postgrey
Dann müssen Sie die Postgrey-Konfigurationsdatei bearbeiten, um den Greylisting-Server zu verwenden:
sudo nano /etc/postfix/main.cf
In "smtpd_recipient_restrictions" fügen Sie Folgendes hinzu:
check_policy_service unix:postgrey/socket
Speichern Sie und starten Sie Postfix neu.
Auf diese Weise wird Postgrey den Zugriff von der neuen Absender-IP-Adresse, Absender-E-Mail-Adresse oder Empfänger-E-Mail-Adresse ablehnen. Das Versenden von gefälschten E-Mail-Adressen kann zufällig generierte Adressen nicht verhindern. Allerdings senden Spammer mit gefälschten Adressen nie wieder E-Mails; auf diese Weise könnte sich die Greylisting-Funktion als nützlich erweisen.
Tipp Nr. 6: Verwenden Sie öffentliche Echtzeit-Blacklists
Manchmal können betrügerische E-Mails die Greylists passieren, wobei Hostname und Datensätze überprüft werden, aber es kann sich trotzdem um E-Mail-Spam handeln. Die folgende Maßnahme zur Zurückweisung von E-Mail-Spam wäre in solchen Fällen die Erstellung von schwarzen Listen. Öffentliche Blacklists in Echtzeit bedeuten, dass diese Blacklists ständig aktualisiert werden.
Sie können verschiedene schwarze Listen verwenden, um E-Mail-Spam zu blockieren. Dazu müssen Sie herausfinden, welche Blacklists die Domänennamen der Spammer blockieren, und diese verwenden. Um abzufragen, welche Blacklists die Domänennamen von E-Mail-Spammern enthalten, können Sie die Websites MXToolBox und Debouncer besuchen.
Um Blacklists zu verwenden, fügen Sie in der Datei /etc/postfix/main.cf Folgendes hinzu
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
check_policy_service unix:private/policyd-spf
check_policy_service unix:postgrey/socket
reject_rhsbl_helo … (the blacklist)
reject_rhsbl_reverse_client … (the blacklist)
reject_rhsbl_sender … (the blacklist)
reject_rbl_client … (the blacklist)
Bei Spammern, die den Google-Mailserver verwenden, wird "reject_rhsbl_helo" nicht wirksam sein. In den meisten Fällen ist "reject_rhsbl_sender" ausreichend.
Tipp Nr. 7: Erhöhen Sie die Sicherheit mit OpenDMARC
Domain-based Message Authentication, Reporting, and Conformance, kurz DMARC, ist ein Internet-Standard, der E-Mail-Betrüger daran hindert, fremde Domains für Spam zu nutzen.
Für die Einrichtung von OpenDMARC benötigen Sie die DKIN-Verifikation und OpenDKIM. Die weiteren Schritte beschreiben die Installation und Konfiguration von OpenDMARC auf CentOS/RHEL.
Zunächst müssen Sie OpenDMARC installieren, was Sie über das EPEL-Repository tun können:
sudo dnf install epel-release
sudo dnf install opendmarc
Starten Sie OpenDMARC (1) und stellen Sie sicher, dass es läuft (2):
(1) sudo systemctl start opendmarc
(2) systemctl status opendmarc
Öffnen und bearbeiten Sie anschließend die Konfigurationsdatei:
sudo nano /etc/opendmarc.conf
Ändern Sie die: "# AuthservID name" in "AuthservID OpenDMARC".
Geben Sie in der folgenden Zeile Ihren Postfix-Hostnamen ein:
VertrauenswürdigeAuthservIDs mail.ihredomain.de
Suchen Sie dann die folgende Zeile und ändern Sie "false" in "true":
# IgnoreAuthenticatedClients false
Tun Sie dasselbe in den folgenden Zeilen:
# RejectFailures false
# RequiredHeaders false
Speichern Sie die Datei und starten Sie OpenDMARC neu, damit die Änderungen wirksam werden.
Beschleunigung von DNS-Suchvorgängen mit einem lokalen Resolver
Postfix führt eine Abfrage der DNS-Einträge durch, und dieser Vorgang kann eine Weile dauern. Um diesen Vorgang zu beschleunigen, können Sie einen lokalen DNS-Resolver verwenden (da die meisten DNS-Listen Abfragebeschränkungen haben). In diesem Beispiel wird der DNS-Server bind9 verwendet.
Installieren Sie den bind9 DNS-Server:
sudo dnf install bind
Und lass es laufen:
sudo systemctl start named
Aktivieren Sie den Autostart beim Booten:
sudo systemctl enable named
Konfigurieren des Standard-DNS-Auflösers für CentOS/RHEL Mail Server
Der Standard-DNS-Auflöser kann variieren, aber Sie müssen ihn auf 127.0.0.1 einstellen.
Zunächst müssen Sie den Namen Ihres Netzwerks kennen:
ip addr
Als nächstes müssen Sie die Konfigurationsdatei bearbeiten und den Namen Ihres Netzwerks eingeben:
sudo nano /etc/sysconfig/network-scripts/ifcfg-Name des Netzwerks
Suchen Sie dann den DNS-Parameter und ändern Sie ihn in 127.0.0.1:
DNS1="127.0.0.1"
Speichern Sie und starten Sie den NetworkManager neu.
Deaktivieren von IPv6 in BIND
Um Fehler mit dem BIND-Protokoll zu vermeiden, ist es besser, IPv6 zu deaktivieren, wenn Ihr Mailserver keine öffentliche IPv6-Adresse hat.
Öffnen Sie zunächst die Konfigurationsdatei.
sudo nano /etc/sysconfig/named
Fügen Sie am Ende der Datei Folgendes hinzu:
OPTIONS= "-4"
Speichern Sie die Datei und starten Sie neu:
sudo systemctl restart named
Führen Sie den folgenden Befehl aus:
sudo netstat -lnptu | grep named