Gentoo Logo

Avertissement : Ce document est en cours de rédaction et ne doit pas être considéré comme officiel.


Mise en place d'un système de messagerie multidomaine avec netqmail et vpopmail

Table des matières :

1.  Introduction

Que vous souhaitiez fournir un service de messagerie juste pour vos démons systèmes, un simple serveur, un domaine ou bien plusieurs domaines, netqmail peut facilement être mis en place pour satisfaire tous vos besoins. Ce guide vous aidera à installer netqmail pour chacun de ces scénarios en se concentrant sur l'accès à distance et les communications entièrement chiffrées.

Ce guide vous aidera particulièrement à installer les paquets netqmail, courier-imap, vpopmail et horde/imp. Ces paquets de base auront également besoin de daemontools, ucspi-tcp, mysql, apache et mod_php. Netqmail fournit les fonctions de base du MTA (agent de transfert de courrier), courier-imap fournit les services de rapatriement à distance, vpopmail fournit la gestion des domaines virtuels et horde/imp fournit un webmail (consultation du courrier électronique via un navigateur).

Avant d'installer quoi que ce soit, vous devez avoir les options suivantes dans votre variable USE. Si vous avez déjà installé certains de ces paquets, il est possible que vous deviez les réinstaller. Utilisez USE="maildir ssl imap mysql". De plus, si vous voulez utiliser horde/imp pour le webmail, vous aurez besoin de USE="nls" avant d'installer mod_php.

Note : Ce guide est écrit en étapes. Si, à un moment donné, vous sentez que votre installation est complète, vous n'avez pas besoin de continuer.

La dernière étape est évidemment de vous impliquer dans le système netqmail. Il existe bien sûr plusieurs autres paquets avec lesquels vous pourriez monter votre système de messagerie. Il est maintenant temps pour vous de faire des recherches et de décider si c'est bien netqmail que vous voulez. Nous avons un autre adorable guide qui décrit l'installation d'un serveur Postfix. Vous pourriez aussi jeter un œil à Exim. C'est à vous de choisir la meilleure solution pour vous ; ici, nous vous montrons comment utiliser netqmail.

2.  Netqmail utilisé localement

Exemple de code 2.1 : Installer netqmail

# emerge mail-mta/netqmail

Important : Ce guide est fait pour netqmail-1.05-r4 ou ultérieur. Est-il utilisable avec une version plus ancienne ? Peut-être. Devez-vous mettre à jour ? Oui, si vous voulez être sûr que ce guide marche correctement.

Attention : Si vous obtenez un message du genre the virtual/mta package conflicts with another package, cela veut dire qu'un autre MTA est déjà installé. Vous devez désinstaller le MTA déjà présent sur votre système. Pour savoir de quel paquet il s'agit, tapez juste emerge netqmail -p.

Emerge va installer ucspi-tcp et daemontools en tant que dépendances de netqmail. Vous pouvez vous documenter sur ucspi-tcp et sur daemontools si vous le souhaitez. Pour résumer, daemontools sera responsable de gérer netqmail en tant que service et ucspi-tcp sera responsable de la gestion des connexions TCP entrantes dans le service netqmail.

D'abord, peaufinons l'installation de netqmail.

Exemple de code 2.2 : Configuration manuelle de netqmail

(Adaptez les paramètres selon vos besoins.)
# nano /var/qmail/control/servercert.cnf
# emerge --config netqmail

La conception de netqmail est complètement focalisée sur la sécurité. Ainsi, aucun message n'est jamais envoyé à l'utilisateur root. Vous devez donc choisir un utilisateur sur la machine qui recevra les messages destinés à root. À partir de maintenant, j'utiliserai le nom d'utilisateur qui est défini dans mon installation, c'est-à-dire vapier.

Exemple de code 2.3 : Mise en place d'un compte non-root pour les messages

# cd /var/qmail/alias
# echo vapier > .qmail-root
# echo vapier > .qmail-postmaster
# echo vapier > .qmail-mailer-daemon

Maintenant, lançons le service de distribution de netqmail.

Exemple de code 2.4 : Lancement du service de distribution de netqmail

# rc-update add svscan default
# /etc/init.d/svscan start
# cd /service
# ln -s /var/qmail/supervise/qmail-send qmail-send

Pour vérifier que netqmail fonctionne correctement, faisons un petit test.

Exemple de code 2.5 : Test du service de distribution

# ssh vapier@localhost
# maildirmake .maildir
# qmail-inject root << EOF
test de la messagerie root !
EOF
# qmail-inject postmaster << EOF
test de la messagerie postmaster !
EOF
# qmail-inject vapier << EOF
test de la messagerie vapier !
EOF
# mutt
(Vous devriez avoir trois messages dans votre boîte aux lettres.)

Et voilà ! Vous avez maintenant un système de messagerie opérationnel qui gère les messages locaux de votre machine et des démons ou utilisateurs qui s'en servent.

Attention : Si vous ne recevez pas ces messages ou si vous voyez des erreurs étranges dans vos fichiers journaux (regardez dans /var/log/qmail/) qui font mention de « localhost.localhost », cela signifie que vos informations de domaine ne sont pas correctement configurées. Par défaut, netqmail se sert de la sortie de hostname --fqdn. Si, sur votre machine, cela renvoie « localhost », alors vérifiez vos fichiers /etc/conf.d/hostname, /etc/hosts et votre DNS pour vous assurer que tout est correct. Une fois ceci fait, éditez les fichiers de configuration dans /var/qmail/control/. Utilisez les exemples de configuration qui suivent si besoin.

Exemple de code 2.6 : Exemple de fichiers /var/qmail/control/ pour un domaine de second niveau

# hostname --fqdn
wh0rd.org
# cat me
wh0rd.org
# cat defaultdomain
wh0rd.org
# cat plusdomain
wh0rd.org
# cat locals
wh0rd.org
# cat rcpthosts
wh0rd.org

Exemple de code 2.7 : Exemple de fichiers /var/qmail/control/ pour un domaine de troisième niveau

# hostname --fqdn
mail.wh0rd.org
# cat me
mail.wh0rd.org
# cat defaultdomain
wh0rd.org
# cat plusdomain
wh0rd.org
# cat locals
mail.wh0rd.org
# cat rcpthosts
mail.wh0rd.org

3.  vpopmail

Exemple de code 3.1 : Installation de vpopmail

# emerge vpopmail

Important : Ce guide est fait pour vpopmail-5.4.6 ou ultérieur. Est-il utilisable avec une version plus ancienne ? Peut-être. Devez-vous mettre à jour ? Oui, si vous voulez être sûr que ce guide marche correctement.

Vpopmail est un peu plus difficile à mettre en place que les paquets précédents. Comme vpopmail s'appuie sur MySQL, nous devons d'abord nous assurez que mysql a été correctement installé et qu'il est opérationnel. Ensuite, nous pourrons configurer la base de données vpopmail. Notez que j'utiliserai le mot de passe 'vpoppw' pour la base de données vpopmail ; vous devez bien sûr en choisir un autre.

Exemple de code 3.2 : Configurer vpopmail dans mysql

# rc-update add mysql default
(Si vous installez mysql pour la première fois, veuillez lancer
la commande ebuild <mysql.ebuild> config et suivre les
indications affichées avant de démarrer le serveur mysql.)
# /etc/init.d/mysql start
# nano /etc/vpopmail.conf
(Changez le mot de passe 'secret' en 'vpoppw'.)
# mysql -p << EOF
create database vpopmail;
use mysql;
grant select, insert, update, delete, create, drop on vpopmail.* to vpopmail@localhost identified by 'vpoppw';
flush privileges;
EOF
(Les commandes suivantes ne sont pas forcément nécessaires, mais lançons-les quand même pour être sûr.)
# chown root:vpopmail /etc/vpopmail.conf
# chmod 640 /etc/vpopmail.conf
# chown root:vpopmail /var/vpopmail/bin/vchkpw
# chmod 4711 /var/vpopmail/bin/vchkpw

Attention : Si vous obtenez des problèmes de permission entre vpopmail et mysql, essayez de relancer mysql : /etc/init.d/mysql restart.

À ce moment précis, vpopmail est prêt. Dans ce guide, nous allons fournir un hébergement multidomaine pour le domaine 'wh0rd.org'. Cela signifie que nous devons dire à vpopmail que nous voulons qu'il le gère pour nous. Nous allons aussi ajouter rapidement un compte utilisateur pour vapier tant que nous y sommes.

Exemple de code 3.3 : Ajout d'un domaine

(La commande suivante n'est nécessaire que si la commande vadddomain
utilisée plus bas affiche l'erreur « command not found ».
# source /etc/profile

(Vous voudrez peut-être consulter les journaux pendant le débogage de vpopmail.)
# mysql -u vpopmail -p
mysql> select * from vpopmail.vlog;

# vadddomain wh0rd.org postpass
(Vérifions rapidement que le domaine est correctement installé :)
# printf "postmaster@wh0rd.org\0postpass\0blah\0" | vchkpw `which id` 3<&0
uid=89(vpopmail) gid=89(vpopmail) groups=0(root)
(Si vous ne voyez pas quelque chose de similaire, alors les permissions sont incorrectes.)
# vadduser vapier@wh0rd.org vappw

Chaque domaine créé par vpopmail possède un compte postmaster. Nous indiquons ici à vpopmail que le mot de passe pour le compte postmaster est « postpass ». Avant que vpopmail soit vraiment utile, nous devons pouvoir recevoir des messages avec courier et en envoyer avec netqmail et SMTP.

4.  Courier POP/IMAP

Exemple de code 4.1 : Installation de courier-imap

# emerge net-mail/courier-imap

Important : Vous devez installer courier-imap après vpopmail, de sorte que le module authvchkpw puisse être construit.

Important : Ce guide est fait pour net-mail/courier-imap-3.0.7 ou ultérieur. Est-il utilisable avec une version plus ancienne ? Peut-être. Devez-vous mettre à jour ? Oui, si vous voulez être sûr que ce guide marche correctement.

Allons-y pour la configuration post-installation. Ces étapes ne sont requises que si vous souhaitez utiliser des communications chiffrées avec SSL (vous devriez). Sinon, vous pouvez vous contenter des deux dernières lignes de chacun des deux blocs de commandes suivants, en enlevant '-ssl' au nom du script à chaque fois.

Exemple de code 4.2 : Configuration manuelle pour POP3/SSL

# nano /etc/courier/authlib/authdaemonrc
(La variable authmodulelist ne doit contenir que « authvchkpw ».)
# cd /etc/courier-imap
# nano pop3d.cnf
(Éditez la section [ req_dn ].)
# mkpop3dcert
# rc-update add courier-pop3d-ssl default
# /etc/init.d/courier-pop3d-ssl start

Exemple de code 4.3 : Configuration manuelle pour IMAP/SSL

# cd /etc/courier-imap
# nano imapd.cnf
(Éditez la section [ req_dn ].)
# mkimapdcert
# rc-update add courier-imapd-ssl default
# /etc/init.d/courier-imapd-ssl start

Votre client de messagerie devrait maintenant pouvoir s'identifier sur la machine qui héberge courier et devrait pouvoir ainsi récupérer les messages pour le domaine virtuel. Dans mon cas, je suis maintenant capable de me connecter avec le nom d'utilisateur « vapier@wh0rd.org » et le mot de passe « vappw ».

5.  Netqmail (parlant au reste du monde)

Allons-y pour activer SMTP sans que des personnes mal intentionnées puissent l'utiliser pour envoyer du spam (des courriers non sollicités, aussi appelés pourriels).

Exemple de code 5.1 : Lancement du service SMTP de netqmail

# cd /var/qmail/control/
# nano conf-smtpd
(Décommentez les variables SMTP-AUTH et réglez QMAIL_SMTP_CHECKPASSWORD à la valeur /var/vpopmail/bin/vchkpw.)
# nano servercert.cnf
(Éditez la section [ req_dn ].)
# mkservercert
# cd /service
# ln -s /var/qmail/supervise/qmail-smtpd qmail-smtpd
# /etc/init.d/svscan restart

Si vous n'avez pas modifié les fichiers control de netqmail, le serveur accepte maintenant les messages à destination du domaine virtuel wh0rd.org et pour les utilisateurs locaux de la machine. De plus, netqmail relaie tous les messages envoyés via 127.0.0.1 ou par des utilisateurs qui se sont authentifiées avec vpopmail. Lorsque vous configurez l'émission de messages dans votre client de messagerie, assurez-vous de sélectionner des options comme « Server requires authentication ». Dans mon cas, j'ai mis le nom d'utilisateur à « vapier@wh0rd.org » et le mot de passe à « vappw ». Le dernier détail est de bien spécifier au client de messagerie d'utiliser SSL/TLS pour les communications avec le SMTP. Netqmail ne vous laissera pas vous identifier si la session n'est pas chiffrée.

6.  Le client webmail Horde IMP

Bien qu'il existe plusieurs clients webmail (vous êtes libre d'utiliser celui que vous voulez), je préfère IMP qui fait partie du projet Horde. Une bonne raison qui justifie ce choix est que Horde fournit assez simplement un accès webmail, mais vous pouvez facilement ajouter d'autres composants tels que le carnet d'adresses, l'agenda, le gestionnaire de tâches, etc. Si cela ne vous a pas encore convaincu, vous avez peut-être besoin d'en lire plus sur Horde.

Installons IMP.

Exemple de code 6.1 : Installation de IMP

# emerge horde-imp

Important : Ce guide est fait pour horde-2.2.x et horde-imp-3.2.x. Les versions CVS (et donc probablement les prochaines versions) auront peut-être une configuration très différente. D'ailleurs, il est probable que horde-2.x ne fonctionne plus avec php-5.x.

Horde n'est vraiment pas le plus facile à configurer, sauf si vous savez exactement ce qu'il faut faire. Heureusement pour vous, je sais exactement ce qu'il faut faire.

Exemple de code 6.2 : Configuration manuelle de Horde

# cd /var/www/localhost/htdocs/horde/config/
# for f in *.dist ; do mv ${f} ${f/.dist} ; done
# nano horde.php
(Dans la partie 'Horde Authentication' :)
$conf['auth']['driver'] = 'imap';
$conf['auth']['params']['dsn'] = '{localhost:993/imap/ssl/novalidate-cert}';

(Dans la partie 'Horde Logging' :)
$conf['log']['name'] = '/var/log/apache2/horde.log';

(Dans la partie 'Problem Reporting' :)
$conf['problems']['enabled'] = true;
$conf['problems']['email'] = 'webmaster@wh0rd.org';

# nano registry.php
(Dans la partie 'Handlers' :)
$this->registry['auth']['login'] = 'imp';
$this->registry['auth']['logout'] = 'imp';

(Dans la partie 'Application registry' :)
Changez l'élément 'status' de applications['imp'] de 'inactive' à 'active'.

# touch /var/log/apache2/horde.log
# chown apache:apache /var/log/apache2/horde.log

Note : Vous voudrez peut-être changer l'adresse « webmaster » pour une autre. Si vous voulez garder cette adresse, rappelez-vous qu'il faudra ajouter cet utilisateur dans vpopmail (ou avec qmailadmin, voir plus bas).

On passe rapidement à la configuration de IMP.

Exemple de code 6.3 : Configuration manuelle de IMP

# cd /var/www/localhost/htdocs/horde/imp/config/
# for f in *.dist ; do mv ${f} ${f/.dist} ; done
# nano servers.php

(Éditez le tableau $servers['imap'] :)
$servers['imap'] = array(
  'name' => 'wh0rd.org',
  'server' => 'localhost',
  'protocol' => 'imap/ssl/novalidate-cert',
  'port' => 993,
  'folders' => '',
  'namespace' => 'INBOX.',
  'maildomain' => 'wh0rd.org',
  'smtphost' => 'localhost',
  'realm' => '',
  'preferred' => ''
);

Enfin, nous lançons apache pour pouvoir utiliser le webmail.

Exemple de code 6.4 : Lancement d'apache

# nano /etc/conf.d/apache2
(Décommentez APACHE2_OPTS="-D SSL -D PHP5".)
# rc-update add apache2 default
# /etc/init.d/apache2 start

Attention : Il est fortement recommandé de forcer l'utilisation de HTTPS pour les utilisateurs de horde. Ce n'est pas une mince affaire, mais vous devriez vous en préoccuper pour des raisons de sécurité.

Pour tester notre nouveau IMP, lancez un navigateur web et allez sur http://localhost/horde/ (ou changez localhost par le nom du serveur sur lequel vous l'avez installé). Vous devriez voir la page de bienvenue de Horde, où vous pouvez vous identifier. Dans mon cas, encore une fois, j'utilise simplement « vapier@wh0rd.org » et « vappw » comme nom d'utilisateur et mot de passe.

Horde et IMP sont maintenant en place. Vous pouvez (devez) retourner voir les fichiers de configuration pour ajuster chacun des réglages selon ce que bon vous semblera.

7.  Paquets supplémentaires

qmailadmin

Le premier paquet que je vous suggère de considérer est qmailadmin. C'est une interface web qui sert à gérer les domaines virtuels. Lancez simplement emerge net-qmail/qmailadmin et tapez http://localhost/cgi-bin/qmailadmin dans votre navigateur pour l'utiliser. Il rend la vie bien plus facile.

qmHandle

Si vous rencontrez des problèmes avec les queues de netqmail et si vous avez du mal à déboguer la situation, jetez un œil à qmHandle. C'est un simple programme perl qui vous permet de voir et de gérer la queue de messages de netqmail. Tout ce que vous avez à faire est emerge net-mail/qmhandle.

Extensions de Horde

Je vous recommande fortement de voir si les autres applications Horde vous intéressent. En effet, Turba, Kronolith et Nag complèteraient votre IMP à merveille. Leur configuration est similaire à celle de IMP, vous ne devriez donc pas avoir de souci. Rappelez-vous juste d'éditez registry.php dans le répertoire de configuration de horde pour que les nouvelles applications soient visibles au bas du site géré par horde.

ucspi-tcp

Netqmail utilise ucspi-tcp pour gérer les connexions entrantes qui lui sont destinées. Si vous souhaitez personnaliser ses règles de filtrage, voyez les fichiers de configuration dans /etc/tcprules.d/ (les anciennes versions de netqmail mettent leurs fichiers directement dans /etc/). Vous y trouverez deux fichiers pour chaque service, le fichier de configuration (tcp.qmail-smtp) et le fichier compilé (tcp.qmail-smtp.cdb). Quand vous modifiez le fichier de configuration, vous devez reconstruire sa version binaire. Faites tcprules tcp.qmail-smtp.cdb tcp.qmail-smtp.tmp < tcp.qmail-smtp. À chaque fois qu'une connexion est faite au service netqmail, le fichier binaire des règles est relu, il n'est donc pas nécessaire de redémarrer le service.

qmail-scanner

Si vous comptez faire du filtrage de contenu sur votre serveur de messagerie (anti-virus ou anti-spam par exemple), vous aurez besoin d'utiliser un gestionnaire de queue différent de celui par défaut. Un bon programme pour faire ça est qmail-scanner. Faites juste emerge qmail-scanner et éditez le fichier /etc/tcprules.d/tcp.qmail-smtp.

Important : Le processus d'installation de qmail-scanner est assez affreux et il ne supporte que les paquets qu'il détecte lors de son installation. Ceci signifie que si vous voulez utiliser SpamAssassin ou Clam AntiVirus, vous devez d'abord installer ceux-ci. Lisez les sections qui leur sont consacrées pour savoir comment les installer.

Exemple de code 7.1 : Changement du gestionnaire de queue

# cd /etc/tcprules.d/
# nano tcp.qmail-smtp
(Ajoutez QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue" à la règle 'allow' du 'catchall'.)
# tcprules tcp.qmail-smtp.cdb tcp.qmail-smtp.tmp < tcp.qmail-smtp

Lisez la section suivante pour la mise en place d'une solution de filtrage de spam et virus. Vous pouvez peaufiner quelques réglages en éditant le fichier /var/qmail/bin/qmail-scanner-queue.pl.

SpamAssassin

Un des meilleurs filtres anti-spam Open Source est SpamAssassin. Commencez par faire emerge mail-filter/spamassassin pour l'installer. Le programme est disponible en deux versions : une version en ligne de commande et une version client/serveur. Pour les serveurs qui manipulent un petit nombre de messages, la version en ligne de commande sera suffisante. Mais ceux dont la charge supportée par leur serveur de messagerie est importante devront utiliser la version client/serveur.

Exemple de code 7.2 : Configuration manuelle de SpamAssassin

# nano /etc/mail/spamassassin/local.cf
(Ajoutez au moins ces options :)
required_hits 6
skip_rbl_checks 1

# rc-update add spamd default
# /etc/init.d/spamd start
# nano /var/qmail/bin/qmail-scanner-queue.pl
(Assurez-vous que la variable $spamc_binary est à '/usr/bin/spamc'.)
(Si elle est à '', lisez la note ci-dessous.)

Important : Si SpamAssassin n'était pas installé sur votre système au moment de l'installation de qmail-scanner, vous devez réinstaller qmail-scanner. Son processus d'installation est assez affreux et il ne supporte que les paquets qu'il détecte lors de son installation.

Maintenant, les messages entrants devraient être envoyés à qmail-scanner qui lancera SpamAssassin à votre place.

Clam AntiVirus

Comme SpamAssassin, Clam AntiVirus est disponible en deux versions. Je vous fait un topo rapide pour installer rapidement la version client/serveur. D'abord, emerge app-antivirus/clamav.

Exemple de code 7.3 : Configuration manuelle de Clam AntiVirus

# nano /etc/conf.d/clamd
(Mettez START_CLAMD=yes.)
# nano /etc/clamav.conf
(Définissez vos paramètres)
# rc-update add clamd default
# /etc/init.d/clamd start
# nano /var/qmail/bin/qmail-scanner-queue.pl
(Assurez-vous que la variable $clamscan_binary soit à '/usr/bin/clamscan'.)
(Si elle est à '', lisez la note ci-dessous.)
# nano /var/qmail/control/conf-common
(Si ClamAV a des problèms de mémoire, attribuez une valeur plus grande à softlimit.)

Important : Si Clam AntiVirus n'était pas installé sur votre système au moment de l'installation de qmail-scanner, vous devez réinstaller qmail-scanner. Son processus d'installation est assez affreux et il ne supporte que les paquets qu'il détecte lors de son installation.

Maintenant, les messages entrants devraient être envoyés à qmail-scanner qui lancera Clam AntiVirus à votre place.

8.  Conclusion

Je n'ai pas de conclusion particulière, excepté que si vous ressentez un problème quelconque avec ce guide, veuillez me contacter (N.D.T. : en anglais) ou remplissez un rapport de bogue sur le site de gestion de bogues de Gentoo. Si vous avez de quoi améliorer ce guide, n'hésitez surtout pas à m'en faire part afin que je l'intègre. J'adore netqmail et je serai heureux d'ajouter quoi que ce soit qui pourrait améliorer l'expérience d'un utilisateur avec ce MTA.



Imprimer

Dernière mise à jour le 11 octobre 2007

La version originale de cette traduction n'est plus maintenue

Résumé : Ce document décrit l'installation d'un système de messagerie basé sur netqmail, vpopmail, courier-imap, MySQL et Horde IMP, sous Gentoo Linux.

Mike Frysinger
Auteur

Camille Huot
Traducteur

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.