Die 7 effektivsten Tipps zum Blockieren von E-Mail-Spam mit Postfix auf CentOS/RHEL

Die 7 effektivsten Tipps zum Blockieren von E-Mail-Spam mit Postfix auf CentOS/RHEL

15.12.2023
Autor: HostZealot Team
2 min.
209

​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
Verwandte Artikel