amavisd-new in Postfix zur Spam- und Virus-Überprüfung integrieren

3 Debian Sarge

Für volatile Pakete wie ClamAV (es gibt sehr oft neue ClamAV Versionen), existiert die Debian-volatile Paketdatenbank (für Sarge und Woody nur zur Zeit als diese Anleitung verfasst wurde). Um sicher zu gehen, dass wir das neuste ClamAV Paket installieren, bearbeiten wir zuerst /etc/apt/sources.list und fügen folgende Zeile an:

vi /etc/apt/sources.list

[...]
deb http://volatile.debian.net/debian-volatile sarge/volatile main contrib non-free

Danach aktualisieren wir unsere Paketdatenbank indem wir Folgendes laufen lassen:

apt-get update

Dann 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 Anhang enthalten können):

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip unarj bzip2 unzoo libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop

Dir werden ein paar Fragen gestellt:

Virus database update method: <– daemon
Local database mirror site: <– db.de.clamav.net (Germany; select the mirror that is closest to you)
HTTP proxy information (leave blank for none): <– (blank)
Should clamd be notified after updates? <– Yes

Danach müssen wir amavisd-new konfigurieren, indem wir /etc/amavis/amavisd.conf bearbeiten. Das ist eine sehr lange Datei mit vielen Kommentaren. Die meisten Standard-Einstellungen sind in Ordnung, vergewissere Dich jedoch, dass @bypass_virus_checks_acl und @bypass_spam_checks_acl auskommentiert sind, da amavisd-new sonst den Anti-Spam/-Virus Code nicht laden wird (in meiner Kopie war die @bypass_spam_checks_acl Zeile aktiviert, also musste ich sie auskommentieren):

vi /etc/amavis/amavisd.conf

[...]
# @bypass_virus_checks_acl = qw( . );  # uncomment to DISABLE anti-virus code
[...]
# @bypass_spam_checks_acl  = qw( . );    # No default dependency on spamassassin
[...]

Dann solltest Du Dir in der gleichen Datei die Spam-Einstellungen und Vorgänge für Spam-/Virus-Mails ansehen. Es besteht kein Anlass etwas zu ändern, wenn Dir die Standard-Einstellungen zusagen. Die Datei enthält viele Erklärungen, also besteht kein Grund die Einstellungen an dieser Stelle zu erklären:

[...]
$final_virus_destiny      = D_DISCARD; # (defaults to D_BOUNCE)
$final_banned_destiny     = D_BOUNCE;  # (defaults to D_BOUNCE)
$final_spam_destiny       = D_REJECT;  # (defaults to D_REJECT)
$final_bad_header_destiny = D_PASS;  # (defaults to D_PASS), D_BOUNCE suggested

[...]

$virus_admin = "postmaster@$mydomain";         # due to D_DISCARD default

[...]

$QUARANTINEDIR = '/var/lib/amavis/virusmails';
#$virus_quarantine_method = "local:virus-%i-%n";    # default
#$spam_quarantine_method  = "local:spam-%b-%i-%n";  # default
$virus_quarantine_to  = 'virus-quarantine';    # traditional local quarantine
$spam_quarantine_to = 'spam-quarantine';

[...]

$sa_local_tests_only = 1;   # (default: false)
#$sa_auto_whitelist = 1;    # turn on AWL (default: false)

# Timout for SpamAssassin. This is only used if spamassassin does NOT
# override it (which it often does if sa_local_tests_only is not true)
$sa_timeout = 30;           # timeout in seconds for a call to SpamAssassin
                            # (default is 30 seconds, undef disables it)

# AWL (auto whitelisting), requires spamassassin 2.44 or better
# $sa_auto_whitelist = 1;   # defaults to undef

$sa_mail_body_size_limit = 150*1024;  # don't waste time on SA is mail is larger
                            # (less than 1% of spam is > 64k)
                            # default: undef, no limitations

# default values, can be overridden by more specific lookups, e.g. SQL
$sa_tag_level_deflt  = 4.0; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level
$sa_kill_level_deflt = $sa_tag2_level_deflt; # triggers spam evasive actions
                           # at or above that level: bounce/reject/drop,
                           # quarantine, and adding mail address extension

$sa_dsn_cutoff_level = 10;  # spam level beyond which a DSN is not sent,
                            # effectively turning D_BOUNCE into D_DISCARD;
                            # undef disables this feature and is a default;

$sa_spam_subject_tag = '***SPAM*** ';   # (defaults to undef, disabled)
[...]

Lass danach diese Befehle laufen um den clamav Benutzer der amavis Gruppe hinzuzufügen und amavisd-new und ClamAV neu zu starten:

adduser clamav amavis
/etc/init.d/amavis restart
/etc/init.d/clamav-daemon restart

Als Nächstes müssen wir die Konfigurationsdatei des Freshclam Daemon bearbeiten (das ist der Daemon, der regelmäßig und automatisch die neusten Virussignaturen von einem ClamAV Spiegel holt), da sie einen kleinen Fehler enthält. Öffne /etc/clamav/freshclam.conf und bearbeite die NotifyClamd Zeile wie unten gezeigt wird:

vi /etc/clamav/freshclam.conf

[...]
NotifyClamd /etc/clamav/clamd.conf
[...]

Starte Freshclam dann neu (vergewissere Dich, dass kein anderer Freshclam Prozess läuft (vielleicht von einer anderen ClamAV Installation), da der Start unseres Freshclam dann fehlschlagen wird):

/etc/init.d/clamav-freshclam restart

Nun müssen wir Postfix konfigurieren, damit es eingehende E-Mails durch amavisd-new leitet:

postconf -e ‚content_filter = amavis:[127.0.0.1]:10024‘
postconf -e ‚receive_override_options = no_address_mappings‘

Füge danach folgende Zeilen /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

Starte Postfix dann neu:

/etc/init.d/postfix restart

Lass nun Folgendes laufen

netstat -tap

und Du siehst, dass Postfix (master) auf Port 25 (smtp) und 10025, und amavisd-new auf Port 10024 hört:

server1:~# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost.localdo:10024 *:* LISTEN 4369/amavisd (maste
tcp 0 0 localhost.localdo:10025 *:* LISTEN 4895/master
tcp 0 0 *:874 *:* LISTEN 1964/rpc.statd
tcp 0 0 *:sunrpc *:* LISTEN 1553/portmap
tcp 0 0 *:auth *:* LISTEN 1932/inetd
tcp 0 0 *:smtp *:* LISTEN 4895/master
tcp6 0 0 *:imaps *:* LISTEN 3177/couriertcpd
tcp6 0 0 *:pop3s *:* LISTEN 3094/couriertcpd
tcp6 0 0 *:pop3 *:* LISTEN 3038/couriertcpd
tcp6 0 0 *:imap2 *:* LISTEN 3129/couriertcpd
tcp6 0 0 *:ssh *:* LISTEN 1943/sshd
tcp6 0 0 *:smtp *:* LISTEN 4895/master
tcp6 0 148 localhost:ssh localhost:4631 ESTABLISHED2052/0

Wenn Du magst, kannst Du nun Razor, Pyzor, und DCC SpamAssassin hinzufügen, um die Filterleistung zu verbessern. Razor, Pyzor und DCC sind Spamfilter, die ein gemeinsames Filternetzwerk benutzen. Um sie zu installieren, lass Folgendes laufen

apt-get install razor pyzor dcc-client

Nun müssen wir SpamAssassin mitteilen, diese drei Programme zu verwenden. Bearbeite /etc/spamassassin/local.cf und füge folgende 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

Starte amavisd-new danach neu:

/etc/init.d/amavis restart

Das war es schon. Sieh Dir nun Dein Mail Log (/var/log/mail.log) an, um herauszufinden, ob amavisd-new richtig funktioniert. Wenn amavisd-new eine Spam-oder Virus-E-Mail findet, wird es das protokollieren. Wenn Du amavisd-new (neu) startest, sollte es auch protokollieren, dass es seinen Spam und Virus-Überprüfungscode (wenn nicht, hast Du wahrscheinlich etwas falsch gemacht) läd.

Um Dir Dein Protokoll in Echtzeit anzusehen, kannst Du folgenden Befehl verwenden:

tail -f /var/log/mail.log

(Drücke STRG + c um das Protokoll zu verlassen.)

4 Links

Das könnte dich auch interessieren …