Installation d’un Serveur Proxy IMAP

E-Mail_ConnectionObjectifs et contraintes:

  • Profiter de leur infrastructure plus fiable que celle que nous avons à disposition dans ma société
  • Accélérer l’accès à nos mails dans nos locaux
  • Pouvoir accéder à nos mails si notre lien internet est down (et aux pièces jointes surtout)
  • Pouvoir effectuer régulièrement une sauvegarde en sus de celle effectué par le FAI
  • Afficher nos mails dans notre client de messagerie collaborative (egroupware)
  • Prévoir une solution de repli si notre serveur « tombe »

Moyen mis en place:

  • Serveur Virtuel Ubuntu LTS 12.04 x64
  • Couple Dovecot + OfflineIMAP pour récupérer et synchroniser les messages avec celui du FAI.
  • Automatisation des taches avec CRON
  • SMTP du FAI pour l’envoi.

OfflineIMAP permet de réaliser assez facilement une copie intégrale d’un compte imap, ceci très rapidement, il possède différent mode de synchronisation, ce qui permet d’automatiser la relève des courriers à sa guise. Il est présent dans les dépôts Ubuntu mais la version est trop ancienne et ne gère pas la synchronisation des dossiers du clients vers le serveur, CAD que si un utilisateur crée un répertoire dans sa messagerie, celui-ci ne sera pas répercuté du côté serveur, ce qui pour notre utilisation « transparente » ne convient pas du tout.
Nous avons donc récupéré la dernière version (après un long moment de test et d’errements avant de comprendre que c’était un problème de version).

Dovecot, dixit le site officiel, est un logiciel sous licence libre de serveur IMAP et POP3 pour Linux / UNIX, écrit avec comme première préoccupation la sécurité. Dovecot est une excellente alternative pour la mise en place de petites ou grandes structures. Rapide, simple à installer, il ne nécessite pas une charge d’administration extraordinaire et utilise très peu de mémoire.

Passons aux manipulations qui m’ont permis de faire marcher tout ça et d’atteindre les objectifs fixé.

Préparation du serveur:

Préparation d’une machine virtuelle sur le serveur hôte tournant lui aussi sur une Ubuntu Serveur 12.04 LTS x64.
Paramètre de la machine virtuelle :

  • Disque dur dynamique taille 100 Go (taille qui peut paraître excessive, mais aucune raison de se limiter en dynamique sur notre infrastructure, de plus ça laisse la place pour une évolution quelconque)
  • Mémoire 1 Go (le serveur fait tourner OfflineIMAP, dovecot)
  • Carte réseau en mode bridge (Paravirtualized Network), dhcp fixé au niveau du routeur.

Installation standard de Ubuntu server 12.04 64bits sans aucune option, Maj automatique de sécurité uniquement.

Installation des outils nécessaire:

Configuration de Dovecot et de OfflineIMAP:

Notre société étant très réduite, j’ai choisi de ne pas installer un annuaire LDAP ou une base de données pour gérer les utilisateurs, les configurations des différents comptes sont donc en « dur » dans les fichiers, avec un mdp même pas hashé (oui, c’est mal, j’ai très honte 😳 ). Heureusement, les informations sont relativement centralisées, ce qui évite d’avoir a éditer moult fichiers différents.
Nous allons donc commencer par configurer OfflineIMAP (et oui avant de vouloir les gérer avec Dovecot, on va les rapatrier).

L’arborescence des mails chez notre fournisseur se présente ainsi :

Pour différentes raisons, j’ai choisi que mon architecture locale soit ainsi (plus exactement, au début, j’ai cru que j’étais obligé de les configurer de cette façon, mais en fait non 😉 , du coup, j’ai trouvé le processus intéressant car si un jour on change de FAI, je n’aurai qu’a changer les règles nametrans) :

Pour arriver à ce résultat, je vais utiliser une fonction très intéressante de OfflineIMAP qui permet de modifier à la volée le nom des dossiers. Nous allons donc créer un fichier .offlineimaprc dans le dossier de l’utilisateur qui lancera OfflineIMAP, on peut indiquer également indiquer autre fichier de configuration, mais en l’occurrence, je n’en ai pas eu besoin.

Contenu de .offlineimaprc :

Pour tester si ça marche, il suffit d’exécuter OfflineIMAP, il va donc se connecter à notre serveur IMAP et rapatrier nos messages, comme c’est la première synchro, je suis allé me faire un café :mrgreen: , ma boite pro faisant plusieurs Go, heureusement par la suite c’est beaucoup plus rapide.
Une fois que la synchro fonctionne correctement, il faut automatiser tout ça. On peut configurer OfflineIMAP pour qu’il relève les mails à intervalle régulier, cependant, j’ai pu constater que certains événements avaient tendance à le faire planter (perte de la connexion au serveur pendant la synchro par exemple).
J’ai donc fait deux taches CRON pour relever les mails, une première qui s’exécute toutes les 4 minutes en mode « quick », et une seconde avec une synchro complète toutes les 10 minutes. Pour pallier au problème de plantage et éviter des conflits lorsque deux instances de OfflineIMAP s’exécutent, j’ai crée les petits scripts suivant (un peu vite fait je dois admettre mais ça fonctionne comme je veux) que j’ai placé dans /usr/local/bin.

Et voici mes deux ligne à ajouter à l’aide de la commande crontab -e :

Et voila !!! La configuration de OfflineIMAP est terminée 😀 . C’est l’heure de la pause bien méritée 😉

Passons au paramétrage de Dovecot.

Tout d’abord, nous allons autorisé la connection avec un mdp non hashé, pour cela, éditons le fichier /etc/dovecot/conf.d/10-auth.conf et commentons la ligne disable_plaintext_auth = yes. Ensuite, il faut régler auth_mechanisms en indiquant auth_mechanisms = plain .

Maintenant que cela est fait, il faut indiquer dans quel fichier seront stocké nos paramètres utilisateurs, j’ai choisi de les stocker ici : /etc/dovecot/users. pour cela il faut éditer le fichier /etc/dovecot/conf.d/auth-passwdfile.conf.ext, et y mettre le contenu suivant :

Dernières chose avant de remplir le fichier /etc/dovecot/users, il faut indiquer à dovecot où sont situé les mails récupérés par OfflineIMAP, pour cela, il faut éditer le fichier /etc/dovecot/conf.d/10-mail.conf, et modifié la ligne mail_location ainsi: mail_location = maildir:/home/monuser/Mail/%u:INBOX=/home/monuser/Mail/%u/.INBOX, %u est la variable correspondant au nom de l’utilisateur (chez nous c’est l’adresse mail).

Dernière ligne droite, la liste des utilisateurs, on va donc éditer le fichier /etc/dovecot/users et y ajouté le contenu suivant :

Il ne reste plus qu’a relancer Dovecot pour activer nos nouveaux paramètres.
Chez  nous le serveur n’est accédé quand interne, nous avons donc autorisé seulement notre réseau à s’y connecter en indiquant dans /etc/dovecot/dovecot.conf, le reseau local x.x.x.0/24 en modiffiant la ligne login_trusted_networks = x.x.x.0/24. Notre serveur est donc accessible sur notre réseau et prêt à être utilisé par notre client de messagerie.

Les mails suivent donc le chemin suivant :

  1. Réception par le FAI
  2. Récupération en local par OfflineIMAP
  3. Mise à disposition par Dovecot aux utilisateurs
  4. Synchronisation de l’état du mail par OfflineIMAP vers le FAI

Et voila, c’est fini.

Il y a bien sur quelques petites choses à améliorer, au final dans notre structure nous avons une dizaine de mail, rien de bien compliqué à gérer, il serait intéressant dans un second temps  soit de pouvoir centraliser tout ça dans une base de données soit de créer un script pour ajouter/retirer un utilisateur facilement. Bien sur c’est une solution relativement spécifique à notre utilisation, mais qui nous permet de remplir nos objectifs. Nos mais sont donc stocké sur deux serveurs et grâce à la magie de l’IMAP, l’état des mails est synchro qu’on se connecte à notre serveur ou à celui du FAI, l’accès à nos mails reste donc simple pour un utilisateur distant et en cas de panne de notre serveur ou même de notre réseau, il nous reste une possibilité de travailler.

Si cet article vous a aidé tant mieux, si vous avez une question vous pouvez toujours la poser, si je peux y répondre, je le ferai.

About

View all posts by

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *