Dans cet article je vais tenter d'expliquer comment installer un serveur de mail. Dans un autre article je parlerai de comment installer un filtre anti-spam (spamassassin).
Je base ce tutoriel sur ma propre expérience et grâce à de nombreuses recherches sur le net. Tout au long de mon explication, je donnerai des informations sur les points où je suis resté bloqué.
Voila tout d'abord une brève présentation des différents composants :
Installation des composants (sous debian):
apt-get update apt-get install postfix fetchmail procmail uw-imapd openwebmail gotmail hotway
Pendant cette installation, des questions relatives à la configuration des composants vont être posées. Reportez vous à la section suivante (Configuration) pour une explication des paramètres.
Une fois les composants installés il faut les configurer. Une partie de la configuration va être effectué pendant l'installation des packages mais certains paramètres devront être ajustés après la configuration que debian a généré.
Au moment de l'installation du package plusieurs questions sont posées :
La configuration de postfix se situe en grande partie dans le fichier "/etc/postfix/main.cf". Pour que postfix prenne en compte les modifications faites dans ce fichier, tapez "/etc/init.d/postfix reload"
Dans ce fichier les lignes suivantes sont importantes :
myhostname = mail.zeitoun.net mydomain = zeitoun.net myorigin = $mydomain mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost.localdomain, localhost, kwikwi.net mynetworks = 192.168.0.0/24, 127.0.0.0/8
Le premier paramètre indique l'adresse de votre serveur de mail vue de l'internet (ce nom de domaine doit exister sur internet), il doit être enregistré comme serveur de mail dans le serveur DNS de votre nom de domaine. (je ne suis pas un spécialiste des mails alors peut-être que je me trompe ici)
Le paramètre "myorigin" indique quel suffixe utiliser pour envoyer vos mails (le fichier "/etc/mailname" doit contenir votre domaine, pour moi "zeitoun.net"). C'est ce qui remplacera "zeitoun.net" dans les adresses du genre "…@zeitoun.net".
Le paramètre "mydestination" spécifie quels nom de domaines sont acceptés pour la réception de mails. Exemple : "toto@zeitoun.net" sera traité, "toto@hostbidonégalement, mais "toto@bidule" ne sera pas traité car le nom de domaine "bidule" n'est pas dans la liste."
Bien entendu les noms de domaines doivent exister et pointer vers votre machine qui gère les mails. Dans mon exemple "zeitoun.net" existe sur internet mais pas "hostbidon" qui n'existe qu'en local, on pourra donc m'envoyer des mails depuis l'extérieur seulement avec une adresse mail se terminant par "@zeitoun.net".
Le second paramètre ("mynetworks") donne la liste des réseaux qui peuvent envoyer des mails en passant par cette machine.
Dans mon exemple, seulement la machine qui gère les mails ("127.0.0.1") et mon réseau local ("192.168.0.XXX") pourra envoyer des mails. Ceci permet d'éviter que mon serveur soit utilisé comme relais pour le spam.
Si vous voulez configurer des aliases, ca se passe dans le fichier "/etc/aliases". Les aliases permettent de transmettre les mails d'un utilisateur virtuel (ou reel) vers un utilisateur reel, par exemple si je veux que les mails "stephane.gully@zeitoun.net" arrivent sur mon compte "kerphi@zeitoun.net" alors je rajoute la ligne suivante dans le fichier d'aliases : "stephane.gully: kerphi" puis je lance la commande "postalias /etc/aliases" qui permet de mettre a jour la base de donnée des aliases dans postfix.
J'ai rencontré un problème qui m'a bloqué pendant un certain temps lors de l'installation de mon serveur de mail, je pouvais envoyer des mails mais pas en recevoir. Dans les log ("/var/log/mail.log") il y avait une erreur de ce type : "localhost postfix/smtp[17656]: B1CB2BDC089: to=kerphi@zeitoun.net, orig_to=kerphi, relay=none, delay=0, status=bounced ( mail for zeitoun.net loops back to myself)". Je l'ai résolue en changeant mon "myhostname = zeitoun.net" par "myhostname = mail.zeitoun.net". Je n'ai pas trés bien compris pourquoi cette erreur est survenue mais maintenant ca marche …
Pour une configuration plus conviviale, je conseil l'installation de webmin-postfix ("apt-get install webmin-postfix") qui permet de configurer postfix en passant par une interface web sympathique.
Procmail permet de trier ses mails. Par exemple on peut facilement déplacer tous les mails ayant dans le sujet le mot "Viagra" dans un répertoire "spam". Procmail est aussi une bonne solution pour organiser les mails venant de plusieurs mailing listes dans des répertoires séparés.
La configuration de procmail est spécifique à chaque utilisateur. Il suffit de créer un fichier nommé ".procmailrc" dans le homedir de l'utilisateur. Puis de rajouter ceci dedans :
PATH=/bin:/usr/bin MAILDIR=$HOME/Maildir SPAMBOX=spam :0 # Sont visés tous les mails dont le sujet contient Viagra * ^Subject: .*Viagra.* # Et on les envoie à la poubelle à spam $SPAMBOX
fetchmail permet de rapatrier des mails depuis d'autres boites mails. J'utilise fetchmail pour récupérer mes mails sur le serveur pop3 de tiscali.
Pour rapatrier des mails depuis une boite mail pop3, voici comment configurer fetchmail. Il faut simplement créer un fichier nommé .fetchmailrc dans votre homedir (par exemple avec vi : "vi ~/.fetchmailrc") qui contient les lignes suivantes :
poll pop.libertysurf.fr with protocol POP3 username sgul0003_1_lsurf there password MONPASSWORD is kerphi here
Il faut remplacer : "pop.libertysurf.fr" par l'adresse de votre serveur pop3, "sgul0003_1_lsurf" et "MONPASSWORD" par le nom d'utilisateur et le mot de passe que vous avez sur ce serveur. Et finalement "kerphi" par votre login sur la machine présente, c'est le compte qui va recevoir les mails qui vont être récupéré dans la boite mail distante, donc votre compte à priori.
Ensuite pour récupérer les mails, il suffit de taper "fetchmail". Pour automatiser la tache toutes les 10 minutes il suffit de rajouter dans son crontab la ligne suivante : "4,14,24,34,44,54 * * * * /usr/bin/fetchmail >/dev/null 2>&1" (petit rappel : tapez "crontab -e" pour éditer son crontab)
Je vous conseil plutôt d'utiliser hotway (cf la section suivante) car j'ai rencontré des problèmes avec gotmail lorsque hotmail avait changé l'interface de son webmail.
gotmail permet de rapatrier des mails depuis sa boite mail hotmail. Hotmail ne proposant pas de serveur pop3 ou imap, gotmail est une bonne alternative : il se connecte à la manière d'un client web et récupère les mails en passant par le site web (html/javascript) de hotmail.com
Voici comment configurer gotmail. Il faut simplement créer un fichier nommé ".gotmailrc" dans votre homedir (par exemple avec vi : "vi ~/.gotmailrc") qui contient les lignes suivantes :
username=kerphi password=MONPASSWORD domain=hotmail.com only-new mark-read move=Messages supprimés use-procmail folders=Boîte de réception retry-limit=3
Il faut remplacer : "kerphi" par votre login sur hotmail.com, et "MONPASSWORD" par votre password. Les paramètres suivant indiquent à gotmail de déplacer dans la poubelle et de marquer comme lu les messages qu'il récupère. Remarque : si vous utilisez un hotmail en anglais il faut alors ajuster les paramètres "move=" et "folders=" par leur équivalent en anglais.
Ensuite pour récupérer les mails, il suffit de taper "gotmail". Pour automatiser la tache toutes les 10 minutes il suffit de rajouter dans son crontab la ligne suivante : "0,10,20,30,40,50 * * * * /usr/bin/gotmail >/dev/null 2>&1" (petit rappel : tapez "crontab -e" pour éditer son crontab)
hotway permet tout comme gotmail de rapatrier les mails depuis sa boite hotmail. Il se comporte comme un proxy POP3 entre hotmail et votre ordinateur car pour rapatrier les mails vous allez vous connecter dessus comme si c'était un serveur POP3 locale. Pour effectuer le rapatriement il suffit donc d'utiliser fetchmail et de se connecter en locale, voici un exemple des lignes à rajouter à la fin de votre "~/.fetchmailrc" :
poll 127.0.0.1 with protocol POP3 username kerphi@hotmail.com there password MONPASSWORD is kerphi here
Il faut remplacer : "kerphi@hotmail.com" et "MONPASSWORD" par votre adresse hotmail associée à son mot de passe. Et finalement "kerphi" par votre login sur la machine présente, c'est le compte qui va recevoir les mails qui vont être récupéré dans la boite mail distante, donc votre compte à priori.
uw-imapd est un serveur imap, il permet de remplacer les traditionnels serveurs POP.
Pourquoi IMAP ? Une réponse simple pourrait être : les messages peuvent être entièrement gérés en restant sur le serveur. On peut par exemple consulter ses mails à distance en passant par une interface Web. pour plus d'information à propos d'imap je vous conseil cette introduction.
La configuration du serveur imap consiste à donner les valeurs par défaut au moment de la configuration automatique de debian (facile :p).
OpenWebmail est une interface web permettant de consulter ses mails (webmail).
Au moment de l'installation du package plusieurs questions sont posées :
Un fois l'installation effectuée j'ai du éditer le fichier "/etc/openwebmail/openwebmail.conf" et remplacer la ligne suivante "ow_htmlurl /openwebmail" par "ow_htmlurl /" car mon serveur web est configuré avec un vhost pour mon webmail, donc l'url que j'ai à taper est "https://webmail.zeitoun.net" au lieu d'un truc du genre "http://www.zeitoun.net/openwebmail" qui est l'option par défaut.