1.101. Postfix Antivirus
Postfix wie gewohnt einrichten. Wie das geht wurde sicher schon irgendwo erwähnt. ;)
Bemerkung
Das ganze läuft hier in einer Jail, deshalb ist folgendes zu beachten! Zur
Verwendung in einer Jail muss localhost
oder 127.0.0.1
durch die
Jail-IP bzw. den Namen der Jail ersetzt werden.
Mails sollen von Postfix an den Virenscanner gegeben werden und von diesem zurück an Postfix zur weiteren Auslieferung, dazu öffnet das Programm amavisd standardmässig den Port 10024 (frei einstellbar) und nimmt auf diesem Port per smtp Mails entgegen. Nach erfolgter Prüfung wird die Mail auf den standardmässig am Port 10025 lauschenden Postfix zurück gegeben und weiter verteilt.
Um zum Mailvirenscanner zu gelangen, installiere man sich folgenden Port:
Postfix muss der Virenscanner als „content_filter“ bekannt gemacht
werden. Damit wird auch gleich geklärt wie die Mail weitergeleitet
werden soll. In diesem Falle per smtp
an die IP 192.168.0.10
an
Port 10024, dahin werden wir amavisd
binden. Beim Anpassen der
/usr/local/etc/postfix/main.cf entweder einen vorhandenen Eintrag
bearbeiten oder eine neue Zeile anlegen Zur Verwendung in meiner Jail
wurde localhost
oder 127.0.0.1
durch die Jail-IP ersetzt.
/usr/local/etc/postfix/main.cf
content_filter = smtp:192.168.0.10:10024
Um zu veranlassen, das Postfix auch auf Port 10025 die Mail wieder
zurücknimmt muss folgendes in der /usr/local/etc/postfix/master.cf
vorhanden sein. Dies wird mit Installation des amavisd-new Ports
normalerweise automatisch erledigt. Zur Verwendung in einer Jail muss
localhost
oder 127.0.0.1
durch die Jail-IP ersetzt werden.
/usr/local/etc/postfix/master.cf
192.168.0.10:10025 inet n - n - - smtpd -o content_filter=
Einige Zeilen der amavisd.conf
sollte man noch anpassen, als
Grundlage habe ich amavisd.conf-sample
verwendet. Aber auch
amavisd.conf-default
und amavisd.conf-dist
sind einen Blick wert
wenn es um zusätzliche Einstellungen geht die in der conf.sample
nicht aufgeführt sind.
/usr/local/etc/amavisd.conf
$mydomain = 'otfa.lan'; # (no useful default)
$myhostname = 'ip10.otfa.lan'; # fqdn of this host, default by uname(3)
Das wars auch schon, ansonsten ist man mit den Vorgaben gut bedient.
Will man amavisd
in einer Jail betreiben, muss man noch die
folgenden Zeilen beachten, da er sonst versucht sich an die IP
127.0.0.1
zu binden und NUR dieser Zugriff gibt. Das führt in einer
Jail jedoch zu Problemen. Gleichzeitig sind dies die Zeilen die man
verändern muss, wenn amavisd auf einem anderen Recher als der Postfix
läuft.
$forward_method = 'smtp:[192.168.0.10]:10025'; # Wohin soll die Mail nach der Prüfung (siehe postfix/master.cf)
$inet_socket_bind = '192.168.0.10'; # An welche IP soll der Port gebunden werden
@inet_acl = qw( 192.168.0.10 ); # Welche Rechner dürfen Mails zur Prüfung abgeben
@mynetworks = qw( 192.168.0.0/24 );
Da ich nicht gebrauchen kann, das ausführbare Dateien für Windows nicht ankommen habe ich die folgenden Zeilen zum Kommentar degradiert und eine leere „new_RE()“ angelegt.
###############
##$banned_filename_re = new_RE(
## qr'^UNDECIPHERABLE$', # is or contains any undecipherable components
#
# # block certain double extensions anywhere in the base name
# qr'\.[^./]*\.(exe|vbs|pif|scr|bat|cmd|com|cpl|dll)\.?$'i,
#
## qr'[{}]', # curly braces in names (serve as Class ID extensions - CLSID)
#
# qr'^application/x-msdownload$'i, # block these MIME types
# qr'^application/x-msdos-program$'i,
# qr'^application/hta$'i,
#
## qr'^message/partial$'i, # rfc2046 MIME type
#
## qr'^message/external-body$'i, # rfc2046 MIME type
## (btw, note that allowing 'message/external-body' is probably no worse
## than allowing mail with HTML and/or allowing a user to browse the web)
#
## [ qr'^\.(Z|gz|bz2)$' => 0 ], # allow any in Unix-compressed
# [ qr'^\.(rpm|cpio|tar)$' => 0 ], # allow any in Unix-type archives
## [ qr'^\.(zip|rar|arc|arj|zoo)$'=> 0 ], # allow any within such archives
#
# qr'.\.(exe|vbs|pif|scr|bat|cmd|com|cpl)$'i, # banned extension - basic
## qr'.\.(ade|adp|app|bas|bat|chm|cmd|com|cpl|crt|emf|exe|fxp|grp|hlp|hta|
## inf|ins|isp|js|jse|lnk|mda|mdb|mde|mdw|mdt|mdz|msc|msi|msp|mst|
## ops|pcd|pif|prg|reg|scr|sct|shb|shs|vb|vbe|vbs|
## wmf|wsc|wsf|wsh)$'ix, # banned ext - long
#
## qr'.\.(mim|b64|bhx|hqx|xxe|uu|uue)$'i, # banned extension - WinZip vulnerab.
#
# qr'^\.(exe-ms)$', # banned file(1) types
## qr'^\.(exe|lha|tnef|cab|dll)$', # banned file(1) types
#);
###############
$banned_filename_re = new_RE();
Beim gewünschten (und installiertem) Virenscanner die Kommentarzeichen entfernen, hier nur als Beispiel ClamAV. Zu finden unter security/clamav.
['ClamAV-clamd',
\&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd"],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
Mails bei denen ein Virus gefunden wird, werden nach /var/virusmails
gesichert.
Ein erfolgreicher Start sieht in /var/log/maillog
in etwa so aus,
wichtig sind die Zeilen der erkannten Virenscanner. Manuell wird mit
# /usr/local/sbin/amavisd
gestartet.
/var/log/maillog
Feb 4 15:12:15 ip10 amavis[687]: starting. /usr/local/sbin/amavisd at ip10.otfa.lan amavisd-new-2.2.1 (20041222), Unicode aware
Feb 4 15:12:15 ip10 amavis[687]: Perl version 5.008005
Feb 4 15:12:17 ip10 amavis[689]: Module Amavis::Conf 2.034
Feb 4 15:12:17 ip10 amavis[689]: Module Archive::Tar 1.23
Feb 4 15:12:17 ip10 amavis[689]: Module Archive::Zip 1.14
Feb 4 15:12:17 ip10 amavis[689]: Module BerkeleyDB 0.26
Feb 4 15:12:17 ip10 amavis[689]: Module Compress::Zlib 1.33
Feb 4 15:12:17 ip10 amavis[689]: Module Convert::TNEF 0.17
Feb 4 15:12:17 ip10 amavis[689]: Module Convert::UUlib 1.04
Feb 4 15:12:17 ip10 amavis[689]: Module DBI 1.46
Feb 4 15:12:17 ip10 amavis[689]: Module DB_File 1.809
Feb 4 15:12:17 ip10 amavis[689]: Module MIME::Entity 5.417
Feb 4 15:12:17 ip10 amavis[689]: Module MIME::Parser 5.417
Feb 4 15:12:17 ip10 amavis[689]: Module MIME::Tools 5.417
Feb 4 15:12:17 ip10 amavis[689]: Module Mail::Header 1.66
Feb 4 15:12:17 ip10 amavis[689]: Module Mail::Internet 1.66
Feb 4 15:12:17 ip10 amavis[689]: Module Mail::SpamAssassin 3.000002
Feb 4 15:12:17 ip10 amavis[689]: Module Net::Cmd 2.26
Feb 4 15:12:17 ip10 amavis[689]: Module Net::DNS 0.48
Feb 4 15:12:17 ip10 amavis[689]: Module Net::SMTP 2.29
Feb 4 15:12:17 ip10 amavis[689]: Module Net::Server 0.87
Feb 4 15:12:17 ip10 amavis[689]: Module Razor2::Client::Version 2.67
Feb 4 15:12:17 ip10 amavis[689]: Module Time::HiRes 1.59
Feb 4 15:12:17 ip10 amavis[689]: Module Unix::Syslog 0.100
Feb 4 15:12:17 ip10 amavis[689]: Amavis::DB code loaded
Feb 4 15:12:17 ip10 amavis[689]: Amavis::Cache code loaded
Feb 4 15:12:17 ip10 amavis[689]: Lookup::SQL code NOT loaded
Feb 4 15:12:17 ip10 amavis[689]: Lookup::LDAP code NOT loaded
Feb 4 15:12:17 ip10 amavis[689]: AMCL-in protocol code loaded
Feb 4 15:12:17 ip10 amavis[689]: SMTP-in protocol code loaded
Feb 4 15:12:17 ip10 amavis[689]: ANTI-VIRUS code loaded
Feb 4 15:12:17 ip10 amavis[689]: ANTI-SPAM code loaded
Feb 4 15:12:17 ip10 amavis[689]: Unpackers code loaded
Feb 4 15:12:17 ip10 amavis[689]: Found $file at /usr/bin/file
Feb 4 15:12:17 ip10 amavis[689]: Found $arc at /usr/local/bin/arc
Feb 4 15:12:17 ip10 amavis[689]: Found $gzip at /usr/bin/gzip
Feb 4 15:12:17 ip10 amavis[689]: Found $bzip2 at /usr/bin/bzip2
Feb 4 15:12:17 ip10 amavis[689]: Found $lzop at /usr/local/bin/lzop
Feb 4 15:12:17 ip10 amavis[689]: Found $lha at /usr/local/bin/lha
Feb 4 15:12:17 ip10 amavis[689]: Found $unarj at /usr/local/bin/unarj
Feb 4 15:12:17 ip10 amavis[689]: Found $uncompress at /usr/bin/uncompress
Feb 4 15:12:17 ip10 amavis[689]: Found $unfreeze at /usr/local/bin/unfreeze
Feb 4 15:12:17 ip10 amavis[689]: Found $unrar at /usr/local/bin/unrar
Feb 4 15:12:17 ip10 amavis[689]: Found $zoo at /usr/local/bin/zoo
Feb 4 15:12:17 ip10 amavis[689]: Found $pax at /bin/pax
Feb 4 15:12:17 ip10 amavis[689]: Found $cpio at /usr/bin/cpio
Feb 4 15:12:17 ip10 amavis[689]: Found $ar at /usr/bin/ar
Feb 4 15:12:17 ip10 amavis[689]: Found $rpm2cpio at /usr/local/bin/rpm2cpio.pl
Feb 4 15:12:17 ip10 amavis[689]: Found $cabextract at /usr/local/bin/cabextract
Feb 4 15:12:17 ip10 amavis[689]: No $ripole, not using it
Feb 4 15:12:17 ip10 amavis[689]: No $dspam, not using it
Feb 4 15:12:17 ip10 amavis[689]: Using internal av scanner code for (primary) ClamAV-clamd
Feb 4 15:12:17 ip10 amavis[689]: Found primary av scanner H+BEDV AntiVir or CentralCommand Vexira Antivirus at /usr/bin/antivir
Feb 4 15:12:17 ip10 amavis[689]: Found secondary av scanner ClamAV-clamscan at /usr/local/bin/clamscan
Feb 4 15:12:17 ip10 amavis[689]: Creating db in /var/amavis/db/; BerkeleyDB 0.26, libdb 3.3
Anfangs bietet es sich an auf einer extra Konsole amavisd
nicht als
daemon und im debug-Modus laufen zu lassen.
# /usr/local/sbin/amavisd debug
Hier werden z.B. Fehler des Virenscanners mit angezeigt und wenn die Installation nicht funktioniert sollte man das dort auch bis zum Fehler zurückverfolgen können.
Läuft alles wie geplant, kann man in seiner /etc/rc.conf
auch den
Start von amavisd erlauben
/etc/rc.conf
amavisd_enable="YES"
Viel Spaß damit. –XPectIT 16:59, 4. Feb 2005 (CET)
Zuletzt geändert: 2023-07-22