Postfix prüft eingehende E-Mails auf den Reverse-Eintrag (PTR), es kann zu „helo command rejected“ kommen. Stimmt der Hostname mit der IP-Adresse des sendenden MTA nicht überein, wird die E-Mail mit der Fehlermeldung 450 4.7.1 abgelehnt.
Mail Server FQDN – NOQUEUE: reject: RCPT from mail.example.org: 450 4.7.1: Helo command rejected: Host not found.
Maillog NOQUEUE reject 450 4.7.1 durch Postfix protokolliert.
Bei diesem Beispiel durch Postfix mit „helo command rejected“ abgelehnt. Es muss beim Absender überprüft werden, ob die IP-Adresse des Mailservers in der DNS Zone mit dem entsprechenden PTR-Record übereinstimmt.
Postfix Ausnahme durch EHLO/HELO
Ist der sendende Mailserver bekannt und vertrauenswürdig, kann Postfix angewiesen werden eine Ausnahme durch die EHLO/HELO Überprüfung zu veranlassen, durch die Regel in der Datei main.cf.
Dazu wird eine Datei helo_access angelegt, mit folgendem Inhalt.
$ mailsrv02.example.org PERMIT
Danach postmap ausführen um die hash db zu erzeugen.
$ postmap /etc/postfix/helo_access
Postfix muss die Änderung zur Aktivierung noch übernehmen.
$ postfix reload
Im maillog kann nun überprüft werden ob die Emails angenommen werden.
$ mailq
$ postqueue -f
$ tail -f /var/log/maillog
Mit mailq wird festgestellt ob sich etwa noch nicht zugestellte Emails in der Queue befinden. Mit dem Befehl postqueue wird der versuch der Zustellung gleich ausgelöst. Das öffnen mit tail -f (maillog) gibt Aufschluss über den Status der Zustellung.
Exchange Server falsch konfiguriert
Oft sind es falsch konfigurierte Exchange Server die sich mit falschem, internen hostname melden, den korrekten FQDN stellt man in der ECP Konsole ein, beim zuständigen FrontendTransport Connector.
Besser noch man lässt den Exchange Server über ein Smarthost seine Mails versenden, dadurch bietet sich die Möglichkeit ausgehende Mails zusätzlich mit DKIM im Envelop zu versenden, was die Authentizität erhöht, und bei eingehenden Mails eine wirksame SPAM und Schadcode Filterung ermöglicht, etwa durch SpamAssassin oder mit Amavis-new.
Anmerkung
Postfix ist ein Mail Transfer Agent für Unix und Unix-Derivate. Die Software sollte zum Entwicklungszeitpunkt eine kompatible Alternative zu Sendmail sein. Dabei achteten die Programmierer insbesondere auf Sicherheitsaspekte. Der Quellcode von Postfix steht unter der IBM Public License zur Verfügung und ist damit freie Software.
Postfix ist ein schnelles und im Verhältnis zu Sendmail oder qmail einfach zu administrierendes System. Dennoch gilt: Wie jeder MTA setzt auch Postfix fundierte Kenntnisse im Bereich Mailserver, Protokolle sowie weitreichende Systemkenntnisse voraus, da die Konfigurationen je nach Anwendungsfall sehr komplex werden können.
Niemand mag SPAM, um die Flut unerwünschter E-Mails einzudämmen, müssen eingehende E-Mails mehrere Filter und sogenannte Milter durchlaufen.
Eine effiziente Filter Lösung bietet der Mail Transfer Agent – Postfix, das Open Source Programm wurde 1998 von Wietse Zweitze Venema entwickelt. Postfix ist ein leistungsfähiger Mail Transfer Agent für Unix und Unix-Derivate.
Die Software sollte zum Entwicklungszeitpunkt eine kompatible Alternative zu Sendmail sein. Dabei wurde bei der Entwicklung insbesondere auf Sicherheitsaspekte geachtet. Der Quellcode von Postfix steht unter der IBM Public License. Postfix MTA’s werden von vielen Internet Providern und in Großunternehmen eingesetzt.
Die Architektur von Postfix erlaubt es eine Vielzahl an Filter einzubinden, wie das unter der Apache-Lizenz stehende SpamAssassin, um unerwünschte E-Mails herauszufiltern und zu markieren, oder Greylisting um das verhalten eines Senders zu überprüfen. Zum Schutz gegen Viren und Schadcode kann Clam AntiVirus eingebunden werden – ClamAV steht unter der GNU General Public License.
Workaround
Als E-Mail Client Software in Unternehmen ist MS Outlook im Exchange betrieb weit verbreitet. Für SPAM der nicht in einem Filter abgefangen wurde, bietet Outlook die Möglichkeit unerwünschte Absender zu sperren, hierbei ist die Bezeichnung nicht gerade zutreffend, denn die sogenannten Junk E-Mails werden auf dem Server nicht gesperrt, sondern sie werden beim Empfang viel mehr in den Outlook Ordner Junk-E-Mail verschoben. Besser wäre es aber wenn der vermeintliche Absender es gar nicht schafft es zuzustellen, also es zurückgewiesen wird.
Hier gibt es eine Möglichkeit einzugreifen, wenn der Exchange Server wie oft die E-Mails nicht direkt aus dem Internet empfängt, sondern über einen Smarthost abwickelt. Smarthosts sind meist Linux basierte Server die mit dem Postfix MTA arbeiten.
Installation
Der folgende PowerShell Script ruft die Junk-E-Mail Einträge aus der Outlook Sperrliste Blockierte Absender von allen Mailboxen aus und extrahiert die formatierte Ausgabe als Windows-ANSI Text und in eine ACSII-Text Datei. Anschliessend wird die erzeugte Datei extracted_JunkEmails.asc auf den Smarthost übertragen. Die Whitelist wird in der Datei extracted-TrustedEmails.asc angelegt.
Der Script wird auf dem Exchange Server in der Exchange Management Shell als Administrator ausgeführt, geeigneter Weise als Job in der Aufgabenplanung zu jeder Stunde. Bei Zeile 8 soll anstelle des Platzhalters der Benutzername gefolgt vom Name des Smarthost stehen, dies als FQDN oder host IP.
Auf dem Exchange Server wird PuTTY benötigt, nach der Installation von PuTTY 64bit dient pscp.exe (PuTTY Secure Copy) zur Übertragung der Sperrliste Blockierte Absender auf den Smarthost. Damit es zu keiner Passwort abfrage kommt, muss mit PuTTY Key Generator (puttygen.exe) ein Schlüsselpar erzeugt werden, der erzeugte Public Key wird auf dem Smarthost unter das home Verzeichnis des Benutzers in das Verzeichnis .ssh in die Datei authorized_keys kopiert. Damit ist der Script mit pscp in der lage sich beim Smarthost zu authentifizieren.
Auf dem Linux Smarthost dient ein Shell Script um die Zeilen in das Unix (LF) Format zu konvertieren. Dieser Einzeiler erzeugt die passende Ausgabe in das Postfix Verzeichnis über pipe in die Datei junkbl_access und trusted_access.
Code in eine Datei junkbl.sh einfügen und unter dem Pfad /usr/bin/ speichern.
Der Shell Script wird ausführbar gemacht.
chmod +x /usr/bin/junkbl.sh
Der stream-editor – sed konvertiert die Zeilenumbrüche, entfernt leer Zeichen und fügt am ende jeder Zeile den SMTP Error Code 550 ein, damit werden die beim versuch der Zustellung nicht erwünschten E-Mails der Sperrliste Blockierte Absender zurückgewiesen.
Die Postfix lookup tables erstellen und aktualisieren.
In der Postfix Hauptkonfiguration werden die restriction checks hinzugefügt.
vi /etc/postfix/main.cf
smtpd_recipient_restrictions =
permit_mynetworks,
check_sender_access hash:/etc/postfix/junkbl_access,
check_sender_access hash:/etc/postfix/trusted_access,
Nach einem postfix reload wird die Outlook Sperrliste von Postfix angewandt.
Per cronjob soll die Sperrliste laufend aktualisiert werden, zu jeder Stunde +5 min.
5 * * * * root /usr/bin/junkbl.sh >/dev/null 2>&1
Anmerkung
Bei CentOS 7 ist es erforderlich den user zur Group sftp_users hinzuzufügen, mit usermod -G sftp_users {username}, in der sshd_config muss die direktive Match Group sftp_users angewandt werden.