Schlagwort-Archive: Postfix Mail Transfer Agent

Postfix ist ein Mail Transfer Agent für Unix und Unix-Derivate. Die Software sollte zum Entwicklungszeitpunkt eine kompatible Alternative zu Sendmail sein.

Postfix mit SASL-Authentifizierung verwenden

SMTP-Server müssen entscheiden, ob ein SMTP-Client autorisiert ist E-Mails zu versenden, für die der Server selbst zuständig ist.

Simple Authentication and Security Layer (SASL) Integration Postfix


Diese Anleitung beschreibt, wie man ein MTA (Mail Transport Agent) Postfix unter CentOS 7 mit CyrusSASL zur SMTP-Authentifizierung (SMTP-Auth) erweitert. Danach können Clients E-Mails mittels SMTP-Auth versenden. Diese Anleitung ist geprüft unter CentOS Linux release 7.7.1908 (Core), mit Postfix v2.10.1 und Cyrus-SASL 2.1.26. Es wird davon ausgegangen das Postfix bereits konfiguriert ist und TLS (Transport Layer Security) implementiert ist.

Postfix implementiert die SASL Library nicht selbst, sondern verwendet vorhandene Implementierungen als Bausteine. Dies bedeutet, dass einige SASL-bezogene Konfigurationsdateien zu Postfix gehören, während andere Konfigurationsdateien zu der spezifischen SASL-Implementierung gehören, die Postfix verwenden wird.

Installieren von Cyrus-SASL auf dem MTA

Als root die Pakete mit folgendem Command installieren:

Die einzelnen SASL-Mechanismen werden als RPMs installiert.

Es folgt die Einbindung für Postfix, hierzu die modifikation in der Datei /etc/postfix/master.cf vornehmen:

Damit Postfix mit SASL funktioniert, darf Postfix nicht im chroot-Verzeichnis laufen, Zeile smtps bei Position 5 (n).

SMTP-Auth für lokale Benutzer konfigurieren, wir editieren die Postfix Datei /etc/postfix/main.cf:

Die Konfiguration von Cyrus-SASL erfolgt durch zwei Dateien. Die erste Datei /etc/sysconfig/saslauthd kann übernommen werden:

Die SASL-Mechanismen PLAIN und LOGIN, CRAM-MD5 und DIGEST-MD5 kommen oft zum Einsatz, hierfür ist die Konfigurationsdatei /etc/sasl2/smtpd.conf zuständig, die bereitstellung wurde ebenfalls bei der Installation durchgeführt:

Nun Cyrus-SASL Library Daemon starten und den systemd autostart aktivieren, anschliessend Postfix re-starten:

Der SMTP-Submission Support auf Port 587 ist nun aktiviert, überprüfen lässt sich dies mit folgendem Kommando:

Zur Authentifizierung am SMTP-Gateway wird nun ein Benutzer erstellt, dieser E-Mails über den MTA versenden soll:

  Eine lokale UserID ist für unsere Anforderung hier ausreichend, Cyrus-SASL unterstützt weiter LDAP und SQL, um mit beispielweise Kopano oder einem AD Verzeichnisdienst zu interagieren.

Cyrus-SASL SMTP-Auth Testen

Welche Mechanismen zur Authentifizierung innerhalb von STARTTLS unterstützt werden, kann mit OpenSSL überprüft werden:

In der Ausgabe von openssl ein EHLO übergeben:

Eine telnet Session zum MTA mail.relayhost.net über Port 587 starten, dazu kann PuTTY oder KiTTY verwendet werden.

Der Benutzername und das Passwort muss Base64-kodiert an das SMTP-Gateway übertragen werden, ein in Base64 kodierten String kann in der Shell Console erzeugt werden.

Die Überprüfung findet wie folgt statt, mit ausführen der folgenden Zeilen im Terminal, um die SASL SMTP-Auth Konfiguration zu testen.

Die Ausgabe von SMTP-Auth des Postfix MTA mit Cyrus-SASL.

Die oben kodierten Credentials bei den 334 Prompts einfügen, hier bei Zeile 15 als User24 und bei Zeile 17 unser Password.

  Ein 250 STARTTLS in der Ausgabe zeigt die Voraussetzungen, das Klartext-Benutzernamen mit Passwort durch STARTTLS geschützt an das SMTP-Gateway übermittelt werden.

Eine einfache Möglichkeit gibt es mit SMTPConsole ein SMTP-Gateway zu testen.

SMTPConsole
SMTPConsole

Amavis-new Installation für Postfix auf CentOS7

AMaViS steht für A MAil Virus Scanner und ist ein serverseitiger Virenscanner, der auf Unixoiden Mail-Servern zum Einsatz kommt. Mit der Weiterentwicklung wurde die Implementierung für Spamfilter wie SpamAssassin erweitert.

  AMaViS wurde in der Programmiersprache Unix-Shell geschrieben, im Jahr 2000 wurde es dann auf Perl umgestellt,
ab dann amavis-new für die Standardschnittstelle zwischen den Mail Transfer Agents (MTA) und den Contentfiltern, beispielsweise kompatibel mit Postfix, sendmail oder Exim. Antivirenprogramme die mit amavis-new funktionieren sind beispielsweise AntiVir Unix oder ClamAV. Das aktuelle amavisd-new steht unter der GPLv2 und BSD-Lizenz und bietet auch die Möglichkeit, SpamAssassin und andere Filterprogramme (Milter) einzubinden.

INSTALLATION

In diesem Beitrag wird die Installation und Konfiguration von amavis-new beschrieben, mit der Integration für Postfix auf einem CentOS 7 basierten MTA. Es wird vorausgesetzt das Postfix bereits auf dem Host ist und Kenntnisse über Postfix vorhanden sind.

Es wird das EPEL Repository eingebunden, um anschließend die Komponenten zu installieren.

Die Dienstprogramme amavis-new und ClamAV installieren.

Folgende Anpassungen in der amavisd Konfigurationsdatei editieren, mit vi /etc/amavisd/amavisd.conf

Bei aktivem SELinux wird eine Policy hinzugefügt.

Der Clamd Virenscanner kann mithilfe des Stream Editors sed editiert werden, folgende Befehlszeilen im Terminal ausführen:

Die Clamd Konfigurationsdatei /etc/clamd.d/scan.conf wie folgt konfigurieren:

Die Logdatei für Clamd erstellen und die UserID zuweisen:

Nun die Antiviren Erkennungsdatenbank herunterladen und aktualisieren.

Nachdem die amavis-new Konfiguration abgeschlossen ist, geht es an die Integration von Postfix, der Content-Filter kann in der Postfix Datei main.cf an beliebiger stelle hinzugefügt werden, durch das editieren mit vi /etc/postfix/main.cf

Dazu wird in der Datei /etc/postfix/master.cf die Schnittstelle für amavis-new am ende hinzugefügt.

Jetzt Postfix neu starten damit die Konfiguration wirksam wird.

amavis-new starten und zur Autostart Konfiguration hinzufügen.

Amavisd Funktionstest

Zum Abschluss kann man amavisd testen. Damit beim herunterladen und installieren von amavis-new, durch erkennen einer UTM Firewall der download nicht verhindert wird, wegen der darin enthaltenen Virus-Test-Signatur, ist diese verkapselt.

Dazu ins Verzeichnis /usr/share/doc/amavisd-new-*/test-messages wechseln und folgende Zeile im Terminal-Shell ausführen, damit werden die EICAR-Test Dateien entkapselt und entpackt:

Nun mit sendmail im Terminal die EICAR-Test-Signatur an sich versenden.

In der Protokolldatei /var/log/maillog sollte dann folgender Eintrag registriert sein.

  Erscheint beim versuch mit sendmail die Testmail zu senden der Fehler:reject: header To: undisclosed-recipients, muss die Datei sample-virus-simple.txt editiert werden, und bei From: und To: eine gültige Email eingetragen werden.

Troubleshoting

Die Überprüfung der Funktionalität von amavis-new kann mit folgendem vorgehen Aufschluss geben, als erstes der Status der daemon überprüfen, mit dem Parameter -l werden zusätzlich die letzten Zeilen aus dem Protokoll ausgegeben:

Weiter sollte auch sichergestellt sein das die Ports 10024 und 10025 aktiv LISTEN sind:

Mit telnet dieses erst installiert werden muss, lässt sich die Funktion des amavisd und Postfix daemon interaktiv überprüfen:

 

450 4.7.1 Helo command rejected: Host not found

Mailserver prüfen bei eingehenden E-Mails den Reverse-Eintrag (PTR) der IP-Adresse vom sendenden Server. Stimmt der Hostname nicht mit der IP Adresse des absendenden Mailservers überein, wird das E-Mail mit der Fehlermeldung 450 4.7.1 abgewiesen.

Im Maillog wird mit NOQUEUE reject 450 4.7.1, hier durch Postfix wie folgt protokolliert.

In diesem Fall muss der Absender prüfen, ob die IP-Adresse seines Mailservers in der DNS Zone mit dem entsprechenden PTR-Record übereinstimmt.

Ist der sendende Mailserver bekannt und vertrauenswürdig, kann Postfix angewiesen werden eine Ausnahme durch die EHLO/HELO Überprüfung zu veranlassen.

Dazu wird eine Datei helo_access angelegt, mit folgendem Inhalt.

Danach postmap ausführen um die hash db zu erzeugen.

Postfix muss die Änderung zur Aktivierung noch übernehmen.

Im maillog kann nun überprüft werden ob die Emails angenommen werden. Mit mailq wird festgestellt ob sich noch nicht zugestellte Emails in der Queue befinden, und mit der Eingabe postqueue das zustellen gleich ausgelöst, mit tail wird das maillog geöffnet.

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.