REVISION Le 02/03/09: configuration spécifique pour un vserver, installation d'une interface de gestion et parametrage anti-spam.


REVISION le 09/03/09: Reprise à zéro de toute la config anti-span anti-virus.


XMAIL Installation et config sur Lenny


L'installation a été réalisée sur une vmware tournant sous lenny. Un dns local gére les domaines bidons (xmail1.abc et xmail2.abc) créés pour l'occasion.

La machine qui va être serveur de courrier:

dbip64:/# cat /etc/issue
Debian GNU/Linux 5.0 \n \l

dbip64:/# hostname --fqdn
dbip64.net.caen

dbip64:/# ifconfig | grep 192
          inet adr:192.168.0.64  Bcast:192.168.0.255  Masque:255.255.255.0


Configuration des zones sur le dns local (elles seront répliquées sur mon desktop ubuntu64 ip 192.168.0.22 qui sert de dns secondaire)

Le dns local tourne sur le serveur que vous consultez actuellement, distribution lenny.

srvweb:/etc/bind# cat named.conf.local

include "/etc/bind/zones.rfc1918";
include "/etc/bind/zone.wanadoo.fren";
include "/etc/bind/zone.wanadoo.fra";
include "/etc/bind/zone.wanadoo.home";
include "/etc/bind/zone.sarge";
include "/etc/bind/zone.loc";
include "/etc/bind/zone.abc";
include "/etc/bind/zone.len";
include "/etc/bind/zone.pls";

zone "net.caen" {
      notify yes;
      allow-transfer { 192.168.0.22; };
      type master;
      file "net.caen";
};
......

srvweb:/etc/bind# cat zone.abc
zone "xmail1.abc" {
      notify yes;
      allow-transfer { 192.168.0.22; };
      type master;
      file "xmail1.abc";
};

zone "xmail2.abc" {
      notify yes;
      allow-transfer { 192.168.0.22; };
      type master;
      file "xmail2.abc";
};

srvweb:/etc/bind# cat /var/cache/bind/xmail1.abc
$TTL 3H
@    IN    SOA    srvweb.net.caen. root.net.caen. (
            2009030101
            8H
            2H
            1W
            1D )
@    IN    NS    ns.net.caen.
@    IN    NS    p733.net.caen.
@    IN    MX    10    dbip64.net.caen.

www        IN    A       192.168.0.64

Je vérifie que les zones sont bien propagées:

dbip64:/# cat /etc/resolv.conf
search net.caen
nameserver 192.168.0.22
nameserver 192.168.0.23

dbip64:/# dig mx xmail1.abc

; <<>> DiG 9.5.1-P1 <<>> mx xmail1.abc
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45143
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; QUESTION SECTION:
;xmail1.abc.            IN    MX

;; ANSWER SECTION:
xmail1.abc.        10800    IN    MX    10 dbip64.net.caen.

;; AUTHORITY SECTION:
xmail1.abc.        10800    IN    NS    ns.net.caen.
xmail1.abc.        10800    IN    NS    p733.net.caen.

;; ADDITIONAL SECTION:
dbip64.net.caen.    10800    IN    A    192.168.0.64
ns.net.caen.        10800    IN    A    192.168.0.23
p733.net.caen.        10800    IN    A    192.168.0.22

;; Query time: 1 msec
;; SERVER: 192.168.0.22#53(192.168.0.22)
;; WHEN: Sun Mar  1 14:28:15 2009
;; MSG SIZE  rcvd: 143


J'installe donc xmail par un simple apt-get:

dbip64:/# apt-get install xmail

Il y a un bon paquet de fichiers de configurations qui sont sirués dans /etc/xmail.  Les mails et les domaines pour leur part, seront stockés sur /var/spool/xmail/domains/nom-du-domaine

L'install a créé par défaut un domaine et un utilisateur: postmaster@dbip64.net.caen.

dbip64:/etc/xmail# ll
total 68
drwxr-xr-x  3 root root 4096 mar  1 13:57 .
drwxr-xr-x 58 root root 4096 mar  1 14:06 ..
-rw-r--r--  1 root root   27 mar  1 13:34 aliasdomain.tab
-rw-r--r--  1 root root  159 mar  1 13:34 aliases.tab
-rw-r--r--  1 root root   23 aoû  6  2008 cmd_line
-rw-r--r--  1 root root    0 mar  1 13:34 ctrlaccounts.tab
-rw-r--r--  1 root root   79 mar  1 13:34 ctrl.ipmap.tab
-rw-r--r--  1 root root   16 mar  1 13:34 default_domain
-rw-r--r--  1 root root  260 mar  1 13:34 dnsroots
drwx------  2 root root 4096 mar  1 13:37 domains
-rw-r--r--  1 root root   63 mar  1 13:47 domains.tab
-rw-r--r--  1 root root    0 mar  1 13:34 extaliases.tab
-rw-r--r--  1 root root    0 mar  1 13:34 filters.in.tab
-rw-r--r--  1 root root    0 mar  1 13:34 filters.out.tab
-rw-r--r--  1 root root    0 mar  1 13:34 filters.post-data.tab
-rw-r--r--  1 root root    0 mar  1 13:34 filters.post-rcpt.tab
-rw-r--r--  1 root root    0 mar  1 13:34 filters.pre-data.tab
-rw-r--r--  1 root root   79 mar  1 13:34 finger.ipmap.tab
-rw-r--r--  1 root root  271 mar  1 13:57 mailusers.tab
-rw-r--r--  1 root root   30 mar  1 13:34 pop3.ipmap.tab
-rw-r--r--  1 root root    0 mar  1 13:34 pop3links.tab
-rw-r--r--  1 root root 1718 mar  1 13:34 server.tab
-rw-r--r--  1 root root    0 mar  1 13:34 smtpauth.tab
-rw-r--r--  1 root root    0 mar  1 13:34 smtpextauth.tab
-rw-r--r--  1 root root    0 mar  1 13:34 smtpfwd.tab
-rw-r--r--  1 root root    0 mar  1 13:34 smtpgw.tab
-rw-r--r--  1 root root   30 mar  1 13:34 smtp.ipmap.tab
-rw-r--r--  1 root root    0 mar  1 13:34 smtp.ipprop.tab
-rw-r--r--  1 root root   78 mar  1 13:34 smtprelay.tab
-rw-r--r--  1 root root    0 mar  1 13:34 spam-address.tab
-rw-r--r--  1 root root    0 mar  1 13:34 spammers.tab
-rw-r--r--  1 root root  137 mar  1 13:34 userdef.tab

dbip64:/etc/xmail# grep postmaster *
aliases.tab:"xmailserver.test"    "postmaster"    "xmailuser"
aliases.tab:"dbip64.net.caen"    "root"    "postmaster"
aliases.tab:"dbip64.net.caen"    "abuse"    "postmaster"
mailusers.tab:"dbip64.net.caen"    "postmaster"    "150a1611080416110017"    2    "postmaster"    "U"

Pour la déclaration des domaines et utilisateurs virtuels qui nous intéressent (xxx@xmail1.abc , yyyy@xmail2.abc) il va falloir jouer un peu du clavier. En effet seul un script de création d'adresses en masse pour effectuer des tests est fourni.

Il faut regarder d'un peu plus près comment est structuré xmail.

Côté fichiers de conf, on vient de le voir, tout est situé dans /etc/xmail.

Pour les domaines et les utilisateurs c'est par ici:

dbip64:/var/spool/xmail# ll
total 24
drwx--x--x  6 root root 4096 mar  1 13:45 .
drwxr-xr-x  4 root root 4096 mar  1 13:34 ..
drwxr-xr-x  5 root root 4096 mar  1 13:45 domains
drwxr-xr-x  2 root root 4096 aoû  6  2008 pop3linklocks
drwxr-xr-x  2 root root 4096 mar  1 13:43 pop3locks
drwx--x--x 27 root root 4096 mar  1 13:34 spool

dbip64:/var/spool/xmail/domains# ll
total 20
drwxr-xr-x 5 root root 4096 mar  1 13:45 .
drwx--x--x 6 root root 4096 mar  1 13:45 ..
drwx------ 3 root root 4096 mar  1 13:34 dbip64.net.caen

dbip64:/var/spool/xmail/domains/dbip64.net.caen# ll
total 12
drwx------ 3 root root 4096 mar  1 13:34 .
drwxr-xr-x 5 root root 4096 mar  1 13:45 ..
drwx------ 3 root root 4096 mar  1 13:43 postmaster

dbip64:/var/spool/xmail/domains/dbip64.net.caen# ll postmaster/
total 20
drwx------ 3 root root 4096 mar  1 13:43 .
drwx------ 3 root root 4096 mar  1 13:34 ..
-rw-rw-rw- 1 root root   10 mar  1 13:43 .ipconn
drwx------ 5 root root 4096 mar  1 13:34 Maildir
-rw-rw-rw- 1 root root  137 mar  1 13:34 user.tab
dbip64:/var/spool/xmail/domains/dbip64.net.caen# cat postmaster/{.ipconn,user.tab}
127.0.0.1

"RealName"    "??"
"HomePage"    "??"
"Address"    "??"
"Telephone"    "??"
"MaxMBSize"    "10000"
"SmtpPerms"    "MR"
"ReceiveEnable"    "1"
"PopEnable"    "1"


En fait il va falloir se créer à la mano les domaines, les utilisateurs, les répertoires (dont le Maildir). Pour le Maildir on pourra s'aider du script maildirmake fourni dans le paquet qmail chez dotdeb. Il suffit de récupérer le .deb avec wget, de l'extraire par dpkg -x <repertoire> qmail....deb et de recopier le maildirmake dans /usr/bin.

Je vais donc créer le premier domaine comme ceci:

dbip64:/var/spool/xmail/domains# mkdir -p xmail1.abc/postmaster

Puis je me rends dans le répertoire de l'utilisateur pour créer le Maildir:

dbip64:/var/spool/xmail/domains# cd xmail1.abc/postmaster/

dbip64:/var/spool/xmail/domains/xmail1.abc/postmaster# maildirmake Maildir

Et je recopie les fichiers .ipconn et user.tab depuis le premier domaine créé par défaut:

dbip64:/var/spool/xmail/domains/xmail1.abc/postmaster# cp ../../dbip64.net.caen/postmaster/.ipconn .

dbip64:/var/spool/xmail/domains/xmail1.abc/postmaster# cp ../../dbip64.net.caen/postmaster/user.tab .

dbip64:/var/spool/xmail/domains/xmail1.abc/postmaster# ll
total 20
drwx------ 3 root root 4096 mar  1 14:17 .
drwx------ 3 root root 4096 mar  1 14:12 ..
-rw-r--r-- 1 root root   10 mar  1 14:17 .ipconn
drwx------ 5 root root 4096 mar  1 14:16 Maildir
-rw-r--r-- 1 root root  137 mar  1 14:17 user.tab


Je répête l'opération à l'identique pour créer le 2ème domaine xmail2.abc et son utilisateur postmaster.

Ensuite il faut déclarer ces nouvelles valeurs dans les fichiers de conf adéquats:

dbip64:/etc/xmail# grep 'xmail[1,2].abc' *
domains.tab:"xmail1.abc"
domains.tab:"xmail2.abc"
mailusers.tab:"xmail1.abc"    "postmaster"    "150a1611080416110017"    3    "postmaster"    "U"
mailusers.tab:"xmail2.abc"    "postmaster"    "150a1611080416110017"    4    "postmaster"    "U"

On voit qu'il faut renseigner au minimum domains.tab et mailusers.tab. ATTENTION: il est nécessaire d'incrémenter le 4ème champ dans mailusers.tab à chaque ajout d'un utilisateur.


Je redémarre xmail et je vais vérifier puis tester:

dbip64:/etc/xmail# netstat -tpan
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
tcp        0      0 0.0.0.0:6017            0.0.0.0:*               LISTEN      9265/XMail     
tcp        0      0 0.0.0.0:6018            0.0.0.0:*               LISTEN      9265/XMail     
tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN      9265/XMail     
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      9265/XMail     
tcp        0      0 0.0.0.0:79              0.0.0.0:*               LISTEN      9265/XMail     
tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      9265/XMail     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1860/sshd      
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      9265/XMail     
tcp        0      0 192.168.0.64:22         192.168.0.22:47721      ESTABLISHED 8050/1         
tcp        0      0 192.168.0.64:22         192.168.0.22:55409      ESTABLISHED 6310/0         
tcp6       0      0 :::22                   :::*                    LISTEN      1860/sshd      

La désactivation de certains services pourra s'effectuer dans le fichier /etc/xmail/server.tab


1) j'envoie un mail depuis le serveur ou est installé le dns local:

srvweb:~# echo "Mail depuis dns" | mail -s "Mail depuis dns" postmaster@xmail1.abc

Les logs correspondants sur ce serveur sur lequel tourne un qmail:

Mar  1 14:53:38 srvweb qmail: 1235915618.085542 new msg 915933
Mar  1 14:53:38 srvweb qmail: 1235915618.085599 info msg 915933: bytes 260 from <root@pmenier.dynalias.net> qp 8895 uid 0
Mar  1 14:53:38 srvweb qmail: 1235915618.085618 starting delivery 5: msg 915933 to remote postmaster@xmail1.abc
Mar  1 14:53:38 srvweb qmail: 1235915618.085633 status: local 0/10 remote 1/20
Mar  1 14:53:38 srvweb qmail: 1235915618.129954 delivery 5: success: 192.168.0.64_accepted_message./Remote_host_said:_250_OK_<SB>/
Mar  1 14:53:38 srvweb qmail: 1235915618.130066 status: local 0/10 remote 0/20
Mar  1 14:53:38 srvweb qmail: 1235915618.130103 end msg 915933


2) A l'arrivée on va vérifier dans /var/log/xmail:

dbip64:/var/log/xmail# ll
total 24
drwxr-xr-x 2 root root 4096 mar  1 14:04 .
drwxr-xr-x 9 root root 4096 mar  1 13:34 ..
-rw-rw-rw- 1 root root 2565 mar  1 13:34 ctrl-200903010000
-rw-rw-rw- 1 root root  146 mar  1 14:05 lmail-200903010000
-rw-rw-rw- 1 root root   96 mar  1 13:43 pop3-200903010000
-rw-rw-rw- 1 root root 1593 mar  1 14:53 smtp-200903010000

dbip64:/var/log/xmail# tail -1 smtp-200903010000

"dbip64.net.caen"    "dbip64.net.caen"    "192.168.0.23"    "2009-03-01 14:53:04"    "pmenier.dynalias.net"    "xmail1.abc"    "root@pmenier.dynalias.net"    "postmaster@xmail1.abc"    "SB"    "RECV=OK"    ""    "268"    ""

Et dans la bal de postmaster@xmail1.abc:

dbip64:/var/log/xmail# mutt -f /var/spool/xmail/domains/xmail1.abc/postmaster/Maildir/


i:Quitter  -:PgPréc  <Space>:PgSuiv v:Voir attach.  d:Effacer  r:Répondre  j:Suivant ?:Aide
From: root@pmenier.dynalias.net
To: postmaster@xmail1.abc
Subject: Mail depuis dns^M

Mail depuis dns


Ok ça fonctionne nickel. Reste tout de même un gros souci: il va falloir se créer des scripts persos d'ajout de domaine et d'utilisateurs sans quoi cela devient vite fastidieux.

Je vais donc me créer un petit répertoire perso dans lequel je vais installer des templates que j'utiliserai dans mes scripts de création.


dbip64:/home# mkdir tplxmail

dbip64:/home# cd tplxmail/

dbip64:/home/tplxmail# cp /var/spool/xmail/domains/dbip64.net.caen/postmaster/user.tab .

dbip64:/home/tplxmail# cp /var/spool/xmail/domains/dbip64.net.caen/postmaster/.ipconn .

dbip64:/home/tplxmail# echo 4 > increment


Script 1: création de domaine avec ajout de l'utilisateur postmaster pour ce domaine:  /usr/local/sbin/xmailadddomain



#!/bin/bash

if [ $# -lt 1  ]
 then
   echo
   echo "Usage : $0 <nom de domaine à ajouter>"
   echo
   exit 1
fi
if [ -d /var/spool/xmail/domains/"$1" ] ; then
   echo
   echo "Domaine déjà déclaré !!!"
   echo
   exit 1
fi

mkdir -p /var/spool/xmail/domains/"$1"/postmaster
chmod -R 700 /var/spool/xmail/domains/"$1"

cd /var/spool/xmail/domains/"$1"/postmaster && /usr/bin/maildirmake Maildir
cp /home/tplxmail/.ipconn /var/spool/xmail/domains/"$1"/postmaster
cp /home/tplxmail/user.tab /var/spool/xmail/domains/"$1"/postmaster


INCREMENT=$(cat /home/tplxmail/increment)
let INCREMENT=$INCREMENT+1

datemodif=$(date +%Y%m%d%H%M%S)
cp /etc/xmail/mailusers.tab /etc/xmail/mailusers.tab.$datemodif

echo -n "Entrez le mot de passe pour postmaster@$1 "
read rep

password=$(/usr/sbin/XMCrypt $rep)

echo "\"$1\"    \"postmaster\"  \"$password\"   $INCREMENT      \"postmaster\"  \"U\"" >> /etc/xmail/mailusers.tab

echo $INCREMENT > /home/tplxmail/increment

cp /etc/xmail/domains.tab /etc/xmail/domains.tab.$datemodif
echo \"$1\" >> /etc/xmail/domains.tab

grep $1 /etc/xmail/{mailusers.tab,domains.tab}

/etc/init.d/xmail force-reload



Attention les champs de la ligne echo "\"$1\"    \"postmaster\"  \"$password\"   $INCREMENT  etc... doivent être séparés par des tabulations !!!


Je teste:

dbip64:/usr/local/sbin# ./xmailadddomain

Usage : ./xmailadddomain <nom de domaine à ajouter>

dbip64:/usr/local/sbin# ./xmailadddomain xmail3.abc
Entrez le mot de passe pour postmaster@xmail3.abc toto
/etc/xmail/mailusers.tab:"xmail3.abc"    "postmaster"    "110a110a"    5    "postmaster"    "U"
/etc/xmail/domains.tab:"xmail3.abc"
Restarting XMail server: XMail.

Je me connecte en pop histoire d'assurer:

dbip64:/usr/local/sbin# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK <1235919628.1317570896@dbip64.net.caen> [XMail 1.25 POP3 Server] service ready; Sun, 1 Mar 2009 16:00:28 +0100
user postmaster@xmail3.abc
+OK Password required for postmaster@xmail3.abc
pass toto
+OK Maildrop has 0 messages (0 bytes)
list
+OK 0 0
.
quit
+OK [XMail 1.25 POP3 Server] closing session
Connection closed by foreign host.


Je vous laisse adapter pour la création d'un script qui ajoute des utilisateurs à un domaine existant. Il faudra simplement tester le fait que le domaine existe et que  l'utilisateur n'existe pas .


En conclusion je dirais que c'est un outil bien fait dans la mesure où en installant 1 seul paquet on dispose d'un serveur smtp, pop, imap. Et je n'ai pas fait le tour des options.
Dommage (?) qu'il y ait si peu d'utilitaires fournis dans celui-ci . Il est possible de trouver des interfaces web en php mais à priori elles n'ont plus l'air maintenues, ce qui fait qu'il faudra mettre en place des restrictions d'accès assez strictes ou les réécrire pour les utiliser.

J'ai vu qu'il était également possible de l'utiliser avec spamassassin : http://www.hovinne.com/blog/index.php/2006/12/09/107-xmail-spamassassin-howto
(si indispo copie de secours ici) ..

...ainsi qu'avec un antivirus: http://xmail.libre-essai.com/XM_Fprot_FilterFr.html  (si indispo copie de secours ici)


REVISION 03/02/09


Parmi les panels d'admin à disposition, j'ai testé XPAI sur une autre machine (distrib etch sur laquelle j'ai installé xmail également). L'install est des plus simple:

1) Récuperer le zip ici : http://www.akxak.de/xpai/xpai_116.zip

2) Installer apache/php sur le serveur qui héberge le xmailserver.

3) Dézipper l'archive dans un répertoire et modifier le fichier config.php. A ce propos voici un exemple de configuration testé:
   
    extrait de config.php :    

.....
$_SESSION['xpai_user'] = "xpaiuser";
$_SESSION['xpai_pwd'] = "password";
....
$super_users = array("Administrator");

ET LE FICHIER CORRESPONDANT: /etc/xmail/ctrlaccounts.tab :

"xpaiuser"    "15041616120a1701"
"Administrator"    "15041616120a1701"

La chaine 15041616120a1701 est le résulat de XMCrypt password. En utilisation normale, vous ajusterez....

On constate bien que les mots de passe sont cryptés avec l'outil XMCrypt contrairement à ce qui est indiqué au début du fichier config.php. Ce test a été réalisé sur une debian-etch avec apache2 et php5 en modules.

Il suffit ensuite de se rendre sur: http://ip-ou-ndd/rep-install-xpai


xmail admin interface php xmail admin interface php xmail admin interface php





Pour un vserver, comme pour la plupart des services il est fortement conseillé de spécifier les adresses IP sur lesquelles les services vont écouter. Par défaut xmail écoute sur toutes les interfaces disponibles mais on peut modifier aisément ce comportement. Cela se passe dans le fichier /etc/xmail/cmd_line.



vweb3:/etc/xmail# /etc/init.d/xmail start

Starting XMail server: XMail.

vweb3:/etc/xmail# netstat -lnp
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
tcp        0      0 192.168.1.249:79        0.0.0.0:*               LISTEN      13034/XMail    
tcp        0      0 192.168.1.249:80        0.0.0.0:*               LISTEN      12287/apache2  
tcp        0      0 192.168.1.249:465       0.0.0.0:*               LISTEN      13034/XMail    
tcp        0      0 192.168.1.249:25        0.0.0.0:*               LISTEN      13034/XMail    
tcp        0      0 192.168.1.249:6017      0.0.0.0:*               LISTEN      13034/XMail    
tcp        0      0 192.168.1.249:6018      0.0.0.0:*               LISTEN      13034/XMail    
tcp        0      0 192.168.1.249:995       0.0.0.0:*               LISTEN      13034/XMail    
tcp        0      0 192.168.1.249:110       0.0.0.0:*               LISTEN      13034/XMail    
Sockets du domaine UNIX actives(seulement serveurs)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name    Chemin

vweb3:/etc/xmail# cat cmd_line
Md -Pl -Sl -Fl -Cl -Ll -PI 192.168.1.249 -SI 192.168.1.249 -FI 192.168.1.249 -CI 192.168.1.249 -BI 192.168.1.249 -XI 192.168.1.249 -WI 192.168.1.249

Voir doc: http://xmailserver.org/Readme.html#command_line


Révision 09/03/09 : Voyons maintenant la configuration antispam et anti-virus:

Il va falloir installer un paquet spécifique à xmailserver ainsi que spamassassin, clamav, clamav-daemon, maildrop (qui contient le binaire reformime).

Je reprends sur la machine sur laquelle j'avais commencé l'install

dbip64:/etc/xmail# apt-get install spamassassin, clamav, clamav-damon, maildrop

maildrop installera courier-authlib qu'on pourra dévalider par un simple update-rc.d -f courier-authdaemon remove.

Recopier le fichier reformime dans le répertoire des filtres de xmail:

dbip64:/etc/xmail# cp /usr/bin/reformime /var/lib/xmail/filters


Je valide le démarrage de spamassassin et modifiant le fichier /etc/default/spamassassin en passant ENABLE=1 et je le démarre.

Je récupère ensuite  :  http://xmail.nomadcf.com/x-scan/files/x-scan_1.4.2.tar.gz  


et je laisse à dispo ici la version corrigée par mes soins : x-scan_1.4.4-pmenier.tgz .

Je laisse des copies de ces fichiers à dispo au cas où le lien deviendrait obsolète:  Version 1.4.2  

Mise en place:

dbip64:/# cd /var/lib/xmail/filters
dbip64:/var/lib/xmail/filters# wget http://xmail.nomadcf.com/x-scan/files/x-scan_1.4.2.tar.gz
dbip64:/var/lib/xmail/filters# tar zxvf x-scan_1.4.2.tar.gz


Ceci a créé un répertoire x-scan dans lequel il y a les fichiers de config ainsi que le script perl .


dbip64:/var/lib/xmail/filter# ll x-scan*
-rw-r--r-- 1 root root 10240 mar  4 16:57 x-scan_1.4.2.tar.gz
-rwx------ 1 root root    74 mar  1  2004 x-scan.incoming.tab
-rwx------ 1 root root    74 mar  1  2004 x-scan.outgoing.tab
-rwx------ 1 root root 10992 mar 7  2004 x-scan.pl
-rwx------ 1 root root    69 mar  1  2004 x-scan.tab

x-scan:
total 36
drwxr-xr-x 2 root root  4096 mar  7  2004 .
drwxrwxrwt 3 root root  4096 mar  4 17:02 ..
-rw-r--r-- 1 root root   239 mar  7  2004 extention_blocked.txt
-rwx------ 1 root root   357 fév 26  2004 from_message.txt
-rw-r--r-- 1 root root    30 mar  1  2004 ReadMe.txt
-rwx------ 1 root root   349 fév 26  2004 to_message.txt
-rwx------ 1 root root 10992 mar  7  2004 x-scan.pl

Récupérer et décompresser ensuite le script corrigé:

dbip64:/var/lib/xmail/filters# wget http://blogpmenier.dynalias.net/docext/xmai/x-scan_1.4.4-pmenier.tgz
dbip64:/var/lib/xmail/filters# tar zxvf x-scan_1.4.4-pmenier.tgz

Ceci a créé dans le répertoire courant le même script perl (x-scan.pl) .

Pour  en avoir fait les frais voici ma méthode:

Supprimer les fichiers x-scan.incoming.tab et x-scan.outgoing.tab. Ne laisser que le fichier x-scan.tab qui contiendra:

dbip64:/etc/xmail# cat x-scan.tab
"/var/lib/xmail/filters/x-scan.pl"    "@@FILE"    "@@RCPT"    "@@FROM"    "-I"
"/var/lib/xmail/filters/x-scan.pl"    "@@FILE"    "@@RCPT"    "@@FROM"    "-O"


Il faut ensuite recopier le fichier x-scan.tab du répertoire x-scan vers /etc/xmail/  ainsi que vers /var/lib/xmail/filters !!!  (ou mieux crééer un lien symbolique)

dbip64:/var/lib/xmail/filters# cd x-scan
dbip64:/var/lib/xmail/filters/x-scan# mv x-scan.tab /etc/xmail
dbip64:/var/lib/xmail/filters/x-scan# ln -s /etc/xmail/x-scan.tab ./x-scan.tab

Il faut ensuite modifier les 2 fichiers suivants comme ceci

dbip64:/etc/xmail# cat filters.in.tab
"*"    "*"    "0.0.0.0/0"    "0.0.0.0/0"    "x-scan.tab"

dbip64:/etc/xmail# cat filters.out.tab
"*"    "*"    "0.0.0.0/0"    "0.0.0.0/0"    "x-scan.tab"


On voit tout de suite sur les 2 derniers fichiers qu'il sera très facile d'adapter la config: dans le cas ci-dessus tous les domaines et tous les utilisateurs de ceux-ci passent par l'antivir/antispam.

En modifiant le fichier: /etc/xmail/filters.in.tab comme ceci:

dbip64:/etc/xmail# cat filters.in.tab
"*"    "patrick@xmail.pat"    "0.0.0.0/0"    "0.0.0.0/0"    "x-scan.tab"

seul l'utilisateur patrick@xmail.pat sera impacté. A adapter selon les configs (un domaine local bidon utilisé pour des échanges de messages en interne n'a pas besoin de passer par l'anti-spam par exemple).

De plus le fichier x-scan.pl permet également (mais de façon globale) de valider/dévalider antivirus/antispam. Ce fichier nécessitera quelques ajustements pour fonctionner correctement (vérifier notamment les paths des binaires utilisés : awk, cat, .... et penser à supprimer l'option mbox de clamscan): celui que je fournis est typiquement adapté à debian.


Je redémarre ensuite xmail et je teste depis une autre machine (srvweb) avec le test-qui-tue: gtube.


1) Envoi d'un spam

srvweb:~# cat /root/samplespam

If your spam filter supports it, the GTUBE provides a test by which you
can verify that the filter is installed correctly and is detecting incoming
spam. You can send yourself a test mail containing the following string of
characters (in upper case and with no white spaces and line breaks):

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

You should send this test mail from an account outside of your network.

OK je l'envoie:

srvweb:~# cat /root/samplespam | mail -s "EssaiSP" postmaster@xmail1.abc

Côté serveur xmail voici ce que disent les logs:

dbip64:/var/log/xmail# tail -f anti* spam*

==> antivirus-20090309000 <==
"2009-03-09 19:02:24"    ""    ""    "postmaster@xmail1.abc"    "root@pmenier.dynalias.net"   
"2009-03-09 19:02:25"    ""    ""    "postmaster@xmail1.abc"    "root@pmenier.dynalias.net"   

==> spam-20090309000 <==
"2009-03-09 19:02:24"    "SPAM"    "postmaster@xmail1.abc"    "root@pmenier.dynalias.net"    "50"    "No"    "-I"   
"2009-03-09 19:02:25"    "SPAM"    "postmaster@xmail1.abc"    "root@pmenier.dynalias.net"    "1000.0"    "No"    "-O"   



Je vais vérifier:

dbip64:~# mutt -f /var/lib/xmail/domains/xmail1.abc/postmaster/Maildir/


 1 O   Mar 09 root@pmenier.dy (3,0K) *****SPAM***** EssaiSP

From: root@pmenier.dynalias.net
To: postmaster@xmail1.abc
Subject: *****SPAM***** EssaiSP^M
X-Spam-Flag: YES^M
X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on dbip64.net.caen^M
X-Spam-Level: **************************************************^M
X-Spam-Status: Yes, score=1002.2 required=5.0 tests=ALL_TRUSTED,GTUBE,^M
        TVD_SPACED_SUBJECT_WORD3 autolearn=no version=3.2.5^M

[-- Attachement #1 --]
[-- Type : text/plain, Codage : 8bit, Taille : 1,3K --]

------------------ Début de Rapport SpamAssassin ---------------------
Ce message est probablement du SPAM (message non sollicité envoyé en
masse, publicité, escroquerie...).
......

OK c'est bon.

2) Envoi d'un fichier "normal":

srvweb:~# cat /etc/hosts | mail -s "EssaiNormal" postmaster@xmail1.abc

Les logs rapportent:
==> antivirus-20090309000 <==
"2009-03-09 19:15:04"    ""    ""    "postmaster@xmail1.abc"    "root@pmenier.dynalias.net"   

==> spam-20090309000 <==
"2009-03-09 19:15:04"    "NOT SPAM"    "postmaster@xmail1.abc"    "root@pmenier.dynalias.net"    "-1.4"    "No"    "-O"   


Et le contenu de la bal:
 1     Mar 09 root@pmenier.dy (3,0K) *****SPAM***** EssaiSP
 2 N   Mar 09 root@pmenier.dy (0,7K) EssaiNormal

X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on dbip64.net.caen^M
X-Spam-Status: No, score=-1.4 required=5.0 tests=ALL_TRUSTED autolearn=failed^M
        version=3.2.5^M
From: root@pmenier.dynalias.net
To: postmaster@xmail1.abc
Subject: EssaiNormal^M

127.0.0.1       localhost.localdomain localhost
192.168.0.23    srvweb.net.caen srvweb
#192.168.0.23   pmenier.dynalias.net srvweb
192.168.0.22    p733.net.caen p733
..........

OK c'est bon. Suivant....

3) Envoi d'un virus:

srvweb:~# cat /root/eicar.com | mail -s "EssaiVIR" postmaster@xmail1.abc

Les logs:
==> antivirus-20090309000 <==
"2009-03-09 19:17:30"    "Virus : Yes"    "Eicar-Test-Signature"    "postmaster@xmail1.abc"    "root@pmenier.dynalias.net"   

==> spam-20090309000 <==
"2009-03-09 19:17:30"    "NOT SPAM"    "postmaster@xmail1.abc"    "root@pmenier.dynalias.net"    "0"    "No"    "-I"   
"2009-03-09 19:17:31"    "NOT SPAM"    "postmaster@xmail1.abc"    "root@pmenier.dynalias.net"    "-1.4"    "No"    "-O"   

La boite:
   1     Mar 09 root@pmenier.dy (3,0K) *****SPAM***** EssaiSP
   2     Mar 09 root@pmenier.dy (0,7K) EssaiNormal
   3 N   Mar 09 root@pmenier.dy (0,4K) [ VIRUS ] Found in email

X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on dbip64.net.caen^M
X-Spam-Status: No, score=-1.4 required=5.0 tests=ALL_TRUSTED,MISSING_DATE,^M
        MISSING_MID autolearn=failed version=3.2.5^M
To: postmaster@xmail1.abc
From: root@pmenier.dynalias.net
Subject: [ VIRUS ] Found in email^M
X-Scanned-Code: d09bb12b24171f89e4a5ce7db91f8188^M

Hello,

        I'm Sorry to have to inform you of this, But an
email sent to you from: root@pmenier.dynalias.net.
Could NOT be delivered do to it being infected with
the Eicar-Test-Signature virus.

        The email was was rejected by the server to insure
tha the virus could NOT infect your system. A similar email
is being send to root@pmenier.dynalias.net of the Email that was infected.

-- Server --

OK c'est bon.

J'arrête là. Merci de me remonter les éventuels problèmes rencontrés et ou les améliorations apportées ou à apporter.


REMARQUES:

1) Xmail propose un mode debug très interessant: il suffit de le lancer de la façon suivante:

# MAIL_ROOT=/var/lib/xmail  /usr/sbin/XMail --debug -Md

2) Bien que j'ai adopté une configuration globale antispam antivirus, il est possible de l'adapter à un/plusieurs utilisateurs/domaines en modifiant les fichiers filters.in.tab et filters.out.tab et en remplaçcant les jokers par des valeurs précises.


3) PRECAUTION: avant d'ouvrir ce type de serveur sur le web il est fortement conseillé de vérifier qu'il n'est pas en open-relay.
Voir à ce sujet le fichier /etc/xmail/smtprelay.tab .



4) Si vous testez sur un réseau local avec des noms de domaine bidon (comme je l'ai fait) prenez soin de déclarer votre dns local dans le fichier : /etc/xmail/dnsroots.

5) La réécriture du sujet du mail pour spamassassin (tag ***SPAM****) se fait via le fichier: /etc/spamassassin/local.cf .