Spam Bekämpfung · 5 min read · Nov 12, 2025
Wie man Spam mit der Postfix-Konfiguration bekämpft
Wie man Spam mit der Postfix-Konfiguration bekämpft
In diesem Leitfaden lernen Sie, wie Sie den Standard-Falko-Mail-Leitfaden für Postfix (+Auth SMTP + Quota), https://www.howtoforge.com/virtual_postfix_mysql_quota_courier, anpassen, um SPAM besser zu bekämpfen und ein wenig Rückwärtskompatibilität zu den älteren Qmail-Systemen zu ermöglichen.
Also, lassen Sie uns anfangen…
Der HowtoForge-Leitfaden ist großartig für alles, jedoch ist ein sehr beschäftigter Mailserver, der Spam Assasin mit 1000 Nachrichten pro Minute ausführt, ein CPU-Killer. Die beste Antwort ist, die Mail zu stoppen, bevor sie Spam Assasin erreicht, mit einer Reihe von RBL (Realtime Blacklists) und RHBL (das Gleiche, aber anders), Greylistings und Helo-Checks.
Zuerst wollen wir die bestehenden smtpd-Einschränkungen ändern und eine ganze Reihe neuer Prüfungen hinzufügen, um die Menge an Mail, die das System akzeptiert, zu reduzieren in /etc/postfix/main.cf
### Prüfungen, um schlecht formatierte E-Mails zu entfernen
smtpd_helo_required = yes
strict_rfc821_envelopes = yes
disable_vrfy_command = yes
unknown_address_reject_code = 554
unknown_hostname_reject_code = 554
unknown_client_reject_code = 554
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, regexp:/etc/postfix/helo.regexp, permit
### Wenn sender_checks geändert werden, muss diese Datei mit postmap regeneriert werden, um eine Berkeley DB zu generieren
smtpd_recipient_restrictions =
check_client_access hash:/etc/postfix/helo_client_exceptions
check_sender_access hash:/etc/postfix/sender_checks,
reject_invalid_hostname,
### Kann Probleme mit Auth SMTP verursachen, also seien Sie vorsichtig!
reject_non_fqdn_hostname,
##################################
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
permit_mynetworks,
reject_unauth_destination,
# Fügen Sie hier RBL-Ausnahmen hinzu, wenn rbl_client_exceptions geändert wird, muss diese
Datei mit postmap regeneriert werden, um eine
Berkeley DB zu generieren
check_client_access hash:/etc/postfix/rbl_client_exceptions,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rhsbl_sender dsn.rfc-ignorant.org,
check_policy_service inet:127.0.0.1:60000
permit Jetzt zur Erklärung, aber zuerst müssen wir ein paar Dateien erstellen:
Die erste Datei, die wir erstellen möchten, ist /etc/postfix/helo.regexp und diese wird enthalten:
/^subdomain\.host\.com$/ 550 Verwenden Sie nicht meinen eigenen Hostnamen
/^xxx\.yyy\.zzz\.xxx$/ 550 Verwenden Sie nicht meine eigene IP-Adresse
/^\[xxx\.yyy\.zzz\.xxx\]$/ 550 Verwenden Sie nicht meine eigene IP-Adresse
/^[0-9.]+$/ 550 Ihre Software entspricht nicht RFC 2821
/^[0-9]+(\.[0-9]+){3}$/ 550 Ihre Software entspricht nicht RFC 2821Allein dies wird Spammer abweisen, die versuchen, den helo-Befehl zu senden und entweder den Server, der die Mail empfängt, durch IP oder durch Hostnamen zu impersonieren, sowie einige der Mails abzulehnen, die nicht den RFC 2821-Standards entsprechen.
Als Nächstes müssen wir /etc/postfix/helo_client_exceptions erstellen:
#Diese Client-IP-Adressen dürfen fqdn-Prüfungen umgehen
# Ein Kommentar zur Identifizierung der untenstehenden IP-Adresse
www.xxx.yyy.zzz OK Diese Datei wird benötigt, falls ein schlecht funktionierender Mailserver den richtigen helo-Befehl nicht senden kann und Sie die Annahme von Mails aus dieser Quelle zulassen müssen. Nach meiner Erfahrung sind Dinge wie Standalone-Geräte, CCTV-Kameras schlecht darin, Standards einzuhalten, sodass Sie möglicherweise eine Ausnahme dafür machen müssen.
Bevor Änderungen in dieser Datei verwendbar werden, müssen Sie ausführen
postmap /etc/postfix/helo_client_exceptions
Dies wird eine Datei namens /etc/postfix/helo_client_exceptions.db erstellen
Weiter geht es mit /etc/postfix/sender_checks, das es Ihnen ermöglicht, die verschiedenen FQDN-Prüfungen zu umgehen und einen bestimmten Absender durchzulassen. Dies ist besonders nützlich, wenn ein Unternehmen ein internes Mailnetzwerk wie domain.com betreibt, aber E-Mails auf int.domain.com laufen und es keine DNS-Einrichtung für int.domain.com gibt. Dies ist großartig für die Sicherheit, aber nicht großartig, da externe DNS nicht über die interne Struktur informiert ist und Postfix daher int.domain.com ablehnen wird.
[email protected] REJECT
[email protected] OK Einmal mehr muss diese Datei nach der Änderung eine Berkeley DB-Datei erstellt werden, und so erstellen wir sie mit:
postmap /etc/postfix/sender_checks
Als Nächstes haben wir unsere RBL-Prüfungen. Es gibt viele Websites, die sich RBLs widmen, aber um die Länge des Artikels zu verkürzen, einfach gesagt, diese Listen werden ständig aktualisiert und bieten IPs und Hostnamen, die Spammer verwenden, um Mails weiterzuleiten. Jede IP, die versucht, Mail an Ihren Mailserver zu senden, wird gegen diese Listen (4 oben verwendet) überprüft, und wenn die IP nicht in den RBLs aufgeführt ist, akzeptiert der Mailserver die Mail. Natürlich finden sich Server ständig unbeabsichtigt auf diesen Listen oder die Listen benötigen 24 Stunden, um die auf die schwarze Liste gesetzte IP nach einem Spam-Ausbruch zu entfernen, sodass es immer am besten ist, erneut eine Möglichkeit zu haben, diese Prüfungen zu umgehen.
Um dies zu tun, erstellen wir eine Datei namens /etc/postfix/rbl_client_exceptions:
## Ein zufälliger Kommentar
www.xxx.yyy.zzz OK
Einmal mehr müssen Sie postmap ausführen, um die Berkeley DB-Datei zu generieren
postmap /etc/postfix/rbl_client_exceptions
Die letzte Zeile der smtpd-Einschränkungen ist der Greylisting-Filter. Ich werde nicht ins Detail gehen, da bereits ein Leitfaden auf howtoforge existiert, https://www.howtoforge.com/greylisting_postfix_postgrey, aber wenn Sie kein Greylisting verwenden möchten, lassen Sie einfach die Zeile weg
check_policy_service inet:127.0.0.1:60000Die smtpd-Einschränkungen sind sehr einfach zu befolgen, bis einer der Checks das grüne Licht für die Nachricht gibt, um in die Postfix-Warteschlange zu gelangen. Die meisten Antworten sind nicht sicher, fahren Sie fort, es sei denn, es wird ein ausdrückliches NEIN gegeben, die Nachricht wird die Liste der Prüfungen hinunterbewegt.
QMAIL-LEGACY
DJB (Dan Bernstein) entwickelte eine Alternative zu SMTP namens QMQP. Es wird gesagt, dass es schneller mit weniger Overheads ist. Wenn Sie also Ihre alten Qmail-MTAs durch Postfix ersetzen, müssen Sie möglicherweise die Unterstützung für QMQP aktivieren.
Wir tun dies, indem wir Folgendes in /etc/postfix/main.cf hinzufügen
qmqpd_authorized_clients = $mynetworks
qmqpd_error_delay = 5s
qmqpd_timeout = 300s
Realistisch gesehen können Sie gegen alles authentifizieren, aber ich habe mich entschieden, gegen mynetworks zu authentifizieren. Nachdem Sie das Obige in main.cf hinzugefügt haben, müssen Sie /etc/postfix/master.cf weiter modifizieren und sicherstellen, dass es Folgendes enthält:
628 inet n - - - 100 qmqpd
Jetzt müssen Sie nur noch Postfix neu starten
/etc/init.d/postfix restart
Sie können Ihr neues QMQP-fähiges Postfix überprüfen, indem Sie eingeben:
telnet localhost 628
Authentifizierung über IP (Ideal für Smarthost-Relay in MS Exchange-Servern)
Als Nächstes werden wir den Leitfaden ein wenig modifizieren, um die Einstellung von mynetworks einfacher zu gestalten als über Flachdateien, nämlich /etc/postfix/main.cf
Erstellen Sie die folgende /etc/postfix/mysql-mynetworks.cf
user = mail_admin
password = password
dbname = mail
table = allowed_hosts
select_field = 'IP'
where_field = IP
hosts = 127.0.0.1
additional_conditions = and active='yes'
Sie benötigen zu diesem Zeitpunkt das folgende SQL
CREATE TABLE allowed_hosts (active enum(‘yes’,’no’) NOT NULL default ‘1’,IP varchar(15) NOT NULL default ‘’,Client varchar(128) NOT NULL default ‘’,Comments text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Schließlich aktivieren wir dies, indem wir unsere mynetworks-Zeile in der main.cf von Postfix auf:
mynetworks = 127.0.0.0/8, proxy:mysql:/etc/postfix/mysql-mynetworks.cf
Schließlich starten Sie Postfix neu, damit die Änderungen wirksam werden:
chmod o= /etc/postfix/mysql-mynetworks.cf
chgrp postfix /etc/postfix/mysql-mynetworks.cf
/etc/init.d/postfix restart
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.