Debian AmavisD: Unterschied zwischen den Versionen

Aus Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
==Einleitung==
=Einleitung=
Hier wird ein Mailfilter eingerichtet, der vor Spam und Viren in emals schützen soll. AmavisD klinkt sich dazu in die Mailkette ein und scannt die Mails mit Hilfe von Spamassassin auf Spamverdacht und mittels ClamAV auf Virenverdacht. AmavisD kann erkannte Spam- und Virusmails auf unterschiedlichste Art und Weise behandeln. Es kann die Mails mit Headern und/oder Subject Tags kennzeichnen, Mails in Quarantäne nehmen bzw. komplett löschen.
Hier wird ein Mailfilter eingerichtet, der vor Spam und Viren in emals schützen soll. AmavisD klinkt sich dazu in die Mailkette ein und scannt die Mails mit Hilfe von Spamassassin auf Spamverdacht und mittels ClamAV auf Virenverdacht. AmavisD kann erkannte Spam- und Virusmails auf unterschiedlichste Art und Weise behandeln. Es kann die Mails mit Headern und/oder Subject Tags kennzeichnen, Mails in Quarantäne nehmen bzw. komplett löschen.


Zeile 8: Zeile 8:




==Installation==
=Installation=
Es sind zahlreiche Pakete erforderlich:
Es sind zahlreiche Pakete erforderlich:


Zeile 48: Zeile 48:
  apt-get --yes install spamassassin razor pyzor amavisd-new
  apt-get --yes install spamassassin razor pyzor amavisd-new


==Konfiguration==
=Konfiguration=
===Spamassassin===
==Spamassassin==
  vi /etc/default/spamassassin
  vi /etc/default/spamassassin
Spamassassin aktivieren:
Spamassassin aktivieren:
Zeile 126: Zeile 126:
  sa-update
  sa-update


===ClamAV===
==ClamAV==
ClamAV ist ein Open Source Antivirentool, das sich in idealerweise in Zusammenarbeit mit AmavisD auf einem Mialserver zur Virenabwehr einsetzen läßt. Zusammen mit dem ClamAV-Daemon wird der freshclam-Daemon gestartet, der im Hintergrund ständig die aktuellsten Virensignaturen herünterlädt.
ClamAV ist ein Open Source Antivirentool, das sich in idealerweise in Zusammenarbeit mit AmavisD auf einem Mialserver zur Virenabwehr einsetzen läßt. Zusammen mit dem ClamAV-Daemon wird der freshclam-Daemon gestartet, der im Hintergrund ständig die aktuellsten Virensignaturen herünterlädt.


Zeile 147: Zeile 147:
  /etc/init.d/clamav-daemon restart
  /etc/init.d/clamav-daemon restart


===AmavisD===
==AmavisD==
  cd /etc/amavis/conf.d
  cd /etc/amavis/conf.d
Aktivieren von Entpacktools, die nicht frei (unfree) sind:
Aktivieren von Entpacktools, die nicht frei (unfree) sind:
Zeile 207: Zeile 207:
  # don't quarantine bad headers (no need since we pass them all):
  # don't quarantine bad headers (no need since we pass them all):
  $bad_header_quarantine_to = undef;
  $bad_header_quarantine_to = undef;
@keep_decoded_original_maps = (new_RE(
  qr'^MAIL$',  # retain full original message for virus checking (can be slow)
  qr'^MAIL-UNDECIPHERABLE$', # recheck full mail if it contains undecipherables
  qr'^(ASCII(?! cpio)|text|uuencoded|xxencoded|binhex)'i,
  # qr'^Zip archive data',    # don't trust Archive::Zip
));
   
   
  # Spam gets the Subject line prepended with:
  # Spam gets the Subject line prepended with:
Zeile 241: Zeile 234:
Evtl. den Eintrag '''''@mynetworks''''' den Netzwerkgegebenheiten anpassen.
Evtl. den Eintrag '''''@mynetworks''''' den Netzwerkgegebenheiten anpassen.
  $inet_socket_port = [10024];  
  $inet_socket_port = [10024];  
  $inet_socket_bind = 127.0.0.1;
  $inet_socket_bind = 127.0.0.1;
   
   
  # disable quarantine subdirectories
  # disable quarantine subdirectories
  $quarantine_subdir_levels = undef;
  $quarantine_subdir_levels = undef;
@keep_decoded_original_maps = (new_RE(
  qr'^MAIL$',  # retain full original message for virus checking (can be slow)
  qr'^MAIL-UNDECIPHERABLE$', # recheck full mail if it contains undecipherables
  qr'^(ASCII(?! cpio)|text|uuencoded|xxencoded|binhex)'i,
# qr'^Zip archive data',    # don't trust Archive::Zip
));
   
   
  # we may need to add items to this   
  # we may need to add items to this   
Zeile 252: Zeile 251:




===Postfix===
==Postfix==
An den Postfix Konfigurationsfiles müssen Änderungen durchgeführt werden, um den Spamfilter in die Mail-Transportkette einzuschleifen:
An den Postfix Konfigurationsfiles müssen Änderungen durchgeführt werden, um den Spamfilter in die Mail-Transportkette einzuschleifen:
  vi /etc/master.cf
  vi /etc/master.cf
Zeile 286: Zeile 285:




==Starten der Services==
=Starten der Services=
  /etc/init.d/spamassassin start
  /etc/init.d/spamassassin start
  /etc/init.d/amavisd start
  /etc/init.d/amavisd start
  /etc/init.d/postfix restart
  /etc/init.d/postfix restart


==Funktionstest==
=Funktionstest=
===Spamtest===
==Spamtest==
Eine mail an einem lokalen User z.B. tux mit folgendem Inhalt (Betreff egal) senden:
Eine mail an einem lokalen User z.B. tux mit folgendem Inhalt (Betreff egal) senden:


Zeile 301: Zeile 300:
Die Mail sollte mit dem Originalbetreff und, falls '''''$sa_spam_subject_tag''''' gesetzt wurde, mit vorgestelltem *****SPAM***** im Postfach von Benutzer tux ankommen. Der Mailheader sollte einen Hinweis auf den Spam-Level (>1000) geben.
Die Mail sollte mit dem Originalbetreff und, falls '''''$sa_spam_subject_tag''''' gesetzt wurde, mit vorgestelltem *****SPAM***** im Postfach von Benutzer tux ankommen. Der Mailheader sollte einen Hinweis auf den Spam-Level (>1000) geben.


===Virustest===
==Virustest==
Der EICAR-Testvirus wurde geschaffen, um Anti-Virentools einem Funktionscheck unterziehen zu können. Es gibt verschiedene "Erscheinungsformen" des EICAR Testvirus: als .txt-Files oder .Zip-Files.
Mit Hilfe des EICAR-Virus wird die Funktionalität von ClamAV und dessen 'eingebauter' Signaturen verifiziert. Die korrekte Funktion der Sanesecurity Signaturen wird im zweiten Schritt mit drei weiteren Testmails verifiziert.
 
===EICAR-Testvirus===
Der EICAR-Testvirus wurde geschaffen, um Anti-Virentools einem Funktionscheck unterziehen zu können. Es gibt verschiedene "Erscheinungsformen" des EICAR Testvirus: als .txt-Files oder .Zip-Files.  


Das EICAR-Testvirus als .txt und .zip File von http://www.eicar.org/anti_virus_test_file.htm downloaden und Lokal auf dem PC speichern.
Das EICAR-Testvirus als .txt und .zip File von http://www.eicar.org/anti_virus_test_file.htm downloaden und Lokal auf dem PC speichern.
Zeile 312: Zeile 314:
Den selben Vorgang für den EICAR Testvirus im .zip-File wiederholen.
Den selben Vorgang für den EICAR Testvirus im .zip-File wiederholen.


===Sanesecurity Signaturen===
Mit Hilfe von drei Mails wird die korrekte Funktionalität der Sanesecurity Signaturen verifiziert:
* Test1: Eine '''HTML-Testmail''' an einen lokalen User versenden - z.B. Tux - mit Betreff - z.B. Test1 - und folgendem Text:
body_rrg63uhj2ucyeccrux7d83a4qd5ua5vnlgwjp6b6fmpzpobzjabftehuhraxfbyzzzzz
* Test2: Eine Testmail an einen lokalen User versenden - z.B. Tux - mit folgendem '''Subject (Betreff)''':
rrg63Uhj2UCyECcruX7D83A4qd5UA5vnlgwJp6b6fmPZpObZJAbftehuhRAXFby
* Test3: '''Eine Text-Testmail (kein HTML)''' an einen lokalen User versenden - z.B. Tux - mit Betreff - z.B. Test3 - und folgendem Text:
body_rrg63Uhj2UCyECcruX7D83A4qd5UA5vnlgwJp6b6fmPZ0ajdjkwjnSSDfsdfsdfnwerd
{{Rechteck3|'''Hinweis:'''
* Die Zeichenfolgen müssen exakt eingehalten werden (kein Zeichen mehr eingeben, auch keine Leerzeichen). Ansonsten werden sie nicht zuverlässig erkannt.
* Alle drei Testmails müssen als Virus identifiziert werden und in Quarantäne landen. Der Postmaster erhält in diesem Fall eine Hinweismail, dass die Mails in Quarantäne gestellt wurden, und nicht dem eigentlichen Empfänger zugestellt wurden.
* Falls dies nicht der Fall sein sollte, prüfen, ob die Vorgaben exakt eingehalten wurden: Test1: HTML-Mail , Test2: SUBJECT exakt nach Vorgabe, Test3: Text-Mail}}


==Optional: MailZu Quarantäne Management==
 
=Optional: MailZu Quarantäne Management=
MailZu ist ein grafischer Quarantäne Manager, mit dessen Hilfe es möglich ist, in Quarantäne befindliche mails zu löschen oder zu releasen (zum Empfänger zustellen).
MailZu ist ein grafischer Quarantäne Manager, mit dessen Hilfe es möglich ist, in Quarantäne befindliche mails zu löschen oder zu releasen (zum Empfänger zustellen).


Zeile 321: Zeile 337:
* [[Debian_MySQL|MySQL]]
* [[Debian_MySQL|MySQL]]


===Installation===
==Installation==
  cd /usr/local/src
  cd /usr/local/src
  wget http://www.mailzu.net/download/MailZu_0.8RC3.tar.gz
  wget http://www.mailzu.net/download/MailZu_0.8RC3.tar.gz
Zeile 331: Zeile 347:
  chown -R www-data:www-data /var/www/mailzu
  chown -R www-data:www-data /var/www/mailzu


===Datenbank einrichten===
==Datenbank einrichten==
Mailzu benötigt eine Datenbank, in die AmavisD später die in Quarantäne befindlichen Mails ablegen kann.
Mailzu benötigt eine Datenbank, in die AmavisD später die in Quarantäne befindlichen Mails ablegen kann.
{{Rechteck3|'''Hinweis:'''
{{Rechteck3|'''Hinweis:'''
Zeile 343: Zeile 359:
  mysql -u root -p mailzu </var/www/mailzu/contrib/mysql/mailzu-sql-init.sql
  mysql -u root -p mailzu </var/www/mailzu/contrib/mysql/mailzu-sql-init.sql


===Konfiguration von MailZu===
==Konfiguration von MailZu==
  cd /var/www/mailzu/config
  cd /var/www/mailzu/config
  mv config.php.sample config.php
  mv config.php.sample config.php
Zeile 369: Zeile 385:
  $conf['app']['allowViruses'] = 1;
  $conf['app']['allowViruses'] = 1;


===Konfiguration von AmavisD===
==Konfiguration von AmavisD==
Damit MailZu funktioniert, müssen auch einige Einstellungen an der AmavisD-Konfiguration angepasst werden:
Damit MailZu funktioniert, müssen auch einige Einstellungen an der AmavisD-Konfiguration angepasst werden:
  vi /etc/amavis/conf.d/50-user
  vi /etc/amavis/conf.d/50-user
Zeile 392: Zeile 408:




===Funktionstest===
==Funktionstest==
Amavisd neustarten:
Amavisd neustarten:
  /etc/init.d/amavis restart
  /etc/init.d/amavis restart
Zeile 409: Zeile 425:
Durch anklicken der Checkbox vor der Mail und anschließend des Buttons '''''Release''''' wird die mail ins Postfach des Benutzers 'tux' zugestellt.
Durch anklicken der Checkbox vor der Mail und anschließend des Buttons '''''Release''''' wird die mail ins Postfach des Benutzers 'tux' zugestellt.


===Aufräumscripte===
==Aufräumscripte==
Damit die SQL-Datenbank nicht endlos in die Größe wächst, werden hier zwei Scripts erstellt, die alte Nachrichten und in Quarantäne befindliche Nachrichten nach einer definierten Anzahl von Tagen löscht.
Damit die SQL-Datenbank nicht endlos in die Größe wächst, werden hier zwei Scripts erstellt, die alte Nachrichten und in Quarantäne befindliche Nachrichten nach einer definierten Anzahl von Tagen löscht.
  vi /usr/sbin/amavis_clean
  vi /usr/sbin/amavis_clean
Zeile 428: Zeile 444:
  chmod 750 /usr/sbin/amavis_clean
  chmod 750 /usr/sbin/amavis_clean
Cronjob, der täglich gestartet wird, anlegen:
Cronjob, der täglich gestartet wird, anlegen:
  vi /etc/cron.d/amavis_clean
  vi /etc/cron.daily/amavis_clean
Folgende Zeilen einfügen und den Eintrag PWD='''''mailzu_pwd''''' entsprechend oben vergebenen Passwort bearbeiten:
Folgende Zeilen einfügen und den Eintrag PWD='''''mailzu_pwd''''' entsprechend oben vergebenen Passwort bearbeiten:
  #!/bin/bash
  #!/bin/bash

Version vom 24. März 2009, 20:35 Uhr

Einleitung

Hier wird ein Mailfilter eingerichtet, der vor Spam und Viren in emals schützen soll. AmavisD klinkt sich dazu in die Mailkette ein und scannt die Mails mit Hilfe von Spamassassin auf Spamverdacht und mittels ClamAV auf Virenverdacht. AmavisD kann erkannte Spam- und Virusmails auf unterschiedlichste Art und Weise behandeln. Es kann die Mails mit Headern und/oder Subject Tags kennzeichnen, Mails in Quarantäne nehmen bzw. komplett löschen.


Voraussetzungen:


Installation

Es sind zahlreiche Pakete erforderlich:

Debian Paketmanager:

apt-get --yes install libgd2-xpm php5-imap php5-ldap php5-mcrypt php5-gd
apt-get --yes install libcrypt-blowfish-perl libossp-uuid-perl libio-zlib-perl
apt-get --yes install libarchive-tar-perl libarchive-zip-perl libtemplate-perl
apt-get --yes install libemail-address-perl libconvert-tnef-perl libdbd-pg-perl libdbd-mysql-perl
apt-get --yes install libunix-syslog-perl libnet-dns-perl libberkeleydb-perl
apt-get --yes install libauthen-sasl-perl libmail-dkim-perl libmail-spf-perl libio-socket-ssl-perl libnet-ident-perl 

Pear PHP-Manager:

pear channel-update pear.php.net
pear upgrade pear
pear install XML_RPC
pear install Mail_Mime
pear install Auth_SASL
pear install Net_Socket
pear install Net_Smtp
pear install Net_IMAP
pear install Log
pear install DB
pear install DB_Pager
pear install Pager

Perl-Module (MCPAN):

perl -MCPAN -e shell
install Net::Server
install Mail::SPF::Query
install Convert::UUlib
install Crypt::CBC
install MIME::Parser
install DBD::Pg
exit

AmavisD Spamassassin und ClamAV

apt-get --yes install unrar-free nomarch lzop cabextract bzip2 p7zip-full rar lha zoo ripole
apt-get --yes install clamav clamav-daemon clamav-docs 
apt-get --yes install spamassassin razor pyzor amavisd-new

Konfiguration

Spamassassin

vi /etc/default/spamassassin

Spamassassin aktivieren:

ENABLED=1

Plugin DKIM:

vi /etc/spamassassin/v312.pre

DKIM Plugin aktivieren (#-Zeichen entfernen):

loadplugin Mail::SpamAssassin::Plugin::DKIM

Plugin Pyzor:

pyzor discover
su amavis -c 'pyzor discover'
su amavis -c 'pyzor ping' 

Pyzor ping sollte ein Ok liefern: public.pyzor.org:24441 (200, 'OK')

Plugin Razor:

razor-admin -create
razor-admin -register
cp -r /root/.razor /var/lib/amavis
chown -R amavis:amavis /var/lib/amavis

Plugin DCC:

cd /usr/local/src
wget http://www.dcc-servers.net/dcc/source/dcc-dccproc.tar.Z
tar xzvf dcc-dccproc.tar.Z
cd dcc-dccproc-[tab][enter] 
./configure --with-uid=amavis
make
make install
ln -s /var/dcc/libexec/cron-dccd /usr/bin/cron-dccd 
chown -R amavis:amavis /var/dcc 

Testen von DCC:

cdcc info 

Es sollten Antworten von den DCC-Servern erfolgen. Localhost (127.0.0.1) wird nicht antworten. Dies ist normal hier.

DCC regelmäßig updaten:

vi /etc/cron.daily/amavisd-new

Folgenden Befehl anhängen:

test -e /usr/bin/cron-dccd && exec /usr/bin/cron-dccd

Aktivieren der Plugins und Bayes-Filter:

vi /etc/spamassassin/local.cf

Kommentarzeichen (#) von folgenden Einträgen entfernen:

lock_method flock
use_bayes 1
bayes_auto_learn 1
bayes_ignore_header X-Bogosity
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Status

Folgende Zeilen ans Ende anfügen:

bayes_path /var/lib/amavis/.spamassassin/bayes
auto_whitelist_path /var/lib/amavis/.spamassassin/auto-whitelist
whitelist_from spambin@example.com
bayes_auto_learn_threshold_nonspam -0.5

#pyzor
use_pyzor 1
pyzor_path /usr/bin/pyzor

#razor
use_razor2 1
razor_config /etc/razor/razor-agent.conf
razor_timeout 8

#dcc
use_dcc 1

DCC-Plugin aktivieren:

vi /etc/spamassassin/v310.pre 

DCC Plugin aktivieren (#-Zeichen entfernen):

loadplugin Mail::SpamAssassin::Plugin::DCC

Spamassassin Regeln updaten:

sa-update

ClamAV

ClamAV ist ein Open Source Antivirentool, das sich in idealerweise in Zusammenarbeit mit AmavisD auf einem Mialserver zur Virenabwehr einsetzen läßt. Zusammen mit dem ClamAV-Daemon wird der freshclam-Daemon gestartet, der im Hintergrund ständig die aktuellsten Virensignaturen herünterlädt.

amavis- und clamav- User den jeweiligen Benutzergruppen hinzufügen, damit diese auf gewisse Files gemeinsamen Zugriff erhalten:

adduser clamav amavis
adduser amavis clamav

Für den Einsatz von ClamAV auf einem Mailserver empfiehlt sich, die zusätzlichen Phishing, Spam und Mailware Signatures von http://www.sanesecurity.net einzubinden. Dazu steht auf der Homepage ein Script bereit, das diese Signaturen downloaded und ClamAV zur Verfügung stellt.

cd /usr/sbin
wget http://www.retrosnub.co.uk/sanesecurity/script/fetch-sanesecurity-sigs
chmod +s fetch-sanesecurity-sigs

Beim ersten Start des Update Scripts legt dieses nötige Verzeichnisse an und lädt einen GPG-Key herunter, der für die Updates nötig ist, um deren Integrität zu verifizieren.

fetch-sanesecurity-sigs

Wenn die Signaturen erfolgreich und fehlerfrei heruntergeladen werden konnten, empfiehlt es sich einen Cronjob anzulegen, der sich um die regelmäßigen Updates der Sanesecurity Signaturen kümmert:

vi /etc/cron.d/sanesecurity_updater

Folgende Zeilen einfügen, damit der Updater alle zwei Stunden aufgerufen wird:

22 */2 * * * root /usr/sbin/fetch-sanesecurity-sigs > /dev/null

ClamAV neustarten:

/etc/init.d/clamav-freshclam restart
/etc/init.d/clamav-daemon restart

AmavisD

cd /etc/amavis/conf.d

Aktivieren von Entpacktools, die nicht frei (unfree) sind:

vi 01-debian

Folgende Einstellungen treffen:

$unrar      = ['rar', 'unrar']; #disabled (non-free, no security support)
#$unrar         = undef;
$lha    = 'lha'; #disabled (non-free, no security support)
#$lha   = undef;

Aktivieren der Spam- und Virenchecks:

vi 15-content_filter_mode

Folgende Optionen aktivieren (#-Zeichen entfernen):

@bypass_virus_checks_maps = (
  \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

@bypass_spam_checks_maps = (
  \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

Nun sind zahlreiche Einstellungen im File 50-user erforderlich:

Achtung:
Alle Einträge zwischen use strict und 1; einfügen. Ansonsten wird Amavisd nicht korrekt funktionieren!
vi 50-user

$mydomain und $myhostname entsprechend der Domain und Hostname anpassen

# explicitly set $mydomain and $myhostname:
$mydomain = 'example.com';
$myhostname = 'server.example.com';
@local_domains_acl = ( ".$mydomain" ); 
# when amavisd-new sends notifications, they appear to come from here:
$mailfrom_notify_admin     = "postmaster\@$mydomain";
$mailfrom_notify_recip     = "postmaster\@$mydomain";
$mailfrom_notify_spamadmin = "postmaster\@$mydomain";
$hdrfrom_notify_sender = "amavisd-new <postmaster\@$mydomain>";

$notify_method = 'smtp:[127.0.0.1]:10025'; # where to submit notifications

$max_servers = 6;

# We discard (and quarantine) viruses, discard (and quarantine) spam (>= kill_level), 
# bounce (and quarantine) banned files and pass bad headers:
$final_virus_destiny      = D_DISCARD;
$final_spam_destiny       = D_DISCARD;
$final_banned_destiny     = D_BOUNCE;
$final_bad_header_destiny = D_PASS;

#Local Tests only (no Internet based tests)
$sa_local_tests_only = 0;

#Handling of already existing Spam Headers 
$remove_existing_spam_headers = 1;
$remove_existing_x_scanned_headers = 1;

# disable DKIM - for now
$enable_dkim_verification = 0;  # enable DKIM signatures verification
$enable_dkim_signing = 0;    # load DKIM signing code, keys defined by dkim_key 

# don't quarantine bad headers (no need since we pass them all):
$bad_header_quarantine_to = undef;

# Spam gets the Subject line prepended with:
$sa_spam_subject_tag = '***SPAM***';

Mittels $sa_spam_subject_tag kann festgelegt werden, in welcher Form das Subject einer Spam-Mail geändert werden soll. Standardmäßig wird dem eigentlichen Subject ein ***SPAM** vorangestellt. Falls das Subject nicht geändert weden soll, dann muss $sa_spam_subject_tag=undef; gesetzt werden

$sa_spam_subject_tag = '***SPAM*** ';

# We tag all headers (for 'local' domains) with X-Spam info:
$sa_tag_level_deflt = undef;

# This is the system default spam tag level
$sa_tag2_level_deflt = 6.31;

# The default is to not quarantine any spam (outside of what users get in their Spam folder), 
# so set default kill_level high. Users can choose their own kill_level however. kill_level
# will trigger quarantining.
$sa_kill_level_deflt = 9999;

$warnbannedrecip = 1;
$defang_banned = 1;
$defang_virus  = 1;

# We are going to create policy banks that will notify us of internally created spam
# but also let banned files out (provided they are compressed).

@mynetworks = qw( 127.0.0.0/8 192.168.0.0/16 );

Evtl. den Eintrag @mynetworks den Netzwerkgegebenheiten anpassen.

$inet_socket_port = [10024]; 
$inet_socket_bind = 127.0.0.1;

# disable quarantine subdirectories
$quarantine_subdir_levels = undef;

@keep_decoded_original_maps = (new_RE(
  qr'^MAIL$',   # retain full original message for virus checking (can be slow)
  qr'^MAIL-UNDECIPHERABLE$', # recheck full mail if it contains undecipherables
  qr'^(ASCII(?! cpio)|text|uuencoded|xxencoded|binhex)'i,
# qr'^Zip archive data',     # don't trust Archive::Zip
));

# we may need to add items to this  
@additional_perl_modules = qw(
); 


Postfix

An den Postfix Konfigurationsfiles müssen Änderungen durchgeführt werden, um den Spamfilter in die Mail-Transportkette einzuschleifen:

vi /etc/master.cf

Folgende Zeilen ans Ende anfügen:

lmtp-amavis    unix  -       -       n       -       2       lmtp
   -o lmtp_data_done_timeout=1200
   -o lmtp_send_xforward_command=yes
   -o disable_dns_lookups=yes
   -o max_use=20
127.0.0.1:10025 inet n  -       y     -       -  smtpd
   -o content_filter=
   -o local_recipient_maps=
   -o relay_recipient_maps=
   -o smtpd_restriction_classes=
   -o smtpd_delay_reject=no
   -o smtpd_client_restrictions=permit_mynetworks,reject
   -o smtpd_helo_restrictions=
   -o smtpd_sender_restrictions=
   -o smtpd_recipient_restrictions=permit_mynetworks,reject
   -o smtpd_data_restrictions=reject_unauth_pipelining
   -o smtpd_end_of_data_restrictions=
   -o mynetworks=127.0.0.0/8
   -o smtpd_error_sleep_time=0
   -o smtpd_soft_error_limit=1001
   -o smtpd_hard_error_limit=1000
   -o smtpd_client_connection_count_limit=0
   -o smtpd_client_connection_rate_limit=0
   -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
vi /etc/postfix/main.cf

Folgende Option einfügen:

content_filter=lmtp-amavis:[127.0.0.1]:10024


Starten der Services

/etc/init.d/spamassassin start
/etc/init.d/amavisd start
/etc/init.d/postfix restart

Funktionstest

Spamtest

Eine mail an einem lokalen User z.B. tux mit folgendem Inhalt (Betreff egal) senden:

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Bitte den Text exakt so kopieren. Keine Zeichen hinzufügen oder weglassen. Dies ist eine standardisierte Testmessage für Spamfilter, die definitiv als SPAM erkannt werden muss.

Die Mail sollte mit dem Originalbetreff und, falls $sa_spam_subject_tag gesetzt wurde, mit vorgestelltem *****SPAM***** im Postfach von Benutzer tux ankommen. Der Mailheader sollte einen Hinweis auf den Spam-Level (>1000) geben.

Virustest

Mit Hilfe des EICAR-Virus wird die Funktionalität von ClamAV und dessen 'eingebauter' Signaturen verifiziert. Die korrekte Funktion der Sanesecurity Signaturen wird im zweiten Schritt mit drei weiteren Testmails verifiziert.

EICAR-Testvirus

Der EICAR-Testvirus wurde geschaffen, um Anti-Virentools einem Funktionscheck unterziehen zu können. Es gibt verschiedene "Erscheinungsformen" des EICAR Testvirus: als .txt-Files oder .Zip-Files.

Das EICAR-Testvirus als .txt und .zip File von http://www.eicar.org/anti_virus_test_file.htm downloaden und Lokal auf dem PC speichern.

Eine Testmail an einen lokalen Mailuser -z.B. Tux - verfassen und den EICAR Testvirus (.txt) anhängen.

Es sollte eine Notification-Mail generiert werden, dass der EICAR-Testvirus entdeckt wurde, und die eigentliche Mail in Quarantäne genommen wurde.

Den selben Vorgang für den EICAR Testvirus im .zip-File wiederholen.

Sanesecurity Signaturen

Mit Hilfe von drei Mails wird die korrekte Funktionalität der Sanesecurity Signaturen verifiziert:

  • Test1: Eine HTML-Testmail an einen lokalen User versenden - z.B. Tux - mit Betreff - z.B. Test1 - und folgendem Text:
body_rrg63uhj2ucyeccrux7d83a4qd5ua5vnlgwjp6b6fmpzpobzjabftehuhraxfbyzzzzz
  • Test2: Eine Testmail an einen lokalen User versenden - z.B. Tux - mit folgendem Subject (Betreff):
rrg63Uhj2UCyECcruX7D83A4qd5UA5vnlgwJp6b6fmPZpObZJAbftehuhRAXFby
  • Test3: Eine Text-Testmail (kein HTML) an einen lokalen User versenden - z.B. Tux - mit Betreff - z.B. Test3 - und folgendem Text:
body_rrg63Uhj2UCyECcruX7D83A4qd5UA5vnlgwJp6b6fmPZ0ajdjkwjnSSDfsdfsdfnwerd
Hinweis:
  • Die Zeichenfolgen müssen exakt eingehalten werden (kein Zeichen mehr eingeben, auch keine Leerzeichen). Ansonsten werden sie nicht zuverlässig erkannt.
  • Alle drei Testmails müssen als Virus identifiziert werden und in Quarantäne landen. Der Postmaster erhält in diesem Fall eine Hinweismail, dass die Mails in Quarantäne gestellt wurden, und nicht dem eigentlichen Empfänger zugestellt wurden.
  • Falls dies nicht der Fall sein sollte, prüfen, ob die Vorgaben exakt eingehalten wurden: Test1: HTML-Mail , Test2: SUBJECT exakt nach Vorgabe, Test3: Text-Mail


Optional: MailZu Quarantäne Management

MailZu ist ein grafischer Quarantäne Manager, mit dessen Hilfe es möglich ist, in Quarantäne befindliche mails zu löschen oder zu releasen (zum Empfänger zustellen).

Voraussetzung:

Installation

cd /usr/local/src
wget http://www.mailzu.net/download/MailZu_0.8RC3.tar.gz
tar xvf MailZu_0.8RC3.tar.gz
cd MailZu_0.8RC3/contrib/mysql
wget ftp://download:download@schiele.homelinux.org/debian/mailzu-sql-init.sql
cd /usr/local/src
mv MailZu_0.8RC3 /var/www/mailzu
chown -R www-data:www-data /var/www/mailzu

Datenbank einrichten

Mailzu benötigt eine Datenbank, in die AmavisD später die in Quarantäne befindlichen Mails ablegen kann.

Hinweis:
Bei den beiden mysql -u root ... - Befehlen wird jeweils das sql_root_pwd verlangt.
mysql -u root -p
CREATE DATABASE mailzu;

mailzu_pwd mit dem gewünschten Passwort für die Datenbank ersetzen:

GRANT ALL PRIVILEGES ON mailzu.* TO amavis@localhost IDENTIFIED BY 'mailzu_pwd';
exit
mysql -u root -p mailzu  'AM.PDP',
  inet_acl => [qw( 127.0.0.1 127.0.1.1 [::1] IP_des_SERVERS )],
};

Datenbank-Verbindung:

@lookup_sql_dsn =  ( ['DBI:mysql:database=mailzu;host=127.0.0.1;port=3306', 'amavis', 'mailzu_pwd']);
@storage_sql_dsn = @lookup_sql_dsn
$banned_files_quarantine_method = 'sql:';
$spam_quarantine_method         = 'sql:';
$virus_quarantine_method        = 'sql:';
$bad_header_quarantine_method   = 'sql:';
$timestamp_fmt_mysql = 1;


Funktionstest

Amavisd neustarten:

/etc/init.d/amavis restart

Je eine Spam- und Virusmail wie in → Funktionstest beschrieben an den User 'tux' senden.


Webbrowser öffnen und Adresse: http://IP_des_Servers/mailzu Als User 'tux' einloggen.

Die Quarantine Summary sollte eine Virusmail anzeigen. Die Spammail wurde nicht in Quarantäne genommen.

Auf den Button My Quarantine klicken. Es erscheint die Virusmail mit Angaben zum Betreff, usw.

Durch anklicken der Checkbox vor der Mail und anschließend des Buttons Release wird die mail ins Postfach des Benutzers 'tux' zugestellt.

Aufräumscripte

Damit die SQL-Datenbank nicht endlos in die Größe wächst, werden hier zwei Scripts erstellt, die alte Nachrichten und in Quarantäne befindliche Nachrichten nach einer definierten Anzahl von Tagen löscht.

vi /usr/sbin/amavis_clean

Folgende Zeilen einfügen.

  • den Eintrag PWD=mailzu_pwd entsprechend oben vergebenen Passwort bearbeiten
  • DAYS=20 evtl. anpassen. Nach DAYS-Tagen werden in Quarantäne befindliche Nachrichten gelöscht.
#!/bin/bash
DB=mailzu
USER=amavis
PWD=mailzu_pwd
DAYS=20

echo "USE $DB;" >/etc/amavis_clean-msgs.sql
mysql -u$USER -p$PWD $DB -B -N -e "SELECT CONCAT('DELETE FROM msgs WHERE mail_id = ', CHAR(39), mail_id, CHAR(39), ' LIMIT 1;' ) FROM msgs WHERE time_iso < NOW() - INTERVAL $DAYS DAY;" >>/etc/amavis_clean-msgs.sql
mysql -u$USER -p$PWD </etc/amavis_clean-msgs.sql
rm -f /etc/amavis_clean-msgs.sql

Rechte anpassen:

chmod 750 /usr/sbin/amavis_clean

Cronjob, der täglich gestartet wird, anlegen:

vi /etc/cron.daily/amavis_clean

Folgende Zeilen einfügen und den Eintrag PWD=mailzu_pwd entsprechend oben vergebenen Passwort bearbeiten:

#!/bin/bash
USER=amavis
PWD=mailzu_pwd

/usr/sbin/amavis_clean
/usr/bin/mysql -u$USER -p$PWD < /etc/amavis_clean.sql
exit 0

Rechte anpassen:

chmod 750 /etc/cron.d/amavis_clean

SQL-File anlegen, das die Löschbefehle enthält:

vi /etc/amavis_clean.sql

Folgende Zeilen einfügen:

USE mailzu;
DELETE FROM msgs WHERE time_iso < now() - INTERVAL 1 hour AND content IS NULL;
DELETE FROM maddr WHERE NOT EXISTS (SELECT 1 FROM msgs WHERE sid=id) AND NOT EXISTS (SELECT 1 FROM msgrcpt WHERE rid=id);
DELETE FROM quarantine WHERE NOT EXISTS (SELECT 1 FROM msgs WHERE mail_id=quarantine.mail_id);
DELETE FROM msgrcpt WHERE NOT EXISTS (SELECT 1 FROM msgs WHERE mail_id=msgrcpt.mail_id);
DELETE FROM msgs WHERE mail_id IN (SELECT DISTINCT mail_id FROM msgrcpt WHERE rs='D');