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.

Amavis-new Installation für Postfix auf CentOS7

AMaViS steht für A MAil Virus Scanner und ist ein serverseitiger Virenscanner, der auf Unixoide 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 installieren zu können.

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.

Den Clamd Virenscanner editieren mit Hilfe des Stream Editors, folgende Befehlszeilen im Terminal-Shell ausführen:

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.

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

AMAVISD FUNKTION TESTEN

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 Entrag 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 aktive 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.

fetchmail einrichten

fetchmail ist ein Dienstprogramm zum Abrufen und Weiterleiten von E-Mails; das Unix Urgestein holt E-Mails von entfernten Mailservern und leitet diese an das Zustellsystem weiter. Es können die Mails dann unter Verwendung normaler E-Mail-Benutzeragenten wie etwa mutt, elm oder Mail abgerufenen werden.

Das fetchmail-Dienstprogramm kann im Daemon-Modus laufen, um ein oder mehrere Systeme in einem bestimmten Intervall wiederholt abzufragen, es werden E-Mails von Servern gesammelt die alle gängigen E-Mail-Abrufdienste unterstützen, wie POP3 und IMAP, auch unterstützt werden die ESMTP-ETRN-Erweiterung und die ODMR Protokolle.

In diesem Beitrag wird beschrieben wie fetchmail auf einem CentOS Smarthost mit Postfix eingesetzt werden kann. Die E-Mails von externen Mail-Dienstanbieter werden abgerufen und den Empfänger zum Postfach Server weitergeleitet dieser vom Smarthost E-Mails empfängt. Dabei sind bei den Mailkonten keine Weiterleitungen erforderlich, und die E-Mails werden durch den Smarthost ebenfalls auf Viren und SPAM untersucht, bevor diese dem Benutzer Postfach zugestellt werden.

Für die Installation auf CentOS 7 wird das Extras repository benötigt, falls nicht schon vorhanden.

Das fetchmail-Dienstprogramm kann aus dem CentOS Extras repository installiert werden.

Wir erstellen die Konfigurationsdatei fetchmail für den daemon unter /etc/sysconfig.

 Copy Paste /etc/sysconfig/fetchmail

Es wird der Daemon Init-Script erstellt, hier für ein CentOS Host auf diesem der Postfix MTA bereits läuft. Als root mit vi /etc/rc.d/init.d/fetchmaild

 Copy Paste /etc/rc.d/init.d/fetchmaild
Den Init-Script ausführbar machen.

Die globale fetchmailrc Recource Konfiguration für den Betrieb als Daemon erstellen.

 Copy Paste /etc/fetchmailrc

Für jeden Mailserver von diesem E-Mails abgerufen werden sollen wird eine poll Zeile erstellt. Es soll das externe Postfach von joe@foo.org beim POP3 Server mail.foo.org abgerufen werden und mit smtphost über den localhost über Postfix zum Postfach Server dem Benutzer joe.office@foo.com zugestellt werden. Damit die Protokollierung nicht in maillog statt findet, werden anstelle diese in fetchmail geloggt.

fetchmail bietet eine Reihe von syntaktischen Feinheiten, um fetchmailrc das Lesen von Dateien zu erleichtern. Zum Beispiel werden die Worte andwithhaswants, und options von fetchmail ignoriert, wie auch Satzzeichen. Während es möglich ist, Anmeldeinformationen für einen Server in einer Zeile anzugeben, werden häufige Konfigurationen über eine Reihe von verschiedenen Zeilen angegeben. fetchmail ist unempfindlich gegenüber Whitespace, außer wenn das Argument in Anführungs- und Schlusszeichen erfolgt.

Für die Poll-Anweisung gibt es mehrere Optionen (z.B. nofetchall (default), fetchall, keep, nokeep ). Die Bedeutungen ist wie folgt:

nofetchall : Nur neue Nachrichten abrufen (Standard). Wenn nichts anderes angegeben ist (z.B. fetchallkeep ), bedeutet dies nofetchall.
fetchall : Holt alle Nachrichten, ob gesehen oder nicht.
keep : Löscht keine Nachrichten auf dem Server.
nokeep : Löscht die gelesenen Nachrichten vom Server.

Die fetchmail Benutzer und Gruppe erstellen und die rechte setzen.

Der fetchmail daemon wird gestartet.

Nach Änderung der fetchmailrc-Konfiguration wird der systemd daemon neugestartet.

Überprüfen lässt sich die fetchmail Konversation zu Server mit folgendem Befehl:

Die Konfigurationsdatei fetchmailrc testen.

Den fetchmail Prozess überprüfen.

Die Ausgabe kann in etwa wie folgt aussehen:

Die fetchmail Protokollierung findet nun in der Datei fetchmail statt.

Die fetchmail man page gibt zahlreiche Informationen aus.