Zu überprüfen ob die Angaben des Absenders, des Empfängers oder der Clients stimmen, ist für Postfix recht einfach. Es ermöglicht das schnelle "Ausfiltern" von Spam- und Virenversendern.
Als Beispiel:
Wenn jemand versucht eine E-Mails an mich zu verschicken, und als Absender eine Domain angibt, die im DNS keinen A-Record oder keinen MX eingetragen hat, werde ich auf diesen Absender niemals antworten können. Eine solche E-Mail kommt fast ausschließlich von Viren- und Spamversendern, welche sich Absenderdomains ausdenken müssen. Ähnlich verhält es sich mit der Angabe des Clienthostnames. Ordentlich konfigurierte Mailserver melden sich mit ihrem FQDN und der Revers-DNS Eintrag passt zu diesem. Gekaperte Rechner eines Botnetzes melden sich maximal mit dem Namen, welcher vom Besitzer eingegeben wurde (Peters Wohnzimmerhobel)... Selbst wenn der FQDN passt, wird der Botnetzbetreiber kaum beim ISP des gekaperten Rechners einen passenden Reverse-DNS setzten lassen. Bei Verbindungen aus dynamischen IP-Netzten, sprich A-DSL T-COM 0815 Internetverbindungen, ist der Hostname meist nicht mal in einem gültigen Format. Warum auch? Dieses können wir uns zunutze machen, indem wir hier schon aussortieren. Fällt doch mal ein gewünschter Absender unter diese Restriktionen, hat dessen Admin meist nicht sauber gearbeitet. Der Admin und der Absender der E-Mail werden über passende Rückmeldungen und Logeinträge auf diesen Punkt aufmerksam gemacht!
Diese Filtermethode ist recht effektiv (30 - 55 Prozent Spam und Viren fliegen hier schon weg), einfach und sicher.
Eine erste grobe und einfache Konfiguration läuft so....
In der Datei /etc/postfix/main.cf müssen folgende beiden Zeilen ergänzt werden:
smtpd_helo_required = yes
smtpd_delay_reject = yes
smtpd_helo_required gibt vor, das unser Server immer und von jedem ein helo erwartet. Ist smtpd_delay_reject auf yes gesetzt führt Postfix die UCE-Filterung erst nach dem "RCPT TO:" aus. Würde dieses nicht so sein, hätten einige SMTP Clients von z.B.: Microsoft damit arge Probleme.
Die einzelnen Beschränkungen legen wir passend unter den einzelnen Optionen an, was welche bewirkt erkläre ich unten....
Unter smtpd_recipient_restrictions:
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unknown_sender_domain,
Unter smtpd_helo_restrictions:
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_non_fqdn_hostname,
reject_invalid_hostname,
reject_unknown_recipient_domain,
Unter smtpd_sender_restrictions:
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
Wichtig ist hier die Einrückung sowie Beachtung des Komma!
reject_non_fqdn_sender
Weist den Absender der E-Mail zurück, wenn dieser nicht in FQDN Form angegeben wurde.
reject_non_fqdn_recipient
Weist den Empfänger der E-Mail zurück, wenn dieser nicht in FQDN Form angegeben wurde.
reject_non_fqdn_hostname
Weist E-Mails zurück, wenn der Clientname nicht in FQDN Form angegeben wurde.
reject_invalid_hostname
Weist E-Mails zurück, wenn der Clientname nicht in einem gültigen Format angegeben wurde.
reject_unknown_recipient_domain
Weist die Anfrage zurück, wenn die angegebene Domain (RCPT TO) des Empfängers im DNS keinen Eintrag vom Typ A oder MX hat.
reject_unknown_sender_domain
Weist die Anfrage zurück, wenn die angegebene Domain (MAIL FROM) des Absenders im DNS keinen Eintrag vom Typ A oder MX hat.
Nach einem Restart von Postfix kann man nun im Logfile schon die Wirkung der Beschränkungen bewundern:
tail -f -n 200 /var/log/mail.log
Hier versucht der Client "userpc" mit der IP: 94.52.112.110 (GeoIP City Edition, Rev 1: RO, 10, Bucharest, (null), 44.433300, 26.100000, 0, 0) eine E-Mail einzuliefern. Da aber userpc kein FQDN ist, wird die Verbindung vom Server mit einem 504 zurückgewiesen. Der Vorteil von Errorcodes aus dem Bereich 5XX ist das wir (also der angesprochene Server) die Verbindung sofort beenden können, ohne auf den Client zu warten. Damit werden Verbindungen sofort wieder freigegeben und stehen anderen Verbindungen zur Verfügung.
Jun 7 17:50:35 smtp postfix/smtpd[22037]: NOQUEUE: reject: RCPT from unknown[94.52.112.110]: 504 5.5.2 <userpc>: Helo command rejected: need fully-qualified hostname; from=<
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!
> to=<
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!
> proto=ESMTP helo=<userpc>
Jun 7 17:50:36 smtp postfix/smtpd[22037]: lost connection after DATA (0 bytes) from unknown[94.52.112.110]
Ich hoffe dieser Beitrag hilft dem einen oder anderen, sich etwas mehr Müll vom Hals zu halten!
Fragen oder Anregungen sehe ich wie immer gerne!