Sommaire
On continue la série de tutoriel vidéo sur les serveurs dédiés (voir le sommaire ici) et cette fois-ci on va voir comment installer un serveur de mail avec le duo gagnants Postfix + Courier.
À la fin de ce tutoriel, vous serez en mesure de gérer plusieurs adresses emails virtuelles (au moins une par nom de domaine) de la forme : [email protected].
On va en profiter pour installer un Webmail pour gérer nos emails (envoie et réception) sur nos différents noms de domaine avec une interface en ligne assez sympa (merci Roundcube) :
En revanche, je ne vous cache pas que c’est probablement le tutoriel le plus compliqué de la série et qu’il y a énormément de choses qui peuvent planter ce qui ne facilite pas le débogage. Mais si vous suivez la vidéo avec attention, tout devrait bien se passer :
Comme d’habitude un petit résumé des grandes étapes avec un bonus à la fin des erreurs les plus courantes et quelques astuces en cas de problème !
Installation de Postfix
L’installation de postfix en elle-même est très simple, il suffit de taper la ligne de commande « apt-get install postfix-mysql » et de choisir « pas de configuration » pendant l’installation.
Les plus curieux d’entre vous auront constatés qu’on installe un paquet un peu spécial de postfix avec une extension « -mysql ». Cette version nous simplifie les choses, on utilisera une base de données MySQL pour stocker nos différents comptes email et noms de domaine.
Création des tables SQL pour Postfix
On a besoin de créer 3 tables pour Postfix :
- Une table « domaines » qui contient la liste des noms de domaine hébergés sur le serveur
- Une table « comptes » qui contient toutes les adresses emails virtuelle de la forme « [email protected] »
- Une table « alias » qui contient différents alias email que nous n’utiliserons pas.
Pour créer ces tables, le plus simple reste de copier/coller ce code SQL dans phpmyadmin. En revanche, vous devez d’abord créer une base de données « postfix » avec un utilisateur « postfix » ayant tout droits sur cette base.
Configuration de Postfix pour le lier à la BDD
Maintenant que la base de données est fonctionnelle avec toutes les tables et un utilisateurs valide, nous devons créer 5 fichiers de configurations pour expliquer à Postfix comment utiliser cette base de données. Les fichiers se ressemblent donc faites attention aux erreurs d’inattention :
/etc/postfix/mysql-virtual_domaines.cf
/etc/postfix/mysql-virtual_comptes.cf
/etc/postfix/mysql-virtual_aliases.cf
/etc/postfix/mysql-virtual_aliases_comptes.cf
/etc/postfix/mysql-virtual_quotas.cf
Une fois terminée, je vous recommande de sécuriser un peu tout cela avec ces lignes de commandes :
Création de l’utilisateur et groupe vmail
Pour avoir une configuration assez propre et sécurisé, nous pouvons créer un utilisateur et un groupe vmail qui se chargera de gérer/stocker les courriels sur le serveurs. Nous devons préciser des UID et GID précis (5000) car nous en auront besoin plus tard dans un fichier de configuration.
Configuration de Postfix
Maintenant on doit configurer le fichier principal de Postfix. Par défaut le fichier est vide, car nous avons choisi « pas de configuration » pendant l’installation. Comme promis dans la vidéo, voici un exemple de fichier de configuration commenter pour vous expliquer les différentes lignes :
Si vous avez encore des problèmes avec ce fichier, je vous recommande de lire la documentation qui explique tous les paramètres du fichier main.cf.
Une fois cette configuration terminée, vous pouvez redémarrer Postfix et vérifier sa configuration :
Ajout d’adresses email virtuelles
Tout est bon au niveau de postfix, il ne nous reste plus qu’à ajouter un nom de domaine et une adresse email virtuelle dans notre base de données via phpmyadmin. Voilà les codes SQL utilisés dans la vidéo :
Ajouter un nom de domaine
Ajouter une adresse virtuelle
Un petit test
Il ne nous reste plus qu’à tester notre configuration globale en nous connectant avec telnet sur le port 25 et en envoyant un email. De plus, en envoyant ce premier mail ça va automatiquement créer le dossier pour le nom de domaine dans /var/spool/vmail.
Si vous n’avez pas d’erreurs, c’est que tout ce passe bien et vous pouvez le vérifier grâce aux fichiers de logs.
Si vous n’arrivez pas vous connecter en telnet, vous pouvez tenter ces lignes de commandes :
Installation de Courier pour la gestion de l’imap et pop
Maintenant que Postfix est installé et configuré, on a besoin d’installer courier afin de gérer les protocoles pop et imap, qui nous permettent de récupérer nos email via un client comme Thunderbird ou de mettre en place un Webmin comme Roundcube. Voici la liste des paquets à installer :
Configuration
Nous devons configurer courier afin de préciser qu’on utilise une base de données pour les adresses emails virtuelles. Voici les modifications qu’il faut faire :
On doit ensuite fournir les identifiants de connexion à la base de données et le nom des tables :
Et c’est tout pour la configuration de Courier, il ne nous reste plus qu’à faire un reboot des différents services :
Roundcube
Tout est près, on peut d’ores et déjà récupérer ces emails avec un client comme le célèbre Thunderbird, mais je vous propose d’installer un Webmail qui présente l’avantage d’avoir une interface en ligne.
Commencez par récupérer le lien pour télécharger la dernière version de RoundCube sur cette page (Dans sourcefourge faites un clique droit/copier l’adresse du lien sur le « direct link »).
Ensuite en ligne de commande on télécharge et dé-zippe le fichier avec wget et tar puis on crée un utilisateur pour héberger le code de roundcube :
Désormais le code pour Roundcube est disponible dans le dossier /home/roundcube/www (comme pour les autres sites) et donc nous devons créer un fichier virtual host :
/etc/apache2/sites-available/roundcube
Maintenant on va créer la base de données pour Roundcube. Connectez-vous sur votre phpmyadmin et créez une base de données Roundcube avec un utilisateur Roundcube qui possède tous les droits sur la base.
Ensuite, on va importer un fichier SQL pour créer les tables nécessaires à Roundcube :
Ensuite, vous devez lancer l’installateur de roundcube en allant sur la page http://ksXXXXX.kimsufi.com/~roundcube/installer. Les étapes sont simples à suivre, n’oubliez pas de configurer la base de données.
À l’étape 2, Roundcube vous donnera 2 fichiers de configuration que vous devez créer avec l’éditeur VI par exemple.
Enfin n’oubliez pas de donner les répertoires ~roundcube/www/temp et logs à apache avec un chwon www-data:www-data /home/roundcube/www/temp (et logs).
Maintenant il ne vous reste plus qu’à tester Roundcube en envoyant un email de test et en testant l’imap en donnant l’adresse email virtuelle que vous avez configuré précédemment avec le mot de passe sur le serveur 127.0.0.1.
Erreurs fréquentes
Dans l’installation et la configuration d’un serveur de mail, on peut très facilement se tromper. Pour vous éviter de rechercher des solutions pendant des jours comme je l’ai fait, je vous propose une petite liste d’erreurs que j’ai déjà commise avec leurs solutions. Cette liste pourra éventuellement se mettre à jour en fonction de vos réactions.
J’ai une erreur 500 sur la page Roundcube
Si vous n’arrivez pas accéder à la page d’installation ou d’index de Roundcube et que vous avez une erreur 500, le problème vient probablement du fichier .htaccess. En effet, Roundcube utilise un fichier .htaccess pour redéfinir des règles pour Apache.
Cependant, il faut autoriser l’utilisation de fichier htaccess en plaçant une directive « AllowOverride All » dans le fichier virtual host du site. Il faut également placer cette directive dans le fichier de configuration de UserDir (/etc/apache2/mods-available/userdir.conf).
De toute manière, en faisant un tour dans les logs, on voit tout de suite si le problème vient des htaccess.
Je n’arrive pas me connecter avec Roundcube / L’imap fonctionne pas
Si le test de l’imap à l’étape 3 de l’installation de Roundcube plante ou si vous n’arrivez pas vous connecter avec une adresse email virtuelle, le problème peut venir du fait que le compte email est « vide ».
En effet, pendant le tutoriel nous utilisons telnet pour envoyer un email sur l’adresse fraîchement créé via phpmyadmin. Cela permet de vérifier que tout fonctionne bien, mais cela génère également le dossier qui va contenir tous les emails du domaine dans /var/spool/vmail/. Si ce dossier n’existe pas, vous n’arriverez pas à vous connecter sur votre compte avec Roundcube. La solution est donc de refaire l’étape du telnet et de vérifier que ça génère bien le dossier.
Si en regardant les logs, vous avez une erreur du type « authentification failed » ou un message ressemblant, ça vient probablement du fichier /etc/courier/authmysqlrc. Soit vous avez oublié de commenter la ligne « MYSQL_NAME_FIELD », ou alors vous avez oublié le « MYSQL_MAILDIR_FIELD ».
Je n’arrive pas me connecter en telnet
Si vous n’arrivez pas vous connecter en telnet (si ça freeze), c’est qu’un des fichiers de configuration est mal fait. Vous pouvez le vérifier en regardant dans /var/log/syslog. Si ça ne fonctionne toujours pas, vous pouvez toujours d’arreter postfix et de lancer la commande « newaliases« .
Comment trouver une solution à un problème
Si vous avez un problème qui n’est pas recensé ici, voici quelques pistes pour le trouver. Premier réflexe, si quelque chose ne fonctionne pas -> aller voir les logs.
Voici les fichiers de log intéressant dans ce cas :
- /var/log/syslog : la plupart des erreurs systèmes sont la dedans
- /var/log/mail.log : pour tout ce qui concerne les email
- /var/log/apache2/error.log : toutes les erreurs concernant apache
La plupart du temps vous pouvez identifier le problème et avec une recherche Google (et un peu de logique), on arrive trouver des solutions.
Le tutoriel est enfin terminé, si vous avez des questions ou un prolbème vous pouvez toujours laisser un commentaire. En revanche donnez moi des informations si vous voulez de l’aide (comme les fichiers de logs) car je ne suis pas devin :p.
Si vous me donner des fichiers de log, utilisez un service comme pastebin. Les commentaires de personnes qui donne directement les logs en brut dans les commentaires ne seront pas validés !
Enfin, n’oubliez pas de partarger cet article sur twitter/facebook et de devenir fan de la page en cliquant ici.
(Image à la une : Mail me)