GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

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

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.

  1. Ihre IP-Adressen haben keine PTR-Einträge.
  2. Der Spammer gibt keinen gültigen Hostnamen in der HELO/EHLO-Klausel an.
  3. Sie fälschen MAIL FROM-Adresse.
  4. 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 postfix
Beachten 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 🙂


Cent OS
  1. Top 7 Tipps zur Sicherheitshärtung für CentOS 8 / RHEL 8 Server

  2. Blockieren von internationalen Spam-Botnets mit einem Postfix-Plugin

  3. So installieren Sie phpMyAdmin mit Nginx unter CentOS 7 / RHEL 7

  4. Linux-Betriebssystem kann nicht mit Auditd (CentOS/RHEL) gestartet werden

  5. Anmeldung mit GUI unter CentOS/RHEL 7 nicht möglich

So installieren Sie phpMyAdmin mit Apache unter CentOS 8 / RHEL 8

So schützen Sie E-Mail-Server vor Hacking mit VPN (CentOS/RHEL)

Richten Sie SpamAssassin auf CentOS/RHEL ein, um E-Mail-Spam zu blockieren

Richten Sie OpenDMARC mit Postfix auf CentOS/RHEL ein, um E-Mail-Spoofing zu blockieren

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

Installieren Sie Ruby auf CentOS/RHEL 8 mit 3 verschiedenen Methoden