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
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 |
# 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
|
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
# /etc/init.d/mysql start
# nano /etc/vpopmail.conf
# 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
# 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 |
# source /etc/profile
# mysql -u vpopmail -p
mysql> select * from vpopmail.vlog;
# vadddomain wh0rd.org postpass
# printf "postmaster@wh0rd.org\0postpass\0blah\0" | vchkpw `which id` 3<&0
uid=89(vpopmail) gid=89(vpopmail) groups=0(root)
# 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
# cd /etc/courier-imap
# nano pop3d.cnf
# 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
# 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
# nano servercert.cnf
# 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
$conf['auth']['driver'] = 'imap';
$conf['auth']['params']['dsn'] = '{localhost:993/imap/ssl/novalidate-cert}';
$conf['log']['name'] = '/var/log/apache2/horde.log';
$conf['problems']['enabled'] = true;
$conf['problems']['email'] = 'webmaster@wh0rd.org';
# nano registry.php
$this->registry['auth']['login'] = 'imp';
$this->registry['auth']['logout'] = 'imp';
# 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
$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
# 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
# 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
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
|
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
# nano /etc/clamav.conf
# rc-update add clamd default
# /etc/init.d/clamd start
# nano /var/qmail/bin/qmail-scanner-queue.pl
# nano /var/qmail/control/conf-common
|
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.
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|