In diesem Tutorial möchte ich Ihnen meine 7 Tipps zum Blockieren von E-Mail-Spam mit dem Postfix-SMTP-Server auf CentOS/RHEL mitteilen. In den letzten vier Jahren, in denen ich meinen eigenen E-Mail-Server betreibe, erhielt ich jede Menge Spam, auch bekannt als unerwünschte kommerzielle E-Mails. Spam existiert, weil es so billig ist, eine große Menge an E-Mails über das Internet zu versenden. Mit Postfix können Sie Spam blockieren, bevor er in Ihre Mailbox gelangt, sodass Sie Bandbreite und Speicherplatz sparen können.
Hinweis Hinweis:Wenn Sie vorhaben, Ihren eigenen Mailserver zu betreiben, empfehle ich die Verwendung von iRedmail, was die Einrichtung eines Mailservers wirklich vereinfacht. Es wird auch mit Anti-Spam-Regeln ausgeliefert. Wenn Sie es vorziehen, einen Mailserver von Grund auf neu einzurichten, dann schauen Sie sich meine Mailserver-Tutorial-Reihe an.
Merkmale von Spam
Unten ist, was ich über E-Mail-Spam gefunden habe. Diese Spam-Mails lassen sich leicht blockieren.
- Ihre IP-Adressen haben keine PTR-Einträge.
- Der Spammer gibt keinen gültigen Hostnamen in der HELO/EHLO-Klausel an.
- Sie fälschen MAIL FROM-Adresse.
- Im Allgemeinen senden sie E-Mails nach einer fehlgeschlagenen E-Mail-Zustellung nicht erneut.
Legitime E-Mail-Server sollten niemals diese Eigenschaften aufweisen. Hier kommen also meine 7 Tipps, die 90 % des Spams blockieren.
Tatsache:Rund 93 % bis 95 % der E-Mails weltweit werden am SMTP-Gateway abgelehnt und landen nie im Posteingang oder Spam-Ordner.
Tipp Nr. 1:E-Mail ablehnen, wenn der SMTP-Client keinen PTR-Eintrag hat
Der PTR-Eintrag ordnet eine IP-Adresse einem Domänennamen zu. Es ist das Gegenstück zum A-Record. Unter CentOS/RHEL können Sie den mit einer IP-Adresse verknüpften Domänennamen abfragen, indem Sie den folgenden Befehl ausführen:
host <IP address>
Wenn host
Befehl nicht gefunden werden kann, müssen Sie die bind-utils
installieren Paket.
sudo dnf install bind-utils
Der folgende Befehl gibt beispielsweise den Hostnamen meines Mailservers zurück.
host 23.254.225.226
Ausgabe:
226.225.254.23.in-addr.arpa domain name pointer mail.linuxbabe.com.
Aufgrund der Verbreitung von Spam verlangen viele Mailserver (wie Gmail, gmx.com, gmx.net, facebook.com), dass SMTP-Clients gültige PTR-Einträge haben, die mit ihren IP-Adressen verknüpft sind. Jeder Mailserver-Administrator sollte einen PTR-Eintrag für seine SMTP-Server festlegen. Wenn der SMTP-Client einen PTR-Eintrag hat, finden Sie eine Zeile im Postfix-Protokoll (/var/log/maillog)
wie unten.
connect from mail.linuxbabe.com[23.254.225.226]
Wenn der SMTP-Client keinen PTR-Eintrag hat, wird der Hostname als unknown
identifiziert im Postfix-Log.
connect from unknown[120.41.196.220]
Um E-Mails ohne PTR-Einträge herauszufiltern, öffnen Sie die Hauptkonfigurationsdatei von Postfix.
sudo nano /etc/postfix/main.cf
Fügen Sie die folgende Zeile in smtpd_sender_restrictions
hinzu . Diese Anweisung lehnt eine E-Mail ab, wenn die Client-IP-Adresse keinen PTR-Eintrag hat.
reject_unknown_reverse_client_hostname
Beispiel:
smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated reject_unknown_reverse_client_hostname
Speichern und schließen Sie die Datei. Starten Sie dann Postfix neu, damit die Änderung wirksam wird.
sudo systemctl restart postfix
Tipp Nr. 2:Aktivieren Sie HELO/EHLO-Hostnamenbeschränkungen in Postfix
Einige Spammer geben im SMTP-Dialogfeld keinen gültigen HELO/EHLO-Hostnamen an. Es kann sich um einen nicht vollständig qualifizierten Domänennamen handeln, oder ein Domänenname existiert nicht oder nur für das interne Netzwerk. Beispielsweise wird ein Spammer, der eine Amazon EC2-Instance zum Versenden von Spam verwendet, wie folgt auf meinem Server angemeldet:
Aug 16 04:21:13 email postfix/smtpd[7070]: connect from ec2-54-237-201-103.compute-1.amazonaws.com[54.237.201.103] Aug 16 04:21:13 email policyd-spf[7074]: prepend Received-SPF: None (mailfrom) identity=mailfrom; client-ip=54.237.201.103; helo=ip-172-30-0-149.ec2.internal; [email protected]; receiver=<UNKNOWN>
Wie Sie sehen, lautet der HELO-Hostname ip-172-30-0-149.ec2.internal
, die nur im internen AWS-Netzwerk gültig ist. Es hat keinen gültigen A-Record oder MX-Record.
Um die HELO/EHLO-Hostnamenbeschränkung zu aktivieren, bearbeiten Sie die Hauptkonfigurationsdatei von Postfix.
sudo nano /etc/postfix/main.cf
Fügen Sie zunächst die folgende Zeile hinzu, damit der Client einen HELO/EHLO-Hostnamen angeben muss.
smtpd_helo_required = yes
Fügen Sie dann die folgenden 3 Zeilen hinzu, um smtpd_helo_restrictions
zu aktivieren .
smtpd_helo_restrictions = permit_mynetworks permit_sasl_authenticated
Verwenden Sie die folgende Zeile, um Clients abzulehnen, die einen falsch formatierten HELO/EHLO-Hostnamen angeben.
reject_invalid_helo_hostname
Verwenden Sie die folgende Zeile, um nicht vollständig qualifizierte HELO/EHLO-Hostnamen abzulehnen.
reject_non_fqdn_helo_hostname
Um E-Mails abzulehnen, wenn der HELO/EHLO-Hostname weder einen DNS-A-Eintrag noch einen MX-Eintrag hat, verwenden Sie
reject_unknown_helo_hostname
So:
smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks permit_sasl_authenticated reject_invalid_helo_hostname reject_non_fqdn_helo_hostname reject_unknown_helo_hostname
Speichern und schließen Sie die Datei. Laden Sie dann Postfix neu.
sudo systemctl reload postfix
Beachten Sie, dass, obwohl die meisten seriösen Mailserver einen gültigen A-Eintrag für den HELO/EHLO-Hostnamen haben, gelegentlich ein seriöser Mailserver diese Anforderung nicht erfüllt. Sie müssen sie mit check_helo_access
auf die Whitelist setzen .
smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks permit_sasl_authenticated check_helo_access hash:/etc/postfix/helo_access reject_invalid_helo_hostname reject_non_fqdn_helo_hostname reject_unknown_helo_hostname
Dann müssen Sie den /etc/postfix/helo_access
erstellen Datei.
sudo nano /etc/postfix/helo_access
Whitelist den HELO/EHLO-Hostnamen des legitimen Mailservers wie unten.
optimus-webapi-prod-2.localdomain OK va-massmail-02.rakutenmarketing.com OK
Es ist wahrscheinlich, dass Sie nicht wissen, welche Hostnamen auf die Whitelist gesetzt werden sollen. Kopieren Sie dann einfach die beiden obigen Zeilen, die die einzigen Zeilen in meinem helo_access
sind Datei. Sie können später jederzeit weitere Hostnamen hinzufügen. Speichern und schließen Sie die Datei. Führen Sie dann den folgenden Befehl aus, um die Datei /etc/postfix/helo_access.db zu erstellen.
sudo postmap /etc/postfix/helo_access
Und Postfix neu laden.
sudo systemctl reload postfix
Tipp Nr. 3:E-Mail ablehnen, wenn der SMTP-Client-Hostname keinen gültigen A-Eintrag hat
Ein legitimer E-Mail-Server sollte auch einen gültigen A-Eintrag für seinen Hostnamen haben. Die vom A-Eintrag zurückgegebene IP-Adresse sollte mit der IP-Adresse des E-Mail-Servers übereinstimmen. Um E-Mails von Hosts herauszufiltern, die keinen gültigen A-Eintrag haben, bearbeiten Sie die Hauptkonfigurationsdatei von Postfix.
sudo nano /etc/postfix/main.cf
Fügen Sie die folgenden zwei Zeilen in smtpd_sender_restrictions
hinzu .
reject_unknown_reverse_client_hostname reject_unknown_client_hostname
Beispiel:
smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated reject_unknown_reverse_client_hostname reject_unknown_client_hostname
Speichern und schließen Sie die Datei. Starten Sie dann Postfix neu, damit die Änderung wirksam wird.
sudo systemctl restart postfixBeachten Sie, dass
reject_unknown_client_hostname
erfordert kein HELO vom SMTP-Client. Es ruft den Hostnamen aus dem PTR-Eintrag ab und überprüft dann den A-Eintrag. Tipp Nr. 4:E-Mail ablehnen, wenn MAIL FROM Domain weder einen MX-Eintrag noch einen Eintrag hat
Die MAIL FROM
Adresse wird auch als envelope from
bezeichnet die Anschrift. Einige Spammer verwenden eine nicht vorhandene Domain im MAIL FROM
die Anschrift. Wenn ein Domänenname keinen MX-Eintrag hat, findet Postfix den A-Eintrag der Hauptdomäne und sendet eine E-Mail an diesen Host. Wenn die Absenderdomäne weder einen MX-Eintrag noch einen A-Eintrag hat, kann Postfix keine E-Mails an diese Domäne senden. Warum also nicht E-Mails ablehnen, auf die Sie nicht antworten können?
Um diese Art von Spam herauszufiltern, bearbeiten Sie die Hauptkonfigurationsdatei von Postfix.
sudo nano /etc/postfix/main.cf
Fügen Sie die folgende Zeile in smtpd_sender_restrictions
hinzu . Es wird E-Mails ablehnen, wenn der Domänenname der Adresse, die mit dem MAIL FROM-Befehl angegeben wird, weder einen MX-Eintrag noch einen A-Eintrag hat.
reject_unknown_sender_domain
Beispiel:
smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated reject_unknown_sender_domain reject_unknown_reverse_client_hostname reject_unknown_client_hostname
Speichern und schließen Sie die Datei. Starten Sie dann Postfix neu, damit die Änderung wirksam wird.
sudo systemctl restart postfix
Beachten Sie, dass ich diese Einschränkung über andere reject
gestellt habe Einschränkungen. Aus meiner Erfahrung, wenn es unter anderem reject
ist Einschränkungen, es wird nicht funktionieren. (Vielleicht passiert das nur auf meinem E-Mail-Server.)
Tipp Nr. 5:Aktivieren Sie Greylisting in Postfix
Wie vom SMTP-Protokoll gefordert, muss jeder legitime SMTP-Client in der Lage sein, E-Mails erneut zu senden, wenn die Zustellung fehlschlägt. (Standardmäßig ist Postfix so konfiguriert, dass fehlgeschlagene E-Mails 4 bis 5 Tage lang erneut gesendet werden, bevor es den Absender darüber informiert, dass die Nachricht nicht zugestellt werden konnte.) Viele Spammer senden normalerweise nur einmal und versuchen es nicht erneut.
Postgrey
ist ein Greylisting-Richtlinienserver für Postfix. Benutzer von CentOS/RHEL können es aus dem EPEL-Repository installieren.
sudo dnf install epel-release sudo dnf install postgrey
Sobald es installiert ist, starten Sie es mit systemctl.
sudo systemctl start postgrey
Autostart beim Booten aktivieren.
sudo systemctl enable postgrey
Unter CentOS/RHEL lauscht Postgrey auf einem Unix-Socket (/var/spool/postfix/postgrey/socket
).
Als nächstes müssen wir die Hauptkonfigurationsdatei von Postfix bearbeiten, damit sie den Greylisting-Richtlinienserver verwendet.
sudo nano /etc/postfix/main.cf
Fügen Sie die folgende Zeile in smtpd_recipient_restrictions
hinzu .
check_policy_service unix:postgrey/socket
Falls Sie es nicht wissen, die Direktive check_policy_service unix:private/policyd-spf
im obigen Screenshot lässt Postfix den SPF-Eintrag auf der Domain des Absenders prüfen. Diese Anweisung erfordert, dass Sie das Paket pypolicyd-spf installieren und konfigurieren.
Speichern und schließen Sie die Datei. Starten Sie dann Postfix neu.
sudo systemctl restart postfix
Von nun an wird Postgrey eine E-Mail ablehnen, wenn das Absender-Triplet ist (IP-Adresse des Absenders, E-Mail-Adresse des Absenders, E-Mail-Adresse des Empfängers) ist neu. Die folgende Protokollnachricht in /var/log/maillog
zeigt ein neues Sendertripel. Die Aktion „greylist
” bedeutet, dass diese E-Mail-Nachricht abgelehnt wurde.
postgrey[1016]: action=greylist, reason=new, client_name=unknown, client_address=117.90.24.148/32, [email protected], [email protected]
Meiner Erfahrung nach verwenden chinesische E-Mail-Spammer gerne eine gefälschte, seltsam aussehende und zufällig generierte Absenderadresse für jede E-Mail, sodass das Hinzufügen dieser gefälschten E-Mail-Adressen zur schwarzen Liste sie nicht aufhalten wird. Andererseits versuchen sie nie, eine abgelehnte E-Mail mit derselben Absenderadresse erneut zu senden, was bedeutet, dass Greylisting diese Art von Spam sehr effektiv stoppen kann.
So minimieren Sie eine schlechte Benutzererfahrung
Greylisting kann zu einer schlechten Erfahrung für den Endbenutzer führen, da der Benutzer noch einige Minuten warten muss, bis die E-Mail ankommt. Um dieses schlechte Erlebnis zu minimieren, können Sie eine Whitelist erstellen und einen zweiten MX-Eintrag verwenden, der auf denselben Host verweist.
Weiße Liste
Postgrey wird mit zwei Whitelist-Dateien (/etc/postfix/postgrey_whitelist_clients
und /etc/postfix/postgrey_whitelist_recipients
). Ersteres enthält eine Liste von Hostnamen und letzteres eine Liste von Empfängeradressen.
Standardmäßig sind die Mailserver von Google auf der Whitelist. Unabhängig davon, ob der Absender eine @gmail.com-Adresse oder eine andere Adresse verwendet, lehnt Postgrey die E-Mail nicht ab, solange der Absender den Mailserver von Google verwendet. Die folgende Zeile in meinem /var/log/maillog
Datei zeigt dies.
postgrey[1032]: action=pass, reason=client whitelist, client_name=mail-yb0-f190.google.com
Hinweis :Sie können auch Postgrey-Protokolle mit diesem Befehl anzeigen sudo journalctl -u postgrey
.
Sie können andere Hostnamen in /etc/postfix/postgrey_whitelist_clients
hinzufügen Datei, wie
facebook.com bounce.twitter.com blogger.com email.medium.com
Sie können diese Hostnamen mit einem Tool namens pflogsumm
abrufen , auf die ich später in diesem Artikel eingehen werde. Speichern und schließen Sie die Datei und starten Sie Postgrey neu.
sudo systemctl restart postgrey
Erstellen Sie einen weiteren MX-Hostnamen mit derselben IP-Adresse
Sie können mehr als einen MX-Eintrag für Ihren Domainnamen wie unten angegeben angeben.
Record Type Name Mail Server Priority MX @ mail.yourdomain.com 0 MX @ mail2.yourdomain.com 5
Der Absender versucht es mit dem ersten Mailserver (mit Priorität 0). Wenn mail.ihredomain.com E-Mails per Greylisting ablehnt, würde der Absender sofort den zweiten Mailserver (mit Priorität 5) versuchen.
Wenn die beiden Mailserver-Hostnamen dieselbe IP-Adresse haben, wird die E-Mail sofort akzeptiert, wenn der Absender den zweiten Mailserver-Hostnamen versucht (wenn alle anderen Prüfungen bestanden werden), und die Endbenutzer werden die durch Greylisting verursachte E-Mail-Verzögerung nicht bemerken.
Beachten Sie, dass Sie dafür eine sehr kleine Verzögerungszeit wie 1 Sekunde in /etc/sysconfig/postgrey
einstellen müssen Datei wie unten. Die Verzögerungszeit teilt dem SMTP-Client mit, wie viele Sekunden er warten soll, bevor er erneut sendet. Wenn die Verzögerungszeit nicht klein genug ist, wird die zweite E-Mail-Zustellung trotzdem abgelehnt.
POSTGREY_DELAY="--delay=1"
Speichern und schließen Sie die Datei. Starten Sie dann Postgrey neu.
sudo systemctl restart postgrey
Beachten Sie, dass nicht alle Mailserver sofort den zweiten MX-Host ausprobieren würden.
Tipp Nr. 6:Verwenden öffentlicher Echtzeit-Blacklists
Es gibt Spam-E-Mails, die von Servern gesendet werden, die einen gültigen Hostnamen und einen gültigen PTR-Eintrag haben und Greylisting passieren können. In diesem Fall können Sie Spam mithilfe von Blacklists ablehnen. Es gibt viele öffentliche Echtzeit-Blacklists (RBL), auch bekannt als DNSBLs (DNS-basierte Listen). Echtzeit bedeutet, dass sich die Liste ständig ändert. Eine IP-Adresse oder ein Domänenname könnte heute auf der Liste stehen und morgen nicht mehr auf der Liste stehen, sodass Sie möglicherweise unterschiedliche Ergebnisse erhalten, je nachdem, wann Sie die Liste abfragen.
Sie können mehrere Blacklists verwenden, um Spam zu blockieren. Gehen Sie zu https://www.debouncer.com und mxtoolbox.com, geben Sie die Domain und IP-Adresse des Spammers ein, um zu sehen, welche Blacklists ihn blockieren, dann können Sie diese Blacklists verwenden. Ich habe zum Beispiel festgestellt, dass Spammer auf einer der folgenden schwarzen Listen stehen:
- dbl.spamhaus.org
- zen.spamhaus.org
- multi.uribl.com
- ivmURI
- Bewertungs-URI
So kann ich die folgenden Konfigurationen in /etc/postfix/main.cf
hinzufügen Datei. Einige öffentliche Blacklisting-Dienste erfordern eine monatliche Gebühr. Momentan nutze ich den kostenlosen Service von spamhaus.org.
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated check_policy_service unix:private/policyd-spf check_policy_service unix:postgrey/socket reject_rhsbl_helo dbl.spamhaus.org reject_rhsbl_reverse_client dbl.spamhaus.org reject_rhsbl_sender dbl.spamhaus.org reject_rbl_client zen.spamhaus.org
Wo:
rhs
steht für rechte Seite, also den Domainnamen.reject_rhsbl_helo
bewirkt, dass Postfix E-Mails ablehnt, wenn der HELO- oder EHLO-Hostname des Clients auf der schwarzen Liste steht.reject_rhsbl_reverse_client
:E-Mail ablehnen, wenn der nicht verifizierte Reverse-Client-Hostname auf der schwarzen Liste steht. Postfix ruft den Client-Hostnamen aus dem PTR-Eintrag ab. Wenn der Hostname auf der schwarzen Liste steht, lehnen Sie die E-Mail ab.reject_rhsbl_sender
bewirkt, dass Postfix E-Mails ablehnt, wenn die MAIL FROM-Domain auf der schwarzen Liste steht.reject_rbl_client
:Dies ist eine IP-basierte Blacklist. Wenn die Client-IP-Adresse auf der schwarzen Liste steht, lehnen Sie die E-Mail ab.
Einige Spammer verwenden den Mailserver von Google, also reject_rhsbl_helo
ist unwirksam, aber die meisten verwenden ihre eigenen Domänennamen im MAIL FROM-Header, also reject_rhsbl_sender
wird wirksam.
Erstellen Sie eine Whitelist
Manchmal stehen legitime E-Mail-Server auf der schwarzen Liste. Sie können eine Whitelist erstellen, damit sie nicht blockiert werden. Erstellen Sie die folgende Datei.
sudo nano /etc/postfix/rbl_override
Setzen Sie in dieser Datei Domänennamen wie unten auf die weiße Liste.
dripemail2.com OK //This domain belongs to drip.com mlsend.com OK //This domain belongs to mailerlite email marketing service
Speichern und schließen Sie die Datei. Führen Sie dann den folgenden Befehl aus, um rbl_override.db
zu erstellen Datei.
sudo postmap /etc/postfix/rbl_override
Postfix-Hauptkonfigurationsdatei bearbeiten.
sudo nano /etc/postfix/main.cf
In smtpd_recipient_restrictions
, fügen Sie die folgende Zeile hinzu.
check_client_access hash:/etc/postfix/rbl_override
Wie unten. Es sollte über anderen RBL-Prüfungen platziert werden.
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated check_policy_service unix:private/policyd-spf check_policy_service unix:postgrey/socket check_client_access hash:/etc/postfix/rbl_override reject_rhsbl_helo dbl.spamhaus.org reject_rhsbl_reverse_client dbl.spamhaus.org reject_rhsbl_sender dbl.spamhaus.org reject_rbl_client zen.spamhaus.org
Laden Sie Postfix neu, damit die Änderungen wirksam werden.
sudo systemctl reload postfix
Verwenden der öffentlichen Whitelist zur Reduzierung von Fehlalarmen
Das Pflegen einer privaten Whitelist ist manchmal notwendig, aber Sie können auch öffentliche Whitelists verwenden, von denen die bekannteste dnswl.org ist. Derzeit gibt es nur eine Whitelist für IP-Adressen. Die Whitelist für Domainnamen befindet sich in der Betaphase. Um es zu verwenden, fügen Sie die folgende Zeile in smtpd_recipient_restrictions
ein .
permit_dnswl_client list.dnswl.org=127.0.[0..255].[1..3]
Wie unten. Es sollte über dem reject_rbl_client
platziert werden prüfen.
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated check_policy_service unix:private/policyd-spf check_policy_service unix:postgrey/socket check_client_access hash:/etc/postfix/rbl_override reject_rhsbl_helo dbl.spamhaus.org reject_rhsbl_reverse_client dbl.spamhaus.org reject_rhsbl_sender dbl.spamhaus.org permit_dnswl_client list.dnswl.org=127.0.[0..255].[1..3] reject_rbl_client zen.spamhaus.org
Eine weitere bekannte Whitelist ist swl.spamhaus.org , sodass Sie es auch zu Ihrer Konfiguration hinzufügen können.
permit_dnswl_client swl.spamhaus.org
Es ist unmöglich, dass eine IP-Adresse gleichzeitig in der Spamhaus-Whitelist und -Blacklist aufgeführt wird. Wenn Sie also nur die Spamhaus-Blacklist in Postfix verwenden, ist es nicht erforderlich, mit der Spamhaus-Whitelist zu vergleichen.
Meine Postfix-Spamfilter
Hier ist ein Screenshot meiner Postfix-Spamfilter.
Postfix-Protokollbericht
Pflogsumm
ist ein großartiges Tool, um eine Zusammenfassung von Postfix-Protokollen zu erstellen. Unter CentOS/RHEL wird pflogsumm von den postfix-perl-scripts
bereitgestellt Paket.
sudo dnf install postfix-perl-scripts
Verwenden Sie den folgenden Befehl, um einen Bericht für heute zu erstellen.
sudo pflogsumm -d today /var/log/maillog
Erstellen Sie einen Bericht für gestern.
sudo pflogsumm -d yesterday /var/log/maillog
Wenn Sie einen Bericht für diese Woche erstellen möchten.
sudo pflogsumm /var/log/maillog
Verwenden Sie --problems-first
, um „Problem“-Berichte (Bounces, Verzögerungen, Warnungen, Ablehnungen) vor „normalen“ Statistiken auszugeben Flagge.
sudo pflogsumm -d today /var/log/maillog --problems-first
Verwenden Sie --rej-add-from
, um die E-Mail-Adresse des Absenders an jeden Eintrag im Ablehnungsbericht anzuhängen Flagge.
sudo pflogsumm -d today /var/log/maillog --rej-add-from
Um den vollständigen Grund in Ablehnungszusammenfassungen anzuzeigen, verwenden Sie --verbose-msg-detail
Flagge.
sudo pflogsumm -d today /var/log/maillog --rej-add-from --verbose-msg-detail
Sie können einen Cron-Job hinzufügen, um pflogsumm dazu zu bringen, jeden Tag einen Bericht an Ihre E-Mail-Adresse zu senden.
sudo crontab -e
Fügen Sie die folgende Zeile hinzu, die jeden Tag um 4:00 Uhr einen Bericht generiert.
0 4 * * * /usr/sbin/pflogsumm -d yesterday /var/log/maillog --problems-first --rej-add-from --verbose-msg-detail -q
Um den Bericht per E-Mail zu erhalten, fügen Sie die folgende Zeile über allen Cron-Jobs hinzu.
MAILTO="your-email-address"
Sie sollten auf die message reject detail
achten Abschnitt, in dem Sie sehen können, aus welchem Grund diese E-Mails abgelehnt werden und ob es Fehlalarme gibt. Greylisting-Ablehnungen können getrost ignoriert werden.
Wenn die MAILTO-Variable bereits gesetzt wurde, Sie aber möchten, dass die Postfix-Protokollzusammenfassung an eine andere E-Mail-Adresse gesendet wird, können Sie die folgende Zeile in Ihren Cron-Job einfügen.
0 4 * * * /usr/sbin/pflogsumm -d yesterday /var/log/maillog --problems-first --rej-add-from --verbose-msg-detail -q | mutt -s "Postfix log summary" your-email-address
Die Ausgabe von pflogsumm
Der Befehl wird an mutt
umgeleitet , ein Befehlszeilen-E-Mail-Benutzeragent, der die Ausgabe als E-Mail-Text verwendet und an die E-Mail-Adresse sendet, die Sie am Ende angeben. Natürlich müssen Sie Mutt auf Ihrem CentOS/RHEL-Server installieren.
sudo dnf install mutt
Tipp Nr. 7:Richten Sie OpenDMARC ein, um E-Mails abzulehnen, die die DMARC-Prüfung nicht bestehen
DMARC (Domain-based Message Authentication, Reporting, and Conformance) ist ein Internetstandard, der es Domänenbesitzern ermöglicht, zu verhindern, dass ihre Domänennamen von E-Mail-Spoofern verwendet werden. Bitte lesen Sie eine der folgenden Anleitungen, um OpenDMARC einzurichten.
- Richten Sie OpenDMARC mit Postfix auf CentOS/RHEL ein, um E-Mail-Spoofing zu blockieren
Lokalen DNS-Resolver ausführen, um DNS-Lookups zu beschleunigen
Wie Sie sehen können, muss Postfix DNS-Einträge nachschlagen, um jeden SMTP-Dialog zu analysieren. Um DNS-Lookups zu beschleunigen, können Sie einen lokalen DNS-Resolver ausführen. Und die meisten DNS-Blacklists haben ein Abfragelimit. Das Ausführen Ihres eigenen lokalen DNS-Resolvers zum Zwischenspeichern von DNS-Einträgen kann Ihnen dabei helfen, das Abfragelimit zu unterschreiten.
Wir können den bind9 DNS-Server installieren.
sudo dnf install bind
Starten Sie BIND 9 mit:
sudo systemctl start named
Und aktivieren Sie den automatischen Start beim Booten:
sudo systemctl enable named
Sie können den Status überprüfen mit:
systemctl status named
Beispielausgabe:
● named.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disable> Active: active (running) since Sun 2020-05-17 11:07:34 EDT; 9s ago Process: 7203 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TE> Process: 7218 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited,> Process: 7215 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; the> Main PID: 7220 (named) Tasks: 4 (limit: 5045) Memory: 55.5M CGroup: /system.slice/named.service └─7220 /usr/sbin/named -u named -c /etc/named.conf -4
Tipp:Wenn der obige Befehl nicht sofort beendet wird, drücken Sie Q.
Festlegen des Standard-DNS-Resolvers auf dem CentOS-/RHEL-Mailserver
Wir müssen 127.0.0.1 als Standard-DNS-Resolver festlegen. Sie können den aktuellen DNS-Resolver auf CentOS/RHEL mit dem folgenden Befehl überprüfen.
cat /etc/resolv.conf
Beispielausgabe:
# Generated by NetworkManager nameserver 192.168.0.1 nameserver 8.8.8.8
Um BIND als Standard-Resolver festzulegen, müssen Sie zuerst den Namen Ihrer Hauptnetzwerkschnittstelle mit dem folgenden Befehl finden.
ip addr
Meine ist ens3
. Führen Sie als Nächstes den folgenden Befehl aus, um die Konfigurationsdatei der Netzwerkschnittstelle zu bearbeiten. Ersetzen Sie ens3
mit Ihrem eigenen Schnittstellennamen.
sudo nano /etc/sysconfig/network-scripts/ifcfg-ens3
Suchen Sie den DNS1
Parameter und ändern Sie seinen Wert in 127.0.0.1
. Beachten Sie, dass Sie, wenn Werte für andere Parameter in dieser Datei in doppelte Anführungszeichen eingeschlossen sind, auch 127.0.0.1
umschließen müssen mit doppelten Anführungszeichen.
DNS1="127.0.0.1"
Wenn Sie DNS1
nicht finden können Parameter, und fügen Sie dann die obige Zeile am Ende dieser Datei hinzu. Es wird empfohlen, einen sekundären DNS-Resolver anzugeben, indem Sie dieser Datei die folgende Zeile hinzufügen, um die Wahrscheinlichkeit eines DNS-Ausfalls zu verringern.
DNS2="8.8.8.8"
Speichern und schließen Sie die Datei. Starten Sie dann NetworkManager neu, damit die Änderung wirksam wird.
sudo systemctl restart NetworkManager
Sie können nun den Inhalt von /etc/resolv.conf
prüfen wieder. Wie Sie sehen können, ist 127.0.0.1 (BIND) jetzt der Standard-DNS-Resolver auf CentOS/RHEL.
Wie man IPv6 in BIND deaktiviert
Wenn Ihr Mailserver keine öffentliche IPv6-Adresse hat, dann ist es eine gute Idee, IPv6 in BIND auszuschalten, da es sonst viele Fehler zu IPv6 im BIND-Log geben wird, wie unten gezeigt.
network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53 network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53 network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53 network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53
Um IPv6 in BIND auf CentOS/RHEL zu deaktivieren, öffnen Sie einfach die Datei /etc/sysconfig/named Datei
sudo nano /etc/sysconfig/named
Und fügen Sie die folgende Zeile am Ende der Datei hinzu.
OPTIONS="-4"
Speichern und schließen Sie die Datei. Danach named neu starten und fertig.
sudo systemctl restart named
Führen Sie nun den folgenden Befehl aus. Sie können sehen, dass BIND die IPv6-Adresse nicht mehr abhört.
sudo netstat -lnptu | grep named
Postfix-Reverse-DNS-Lookup-Fehler
Wenn Ihr Postfix-SMTP-Server in einer Chroot-Umgebung ausgeführt wird, ist er möglicherweise nicht in der Lage, eine umgekehrte DNS-Suche durchzuführen. In diesem Fall wird eine IP-Adresse mit PTR-Eintrag immer noch als unknown
identifiziert .
postfix/smtpd[14734]: connect from unknown[23.254.225.226]
Um dies zu beheben, müssen wir Bibliotheken kopieren, die für Reverse-DNS-Lookup innerhalb der Chroot-Umgebung benötigt werden.
sudo mkdir /var/spool/postfix/lib64 sudo cp -vl /usr/lib64/libnss_* /var/spool/postfix/lib64
Starten Sie dann Postfix neu.
sudo systemctl restart postfix
Nächster Schritt
Ich hoffe, diese 7 Anti-Spam-Maßnahmen von Postfix haben Ihnen geholfen, E-Mail-Spam zu blockieren. Sie können auch einen Inhaltsfilter wie SpamAssassin einsetzen, um Spam besser zu erkennen.
- SpamAssassin auf CentOS/RHEL einrichten, um E-Mail-Spam zu blockieren
Wenn Sie diesen Beitrag nützlich fanden, abonnieren Sie wie immer unseren kostenlosen Newsletter, um weitere Tipps und Tricks zu erhalten. Pass auf dich auf 🙂