Installation de MailScanner

Un article de Diablotins.org.


Image:brush.png

Sommaire

Installation de l'outil MailScanner / MailScanner-mrtg sur plateforme FreeBSD 5.1

Version installée

  • MailScanner-devel-4.26.4
  • clamav-devel-20040116
  • f-prot-4.3.1
  • sendmail 8.12.9p1

Configuration de Sendmail

On edite les fichiers de configuration de FreeBSD

Configuration RC

# vi /etc/rc.conf
--
[...]
sendmail_enable="NONE" (utilisation du script mta.sh)
sendmail_outbound_enable="YES"
sendmail_submit_enable="YES"
sendmail_msp_queue_enable="YES"
[...]

mailer.conf

# vi /etc/mail/mailer.conf
--
sendmail /usr/libexec/sendmail/sendmail
send-mail /usr/libexec/sendmail/sendmail
mailq /usr/libexec/sendmail/sendmail
newaliases /usr/libexec/sendmail/sendmail
hoststat /usr/libexec/sendmail/sendmail
purgestat /usr/libexec/sendmail/sendmail

Répertoire mail

/etc/mail :

C'est dans ce répertoire que se trouve tous les fichiers importants de sendmail. Nous émettons l'hypothèse suivante:

  • votre domaine isp est isp.fr
  • vous vous connectez Ă  smtp.isp.fr pour envoyer votre courriels
  • vous vous connectez Ă  pop.isp.fr pour aller chercher votre courriels
  • votre adresse email est : toto.isp.fr
  • votre user freebsd se nomme titi

Création de votre .mc, par exemple hostname.mc Le pas suivant est d'indiquer à FreeBSD quel est notre fichier de configuration pour qu'il puisse automatiser diverses actions plus tard. Editez maintenant /etc/make.conf avec votre éditeur de texte préféré et tapez:

  # vi /etc/make.conf
  --
  [...]
  SENDMAIL_MC=/etc/mail/hostname.mc
  [...]

Utilisation du fichier .mc

Avant de procéder à la configuration, il est nécessaire de préciser comment nous convertirons notre fichier .mc en son correspondant.cf et comment nous indiquerons à Sendmail qu'il l'utilise. Avant tout nous ferons la conversion:

  /etc/mail# make

Avec ça , FreeBSD nous donnera un fichier hostname.cf pret à l'emploi. Nous pouvons automatiser le processus en tapant:

  /etc/mail# make install

Après rien de plus facile, redémarrez le MTA:

  /etc/mail# make restart

Ou plus simplement

  /etc/mail# make all install restart 

Mon fichier de config

divert(-1)
divert(0)
VERSIONID(`$FreeBSD: src/etc/sendmail/freebsd.mc,v 1.28
2003/04/18 01:25:41 gshapiro Exp $')
OSTYPE(freebsd5)
define(`SMTP_MAILER_FLAGS', `e9')dnl
FEATURE(redirect)dnl
FEATURE(nocanonify)dnl
FEATURE(always_add_domain)dnl
FEATURE(local_procmail)dnl
define(`PROCMAIL_MAILER_PATH', `/usr/local/bin/procmail')dnl
define(`STATUS_FILE', `/var/log/sendmail.st')dnl
GENERICS_DOMAIN(hostname.domain.org hostname localhost)
FEATURE(masquerade_envelope)dnl
FEATURE(`genericstable')
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')
FEATURE(relay_entire_domain)dnl
FEATURE(accept_unresolvable_domains)dnl
define(`confCF_VERSION', `thierry - 01/02/04')dnl
define(`confCON_EXPENSIVE', `True')dnl
define(`confME_TOO', `True')dnl
define(`confCOPY_ERRORS_TO', `Postmaster')dnl
define(`confDEF_CHAR_SET', `ISO-8859-1')dnl
define(`confMIME_FORMAT_ERRORS',`True')dnl
define(`SMART_HOST', `smtp8:[smtp.isp.fr]')dnl
define(`confTO_QUEUEWARN', `24h')
MAILER(local)
MAILER(smtp)

`SMART HOST' indique Ă  Sendmail d'envoyer tous les mails Ă  votre isp au lieu d'essayer de les envoyer en local.

Création du fichier /etc/mail/genericsdomain

  # vi /etc/mail/genericsdomain
  --
  hostname.domain.org

Création du fichier /etc/mail/genericstable

  # vi /etc/mail/genericstable
  --
  user@hostname.domain.org toto@isp.fr

Ce fichier est très important, c'est lui qui permet de reécrire les adresses locales en adresses acceptables par le serveur de messagerie de votre fournisseur d'accès. Dans cet exemple, il transforme user@hostname.domain.org en toto@isp.fr ...
Une fois ce fichier rempli correctement, il faut en faire une base, pour qu'il puisse être traité correctement pas notre sendmail (att l'espace correspond à un).

  /etc/mail# makemap hash genericstable.db < genericstable

Fichier /etc/hosts :

  # vi /etc/hosts
  --
  [...]
  127.0.0.1 hostname.domain.org hostname localhost
  [...]

test de fonctionnement en local :
Faites un fichier (test.mail) avec les lignes suivantes :

  Subject: test sendmail local
  la toto titi
  (ligne vide)

Et ensuite envoyez vous ce courriel de test avec la commande :

  /usr/bin/sendmail -t -v user< test.mail

Vous devriez avoir quelque chose comme ça :

bash-2.05b$ sendmail -v -t user
user... Connecting to [127.0.0.1] via relay...
220 hostname.domain.org ESMTP Sendmail
8.12.9p1/8.12.9/thierry - 01/02/04; Wed, 4 Feb 2004 17:45:51 +0100 (CET)
>>> EHLO hostname.domain.org
250-Hello hostname.domain.org [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-DELIVERBY
250 HELP
>>> MAIL From: SIZE=42
250 2.1.0 ... Sender ok
>>> RCPT To:
>>> DATA
250 2.1.5 ... Recipient ok
354 Enter mail, end with "." on a line by itself
>>> .
250 2.0.0 i14GjpNA006056 Message accepted for delivery
user... Sent (i14GjpNA006056 Message accepted for delivery)
Closing connection to [127.0.0.1]
>>> QUIT
221 2.0.0 hostname.domain.org closing connection

Normalement en ouvrant mutt ou en utilisant tout simplement la commande "mail" vous devriez voir apparaitre votre courriel.

Pour infos, voici la liste des fichiers utilisés:

  drwxrwx--- 2 smmsp smmsp 512 Feb 4 18:30 clientmqueue
  drwxr-xr-x 8 root daemon 512 Feb 4 18:05 incoming
  drwxr-xr-x 2 root daemon 512 Feb 4 18:30 mqueue
  drwxr-xr-x 2 root daemon 512 Feb 4 18:30 mqueue.in
  drwxr-xr-x 3 root daemon 512 Jan 19 11:45 output
  drwxr-xr-x 3 root daemon 512 Feb 3 16:52 quarantine
  drwx------ 2 root wheel 512 Feb 4 18:30 spamassassin

Mailscanner

Installer mailscanner Ă  partir des ports :

  # cd /usr/ports/mail/mailscanner-devel
  # make && make install

Le répertoire de travail se trouve dans /usr/local/etc/MailScanner/

Dans ce répertoire, nous avons le fichier de config Mailscanner.conf et virus.scanners.conf .

# vi /usr/local/etc/MailScanner/mailscanner.conf
--
[...]   
Outgoing Queue Dir = /var/spool/mqueue
Incoming Work Dir = /var/spool/incoming
Quarantine Dir = /var/spool/quarantine
Virus Scanning = yes
Virus Scanners = f-prot clamav
Quarantine Infections = yes
Quarantine Whole Message = yes
Use SpamAssassin = yes
Spam Actions = deliver
SpamAssassin User State Dir = /var/spool/spamassassin
Log Spam = yes

Bien sĂ»r, chacun est libre de faire ce qu'il veut dans son fichier de config ... ;-)

# vi usr/local/etc/MailScanner/virus.scanners.conf
--
[...]
clamav /usr/local/libexec/MailScanner/clamav-wrapper /usr/local
f-prot /usr/local/libexec/MailScanner/f-prot-wrapper /usr/local/f-prot
[...]

LĂ  bien sur, n'ayant pas de licence, je n'ai pu tester que f-prot et clamav ...

  # vi /etc/crontab:
  --
  [...]
  0 11 * * * root /usr/local/libexec/MailScanner/f-prot-autoupdate
  15 11 * * * root /usr/local/libexec/MailScanner/clamav-autoupdate
  [...]

Pour l'autoupdate des bases anti virus f-prot et clamav.

Fonctionnement de l'ensemble Sendmail/Mailscanner

Normalement, lors de l'installation de Mailscanner, il y a crĂ©ation dans /usr/local/etc/rc.d/ du fichier "mta.sh". Ce fichier est très important, car c'est lui qui indique Ă  votre mta (sendmail ou exim) comment dĂ©marrer et avec quelles options. Si nous prenons comme exemple sendmail :

mta=sendmail
incoming_queue=/var/spool/mqueue.in
incoming_args="-L sm-mta-in -bd \
-OPrivacyOptions=noetrn \
-OQueueDirectory=${incoming_queue} \
-ODeliveryMode=queueonly \
-OPidFile=${inpidfile}"
outgoing_args="-L sm-mta-out -q${outgoing_queue_time} \
-OPidFile=${outpidfile}"
submitqueue_args="-L sm-msp-queue -Ac -
q${submit_queue_time} \
-OPidFile=${subpidfile}"

Tout en respectant dans /etc/rc.conf =>

  sendmail_enable="NONE"

Pour résumer, il faut que le système lance mailscanner.sh et mta.sh pour que l'ensemble puisse fonctionner correctement.

Mailscanner-mrtg

LĂ , pas grand chose Ă  faire. Installer :

  • MailScanner version 4.0 ou plus
  • MRTG version 2.9 ou plus
  • perl version 5.005 ou plus
  • Apache

J'ai 'détaré' le fichier MSMRTG-test.tar.gz dans le répertoire /usr/local/www/data . Une fois fait, nous avons un répertoire nommé 'mailscanner-mrtg' qui devient le DocumentRoot de mon serveur apache (/usr/local/www/data/mailscanner-mrtg ).

Dans ce même répertoire, nous avons un fichier d'install nommé 'install.pl' attention, à la date d'aujourd'hui, il est buggé, il faut remplacer

  ' unless (-f "/etc/crontab") { die "ERROR: /etc/cron.d is not a file\nAborting...\n"}'

par

  ' unless (-f "/etc/crontab") { die "ERROR: /etc/crontab is not a file\nAborting...\n"}.

Ensuite faire la manip suivante:

  # perl install.pl --cron=s --wwwconf=/usr/local/etc/apache2 --www=/usr/local/www/data --mrtgcfg=/usr/local/etc/mrtg --msconf=/usr/local/etc/MailScanner

Et répondre aux questions.

En admettant que votre DocumentRoot soit comme le mien, vous n'aurez plus qu'Ă  lancer votre navigateur :

   $ http://127.0.0.1

Ce document ne rentre pas dans les détails, il a pour vocation d'insister sur les principaux axes, de manière à pouvoir faire fonctionner le tout.
Après, Ă  vous de voir pour amĂ©liorer l'ensemble. Pour finir, une dernière suggestion : ne pas oublier, avant de poser des questions, le fabuleux

  # tail -f /var/log/maillog

très utile pour débugger.

Petites précisions

Pour ceux comme moi qui utilisent fetchmail/procmail, il faut imperativement enlever l'option "mda "/usr/local/bin/procmail -d %T" de votre .fetchmailrc car dans le cas contraire, procmail filtrera vos emails avant le couple Mailscanner/Spamassassin, ce qui aura pour effet de laisser le graphe "spam" Ă  zero ...


Quelques liens utiles

Projets :
Boîte à outils