Howto: Installer qmail sur Debian Sarge

Dans cet article, nous allons faire une installation de Qmail sur une distribution Debian Sarge. Nous activerons/installerons :
- La gestion des utilisateurs et domaines virtuels (via vpopmail)
- Un serveur POP3 (via qmail-popup) avec fonction de roaming SMTP des utilisateurs authentifiés
- Un serveur IMAP4 (courier-imap).
- Un anti-spam (spamassassin)
- Un antivirus (clamav).

Il est possible (et même recommandé) d’utiliser les DaemonTools pour gérer qmail, plutot que le système de démon classique. Pour des raisons de simplicité, et dans un soucis d’avoir un minimum de package externe à l’install classique de debian, nous utiliserons les démons classiques, fournit et installés par défaut dans l’install debian de qmail.

Installation de base de qmail

Il faut tout d’abord ajouter dans /etc/apt/sources.list les non-free. En effet, qmail ne possédant pas une licence « free » (au sens debian du terme), il ne se trouve pas dans la distribution de base. Il faut donc rajouter le terme « non-free » à la fin de la ligne principale de package des sources apt (à personnaliser suivant le mirroir que vous utilisez). /etc/apt/sources.list


deb http://ftp.fr.debian.org/debian/ stable main non-free

Nous mettons maintenant à jour notre base APT, et nous allons désinstaller exim, pour y mettre les sources de Qmail et de ucspi-tcp. En effet, en raison de sa licence, il ne peut être livré que sous forme de code source, à nous donc de le compiler. Nous devrons être root durant cette installation.


su -
apt-get update
apt-get remove --purge exim exim4-base exim4-config
apt-get install -y procmail qmail-src ucspi-tcp-src exim4-daemon-light

Nous lançons maintenant la compilation et la création des paquets .deb qui seront installés. Suivez les instructions dans chacune des compiliations, les infos sont claires.


build-ucspi-tcp
build-qmail

Afin de cloturer cette installation de base de qmail, nous devons lui donner quelques paramètres de base : le nom de la machine (tel qu’il va se présenter), les hosts locaux, et le domaine par défaut.


echo "smtp.mondomaine.com" > /var/qmail/control/me
echo "localhost" > /var/qmail/control/locals
echo "mondomaine.com" > /var/qmail/control/defaultdomain

Nous pouvons maintenant démarrer et stopper qmail pour tester que tout fonctionne bien via le script /etc/init.d/qmail


/etc/init.d/qmail start
/etc/init.d/qmail stop

Vérifier bien dans les logs mail (/var/log/mail.*) que tout est fonctionnel.

Installation de vpopmail : support utilisateurs et domaines virtuels

De base, qmail utilise des fichiers de type .qmail* dans les répertoires des utilisateurs (physique) pour gérer les adresses mails.

Ici, nous voulons pouvoir gérer facilement et à grande échelle les boites mails, et sur plusieurs domaines. De plus, nous ne désirons pas que les utilisateurs existent sur le serveur pour des raisons de sécurité. Nous allons donc utiliser une base de données pour stocker les domaines, les noms de boites mails, les alias, et les forward. Les mails en eux-mêmes seront bien sûr stockés sous forme de fichiers (au format Maildir) sur le serveur.

La gestion virtuelle est fournie par vpopmail. Nous allons donc tout d’abord installé le serveur MySQL, y créer le compte utilisateur de vpopmail, et créer la base. N’oubliez pas ensuite de sécuriser votre installation MySQL (password de l’utilisateur root qui est vide par défaut, etc…).


apt-get install -y mysql-server
cat > /tmp/sql.cmd
INSERT INTO mysql.user SET Host = 'localhost',
User = 'vpopmail', Password = PASSWORD('pass-a-modifier'),
Select_priv = 'N', Insert_priv = 'N', Update_priv = 'N',
Delete_priv = 'N', Create_priv = 'N', Drop_priv = 'N',
Reload_priv = 'N', Shutdown_priv = 'N', Process_priv = 'N',
File_priv = 'N', Grant_priv = 'N', References_priv = 'N',
Index_priv = 'N', Alter_priv = 'N';

FLUSH PRIVILEGES;

CREATE DATABASE vpopmail;

GRANT Select, Insert, Update, Delete, Create, Drop,
Index, Alter ON `vpopmail`.* TO 'vpopmail'@'localhost';

FLUSH PRIVILEGES;

Ctrl+c

cat /tmp/sql.cmd |mysql -p && rm -f /tmp/sql.cmd
Enter password: <laisser vide, faites entrée>

Et maintenant, téléchargeons, et installons vpopmail. Il faut avant tout lui créer ses users locaux, et installer quelques logiciels/librairies.


apt-get install -y make g++ libmysqlclient10-dev

groupadd -g 89 vchkpw && \
useradd -g vchkpw -u 89 -d /var/lib/vpopmail vpopmail && \
mkdir /var/lib/vpopmail && \
mkdir /etc/vpopmail && \
mkdir /usr/share/doc/vpopmail && \
ln -s /etc/vpopmail /var/lib/vpopmail/etc && \
ln -s /usr/bin /var/lib/vpopmail/bin && \
ln -s /usr/share/doc/vpopmail /var/lib/vpopmail/doc && \
ln -s /usr/include /var/lib/vpopmail/include && \
ln -s /usr/lib /var/lib/vpopmail/lib && \
chown -R vpopmail.vchkpw /var/lib/vpopmail

cd /usr/src
wget http://ovh.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.16.tar.gz
tar xvfz vpopmail-5.4.16.tar.gz
cd vpopmail-5.4.16
./configure --prefix=/usr \
--enable-qmaildir=/var/qmail \
--enable-qmail-newu=/var/qmail/bin/qmail-newu \
--enable-qmail-inject=/var/qmail/bin/qmail-inject \
--enable-qmail-newmrh=/var/qmail/bin/qmail-newmrh \
--enable-tcprules-prog=/usr/bin/tcprules \
--enable-tcpserver-file=/etc/tcp.smtp \
--enable-incdir=/usr/include/mysql --enable-libdir=/usr/lib \
--enable-auth-module=mysql --enable-valias \
--enable-logging=p --enable-md5-passwords \
--enable-qmail-ext \
--enable-mysql-limits \
--enable-roaming-users=y \
--enable-tcprules-prog=/usr/bin/tcprules \
--enable-tcpserver-path=/etc/tcp.smtp

make && make install-strip

On configure vpopmail pour se connecter à notre base de données :


echo "localhost|0|vpopmail|pass-a-modifier|vpopmail" \
> ~vpopmail/etc/vpopmail.mysql

On met en place l’effacement du roaming SMTP


crontab -e

Ajouter la ligne suivante dans le fichier, et quitter vi en sauvant le fichier.


40 * * * * /var/lib/vpopmail/bin/clearopensmtp 2>&1 > /dev/null

Relançons maintenant qmail pour être sur que tout est opérationnel (vérifier encore une fois les logs)


/etc/init.d/qmail start
/etc/init.d/qmail stop

Pour créer des domaines et des comptes mails, nous devons maintenant utiliser les commandes de vpopmail (le compte postmaster est créé automatiquement à chaque création de domaine) :


# Création d'un nouveau domaine virtuel
vadddomain nouveau-domaine.com password-postmaster

# Création d'un compte sur le domaine virtuel
vadduser test@nouveau-domaine.com password

# Création d'alias de postmaster (nouvel alias : romain)
valias -i postmaster@nouveau-domaine.com romain@nouveau-domaine.com

# Visualiser les alias / forwards
valias postmaster@nouveau-domaine.com

# Création d'un forward de postmaster vers romain@mail-externe.com
valias -i romain@mail-externe.com postmaster@nouveau-domaine.com

Il y a beaucoup de commande vpopmail disponibles, elles commencent toutes par v* Je vous laisse les décrouvrir… vaddaliasdomain, vdeldomain, vmoduser, vadddomain, vadduser , vdeloldusers, valias, vdeluser, vdir, vipmap, vpopbull vchangepw, vdominfo, vchkpw (utilisation interne), vkill, vsetuserquota, vconvert, vmkpasswd (interne), vmoddomlimits, vuserinfo

Il y a des interfaces de gestion web qui existent pour gérer directement vpopmail. On pourra utiliser par exemple un module de Webmin, ou bien le très sympa qmailadmin. Toutefois, j’ai préféré créer la mienne, qui est totalement intégrée à l’interface de l’intranet de l’espace client que j’ai mis en place pour Wiroo.

Configuration du serveur POP3

Maintenant que qmail est fonctionnel, nous allons nous attacher à ce que nos utilisateurs puissent aller chercher leurs mails en POP3. Le serveur POP3 est déjà présent dans qmail, mais nous allons juste devoir l’activer et changer sa méthode de vérification des comptes (pour utiliser vpopmail, et non plus les comptes systèmes).

Pour cela, modifions le fichier /etc/init.d/qmail Décommentez les lignes concernant POP3 (environs entre les lignes 59 et 63), et modifions /usr/bin/checkpassword en /usr/bin/vchkpw Vous devriez donc avoir les lignes suivantes dans ce fichier (entre 59 et 63) :


sh -c "start-stop-daemon --start --quiet --user root \
--pidfile /var/run/tcpserver_pop3d.pid --make-pidfile \
--exec /usr/bin/tcpserver -- -R -H \
0 pop-3 /usr/sbin/qmail-popup `hostname`.`dnsdomainname` \
/usr/bin/vchkpw /usr/sbin/qmail-pop3d Maildir &"

Configuration du serveur IMAP4

A venir

Configuration de l’antivirus

A venir

Configuration de l’antispam

A venir