E-Mail Sicherheit · 5 min read · Sep 24, 2025
Verwenden Sie amavisd-new für Spam- und Virenscanning
Integration von amavisd-new in Postfix für Spam- und Virenscanning
Version 1.0
Autor: Falko Timme
Dieser Artikel zeigt, wie man amavisd-new in einen Postfix-Mailserver für Spam- und Virenscanning integriert. amavisd-new ist eine leistungsstarke Schnittstelle zwischen MTAs wie Postfix und Inhaltsprüfern: Virenscannern und/oder SpamAssassin. In diesem Tutorial verwenden wir ClamAV für das Virenscanning und SpamAssassin für das Spam-Scanning.
Ich möchte zunächst sagen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Möglichkeiten, dieses Ziel zu erreichen, aber dies ist der Weg, den ich wähle. Ich gebe keine Garantie, dass dies bei Ihnen funktioniert!
1 Vorbemerkung
In diesem Tutorial werde ich beschreiben, wie man amavisd-new auf Debian Etch/Ubuntu 6.10 Edgy Eft (die Schritte sind für beide Distributionen identisch) und auf Debian Sarge installiert/konfiguriert. Die amavisd-new-Konfiguration ist für Systeme geeignet, in denen Systembenutzer für E-Mail-Konten verwendet werden; wenn Sie virtuelle Benutzer verwenden, sind möglicherweise einige Änderungen an der amavisd-new-Konfiguration erforderlich (aber das hängt von der tatsächlichen Einrichtung ab). Wenn Sie virtuelle E-Mail-Benutzer verwenden, werfen Sie einen Blick auf diese beiden Tutorials:
- Virtuelle Benutzer und Domains mit Postfix, Courier und MySQL (Fedora Core 5)
- Virtuelle Benutzer und Domains mit Postfix, Courier und MySQL (Debian Sarge)
amavisd-new funktioniert so: Postfix empfängt eine E-Mail an Port 25, leitet sie an amavisd-new an Port 10024 weiter, das dann ClamAV und SpamAssassin aufruft, und danach injiziert amavisd-new die Mail wieder in Postfix an Port 10025, das dann schließlich die Mail zustellt (wenn sie sauber ist). Hier ist eine kleine Übersicht des Prozesses:
[SpamAssassin]
^
|
E-Mail --> [(Port 25) Postfix] --> [(10024) amavisd-new] --> [(10025) Postfix] --> Mailbox
|
v
[ClamAV]Ich gehe davon aus, dass Postfix und Ihre E-Mail-Konten bereits eingerichtet und funktionsfähig sind, da ich die Installation/Konfiguration von Postfix hier nicht behandle.
Alle Schritte in diesem Tutorial werden als Root ausgeführt, stellen Sie also sicher, dass Sie als Root angemeldet sind.
2 Debian Etch/Ubuntu 6.10 Edgy Eft
Zuerst installieren wir amavisd-new, SpamAssassin und ClamAV zusammen mit ein paar anderen Programmen (hauptsächlich Programme, die amavisd-new benötigt, um Archive zu entpacken, da E-Mails Archive als Anhänge enthalten können):
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 unzoo libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzopAnschließend müssen wir amavisd-new konfigurieren. Die Konfiguration ist in verschiedene Dateien aufgeteilt, die im Verzeichnis /etc/amavis/conf.d gespeichert sind. Werfen Sie einen Blick auf jede von ihnen, um sich mit der Konfiguration vertraut zu machen. Die meisten Einstellungen sind in Ordnung, jedoch müssen wir zwei Dateien ändern:
Zuerst müssen wir ClamAV und SpamAssassin in /etc/amavis/conf.d/15-content_filter_mode aktivieren, indem wir die Zeilen @bypass_virus_checks_maps und @bypass_spam_checks_maps einkommentieren:
vi /etc/amavis/conf.d/15-content_filter_modeDie Datei sollte so aussehen:
| use strict; # Sie können diese Datei ändern, um die SPAM-Prüfung durch Spamassassin wieder zu aktivieren # und um die Antivirus-Prüfung wieder zu aktivieren. # # Standardmodus für die Antivirus-Prüfung # Kommentieren Sie die beiden Zeilen unten aus, um sie wieder zu aktivieren # @bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); # # Standardmodus für die SPAM-Prüfung # Kommentieren Sie die beiden Zeilen unten aus, um sie wieder zu aktivieren # @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re); 1; # sicherstellen, dass ein definierter Rückgabewert vorhanden ist |
Und dann sollten Sie sich die Spam-Einstellungen und die Aktionen für Spam-/Virus-Mails in /etc/amavis/conf.d/20-debian_defaults ansehen. Es ist nicht notwendig, etwas zu ändern, wenn die Standardeinstellungen für Sie in Ordnung sind. Die Datei enthält viele Erklärungen, daher ist es nicht notwendig, die Einstellungen hier zu erklären:
vi /etc/amavis/conf.d/20-debian_defaults| $QUARANTINEDIR = "$MYHOME/virusmails"; $log_recip_templ = undef; # deaktivieren Sie die Protokolleinträge der Ebene 0 nach Empfänger $DO_SYSLOG = 1; # protokollieren über syslogd (bevorzugt) $syslog_ident = 'amavis'; # syslog-Identifikations-Tag, der allen Nachrichten vorangestellt wird $syslog_facility = 'mail'; $syslog_priority = 'debug'; # auf info umschalten, um Debug-Ausgaben usw. zu reduzieren $enable_db = 1; # Verwendung von BerkeleyDB/libdb aktivieren (SNMP und nanny) $enable_global_cache = 1; # Verwendung des libdb-basierten Caches aktivieren, wenn $enable_db=1 $inet_socket_port = 10024; # Standard-Listening-Socket $sa_spam_subject_tag = '*SPAM* '; $sa_tag_level_deflt = 2.0; # Spam-Info-Header hinzufügen, wenn auf oder über diesem Niveau $sa_tag2_level_deflt = 6.31; # 'Spam erkannt'-Header auf diesem Niveau hinzufügen $sa_kill_level_deflt = 6.31; # löst spamvermeidende Maßnahmen aus $sa_dsn_cutoff_level = 10; # Spam-Niveau, über dem kein DSN gesendet wird $sa_mail_body_size_limit = 200*1024; # keine Zeit mit SA verschwenden, wenn die Mail größer ist $sa_local_tests_only = 0; # nur Tests, die keinen Internetzugang erfordern? [...] $final_virus_destiny = D_DISCARD; # (Daten gehen nicht verloren, siehe Virusquarantäne) $final_banned_destiny = D_BOUNCE; # D_REJECT, wenn Frontend-MTA $final_spam_destiny = D_BOUNCE; $final_bad_header_destiny = D_PASS; # Falsch-positiv-prone (für Spam) [...] |
Anschließend führen Sie diese Befehle aus, um den clamav-Benutzer zur amavis-Gruppe hinzuzufügen und amavisd-new sowie ClamAV neu zu starten:
adduser clamav amavis
/etc/init.d/amavis restart
/etc/init.d/clamav-daemon restartAls nächstes müssen wir die Konfigurationsdatei des Freshclam-Daemons bearbeiten (das ist der Daemon, der regelmäßig und automatisch die neuesten Virensignaturen von einem ClamAV-Mirror abruft), da sie einen kleinen Fehler enthält. Öffnen Sie /etc/clamav/freshclam.conf und ändern Sie die NotifyClamd-Zeile wie unten gezeigt:
vi /etc/clamav/freshclam.conf| [...] NotifyClamd /etc/clamav/clamd.conf [...] |
Dann starten Sie Freshclam neu (stellen Sie sicher, dass kein anderer Freshclam-Prozess (vielleicht von einer anderen ClamAV-Installation) läuft, da sonst unser Freshclam nicht starten kann):
/etc/init.d/clamav-freshclam restartJetzt müssen wir Postfix konfigurieren, um eingehende E-Mails durch amavisd-new zu leiten:
postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
postconf -e 'receive_override_options = no_address_mappings'Fügen Sie anschließend die folgenden Zeilen zu /etc/postfix/master.cf hinzu:
vi /etc/postfix/master.cf| [...] amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes 127.0.0.1:10025 inet 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 receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_bind_address=127.0.0.1 |
Dann starten Sie Postfix neu:
/etc/init.d/postfix restartFühren Sie jetzt
netstat -tapaus und Sie sollten sehen, dass Postfix (master) auf Port 25 (smtp) und 10025 und amavisd-new auf Port 10024 lauscht:
server1:~# netstat -tap
Aktive Internetverbindungen (Server und etablierte)
Proto Recv-Q Send-Q Lokale Adresse Fremdadresse Zustand PID/Programmnamen
tcp 0 0 *:4069 *:* LISTEN 3457/rpc.statd
tcp 0 0 localhost.localdo:10024 *:* LISTEN 6886/amavisd (maste
tcp 0 0 localhost.localdo:10025 *:* LISTEN 7268/master
tcp 0 0 *:sunrpc *:* LISTEN 3083/portmap
tcp 0 0 *:auth *:* LISTEN 3417/inetd
tcp 0 0 *:smtp *:* LISTEN 7268/master
tcp6 0 0 *:imaps *:* LISTEN 4952/couriertcpd
tcp6 0 0 *:pop3s *:* LISTEN 4872/couriertcpd
tcp6 0 0 *:pop3 *:* LISTEN 4815/couriertcpd
tcp6 0 0 *:imap2 *:* LISTEN 4905/couriertcpd
tcp6 0 0 *:ssh *:* LISTEN 3438/sshd
tcp6 0 0 *:smtp *:* LISTEN 7268/master
tcp6 0 148 server1.example.com:ssh localhost:3117 ESTABLISHED3519/0Wenn Sie möchten, können Sie jetzt Razor, Pyzor und DCC zu SpamAssassin hinzufügen, um die Filterleistung zu verbessern. Razor, Pyzor und DCC sind Spamfilter, die ein kollaboratives Filternetzwerk verwenden. Um sie zu installieren, führen Sie aus:
apt-get install razor pyzor dcc-clientJetzt müssen wir SpamAssassin mitteilen, dass es diese drei Programme verwenden soll. Bearbeiten Sie /etc/spamassassin/local.cf und fügen Sie die folgenden Zeilen hinzu:
vi /etc/spamassassin/local.cf| [...] # dcc use_dcc 1 dcc_path /usr/bin/dccproc dcc_add_header 1 dcc_dccifd_path /usr/sbin/dccifd #pyzor use_pyzor 1 pyzor_path /usr/bin/pyzor pyzor_add_header 1 #razor use_razor2 1 razor_config /etc/razor/razor-agent.conf #bayes use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 |
Starten Sie amavisd-new anschließend neu:
/etc/init.d/amavis restartDas war’s schon. Jetzt beobachten Sie Ihr Mail-Log (/var/log/mail.log), um zu sehen, ob amavisd-new ordnungsgemäß funktioniert. amavisd-new wird protokollieren, wann immer es eine Spam- oder Virus-E-Mail findet. Wenn Sie (re)starten, sollte amavisd-new auch protokollieren, dass es seinen Spam- und Virenscan-Code lädt (wenn nicht, haben Sie wahrscheinlich etwas falsch gemacht).
Um einen Live-Blick auf Ihr Mail-Log zu werfen, können Sie diesen Befehl verwenden:
tail -f /var/log/mail.log(Drücken Sie CTRL + c, um das Log zu verlassen.)
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.