Amavis-new Installation mit Postfix

5
(3)

Tutorial: Installation von amavis-new und Postfix

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 Content filter, beispielsweise kompatibel mit Postfix, sendmail oder Exim. Antivirenprogramme die mit amavis-new interagieren 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.

$ yum update
$ yum -y install epel-release

Die Dienstprogramme amavis-new und ClamAV installieren.

$ yum clean all
$ yum -y install amavisd-new clamav-scanner clamav-scanner-systemd

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

# Zeile 20 der eigene domain name
$mydomain = 'domain.org';
# Zeile 152 der eigene hostname
$myhostname = 'mail.domain.org';
# Zeile 50 lokale domain und netzwerke hinzufügen
@local_domains_maps = ( [".$mydomain", '.domain.org', 'xyz.domain.org'] );  # list of all local domains

@mynetworks = qw( 127.0.0.0/8 [::1] [FE80::]/10 [FEC0::]/10
                  10.0.0.0/8 10.127.99.0/24 );
# Zeile 58 erweitern der ports
$inet_socket_port = 10024,10026;
# Zeile 154 auskommentieren
$notify_method = 'smtp:[127.0.0.1]:10025';
$forward_method = 'smtp:[127.0.0.1]:10025';
# Zeile 157 ändern auf D_PASS
$final_virus_destiny    = D_PASS;
$final_spam_destiny     = D_PASS;

Bei aktivem SELinux wird eine Policy hinzugefügt.

$ setsebool -P antivirus_can_scan_system 1
$ setsebool -P clamd_use_jit 1

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

$ sed -i -e "s/^Example/#Example/" /etc/clamd.d/scan.conf
$ sed -i -e "s/^Example/#Example/" /etc/freshclam.conf

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

$ freshclam

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

content_filter=smtp-amavis:[127.0.0.1]:10024

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

smtp-amavis unix  -     -     n     -    2   smtp
 -o smtp_data_done_timeout=1200
 -o smtp_send_xforward_command=yes
 -o disable_dns_lookups=yes
 -o max_use=20

127.0.0.1:10025  inet  n  -    n    -     -   smtpd
 -o content_filter=
 -o local_recipient_maps=
 -o relay_recipient_maps=
 -o smtpd_restriction_classes=
 -o smtpd_client_restrictions=
 -o smtpd_helo_restrictions=
 -o smtpd_sender_restrictions=
 -o smtpd_recipient_restrictions=permit_mynetworks,reject
 -o mynetworks=127.0.0.0/8
 -o strict_rfc821_envelopes=yes
 -o smtpd_error_sleep_time=0
 -o smtpd_soft_error_limit=1001
 -o smtpd_hard_error_limit=1000

Jetzt Postfix neu starten damit die Konfiguration wirksam wird.

$ systemctl restart postfix

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

$ systemctl start clamd@scan
$ systemctl start amavisd.service
$ systemctl enable clamd@scan
$ systemctl enable amavisd.service

Amavisd Funktionstest

$ cd /usr/share/doc/amavisd-new-*/test-messages
$ perl -pe 's/./chr(ord($&)^255)/sge'

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

$ sendmail -i deine_email@domain.ch < sample-virus-simple.txt

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

mail amavis[11855]: (11855-01) Passed INFECTED (Eicar-Test-Signature) {RelayedTaggedInbound,Quarantine d}, [127.0.0.1] <root@mail.domain.ch> -> <meine_email@domain.ch>, Message-ID: <20190305170628.630A7C5428@mail.domain.ch>, mail_id: SSDU53BXGSVK, Hits: 2.547, size: 789, queued_as: A808AC5425, 1207 ms

  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 erfolgen, Zuerst der Daemon Status der überprüfen, mit dem Parameter -l werden zusätzlich die letzten Zeilen aus dem Protokoll ausgegeben:

$ systemctl status postfix clamd@amavisd -l

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

~]# ss -tuln4
Netid  State      Recv-Q Send-Q      Local Address:Port      Peer Address:Port
tcp    LISTEN     0      128             127.0.0.1:10024                *:*
tcp    LISTEN     0      100             127.0.0.1:10025                *:*
tcp    LISTEN     0      100                     *:587                  *:*
tcp    LISTEN     0      100                     *:465                  *:*
tcp    LISTEN     0      128                     *:22                   *:*
tcp    LISTEN     0      100                     *:25                   *:*

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

$ telnet localhost 10024
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 [::1] ESMTP amavisd-new service ready
quit
221 2.0.0 [::1] amavisd-new closing transmission channel
Connection closed by foreign host.
$ telnet localhost 10025
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.domain.ch ESMTP
quit
221 2.0.0 Bye
Connection closed by foreign host.

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 5 / 5. Anzahl Bewertungen: 3

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert