• [supprimé]

Bjr à tous,

Je suis débutant sous linux et, je voudrais monter un serveur de mail sur fedora core pour un reseaux intranet d'une vingtaine de machines en utilisant postfix. Seulement, je ne sais pas comment cela se fait.

Quelqu'un pourrait me donner la marche à suivre comment m'y prendre? merci de votre contribution.
Salut
Il existe une doc sur un red hat magazine pour monter un serveur mail sur une redhat 9, il est facilement adaptable a une fedora core 2. Je m'en suis servi pour monter le mien sur une FC1
L'article au format PDF
  • [supprimé]

J'ai téléchargé imap-2001a-18.i386.rpm et lors de l'install, il m'affiche le message suivant:

[root@fedora copie]# rpm -ivh imap-2001a-18.i386.rpm
attention: imap-2001a-18.i386.rpm: signature V3 DSA: NOKEY, key ID db42a60e
erreur: Dépendances requises:
libcom_err.so.3 est nécessaire pour imap-2001a-18
[root@fedora copie]#

comment remedier à ce message?
Le plus simple est de l'installer avec yum
yum install imap
  • [supprimé]

skydiverss a raison install par yum!

Mais pq tu n'installe pas dovecot livré avec la fc2?
dovecot et postfix te fait un server mail du tonnerre!! en webmail ou par butineur!!
Du mal a comprendre pq tu install imap-2001a-18.i386 alors que tu a tout sur la fc2!!!
  • [supprimé]

je ne suis qu'un débutant dans ce domaine, voilà pourkoi je pose les questions. dovecot, je ne connais pas et si tu peux m'avoir la procédure d'install, cela me fera du bien.

dans ce cas, peux-tu me trouver une doc pour installet et configurer dovecot avec postfix?
4 jours plus tard
Ton package imap a sans doute besoin de la librairie partagée de Kerberos 5. Essaie d'installer le package krb5-libs-1.2.7-10.i386 voire kerberos lui-même. Ce RPM est cependant prévu pour la RH9; je ne peux donc pas te garantir son bon fonctionnement. Le mieux est de télécharger la version 2002 d'imap, elle ne devrait pas poser de problème. En tout cas, le tuto en pdf fonctionne bien avec la FC3.

Réponse à:

J'ai téléchargé imap-2001a-18.i386.rpm et lors de l'install, il m'affiche le message suivant:

[root@fedora copie]# rpm -ivh imap-2001a-18.i386.rpm
attention: imap-2001a-18.i386.rpm: signature V3 DSA: NOKEY, key ID db42a60e
erreur: Dépendances requises:
libcom_err.so.3 est nécessaire pour imap-2001a-18
[root@fedora copie]#

comment remedier à ce message?
Kelk'un pourrait me donner un exemple de config pour une messagerie intranet avec postfix sous fedora core 2?
Je reste en attente svp, merci
Pour l'imap jte conseille le fichier en tar et pas rpm. Jte pose le/les tutos
Installation de courier-imap et courier-pop
ATTENTION : ne pas se placer en root pour faire les manipulations (uniquement lorsque cela est indiqué)
On commence par téléchargez les sources les plus à jour de courier-imap ici et à décompressez l'archive de la manière suivante:

# tar jxvf courier-imap-1.6.0.20021025.tar.bz2 -C /tmp
# cd /tmp/courier-imap-1.6.0.20021025

La compilation de courier-imap s'effectue ainsi:

# ./configure --prefix=/usr/courier
--sysconfdir=/etc/courier
--with-piddir=/var/run
--with-authpam
--without-authuserdb
--without-authmysql
--enable-workarounds-for-imap-client-bugs
--with-redhat
# make
On passe root
# make install
# make install-configure

Ensuite on utilise les fichiers de conf /etc/courier sur le serveur de test puis on le met au demarrage par :
cp /usr/courier/libexec/imapd.rc /etc/rc.d/init.d/courier-imap
chmod 755 /etc/rc.d/init.d/courier-imap
ln -s /etc/rc.d/init.d/courier-imap /etc/rc.d/rc2.d/S65courier-imap
ln -s /etc/rc.d/init.d/courier-imap /etc/rc.d/rc3.d/S65courier-imap
ln -s /etc/rc.d/init.d/courier-imap /etc/rc.d/rc4.d/S65courier-imap
ln -s /etc/rc.d/init.d/courier-imap /etc/rc.d/rc5.d/S65courier-imap
ln -s /etc/rc.d/init.d/courier-imap /etc/rc.d/rc0.d/K65courier-imap
ln -s /etc/rc.d/init.d/courier-imap /etc/rc.d/rc1.d/K65courier-imap
ln -s /etc/rc.d/init.d/courier-imap /etc/rc.d/rc6.d/K65courier-imap
cp /usr/courier/libexec/pop3d.rc /etc/rc.d/init.d/courier-pop3
chmod 755 /etc/rc.d/init.d/courier-pop3
ln -s /etc/rc.d/init.d/courier-pop3 /etc/rc.d/rc2.d/S65courier-pop3
ln -s /etc/rc.d/init.d/courier-pop3 /etc/rc.d/rc3.d/S65courier-pop3
ln -s /etc/rc.d/init.d/courier-pop3 /etc/rc.d/rc4.d/S65courier-pop3
ln -s /etc/rc.d/init.d/courier-pop3 /etc/rc.d/rc5.d/S65courier-pop3
ln -s /etc/rc.d/init.d/courier-pop3 /etc/rc.d/rc0.d/K65courier-pop3
ln -s /etc/rc.d/init.d/courier-pop3 /etc/rc.d/rc1.d/K65courier-pop3
ln -s /etc/rc.d/init.d/courier-pop3 /etc/rc.d/rc6.d/K65courier-pop3

Ensuite pour lancer courier-imap

# /etc/rc.d/rc.imapd start
# /etc/rc.d/rc.pop3d start


Ne pas oublier de vier dans /etc/xinetd.d/

Le fichiers old_imap et old_ipop3

Petit bug sous la RHE au niveau du protocole NFS (non utilisé pour l'instant)

Decocher nfs et nfslock dans la configuration des services

Il faut ensuite créer le user sans shell qui contiendra tout les comptes mails

# groupadd -g 800 vmail
# useradd -u 800 -g 800 -d /home/vmail -s /bin/false -m vmail
Exemple de conf pour amavis-new

* Edit this file in an external application (Requires Zope ExternalEditor installed)
* Send this page to somebody
* Print this page
* Add to Favorites
* Cree un fichier pdf a la volee

Exemple de fichier de configuration

use strict;

# Sample configuration file for amavisd-new (traditional style, chatty,
# you may prefer to start with the more concise supplied amavisd.conf)
#
# This software is licensed under the GNU General Public License (GPL).
# See comments at the start of amavisd-new for the whole license text.

#Sections:
# Section I - Essential daemon and MTA settings
# Section II - MTA specific
# Section III - Logging
# Section IV - Notifications/DSN, BOUNCE/REJECT/DROP/PASS destiny, quarantine
# Section V - Per-recipient and per-sender handling, whitelisting, etc.
# Section VI - Resource limits
# Section VII - External programs, virus scanners, SpamAssassin
# Section VIII - Debugging
# Section IX - Policy banks (dynamic policy switching)

#GENERAL NOTES:
# This file is a normal Perl code, interpreted by Perl itself.
# - make sure this file (or directory where it resides) is NOT WRITABLE
# by mere mortals (not even vscan/amavis; best to make it owned by root),
# otherwise it can represent a severe security risk!
# - for values which are interpreted as booleans, it is recommended
# to use 1 for true, and 0 or undef or '' for false.
# THIS IS DIFFERENT FROM OLD AMAVIS VERSIONS where "no" also meant false,
# now it means true, like any nonempty string does!
# - Perl syntax applies. Most notably: strings in "" may include variables
# (which start with $ or @); to include characters $ and @ and in double
# quoted strings precede them by a backslash; in single-quoted strings
# the $ and @ lose their special meaning, so it is usually easier to use
# single quoted strings (or qw operator) for e-mail addresses.
# In both types of quoting a backslash should to be doubled.
# - variables with names starting with a '@' are lists, the values assigned
# to them should be lists too, e.g. ('one@foo', $mydomain, "three");
# note the comma-separation and parenthesis. If strings in the list
# do not contain spaces nor variables, a Perl operator qw() may be used
# as a shorthand to split its argument on whitespace and produce a list
# of strings, e.g. qw( one@foo example.com three ); Note that the argument
# to qw is quoted implicitly and no variable interpretation is done within
# (no '$' variable evaluations). The #-initiated comments can NOT be used
# within a string. In other words, $ and # lose their special meaning
# within a qw argument, just like within '...' strings.
# - all e-mail addresses in this file and as used internally by the daemon
# are in their raw (rfc2821-unquoted and non-bracketed) form, i.e.
# Bob "Funny" Dude@example.com, not: "Bob "Funny" Dude"@example.com
# and not <"Bob "Funny" Dude"@example.com>; also: '' and not '<>'.
# - the term 'default value' in examples below refers to the value of a
# variable pre-assigned to it by the program; any explicit assignment
# to a variable in this configuration file overrides the default value;

# =============================================================================
# Section I - Essential options
# =============================================================================

# $MYHOME serves as a quick default for some other configuration settings.
# More refined control is available with each individual setting further down.
# $MYHOME is not used directly by the program. No trailing slash!
$MYHOME = '/home/amavis'; # (default is '/var/amavis')

# $mydomain serves as a quick default for some other configuration settings.
# More refined control is available with each individual setting further down.
# $mydomain is never used directly by the program.
$mydomain = 'akadia.com'; # (no useful default)

# $myhostname = 'host.example.com'; # fqdn of this host, default by uname(3)

# Set the user and group to which the daemon will change if started as root
# (otherwise just keeps the UID unchanged, and these settings have no effect):
$daemon_user = 'amavis'; # (no default; customary: vscan or amavis)
$daemon_group = 'amavis'; # (no default; customary: vscan or amavis or sweep)

# Runtime working directory (cwd), and a place where
# temporary directories for unpacking mail are created.
# (no trailing slash, may be a scratch file system)
# $TEMPBASE = $MYHOME; # (must be set if other config vars use is)
$TEMPBASE = "$MYHOME/tmp"; # prefer to keep home dir /var/amavis clean?
$db_home = "$MYHOME/db"; # DB databases directory, default "$MYHOME/db"

# $helpers_home sets environment variable HOME, and is passed as option
# 'home_dir_for_helpers' to Mail::SpamAssassin::new. It should be a directory
# on a normal persistent file system, not a scratch or temporary file system
# $helpers_home = $MYHOME; # (defaults to $MYHOME)
$helpers_home = "$MYHOME/var";

# Run the daemon in the specified chroot jail if nonempty:
# $daemon_chroot_dir = $MYHOME; # (default is undef, meaning: do not chroot)

$pid_file = "$MYHOME/var/amavisd.pid"; # (default is "$MYHOME/amavisd.pid")
$lock_file = "$MYHOME/var/amavisd.lock"; # (default is "$MYHOME/amavisd.lock")

# set environment variables if you want (no defaults):
$ENV{TMPDIR} = $TEMPBASE; # wise to set TMPDIR, but not obligatory

$enable_db = 1; # enable use of BerkeleyDB/libdb (SNMP and nanny)
$enable_global_cache = 1; # enable use of libdb-based cache if $enable_db=1

# =============================================================================
# MTA SETTINGS, UNCOMMENT AS APPROPRIATE
# =============================================================================
# both $forward_method and $notify_method default to 'smtp:[127.0.0.1]:10025'

# POSTFIX, or SENDMAIL in dual-MTA setup, or EXIM V4
# (set host and port number as required; host can be specified
# as an IP address or a DNS name (A or CNAME, but MX is ignored)
$forward_method = 'smtp:[127.0.0.1]:10025'; # where to forward checked mail
$notify_method = $forward_method; # where to submit notifications

# To make it possible for several hosts to share one content checking daemon,
# the IP address and/or the port number in $forward_method and $notify_method
# may be spacified as an asterisk. An asterisk in the colon-separated
# second field (host) will be replaced by the SMTP client peer address,
# An asterisk in the third field (tcp port) will be replaced by the incoming
# SMTP/LMTP session port number plus one. This obsoletes the previously used
# less flexible configuration parameter $relayhost_is_client. An example:
# $forward_method = 'smtp:*:*'; $notify_method = 'smtp:*:10587';


# NOTE: The defaults (above) are good for Postfix or dual-sendmail. You MUST
# uncomment the appropriate settings below if using other setups!

# SENDMAIL MILTER, using amavis-milter.c helper program:
# $forward_method = undef; # no explicit forwarding, sendmail does it by itself
# milter; option -odd is needed to avoid deadlocks
# $notify_method = 'pipe:flags=q argv=/usr/sbin/sendmail -Ac -i -odd -f ${sender} -- ${recipient}';
# just a thought: can we use use -Am instead of -odd ?

# SENDMAIL (old non-milter setup, as relay, deprecated):
# $forward_method = 'pipe:flags=q argv=/usr/sbin/sendmail -C/etc/sendmail.orig.cf -i -f ${sender} -- ${recipient}';
# $notify_method = $forward_method;

# SENDMAIL (old non-milter setup, amavis.c calls local delivery agent, deprecated):
# $forward_method = undef; # no explicit forwarding, amavis.c will call LDA
# $notify_method = 'pipe:flags=q argv=/usr/sbin/sendmail -Ac -i -f ${sender} -- ${recipient}';

# EXIM v3 (not recommended with v4 or later, which can use SMTP setup instead):
# $forward_method = 'pipe:flags=q argv=/usr/sbin/exim -oMr scanned-ok -i -f ${sender} -- ${recipient}';
# $notify_method = $forward_method;

# prefer to collect mail for forwarding as BSMTP files?
# $forward_method = "bsmtp:$MYHOME/out-%i-%n.bsmtp";
# $notify_method = $forward_method;


# Net::Server pre-forking settings
# The $max_servers should match the width of your MTA pipe
# feeding amavisd, e.g. with Postfix the 'Max procs' field in the
# master.cf file, like the '2' in the: smtp-amavis unix - - n - 2 smtp
#
$max_servers = 5; # number of pre-forked children (default 2)
$max_requests = 20; # retire a child after that many accepts (default 10)

$child_timeout=5*60; # abort child if it does not complete each task in
# approximately n sec (default: 8*60 seconds)

# Here is a QUICK WAY to completely DISABLE some sections of code
# that WE DO NOT WANT (it won't even be compiled-in).
# For more refined controls leave the following two lines commented out,
# and see further down what these two lookup lists really mean.
#
@bypass_virus_checks_maps = (1); # uncomment to DISABLE anti-virus code
# @bypass_spam_checks_maps = (1); # uncomment to DISABLE anti-spam code
#
# Any setting can be changed with a new assignment, so make sure
# you do not unintentionally override these settings further down!

# Check also the settings of @av_scanners at the end if you want to use
# virus scanners. If not, you may want to delete the whole long assignment
# to the variable @av_scanners and @av_scanners_backup, which will also
# remove the virus checking code (e.g. if you only want to do spam scanning).

# Lookup list of local domains (see README.lookups for syntax details)
#
# @local_domains_maps list of lookup tables are used in deciding whether a
# recipient is local or not, or in other words, if the message is outgoing
# or not. This affects inserting spam-related headers for local recipients,
# limiting recipient virus notifications (if enabled) to local recipients,
# in deciding if address extension may be appended, and in SQL lookups
# for non-fqdn addresses. Set it up correctly if you need features
# that rely on this setting (or just leave empty otherwise).
#
# With Postfix (2.0) a quick hint on what local domains normally are:
# a union of domains specified in: mydestination, virtual_alias_domains,
# virtual_mailbox_domains, and relay_domains.

@local_domains_maps = ( [".$mydomain"] ); # $mydomain and its subdomains

# @local_domains_maps = (); # default is empty list, no recip. considered local
# @local_domains_maps = # using ACL lookup table
# ( [ ".$mydomain", 'sub.example.net', '.example.com' ] );
# @local_domains_maps = # similar, split list elements on whitespace
# ( [qw( .example.com !host.sub.example.net .sub.example.net )] );
# @local_domains_maps = ( new_RE( qr'[@.]example.com$'i ) ); # using regexp
# @local_domains_maps = ( read_hash("$MYHOME/local_domains") ); # using hash

# =============================================================================
# Section II - Postfix specific (defaults should be ok)
# =============================================================================

# $insert_received_line = 1; # behave like MTA: insert 'Received:' header
# (does not apply to sendmail/milter)
# (default is true)

# AMAVIS-CLIENT PROTOCOL INPUT SETTINGS (e.g. with sendmail milter)
# (used with amavis helper clients like amavis-milter.c and amavis.c,
# NOT needed for Postfix or Exim or dual-sendmail - keep it undefined.
# $unix_socketname = "$MYHOME/amavisd.sock"; # amavis helper protocol socket
# $unix_socketname = undef; # disable listening on a unix socket
# (default is undef, i.e. disabled)
# (usual setting is $MYHOME/amavisd.sock)

# SMTP SERVER (INPUT) PROTOCOL SETTINGS (e.g. with Postfix, Exim v4, ...)
# (used when MTA is configured to pass mail to amavisd via SMTP or LMTP)
$inet_socket_port = 10024; # accept SMTP on this local TCP port
# (default is undef, i.e. disabled)
# multiple ports may be provided: $inet_socket_port = [10024, 10026, 10028];

# SMTP SERVER (INPUT) access control
# - do not allow free access to the amavisd SMTP port !!!
#
# when MTA is at the same host, use the following (one or the other or both):
$inet_socket_bind = '127.0.0.1'; # limit socket bind to loopback interface
# (default is '127.0.0.1')
@inet_acl = qw( 127.0.0.1 ::1 ); # allow SMTP access only from localhost IP
# (default is qw(127.0.0.1 ::1) )

# when MTA (one or more) is on a different host, use the following:
# @inet_acl = qw(127/8 ::1 10.1.0.1 10.1.0.2); # adjust the list as appropriate
# $inet_socket_bind = undef; # bind to all IP interfaces if undef

#
# Example1:
# @inet_acl = qw( 127/8 10/8 172.16/12 192.168/16 );
# permit only SMTP access from loopback and rfc1918 private address space
#
# Example2:
# @inet_acl = qw( !192.168.1.12 172.16.3.3 !172.16.3/255.255.255.0
# 127.0.0.1 10/8 172.16/12 192.168/16 );
# matches loopback and rfc1918 private address space except host 192.168.1.12
# and net 172.16.3/24 (but host 172.16.3.3 within 172.16.3/24 still matches)
#
# Example3:
# @inet_acl = qw( 127/8
# !172.16.3.0 !172.16.3.127 172.16.3.0/25
# !172.16.3.128 !172.16.3.255 172.16.3.128/25 );
# matches loopback and both halves of the 172.16.3/24 C-class,
# split into two subnets, except all four broadcast addresses
# for these subnets

# @mynetworks is an IP access list which determines if the original SMTP client
# IP address belongs to our internal networks, i.e. mail is coming from inside.
# It is much like the Postfix parameter 'mynetworks' in semantics and similar
# in syntax, and its value should normally match the Postfix counterpart.
# It only affects the value of a macro %l (=sender-is-local),
# and the loading of policy 'MYNETS' if present (see below).
# Note that '-o smtp_send_xforward_command=yes' (or its lmtp counterpart)
# must be enabled in the Postfix service that feeds amavisd, otherwise
# client IP address is not available to amavisd-new.
#
@mynetworks = qw( 127.0.0.0/8 ::1 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 ); # default


# See README.lookups for details on specifying access control lists.

# =============================================================================
# Section III - Logging
# =============================================================================

# true (e.g. 1) => syslog; false (e.g. 0) => logging to file
$DO_SYSLOG = 1; # (defaults to false)
$SYSLOG_LEVEL = 'mail.debug'; # (facility.priority, default 'mail.info')

# Log file (if not using syslog)
$LOGFILE = "$MYHOME/amavis.log"; # (defaults to empty, no log)

#NOTE: levels are not strictly observed and are somewhat arbitrary
# 0: startup/exit/failure messages, viruses detected
# 1: args passed from client, some more interesting messages
# 2: virus scanner output, timing
# 3: server, client
# 4: decompose parts
# 5: more debug details
$log_level = 1; # (defaults to 0)

# Customizable template for the most interesting log file entry (e.g. with
# $log_level=0) (take care to properly quote Perl special characters like '')
# For a list of available macros see README.customize .

# $log_templ = undef; # undef disables by-message level-0 log entries
# $log_recip_templ = undef; # undef disables by-recipient level-0 log entries


# log both infected and noninfected messages (new default):

# $log_templ = '
# [?%#D||Passed #
# [? [?%#V|1] |INFECTED (%V)|#
# [? [?%#F|1] |BANNED (%F)|#
# [? [? %2|1] |SPAM|#
# [? [?%#X|1] |BAD-HEADER|CLEAN] ]] ]#
# , [? %p ||%p ][?%a||[?%l||LOCAL ][%a] ]<%o> -> [%D|,]#
# [? %q ||, quarantine: %i]#
# [? %m ||, Message-ID: %m]#
# [? %r ||, Resent-Message-ID: %r]#
# , Hits: %c#
# #, size: %z#
# #[? %j ||, Subject: "%j"]#
# #[? %#T ||, tests=[%T|,] ]#
# ]
# [?%#O||Blocked #
# [? [?%#V|1] |INFECTED (%V)|#
# [? [?%#F|1] |BANNED (%F)|#
# [? [? %2|1] |SPAM|#
# [? [?%#X|1] |BAD-HEADER|CLEAN] ]] ]#
# , [? %p ||%p ][?%a||[?%l||LOCAL ][%a] ]<%o> -> [%O|,]#
# [? %q ||, quarantine: %i]#
# [? %m ||, Message-ID: %m]#
# [? %r ||, Resent-Message-ID: %r]#
# , Hits: %c#
# #, size: %z#
# #[? %j ||, Subject: "%j"]#
# #[? %#T ||, tests=[%T|,] ]#
# ]';

# log template compatible with amavisd-new-20030616-p10:
# $log_recip_templ = undef;
# $log_templ = '
# [? %#V |[? %#F |[?%#D|Not-Delivered|Passed]|BANNED name/type (%F)]|INFECTED (%V)], #
# <%o> -> [<%R>|,][? %i ||, quarantine %i], Message-ID: %m, Hits: %c';

#
# =============================================================================
# Section IV - Notifications/DSN, BOUNCE/REJECT/DROP/PASS destiny, quarantine
# =============================================================================
#

# Select notifications text encoding when Unicode-aware Perl is converting
# text from internal character representation to external encoding (charset
# in MIME terminology). Used as argument to Perl Encode::encode subroutine.
#
# to be used in RFC 2047-encoded header field bodies, e.g. in Subject:
# $hdr_encoding = 'iso-8859-1'; # MIME charset (default: 'iso-8859-1')
# $hdr_encoding_qb = 'Q'; # MIME encoding: quoted-printable (default)
# $hdr_encoding_qb = 'B'; # MIME encoding: base64
#
# to be used in notification body text: its encoding and Content-type.charset
# $bdy_encoding = 'iso-8859-1'; # (default: 'iso-8859-1')

# Default template texts for notifications may be overruled by directly
# assigning new text to template variables, or by reading template text
# from files. A second argument may be specified in a call to read_text(),
# specifying character encoding layer to be used when reading from the
# external file, e.g. 'utf8', 'iso-8859-1', or often just $bdy_encoding.
# Text will be converted to internal character representation by Perl 5.8.0
# or later; second argument is ignored otherwise. See PerlIO::encoding,
# Encode:😛erlIO and perluniintro man pages.
#
# $notify_sender_templ = read_text("$MYHOME/notify_sender.txt");
# $notify_virus_sender_templ= read_text("$MYHOME/notify_virus_sender.txt");
# $notify_virus_admin_templ = read_text("$MYHOME/notify_virus_admin.txt");
# $notify_virus_recips_templ= read_text("$MYHOME/notify_virus_recips.txt");
# $notify_spam_sender_templ = read_text("$MYHOME/notify_spam_sender.txt");
# $notify_spam_admin_templ = read_text("$MYHOME/notify_spam_admin.txt");

# If notification template files are collectively available in some directory,
# one may call read_l10n_templates which invokes read_text for each known
# template. This is primarily a Debian-specific feature, but was incorporated
# into base code to facilitate porting.
#
# read_l10n_templates('/etc/amavis/en_US');
#
# If read_l10n_templates is called, a localization template directory must
# contain the following files:
# charset this file should contain a one-line name
# of the character set used in the template
# files (e.g. utf8, iso-8859-2, ...) and is
# passed as the second argument to read_text;
# template-dsn.txt content fills the $notify_sender_templ
# template-virus-sender.txt content fills the $notify_virus_sender_templ
# template-virus-admin.txt content fills the $notify_virus_admin_templ
# template-virus-recipient.txt content fills the $notify_virus_recips_templ
# template-spam-sender.txt content fills the $notify_spam_sender_templ
# template-spam-admin.txt content fills the $notify_spam_admin_templ

# Here is an overall picture (sequence of events) of how pieces fit together
#
# bypass_virus_checks set for all recipients? ==> PASS
# no viruses? ==> PASS
# log virus if $log_templ is nonempty
# quarantine if $virus_quarantine_to is nonempty
# notify admin if $virus_admin (lookup) nonempty
# notify recips if $warnvirusrecip and (recipient is local or $warn_offsite)
# add address extensions for local recipients (when enabled)
# send (non-)delivery notifications
# to sender if DSN needed (BOUNCE or ($warnvirussender and D_PASS))
# virus_lovers or final_destiny==D_PASS ==> PASS
# DISCARD (2xx) or REJECT (5xx) (depending on final_*_destiny)
#
# Equivalent flow diagram applies for spam checks.
# If a virus is detected, spam checking is skipped entirely.

# The following symbolic constants can be used in *_destiny settings:
#
# D_PASS mail will pass to recipients, regardless of bad contents;
#
# D_DISCARD mail will not be delivered to its recipients, sender will NOT be
# notified. Effectively we lose mail (but will be quarantined
# unless disabled). Losing mail is not decent for a mailer,
# but might be desired.
#
# D_BOUNCE mail will not be delivered to its recipients, a non-delivery
# notification (bounce) will be sent to the sender by amavisd-new;
# Exception: bounce (DSN) will not be sent if a virus name matches
# $viruses_that_fake_sender_re, or to messages from mailing lists
# (Precedence: bulk|list|junk), or for spam level that exceeds
# the $sa_dsn_cutoff_level.
#
# D_REJECT mail will not be delivered to its recipients, sender should
# preferably get a reject, e.g. SMTP permanent reject response
# (e.g. with milter), or non-delivery notification from MTA
# (e.g. Postfix). If this is not possible (e.g. different recipients
# have different tolerances to bad mail contents and not using LMTP)
# amavisd-new sends a bounce by itself (same as D_BOUNCE).
# Not to be used with Postfix or dual-MTA setups!
#
# Notes:
# D_REJECT and D_BOUNCE are similar, the difference is in who is responsible
# for informing the sender about non-delivery, and how informative
# the notification can be (amavisd-new knows more than MTA);
# With D_REJECT, MTA may reject original SMTP, or send DSN (delivery status
# notification, colloquially called 'bounce') - depending on MTA;
# Best suited for sendmail milter, especially for spam.
# With D_BOUNCE, amavisd-new (not MTA) sends DSN (can better explain the
# reason for mail non-delivery or even suppress DSN, but unable
# to reject the original SMTP session). Best suited to reporting
# viruses, and for Postfix and other dual-MTA setups, which can't
# reject original client SMTP session, as the mail has already
# been enqueued.

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

# Alternatives to consider for spam:
# - use D_PASS if clients will do filtering based on inserted
# mail headers or added address extensions ('plus-addressing');
# - use D_DISCARD, if kill_level is set comfortably high;
#
# D_BOUNCE is preferred for viruses, but consider:
# - use D_PASS (or virus_lovers) to deliver viruses;
# - use D_REJECT instead of D_BOUNCE if using milter and under heavy
# virus storm;
#
# Don't bother to set both D_DISCARD and $warn*sender=1, it will get mapped
# to D_BOUNCE.
#
# The separation of *_destiny values into D_BOUNCE, D_REJECT, D_DISCARD
# and D_PASS made settings $warnvirussender and $warnspamsender only still
# marginally useful with D_PASS.

# The following $warn*sender settings are ONLY used when mail is
# actually passed to recipients ($final_*_destiny=D_PASS, or *_lovers*).
# Bounces or rejects produce non-delivery status notification regardless.

# Notify virus sender?
# $warnvirussender = 1; # (defaults to false (undef))

# Notify spam sender?
# $warnspamsender = 1; # (defaults to false (undef))

# Notify sender of banned files?
# $warnbannedsender = 1; # (defaults to false (undef))

# Notify sender of syntactically invalid header containing non-ASCII characters?
# $warnbadhsender = 1; # (defaults to false (undef))

# Notify virus (or banned files or bad headers) RECIPIENT?
# (not very useful, but some policies demand it)
# $warnvirusrecip = 1; # (defaults to false (undef))
# $warnbannedrecip = 1; # (defaults to false (undef))
# $warnbadhrecip = 1; # (defaults to false (undef))

# Notify also non-local virus/banned recipients if $warn*recip is true?
# (including those not matching local_domains*)
# $warn_offsite = 1; # (defaults to false (undef), i.e. only notify locals)

# Treat envelope sender address as unreliable and don't send sender
# notification / bounces if name(s) of detected virus(es) match the list.
# Note that virus names are supplied by external virus scanner(s) and are
# not standardized, so virus names may need to be adjusted.
# See README.lookups for syntax, check also README.policy-on-notifications
#
@viruses_that_fake_sender_maps = (new_RE(
qr'nimda|hybris|klez|bugbear|yaha|braid|sobig|fizzer|palyh|peido|holar'i,
qr'tanatos|lentin|bridex|mimail|trojan.dropper|dumaru|parite|spaces'i,
qr'dloader|galil|gibe|swen|netwatch|bics|sbrowse|sober|rox|val(hal)?la'i,
qr'frethem|sircam|be?agle|tanx|mydoom|novarg|shimg|netsky|somefool|moodown'i,
qr'@mm|@MM', # mass mailing viruses as labeled by f-prot and uvscan
qr'Worm'i, # worms as labeled by ClamAV, Kaspersky, etc
[qr'^(EICAR|Joke.|Junk.)'i => 0],
[qr'^(WM97|OF97|W95/CIH-|JS/Fort)'i => 0],
[qr/.*/ => 1], # true by default (remove or comment-out if undesired)
));

# where to send ADMIN VIRUS NOTIFICATIONS (should be a fully qualified address)
# - the administrator envelope address may be a simple fixed e-mail address
# (a scalar), or may depend on the RECIPIENT address (e.g. its domain).
#
# Empty or undef lookup disables virus admin notifications.

$virus_admin = undef;

# $virus_admin = "martin.zahn@$mydomain";
# $virus_admin = 'virus-admin@example.com';
# $virus_admin = undef; # do not send virus admin notifications (default)
#
# @virus_admin_maps = ( # by-recipient maps
# {'not.example.com' => '',
# '.' => 'virusalert@example.com'},
# $virus_admin, # the usual default
# );

# equivalent to $virus_admin, but for spam admin notifications:

$spam_admin = undef;

# $spam_admin = "martin.zahn@$mydomain";
# $spam_admin = undef; # do not send spam admin notifications (default)
# @spam_admin_maps = ( # by-recipient maps
# {'not.example.com' => '',
# '.' => 'spamalert@example.com'},
# $spam_admin, # the usual default
# );

# advanced example, using a hash lookup table and a scalar default,
# lookup key is a recipient envelope address:
# @virus_admin_maps = ( # by-recipient maps
# { 'baduser@sub1.example.com' => 'HisBoss@sub1.example.com',
# '.sub1.example.com' => 'virusalert@sub1.example.com',
# '.sub2.example.com' => '', # don't send admin notifications
# 'a.sub3.example.com' => 'abuse@sub3.example.com',
# '.sub3.example.com' => 'virusalert@sub3.example.com',
# '.example.com' => 'noc@example.com', # default for our virus senders
# },
# 'virusalert@hq.example.com', # catchall for the rest
# );


# sender envelope address, from which notification reports are sent from;
# may be a null reverse path, or a fully qualified address:
# (admin and recip sender addresses default to a null return path).
# If using strings in double quotes, don't forget to quote @, i.e. @
#
# $mailfrom_notify_admin = "martin.zahn@$mydomain";
# $mailfrom_notify_recip = "martin.zahn@$mydomain";
# $mailfrom_notify_spamadmin = "martin.zahn@$mydomain";

$mailfrom_notify_admin = undef;
$mailfrom_notify_recip = undef;
$mailfrom_notify_spamadmin = undef;

# 'From' HEADER FIELD for sender and admin notifications.
# This should be a replyable address, see rfc1894. Not to be confused
# with $mailfrom_notify_sender, which is the envelope return address
# and can be empty (null reverse path) according to rfc2821.
#
# The syntax of the 'From' header field is specified in rfc2822, section
# '3.4. Address Specification'. Note in particular that display-name must be
# a quoted-string if it contains any special characters like spaces and dots.
#
# $hdrfrom_notify_sender = "amavisd-new <postmaster@$mydomain>";
# $hdrfrom_notify_sender = 'amavisd-new <postmaster@example.com>';
# $hdrfrom_notify_sender = '"Content-Filter Master" <postmaster@example.com>';
# $hdrfrom_notify_admin = $mailfrom_notify_admin;
# $hdrfrom_notify_spamadmin = $mailfrom_notify_spamadmin;
# (default: ""Content-filter at $myhostname" <postmaster@$myhostname>")

# whom quarantined messages appear to be sent from (envelope sender);
# keeps original sender if undef, or set it explicitly, default is undef
$mailfrom_to_quarantine = ''; # override sender address with null return path


# Location to put infected mail into: (applies to 'local:' quarantine method)
# empty for not quarantining, may be a file (Unix-style mailbox),
# or a directory (no trailing slash)
# (the default value is undef, meaning no quarantine)
#
$QUARANTINEDIR = '/var/virusmails';

# $virus_quarantine_method = 'local:virus-%i-%n'; # default
# $spam_quarantine_method = 'local:spam-%b-%i-%n'; # default
# $banned_files_quarantine_method = 'local:banned-%i-%n'; # default
# $bad_header_quarantine_method = 'local:badh-%i-%n'; # default

# Separate quarantine subdirectories virus, spam, banned and badh within
# the directory $QUARANTINEDIR may be specified by the following settings
# (the subdirectories need to exist - must be created manually):
# $virus_quarantine_method = 'local:virus/virus-%i-%n';
# $spam_quarantine_method = 'local:spam/spam-%b-%i-%n';
# $banned_files_quarantine_method = 'local:banned/banned-%i-%n';
# $bad_header_quarantine_method = 'local:badh/badh-%i-%n';

#
# use the 'bsmtp:' method as an alternative to the default 'local:'
# $virus_quarantine_method = "bsmtp:$QUARANTINEDIR/virus-%i-%n.bsmtp";
# $spam_quarantine_method = "bsmtp:$QUARANTINEDIR/spam-%b-%i-%n.bsmtp";

# When using the 'local:' quarantine method (default), the following applies:
#
# A finer control of quarantining is available through
# variables $virus_quarantine_method/$spam_quarantine_method/
# $banned_files_quarantine_method/$bad_header_quarantine_method.
#
# The value of scalar $virus_quarantine_to/$spam_quarantine_to (or a
# per-recipient lookup result from lookup tables @virus_quarantine_to_maps)
# is/are interpreted as follows:
#
# VARIANT 1:
# empty or undef disables quarantine;
#
# VARIANT 2:
# a string NOT containing an '@';
# amavisd will behave as a local delivery agent (LDA) and will quarantine
# viruses to local files according to hash %local_delivery_aliases (pseudo
# aliases map) - see subroutine mail_to_local_mailbox() for details.
# Some of the predefined aliases are 'virus-quarantine' and 'spam-quarantine'.
# Setting $virus_quarantine_to ($spam_quarantine_to) to this string will:
#
# * if $QUARANTINEDIR is a directory, each quarantined virus will go
# to a separate file in the $QUARANTINEDIR directory (traditional
# amavis style, similar to maildir mailbox format);
#
# * otherwise $QUARANTINEDIR is treated as a file name of a Unix-style
# mailbox. All quarantined messages will be appended to this file.
# Amavisd child process must obtain an exclusive lock on the file during
# delivery, so this may be less efficient than using individual files
# or forwarding to MTA, and it may not work across NFS or other non-local
# file systems (but may be handy for pickup of quarantined files via IMAP
# for example);
#
# VARIANT 3:
# any email address (must contain '@').
# The e-mail messages to be quarantined will be handed to MTA
# for delivery to the specified address. If a recipient address local to MTA
# is desired, you may leave the domain part empty, e.g. 'infected@', but the
# '@' character must nevertheless be included to distinguish it from variant 2.
#
# This variant enables more refined delivery control made available by MTA
# (e.g. its aliases file, other local delivery agents, dealing with
# privileges and file locking when delivering to user's mailbox, nonlocal
# delivery and forwarding, fan-out lists). Make sure the mail-to-be-quarantined
# will not be handed back to amavisd for checking, as this will cause a loop
# (hopefully broken at some stage)! If this can be assured, notifications
# will benefit too from not being unnecessarily virus-scanned.
#
# By default this is safe to do with Postfix and Exim v4 and dual-sendmail
# setup, but probably not safe with sendmail milter interface without tricks.

# (default values are: virus-quarantine, banned-quarantine, spam-quarantine)

# $virus_quarantine_to = 'virus-quarantine'; # traditional local quarantine
# $virus_quarantine_to = 'infected@'; # forward to MTA for delivery
# $virus_quarantine_to = "virus-quarantine@$mydomain"; # similar
# $virus_quarantine_to = 'virus-quarantine@example.com'; # similar

$virus_quarantine_to = undef; # no quarantine

#
# lookup key is envelope recipient address:
# @virus_quarantine_to_maps = ( # per-recip multiple quarantines
# new_RE( [qr'^user@example.com$'i => 'infected@'],
# [qr'^(.*)@example.com$'i => 'virus-${1}@example.com'],
# [qr'^(.*)(@[^@])?$'i => 'virus-${1}${2}'] ),
# $virus_quarantine_to, # the usual default
# );

# similar for banned names and bad headers and spam (set to undef to disable)
$banned_quarantine_to = 'banned-quarantine'; # local quarantine
$bad_header_quarantine_to = 'bad-header-quarantine'; # local quarantine
$spam_quarantine_to = 'spam-quarantine'; # local quarantine

# or to a mailbox or no quarantine
# $banned_quarantine_to = "martin.zahn@$mydomain";
# $bad_header_quarantine_to = "martin.zahn@$mydomain";
# $spam_quarantine_to = "martin.zahn@$mydomain";

$banned_quarantine_to = undef;
$bad_header_quarantine_to = undef;
$spam_quarantine_to = undef;

# @spam_quarantine_to_maps = ( # per-recip multiple quarantines
# new_RE( [qr'^(.*)@example.com$'i => 'spam-${1}@example.com'] ),
# $spam_quarantine_to, # the usual default
# );


# In addition to per-recip quarantine, a by-sender lookup is possible.
# It is similar to $spam_quarantine_to, but the lookup key is the
# envelope sender address:
# $spam_quarantine_bysender_to = undef; # dflt: no by-sender spam quarantine


# Add X-Virus-Scanned header field to mail?

$X_HEADER_TAG = 'X-Virus-Scanned'; # (default: 'X-Virus-Scanned')

# Set to empty to add no header field # (dflt "$myproduct_name at $mydomain")
# $X_HEADER_LINE = "$myproduct_name at $mydomain";
# $X_HEADER_LINE = "by $myproduct_name using ClamAV at $mydomain";
# $X_HEADER_LINE = "$myproduct_name $myversion_id ($myversion_date) at $mydomain";

# a string to prepend to Subject (for local recipients only) if mail could
# not be decoded or checked entirely, e.g. due to password-protected archives
$undecipherable_subject_tag = '***UNCHECKED*** '; # undef disables it

# MIME defanging wraps the entire original mail in a MIME container of type
# 'Content-type: multipart/mixed', where the first part is a text/plain with
# a short explanation, and the second part is a complete original mail,
# enclosed in a 'Content-type: message/rfc822' MIME part.
# Defanging is only done when enabled (selectively by malware type),
# and mail is considered malware (virus/spam/...), and the malware is allowed
# to pass (*_lovers or *_destiny=D_PASS)
#
$defang_virus = 1; # default is false: don't modify mail body
$defang_banned = 1; # default is false: don't modify mail body
# $defang_bad_header = 1; # default is false: don't modify mail body
# $defang_undecipherable = 1; # default is false: don't modify mail body
# $defang_spam = 1; # default is false: don't modify mail body

$remove_existing_x_scanned_headers = 0; # leave existing X-Virus-Scanned alone
#$remove_existing_x_scanned_headers= 1; # remove existing headers
# (defaults to false)
#$remove_existing_spam_headers = 0; # leave existing X-Spam* headers alone
$remove_existing_spam_headers = 1; # remove existing spam headers if
# spam scanning is enabled (default)

# set $bypass_decode_parts to true if you only do spam scanning, or if you
# have a good virus scanner that can deal with compression and recursively
# unpacking archives by itself, and save amavisd the trouble.
# Disabling decoding also causes banned_files checking to only see
# MIME names and MIME content types, not the content classification types
# as provided by the file(1) utility.
# It is a double-edged sword, make sure you know what you are doing!
#
#$bypass_decode_parts = 1; # (defaults to false)

# don't trust this file type or corresponding unpacker for this file type,
# keep both the original and the unpacked file for a virus checker to see
# (lookup key is what file(1) utility returned):
#
@keep_decoded_original_maps = (new_RE(
# qr'^MAIL$', # retain full original message for virus checking (can be slow)
qr'^MAIL-UNDECIPHERABLE$', # retain full mail if it contains undecipherables
qr'^(ASCII(?! cpio)|text|uuencoded|xxencoded|binhex)'i,
# qr'^Zip archive data', # don't trust Archive::Zip
));


# Checking for banned MIME types and names. If any mail part matches,
# the whole mail is rejected. Object $banned_filename_re provides a list
# of Perl regular expressions to be matched against each part's:
#
# * Content-Type value (both declared and effective mime-type),
# such as the possible security-risk content types
# 'message/partial' and 'message/external-body', as specified in rfc2046,
# or 'application/x-msdownload' and 'application/x-msdos-program';
#
# * declared (recommended) file names as specified by MIME subfields
# Content-Disposition.filename and Content-Type.name, both in their
# raw (encoded) form and in rfc2047-decoded form if applicable
# as well as (recommended) file names specified in archives;
#
# * file content type as guessed by 'file(1)' utility, mapped
# (by @map_full_type_to_short_type_maps) into short type names such as
# .asc, .txt, .html, .doc, .jpg, .pdf, .zip, .exe-ms, ..., which always
# starts with a dot. These short types are available unless
# $bypass_decode_parts is true.
#
# All nodes (mail parts) of the fully recursively decoded mail and embedded
# archives are checked, each node independently from remaining nodes.
#
# For each node all its ancestor nodes including itself are checked against
# $banned_filename_re lookup list, top-down. The search for a node stops
# at the first match, the right-hand side of the matching key determines
# the result (true or false, absent right-hand side implies true, as explained
# in README.lookups).
#
# Although repeatedly re-checking ancestor nodes may seem excessive, it gives
# the opportunity to specify rules which make a particular node hide its
# descendents, e.g. allow any name or file type within a .zip, even though
# .exe files may otherwise not be allowed.
#
# Leave $banned_filename_re undefined to disable these checks
# (giving an empty list to new_RE() will also always return false)

$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, qr'^message/external-body$'i, # rfc2046 MIME types

# [ qr'^.(Z|gz|bz2)$' => 0 ], # allow any type in Unix-compressed
[ qr'^.(rpm|cpio|tar)$' => 0 ], # allow any type in Unix archives
# [ qr'^.(zip|rar|arc|arj|zoo)$'=> 0 ], # allow any type 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|exe|fxp|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|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
);
# See http://support.microsoft.com/default.aspx?scid=kb;EN-US;q262631
# and http://www.cknow.com/vtutor/vtextensions.htm

# A little trick: a pattern qr'.exe$' matches both a short type name '.exe',
# as well as any file name which happens to end with .exe. If only matching
# a file name is desired, but not the short type, a pattern qr'..exe$'i
# or similar may be used, which requires that at least one character precedes
# the '.exe', and so it will never match short file types which always start
# with a dot.


# the syntax of these Perl regular expressions is a bit awkward if not
# familiar with them, so please do follow examples and stick to the idioms:
# A ... at the beginning of the first component
# z ... at the end of the the last (leaf) component
# ^ ... at the beginning of each component in the path
# $ ... at the end of each component in the path
# (.*t)? ... at the beginning of a field
# (t.*)? ... at the end of a field
# t(.*t)* ... separating fields
# [^tn] ... any single character, but don't escape from this field
# (.*n)+ ... one or more levels down
# (?#...) ... a comment within a regexp

# new-style of banned lookup table
$banned_namepath_re = new_RE(

# block these MIME types
qr'(?#NO X-MSDOWNLOAD) ^(.*t)? M=application/x-msdownload (t.*)? $'xmi,
qr'(?#NO X-MSDOS-PROGRAM)^(.*t)? M=application/x-msdos-program(t.*)? $'xmi,
qr'(?#NO HTA) ^(.*t)? M=application/hta (t.*)? $'xmi,

# # block rfc2046 MIME types
# qr'(?# BLOCK RFC2046 )
# ^ (.*t)? M=message/(partial|external-body) (t.*)? $'xmi,

# # within traditional Unix compressions allow any name and type
# [ qr'(?#rule-3) ^ (.*t)? T=(Z|gz|bz2) (t.*)? $'xmi => 0 ], # allow

# within traditional Unix archives allow any name and type
[ qr'(?#rule-4) ^ (.*t)? T=(tar|rpm|cpio) (t.*)? $'xmi => 0 ], # allow

# # block anything within a zip
# qr'(?#rule-5) ^ (.*t)? T=zip (t.*)? (.*n)+ .* $'xmi,

# block certain double extensions in filenames
qr'(?# BLOCK DOUBLE-EXTENSIONS )
^ (.*t)? N= [^tn]* . [^./tn]* .
(exe|vbs|pif|scr|bat|cmd|com|cpl|dll) .? (t.*)? $'xmi,

# # block curly braces (used in Class ID (CLSID) extensions) in filenames
# qr'(?# BLOCK CLSID-EXTENSIONS )
# ^ (.*t)? N= [^tn]* [{}] [^tn]* (t.*)? $'xmi,

# # banned declared names with three or more consecutive spaces
# qr'(?# BLOCK NAMES WITH SPACES )
# ^ (.*t)? N= [^tn]* [ ]{3,} 'xmi,

# # within PC archives allow any types or names at any depth
# [ qr'(?#rule-7) ^ (.*t)? T=(zip|rar|arc|arj|zoo) (t.*)? $'xmi => 0 ], # ok

# # within certain archives allow leaf members at any depth if crypted
# [ qr'(?# ALLOW ENCRYPTED )
# ^ (.*t)? T=(zip|rar|arj) (.*n)+ (.*t)? A=C (t.*)? z'xmi => 0 ],

# # allow crypted leaf members regardless of their name or type
# [ qr'(?# ALLOW IF ENCRYPTED ) ^ (.*t)? A=C (t.*)? z'xmi => 0 ],

# # block if any component can not be decoded (is encrypted or bad archive)
# qr'(?# BLOCK IF UNDECIPHERABLE ) ^ (.*t)? A=U (t.*)? z'xmi,

# [ qr'(?# SPECIAL ALLOWANCES - MAGIC NAMES)
# A (.*t)? T=(rpm|cpio|tar|zip|rar|arc|arj|zoo|Z|gz|bz2)
# t(.*t)* N=exampled+[^tn]*
# (t.*)? $'xmi => 0 ],

# banned filename extensions (in declared names) anywhere - basic
qr'(?# BLOCK COMMON NAME EXENSIONS )
^ (.*t)? N= [^tn]* . (exe|vbs|pif|scr|bat|com|cpl) (t.*)? $'xmi,

# # banned filename extensions (in declared names) anywhere - long
# qr'(?# BLOCK MORE NAME EXTENSIONS )
# ^ (.*t)? N= [^tn]* . (
# ade|adp|app|bas|bat|chm|cmd|com|cpl|crt|exe|fxp|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|wsc|wsf|wsh) (t.*)? $'xmi,

# # banned filename extensions anywhere - WinZip vulnerability (pre-V9)
# qr'(?# BLOCK WinZip VULNERABILITY EXENSIONS )
# ^ (.*t)? N= [^tn]* . (mim|b64|bhx|hqx|xxe|uu|uue) (t.*)? $'xmi,

[ qr'(?# BLOCK EMPTY MIME PART APPLICATION/OCTET-STREAM )
^ (.*t)? M=application/octet-stream t(.*t)* T=empty (t.*)? $'xmi
=> 'DISCARD' ],

# [ qr'(?# BLOCK EMPTY MIME PARTS )
# ^ (.*t)? M= [^tn]+ t(.*t)* T=empty (t.*)? $'xmi => 'DISCARD' ],

qr'(?# BLOCK Microsoft EXECUTABLES )
^ (.*t)? T=exe-ms (t.*)? $'xm, # banned file(1) type

# qr'(?# BLOCK ANY EXECUTABLE )
# ^ (.*t)? T=exe (t.*)? $'xm, # banned file(1) type

# qr'(?# BLOCK THESE TYPES )
# ^ (.*t)? T=(exe|lha|tnef|cab|dll) (t.*)? $'xm, # banned file(1) types

);

# use old or new style of banned lookup table; not both to avoid confusion
#
# @banned_filename_maps = (); # to disable old-style
$banned_namepath_re = undef; # to disable new-style

#
# =============================================================================
# Section V - Per-recipient and per-sender handling, whitelisting, etc.
# =============================================================================
#

# @virus_lovers_maps list of lookup tables:
# (this should be considered a policy option, is does not disable checks,
# see bypass*checks for that!)
#
# Exclude certain RECIPIENTS from virus filtering by adding their (lower-cased)
# envelope e-mail address (or domain only) to one of the lookup tables in
# the @virus_lovers_maps list - see README.lookups and examples.
# Make sure the appropriate form (e.g. external/internal) of address
# is used in case of virtual domains, or when mapping external to internal
# addresses, etc. - this is MTA-specific.
#
# Notifications would still be generated however (see the overall
# picture above), and infected mail (if passed) gets additional header:
# X-AMaViS-Alert: INFECTED, message contains virus: ...
# (header not inserted with milter interface!)
#
# NOTE (milter interface only): in case of multiple recipients,
# it is only possible to drop or accept the message in its entirety - for all
# recipients. If all of them are virus lovers, we'll accept mail, but if
# at least one recipient is not a virus lover, we'll discard the message.


# @bypass_virus_checks_maps list of lookup tables:
# (this is mainly a time-saving option, unlike virus_lovers* !)
#
# Similar in concept to @virus_lovers_maps, a @bypass_virus_checks_maps
# is used to skip entirely the decoding, unpacking and virus checking,
# but only if ALL recipients match the lookup.
#
# @bypass_virus_checks_maps does NOT GUARANTEE the message will NOT be checked
# for viruses - this may still happen when there is more than one recipient
# for a message and not all of them match these lookup tables, or when
# check result was cached (i.e. the same contents was recently sent to other
# recipients). To guarantee virus delivery, a recipient must also match
# @virus_lovers_maps lookups (but see milter limitations above),

# NOTE: it would not be clever to base enabling of virus checks on SENDER
# address, since there are no guarantees that it is genuine. Many viruses
# and spam messages fake sender address. To achieve selective filtering
# based on the source of the mail (e.g. IP address, MTA port number, ...),
# use mechanisms provided by MTA if available, possibly combined with policy
# banks feature.

# Similar to lists of lookup tables controlling virus checking, there are
# counterparts for spam scanning, banned names/types, and headers_checks
# control:
# @spam_lovers_maps,
# @banned_files_lovers_maps,
# @bad_header_lovers_maps
# and:
# @bypass_spam_checks_maps,
# @bypass_banned_checks_maps,
# @bypass_header_checks_maps

# Example:
# @bypass_header_checks_maps = ( [qw( user@example.com )] );
# @bad_header_lovers_maps = ( [qw( user@example.com )] );

# The following example disables spam checking altogether,
# since it matches any recipient e-mail address.
# @bypass_spam_checks_maps = (1);


# See README.lookups for further detail, and examples below.

# In the following example a list of lookup tables @virus_lovers_maps
# contains three elements, the first is a reference to an ACL lookup table
# (brackets in Perl indicate a ref to a list), the second is a reference
# to a hash lookup table (curly braces in Perl indicate a ref to a hash),
# the third is a regexp lookup table, indicated by the type of object
# created by new_RE() :
#
#@virus_lovers_maps = (
# [ qw( me@lab.xxx.com !lab.xxx.com .xxx.com yyy.org ) ],
# { "postmaster@$mydomain" => 1, # double quotes permit variable evaluation
# 'postmaster@example.com'=> 1, # in single quotes the '@' need not be quoted
# 'abuse@example.com'=> 1,
# 'some.user@' => 1, # this recipient, regardless of domain
# 'boss@example.com' => 0, # never, even if domain matches
# 'example.com' => 1, # this domain, but not its subdomains
# '.example.com' => 1, # this domain, including its subdomains
# },
# new_RE( qr'^(helpdesk|postmaster)@example.com$'i ),
#);

#@spam_lovers_maps = (
# ["postmaster@$mydomain", 'postmaster@example.com', 'abuse@example.com'],
#);

#@bad_header_lovers_maps = (
# ["postmaster@", "abuse@$mydomain"],
#);

# to save some typing of quotes and commas, a Perl operator qw can be used
# to split its argument on whitespace and to quote resulting elements:
#@bypass_spam_checks_maps = (
# [ qw( some.ddd !butnot.example.com .example.com ) ],
#);


# don't run spam check for these RECIPIENT domains:
# @bypass_spam_checks_maps = ( [qw( d1.com .d2.com a.d3.com )] );
# or the other way around (bypass check for all BUT these):
# @bypass_spam_checks_maps = ( [qw( !d1.com !.d2.com !a.d3.com . )] );
# a practical application: don't check outgoing mail for spam:
# @bypass_spam_checks_maps = ( [ "!.$mydomain", "." ] );
# (a downside of which is that such mail will not count as ham in SA bayes db)
#
# Note that 'outgoing' is not the same as 'originating from inside'.
# The internal-to-internal mail is not outgoing, but is originating from
# inside. To base rules on 'originating from inside', the use of policy bank
# MYNETS is needed, in conjunction with XFORWARD Postfix extension to SMTP.

# Where to find SQL server(s) and database to support SQL lookups?
# A list of triples: (dsn,user,passw). (dsn = data source name)
# More than one entry may be specified for multiple (backup) SQL servers.
# See 'man DBI', 'man DBD::mysql', 'man DBD:😛g', ... for details.
# When chroot-ed, accessing SQL server over inet socket may be more convenient.
#
# @lookup_sql_dsn =
# ( ['DBI:mysql:database=mail;host=127.0.0.1;port=3306', 'user1', 'passwd1'],
# ['DBI:mysql:database=mail;host=host2', 'username2', 'password2'] );
#
# ('mail' in the example is the database name, choose what you like)
# With PostgreSQL the dsn (first element of the triple) may look like:
# 'DBI:Pg:host=host1;dbname=mail'

# The SQL select clause to fetch per-recipient policy settings.
# The %k will be replaced by a comma-separated list of query addresses
# (e.g. full address, domain only (stripped level by level), and a catchall).
# Use ORDER if there is a chance that multiple records will match - the first
# match wins. If field names are not unique (e.g. 'id'), the later field
# overwrites the earlier in a hash returned by lookup, which is why we use
# '*,users.id' instead of just '*'. No need to uncomment the following
# assignment if the default is ok.
# $sql_select_policy = 'SELECT *,users.id FROM users,policy'.
# ' WHERE (users.policy_id=policy.id) AND (users.email IN (%k))'.
# ' ORDER BY users.priority DESC';
#
# The SQL select clause to check sender in per-recipient whitelist/blacklist
# The first SELECT argument '?' will be users.id from recipient SQL lookup,
# the %k will be sender addresses (e.g. full address, domain only, catchall).
# The default value is:
# $sql_select_white_black_list = 'SELECT wb FROM wblist,mailaddr'.
# ' WHERE (wblist.rid=?) AND (wblist.sid=mailaddr.id)'.
# ' AND (mailaddr.email IN (%k))'.
# ' ORDER BY mailaddr.priority DESC';
#
# To disable SQL white/black list, set to undef (otherwise comment-out
# the following statement, leaving it at the default value):
$sql_select_white_black_list = undef; # undef disables SQL white/blacklisting


# If passing malware to certain recipients ($final_*_destiny=D_PASS or
# *_lovers), the recipient-based lookup tables @addr_extension_*_maps may
# return a string, which (if nonempty) will be added as an address extension
# to the local-part of the recipient's address. This extension may be used
# by the final local delivery agent (LDA) to place such mail into different
# subfolders (the extension is usually interpreted as a folder name).
# This is sometimes known as the 'plus addressing'. Appending address
# extensions is prevented when:
# - recipient does not match lookup tables @local_domains_maps;
# - lookup into corresponding @addr_extension_*_maps results
# in an empty string or undef;
# - $recipient_delimiter is empty (see below)
# LDAs usually default to stripping away address extension if no special
# handling is specified or if a named subfolder or alias does not exist,
# so adding address extensions normally does no harm.

# @addr_extension_virus_maps = ('virus'); # defaults to empty
# @addr_extension_spam_maps = ('spam'); # defaults to empty
# @addr_extension_banned_maps = ('banned'); # defaults to empty
# @addr_extension_bad_header_maps = ('badh'); # defaults to empty
#
# A more complex example:
# @addr_extension_virus_maps = (
# {'sub.example.com'=>'infected', '.example.com'=>'filtered'}, 'virus' );

# Delimiter between local part of the envelope recipient address and address
# extension (which can optionally be added, see @addr_extension_*_maps. E.g.
# recipient address <user@example.com> is changed to <user+virus@example.com>.
#
# Delimiter must match the equivalent (final) MTA delimiter setting.
# (e.g. for Postfix add 'recipient_delimiter = +' to main.cf)
# Setting it to an empty string or to undef disables adding extensions
# regardless of $addr_extension_*_maps.

# $recipient_delimiter = '+'; # (default is undef, i.e. disabled)

# true: replace extension; false: append extension
# $replace_existing_extension = 1; # (default is false)

# Affects matching of localpart of e-mail addresses (left of '@')
# in lookups: true = case sensitive, false = case insensitive
$localpart_is_case_sensitive = 0; # (default is false)


# ENVELOPE SENDER SOFT-WHITELISTING / SOFT-BLACKLISTING

# Instead of hard black- or whitelisting, a softer approach is to add
# score points (penalties) to the SA score for mail from certain senders.
# Positive points lean towards blacklisting, negative towards whitelisting.
# This is much like adding SA rules or using its white/blacklisting, except
# that here only envelope sender addresses are considered (not addresses
# in a mail header), and that score points can be assigned per-recipient
# (or globally), and the assigned penalties are customarily much lower
# than the default SA white/blacklisting score.
#
# The table structure is similar to $per_recip_blacklist_sender_lookup_tables
# i.e. the first level key is recipient, pointing to by-sender lookup tables.
# The essential difference is that scores from _all_ matching by-recipient
# lookups (not just the first that matches) are summed to give the final
# score boost. That means that both the site and domain administrators,
# as well as the recipient can have a say on the final score.
#
# NOTE: keep hash keys in lowercase, either manually or by using function lc

@score_sender_maps = ({ # a by-recipient hash lookup table

# # per-recipient personal tables (NOTE: positive: black, negative: white)
# 'user1@example.com' => [{'bla-mobile.press@example.com' => 10.0}],
# 'user3@example.com' => [{'.ebay.com' => -3.0}],
# 'user4@example.com' => [{'cleargreen@cleargreen.com' => -7.0,
# '.cleargreen.com' => -5.0}],

# site-wide opinions about senders (the '.' matches any recipient)
'.' => [ # the _first_ matching sender determines the score boost

new_RE( # regexp-type lookup table, just happens to be all soft-blacklist
[qr'^(bulkmail|offers|cheapbenefits|earnmoney|foryou)@'i => 5.0],
[qr'^(greatcasino|investments|lose_weight_today|market.alert)@'i=> 5.0],
[qr'^(money2you|MyGreenCard|new.tld.registry|opt-out|opt-in)@'i=> 5.0],
[qr'^(optin|saveonlsmoking2002k|specialoffer|specialoffers)@'i => 5.0],
[qr'^(stockalert|stopsnoring|wantsome|workathome|yesitsfree)@'i => 5.0],
[qr'^(your_friend|greatoffers)@'i => 5.0],
[qr'^(inkjetplanet|marketopt|MakeMoney)d*@'i => 5.0],
),

# read_hash("/var/amavis/sender_scores_sitewide"),

{ # a hash-type lookup table (associative array)
'nobody@cert.org' => -3.0,
'cert-advisory@us-cert.gov' => -3.0,
'owner-alert@iss.net' => -3.0,
'slashdot@slashdot.org' => -3.0,
'bugtraq@securityfocus.com' => -3.0,
'ntbugtraq@listserv.ntbugtraq.com' => -3.0,
'security-alerts@linuxsecurity.com' => -3.0,
'mailman-announce-admin@python.org' => -3.0,
'amavis-user-admin@lists.sourceforge.net'=> -3.0,
'notification-return@lists.sophos.com' => -3.0,
'owner-postfix-users@postfix.org' => -3.0,
'owner-postfix-announce@postfix.org' => -3.0,
'owner-sendmail-announce@lists.sendmail.org' => -3.0,
'sendmail-announce-request@lists.sendmail.org' => -3.0,
'donotreply@sendmail.org' => -3.0,
'ca+envelope@sendmail.org' => -3.0,
'noreply@freshmeat.net' => -3.0,
'owner-technews@postel.acm.org' => -3.0,
'ietf-123-owner@loki.ietf.org' => -3.0,
'cvs-commits-list-admin@gnome.org' => -3.0,
'rt-users-admin@lists.fsck.com' => -3.0,
'clp-request@comp.nus.edu.sg' => -3.0,
'surveys-errors@lists.nua.ie' => -3.0,
'emailnews@genomeweb.com' => -5.0,
'yahoo-dev-null@yahoo-inc.com' => -3.0,
'returns.groups.yahoo.com' => -3.0,
'clusternews@linuxnetworx.com' => -3.0,
lc('lvs-users-admin@LinuxVirtualServer.org') => -3.0,
lc('owner-textbreakingnews@CNNIMAIL12.CNN.COM') => -5.0,

# soft-blacklisting (positive score)
'sender@example.net' => 3.0,
'.example.net' => 1.0,

},
], # end of site-wide tables
});


# ENVELOPE SENDER WHITELISTING / BLACKLISTING - GLOBAL (RECIPIENT-INDEPENDENT)
# (affects spam checking only, has no effect on virus and other checks)

# WHITELISTING: use ENVELOPE SENDER lookups to ENSURE DELIVERY from whitelisted
# senders even if the message would be recognized as spam. Effectively, for
# the specified senders, message recipients temporarily become 'spam_lovers'.
# To avoid surprises, whitelisted sender also suppresses inserting/editing
# the tag2-level header fields (X-Spam-*, Subject), appending spam address
# extension, and quarantining.
#
# BLACKLISTING: messages from specified SENDERS are DECLARED SPAM.
# Effectively, for messages from blacklisted envelope sender addresses, spam
# level is artificially pushed high, and the normal spam processing applies,
# resulting in 'X-Spam-Flag: YES', high 'X-Spam-Level' bar and other usual
# reactions to spam, including possible rejection. If the message nevertheless
# still passes (e.g. for spam loving recipients), it is tagged as BLACKLISTED
# in the 'X-Spam-Status' header field, but the reported spam value and
# set of tests in this report header field (if available from SpamAssassin,
# which may or may not have been called) is not adjusted.
#
# A sender may be both white- and blacklisted at the same time, settings
# are independent. For example, being both white- and blacklisted, message
# is delivered to recipients, but is not tagged as spam (X-Spam-Flag: No;
# X-Spam-Status: No, ...), but the reported spam level (if computed) may
# still indicate high spam score.
#
# If ALL recipients of the message either white- or blacklist the sender,
# spam scanning (calling the SpamAssassin) is bypassed, saving on time.
#
# The following variables (lists of lookup tables) are available,
# with the semantics and syntax as specified in README.lookups:
# @whitelist_sender_maps, @blacklist_sender_maps

# SOME EXAMPLES:
#
#ACL:
# @whitelist_sender_maps = ( ['.example.org', '.example.net'] );
# @whitelist_sender_maps = ( [qw(.example.org .example.net)] ); # same thing
#
# @whitelist_sender_maps = ( [".$mydomain"] ); # $mydomain and its subdomains
# NOTE: This is not a reliable way of turning off spam checks for
# locally-originating mail, as sender address can easily be faked.
# To reliably avoid spam-scanning outgoing mail, use @bypass_spam_checks_maps
# for nonlocal recipients. To reliably avoid spam scanning for locally
# originating mail (including internal-to-internal mail), recognized by
# the original SMTP client IP address matching @mynetworks, use policy bank
# MYNETS, adjust @mynetworks, and turn on XFORWARD in the Postfix smtp client
# service feeding amavisd.

#with regexps:
@whitelist_sender_maps = ( new_RE(
qr'.*@akadia.com$'i,
qr'.*@swisscom.com$'i,
qr'.*@sicap.com$'i,
qr'.*@glue.ch$'i,
qr'.*@.*.admin.ch$'i
));


# illustrates the use of regexp lookup table:

@blacklist_sender_maps = ( new_RE(
qr'^(bulkmail|offers|cheapbenefits|earnmoney|foryou|greatcasino)@'i,
qr'^(investments|lose_weight_today|market.alert|money2you|MyGreenCard)@'i,
qr'^(new.tld.registry|opt-out|opt-in|optin|saveonlsmoking2002k)@'i,
qr'^(specialoffer|specialoffers|stockalert|stopsnoring|wantsome)@'i,
qr'^(workathome|yesitsfree|your_friend|greatoffers)@'i,
qr'^(inkjetplanet|marketopt|MakeMoney)d*@'i,
qr'.*@yahoo.com$'i,
qr'.*@hotmail.com$'i,
qr'.*@comfind.com$'i,
qr'.*@b2bnowmembers.com$'i,
qr'.*@aral.net$'i,
qr'.*@nowcon.com$'i,
qr'.*@uole.com$'i,
qr'.*@mail.com$'i,
qr'.*@microware.ch$'i,
qr'.*@stsmarketing.ch$'i,
qr'.*@wstore.com$'i,
qr'.*@oracleeblast.com$'i,
qr'.*@boss.com$'i,
qr'.*@issihk.net$'i,
qr'.*@draexlmaier.de$'i,
qr'.*@ebay.com$'i,
qr'.*@qualitylaser.com$'i,
qr'.*@transitchicago.com$'i,
qr'.*@homeeshopping.com$'i,
qr'.*@alltel.net$'i,
qr'.*@ntlworld.com$'i,
qr'.*@jpberlin.de$'i,
qr'.*@iwantspecialdeals.com$'i,
qr'.*@juno.com$'i,
qr'.*@exotissimo.com$'i,
qr'.*@5pillars.com$'i,
qr'.*@notmydesk.com$'i,
qr'.*@3rivers.net$'i,
qr'.*@2die4.com$'i,
qr'.*@free.fr$'i,
qr'.*@toto.com$'i,
qr'.*@klopapier.net$'i,
qr'.*@netscape.net$'i,
qr'.*@inforush.biz$'i,
qr'.*@mail4him.com$'i,
qr'.*@mail4her.com$'i,
qr'.*@onthenet.com.au$'i,
qr'.*@ihug.com.au$'i,
qr'.*@public.bta.net.cn$'i,
qr'.*@4hismail.com$'i,
qr'.*@4hermail.com$'i,
qr'.*@ciudad.com.ar$'i,
qr'.*@keromail.com$'i,
qr'.*@webtopmail.com$'i,
qr'.*@financeland.com.br$'i,
qr'.*@yahoo.co.uk$'i,
qr'.*@Nationwide.com$'i,
qr'
Droit et permissions poru Clamav et amavis-new

* Edit this file in an external application (Requires Zope ExternalEditor installed)
* Send this page to somebody
* Print this page
* Add to Favorites
* Cree un fichier pdf a la volee

Droit et permissions
[root@MOLENEPRO etc]# ll clam*
-rw-r--r-- 1 root root 6723 jui 30 16:41 clamav.conf.rpmnew
-rwxr-xr-x 1 amavis amavis 6647 oct 15 15:25 clamav.conf.rpmsave
-rw-r--r-- 1 amavis amavis 365 nov 29 18:00 clamd.conf
[root@MOLENEPRO etc]# ll /var/spool/amavis/
total 8
-rw-r----- 1 amavis amavis 0 déc 27 15:53 amavisd.lock
-rw-r----- 1 amavis amavis 6 déc 24 14:21 amavisd.pid
srwxr-x--- 1 amavis amavis 0 déc 24 14:21 amavisd.sock
drwx------ 2 amavis amavis 4096 jui 1 01:38 virusmails
[root@MOLENEPRO etc]# ll /var/run/
total 140
-rw-r--r-- 1 root root 5 déc 22 18:40 atd.pid
-rw-r--r-- 1 root root 4 déc 22 18:40 avgd.pgrp
drwxr-xr-x 2 amavis amavis 4096 déc 22 18:40 clamav
[root@MOLENEPRO etc]# ll /var/run/clamav/
total 4
srwxrwxrwx 1 amavis amavis 0 déc 22 18:40 clamd.ctl
-rw-rw---- 1 amavis amavis 4 déc 22 18:40 clamd.pid
Avec ca tu seras o top...
Installation de l'antivirus AVG+Spam

* Edit this file in an external application (Requires Zope ExternalEditor installed)
* Send this page to somebody
* Print this page
* Add to Favorites
* Cree un fichier pdf a la volee

Installation de l'anti-virus AVG Mail Scanner+Amavis+Dazuko+Spamassassin+Maildrop
On commence par l'installation de Dazuko (il faut absolument la version > 2.0)
Installation de dazuko.

On commence par l'install du kernel source par
# yum install kernel-source
La version actuel est la kernel 2.4.21-9.0.3.EL

Ceci installe les fichiers dans le repertoire /usr/src/
Ensuite on passe à la configuration de Dazuko
On decompresse et on pose ca dans /usr/local par exemple ensuite
# ./configure
# make
# /sbin/insmod dazuko.o
# mknod -m 600 /dev/dazuko c 254 0
# chown root:root /dev/dazuko
# cp dazuko.o /lib/modules/2.4.21-9.0.3.EL/misc

Pour tester l'existence du module dazuko faire :
# cat /proc/modules

On passe à l'installation d'AVG mail server

# rpm -i compat-gcc-7.3-2.96.122.i386.rpm
# rpm -i compat-libstdc++-7.3-2.96.122.i386.rpm
# rpm -i compat-gcc-c++-7.3-2.96.122.i386.rpm
# rpm -i compat-libstdc++-devel-7.3-2.96.122.i386.rpm
# rpm -i avglinux-7.0-8_avi0293.i386.rpm

# avgscan -register <le numero de license>
Pour une utilisation en mode trial mettre :
70LINUX-TTS05-PZ-C01-S1-J18-IHAR

On installe d'abord clamav

clamav-0.74-1.1.el3.dag.i386.rpm
clamav-db-0.74-1.1.el3.dag.i386.rpm
clamav-devel-0.74-1.1.el3.dag.i386.rpm
clamd-0.74-1.1.el3.dag.i386.rpm

Ensuite installation des packages perl obligatoires
Archive-Tar-0.22
Archive-Zip-1.01
Compress-Zlib-1.16
Convert-TNEF-0.17
Convert-UUlib-0.212
Digest-MD5-2.16
File-MMagic-1.15
IO-stringy-2.108
libnet-1.12
MailTools-1.46
MIME-tools-5.411
MIME-Base64-2.12
Net-Server-0.84
Unix-Syslog-0.99

Ensuite on lance les process de clamav et on install amavis-new

amavisd-new-20030616-9.p10.1.el3.dag.i386.rpm

Installation de Spamassassin

Utilisation du module perl Mail::SpamAssassin
et du rpm redhat fournit en standart. La cohabitation anti-virus et anti-spam
se fait grace à Amavis-new

Les fichiers de configuration important sont :

# /etc/clamav.conf
# /etc/amavisd.conf

Pour mettre à jour la base de données de Clamav :

faire un # freshclam

Pour finir

Installer le module webmin de clamav et amavis-new pour administrer l'ensemble

Ce qui a crée des problémes

Utiliser les fichiers de conf de amavis et clamav
Faire attention aux permissions et droits
Répertoire /var/clamav fichier en amavis.amavis
chgrp amavis /etc/clamav.conf
chown amavis /etc/clamav.conf
chgrp amavis /var/clamav/
chown amavis /var/clamav/

Dazuko ne voulait pas se charger au reboot de la machine :
G donc modifé le script d'AVG anti-virus /etc/rc.d/init.d/avgd
en ajoutant la ligne insmod /usr/local/dazuko/dazuko.o
au dessus de # check if dazuko exists