Skip to content


Migrer et synchroniser les dossiers entre deux serveurs IMAP (SSL) avec Mandriva 2009.1

Pourquoi faire deux articles presque identiques comme l'article précédent : http://monblog.system-linux.net/blog/2011/02/22/synchroniser-les-dossiers-entre-deux-serveurs-imap/1763/ ?

Dans le cadre qui m'a été imposé (technique), le serveur en local est sous une Mandriva 2009.1 ! Simplement. 😉

Introduction

Pourquoi synchroniser deux serveurs IMAP lorsque le premier semble fonctionner ? La question semble idiote, mais elle se pose dans le cadre d'une boite mail commune à plusieurs personnes et que le nombre de connexion à cette boite est limité par adresse IP !

Les comptes courriels Google sont limités à 10 connexions par IP et ne permettent pas (à première vue) de passer outre cette limitation. Pour une boite mail d'un support partagée par plusieurs personnes cela est très gênant ! Dans cette problématique il m'a été demandé de trouver une solution concernant cette limitation.

Deux solutions ont été trouvées :

Une personne re-distribuant les courriels en fonction de critères aux différents collaborateurs. (Très lourd en terme de ressource humaine pour celui ou celle qui redistribue 🙂 )

Un serveur intermédiaire récupérant les courriels, sur lequel la limitation n'existe pas permettant de distribuer les courriels dans la boite commune.

Solution choisie : Le serveur intermédiaire (fetchmail, dovecot-imapd, IMAP-Tools)

Besoins :

  • Dovecot
  • Fetchmail et procmailrc
  • Postfix
  • Outils de migration imap

installation et configuration de Postfix :

# urpmi postfix

L'installation se déroule, il faut alors éditer /etc/postfix/main.cf

# Please be sure to read the /usr/share/doc/postfix-*/README.MDK file
# to learn about differences from stock postfix to Mandriva package.
# This file contains only the parameters changed from a default install
# see /etc/postfix/main.cf.dist for a commented, fuller version of this file.
# These are changed by postfix install script
readme_directory = /usr/share/doc/postfix-2.3.8/README_FILES
html_directory = /usr/share/doc/postfix-2.3.8/html
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
command_directory = /usr/sbin
manpage_directory = /usr/share/man
daemon_directory = /usr/lib/postfix
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
queue_directory = /var/spool/postfix
mail_owner = postfix
global_config_directory = /etc/postfix
# User configurable parameters
inet_interfaces = localhost
mynetworks_style = host
#delay_warning_time = 4h
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) (Mandriva Linux)
unknown_local_recipient_reject_code = 450
smtp-filter_destination_concurrency_limit = 2
lmtp-filter_destination_concurrency_limit = 2
mydestination = 10.1.1.0/24
append_dot_mydomain = no
myhostname = localhost
mynetworks = 127.0.0.0/8, 10.1.1.0/24
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
home_mailbox = Maildir/
inet_protocols = all

 

Installation et configuration de dovecot en IMAPS :

Il faut tapez la commande suivante : # urpmi dovecot-imapd

Ensute éditez le fichier /etc/dovecot/dovecot.conf

Le mien est à minima :

protocols = imaps protocols = imaps protocol imap { ssl_listen = *:993 } log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:~/Maildir mail_privileged_group = mail protocol imap { } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } protocol managesieve { } auth default { mechanisms = plain passdb pam { } userdb passwd { } user = root } dict { } plugin { }

Redémarrez le service : # /etc/init.d/dovecot restart

Le serveur intermédiaire est en place mais actuellement il n'y a aucun lien entre le serveur de mail initial et celui fraichement installé... Pour cela il faut un processus qui récupère de façon régulière les courriels sur le serveur de mail (disons) principal. L'outil choisit est fetchmail, mais il en existe d'autres ! 🙂

Installation et configuration de fetchmail et de Procmail :

Lancez la commande : # urpmi fetchmail procmail

Fichier fetchmailrc :

Créez le fichier /etc/fetchmailrc tel que :

# Put here each user config
# Configuration created Thu Feb 17 05:55:32 2011 by fetchmailconf 1.57
set daemon 1
set syslog
set postmaster "userlocal"
set bouncemail
set no spambounce
#set softbounce
set properties ""
poll imap.gmail.com
 proto imap
 port 993
 user "userdistant@gmail.com"
 pass "motdepasse"
 is userlocal
 keep
 ssl
 mda "procmail -f-"
 mda "/usr/bin/procmail -d %s" # tell fetchmail which MDA to use
  • set daemon vérifiera les courriels toutes les 1 secondes
  • set postmaster indique le user local
  • La dernière partie indique comment se connecter et où !

Il faut alors que sur la machine hébergeant le serveur de réception de mail soit configuré (créé) l'utilisateur local (système, LDAP, autre...) Cela sera le compte à partir duquel sera récupérés les courriels !

Vous trouverez beaucoup de tutoriels expliquant comment un utilisateur quelconque installera fetchmail sur sa machine afin de récupérer ses propres courriels... Mais cela est souvent inutile, voir une charge supplémentaire de vérification. Chaque utilisateur devra créer un fichier ~/.fetchmailrc et y mettre les options qui lui conviennent... Avouez que cela ne semble pas optimum !

Dans le cadre que j'ai choisit, vous pouvez alors tester vos récupérations depuis votre client mail (thunderbird, kmail, Outlook, etc...). Cela devrait fonctionner ! (Chez moi c'est le cas) 🙂

Fichier /etc/procmailrc :

UMASK=000
PATH=/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir/
DEFAULT=$HOME/Maildir/
LOGFILE=$HOME/procmail.log
SHELL=/bin/sh
# Put mail for userlocal into mailbox lolo
:0:
* ^To:.*userlocal
/home/userlocal/Maildir/

Problématique des dossiers IMAP :

Une question se pose ! Vous avez certes la récupération des mail qui fonctionne, mais après tout depuis le temps que votre compte mail IMAP est en place sur le serveur initial, le nombre de dossier doit être plusieurs fois supérieur à UN ! Comment récupérer ceux-ci, et en avoir toute l'arborescence ?... J'avoue que vous me devancez et que cela semble une bonne question !

Vous aurez l'occasion, si vous cherchez, de trouver un multitude de processus pour "copier", "synchroniser", "rapatrier" vos dossiers... Payants, libres, abandonnés.... Bref une jungle, sans parler que beaucoup ne fonctionneront pas en SSL ou TLS ! 🙁

J'en ai trouvé un complet et efficace ! IMAP-Tools : http://www.athensfbc.com/imap_tools/

Ce sont des scripts Perl qui vont de la synchronisation, à la récupération, ou à la copie, de façon légère ou en masse des dossiers et des courriels !

Téléchargez le tar.gz contenu dans la page ci-dessus et décompressez le !

J'ai pour synchroniser mes dossier tout d'abord récupérés ceux-ci depuis le serveur IMAP initial !

$ perl migrateIMAP.pl -S imap.gmail.com:993 -D localhost:993 -i user-correspondance

Le fichier user-correspondance contient :

votrelogingmailcomplet@gmail.com:motdepassegmail:comptelocalcreeplustard:motdepasseducomptelocal

Lors de la récupération voici ce qu'on obtient !

02-22-2011.20:30:22 19317: migrateIMAP.pl starting
02-22-2011.20:30:22 19317: Renamed old logfile to migrateIMAP.log.#perl migrateIMA
02-22-2011.20:30:23 19317: Forking to migrate lolotux@gmail.com
02-22-2011.20:30:23 19317: Parent 19317 forked 19320
02-22-2011.20:30:23 19317: All children have been launched, waiting for them to finish
02-22-2011.20:30:23 19317: Waiting on process 19320 (lolotux@gmail.com) to finish
02-22-2011.20:30:23 19320: Child process 19320 processing
02-22-2011.20:30:23 19320: Starting migration of lolotux@gmail.com
02-22-2011.20:30:24 19320: Connected to imap.gmail.com on port 993
02-22-2011.20:30:24 19320: Connected to localhost on port 993
02-22-2011.20:30:25 19320: Copied D&AOk-placement (0 messages)
02-22-2011.20:30:29 19320: Copied INBOX (5 messages)
02-22-2011.20:30:30 19320: Copied Mod&AOg-les (2 messages)
02-22-2011.20:30:30 19320: Copied Personnel (0 messages)
02-22-2011.20:30:30 19320: Copied Professionnel (0 messages)
02-22-2011.20:30:31 19320: Copied Re&AOc-us (2 messages)
02-22-2011.20:30:31 19320: Copied [Gmail]/Brouillons (0 messages)
02-22-2011.20:30:33 19320: Copied [Gmail]/Corbeille (6 messages)
02-22-2011.20:30:35 19320: Copied [Gmail]/Important (5 messages)
02-22-2011.20:30:44 19320: Copied [Gmail]/Messages env (24 messages)
02-22-2011.20:30:50 19320: Copied [Gmail]/Spam (22 messages)
02-22-2011.20:30:50 19320: Copied [Gmail]/Suivis (0 messages)
02-22-2011.20:31:09 19320: Copied [Gmail]/Tous les mes (56 messages)
02-22-2011.20:31:09 19320: Copied test (1 messages)
02-22-2011.20:31:09 19320: Copied 123 messages 1.21 MB
02-22-2011.20:31:09 19320: lolotux@gmail.com is done
02-22-2011.20:31:09 19317: Summary of migration
02-22-2011.20:31:09 19317: Migrated 1 users, 123 messages, 1.21 MB.
02-22-2011.20:31:09 19317: Elapsed time 0.01 hours
02-22-2011.20:31:09 19317: Migration completed

La migration des répertoires est alors finie.

Il ne vous reste plus qu'a configurer votre client mail pour qu'il se connecte au serveur intermédiaire...

Thunderbird

Thunderbird

Thunderbird

À vous de jouer ! 😉

Soucis rencontrés :

L'arborescence est stoquée dans ~/Maildir, définie dans le fichier dovecot.conf.

Suite à quelques tests supplémentaires, j'ai rencontré le souci suivant :

J'ai créé des répertoires dans l'arborescence de Gmail, et des sous répertoires, etc...

1 - Lors de la récupération de ceux-ci, l'arborescence se mettait à plat et mal-formatée ! 🙁 L'astuce est de supprimer les dossiers dans ~/Maildir et de recommencer la migration avec :

$ perl migrateIMAP.pl -S imap.gmail.com:993 -D localhost:993 -i user-correspondance

 

Cela devrait corriger le souci rencontré ! 🙂

2 - Autre souci rencontré, celui de la limitation de connexion par IP, qui provoque une "fetchmail[2479]: Authorization failure on user@gmail.com@gmail-imap.l.google.com (previously authorized)" pour fetchmail et empêche la migration....

Tuez fetchmail et recommencez la migration... 🙂

3 - Une problématique se pose lors de l'envoi de courriels par l'intermédiaire du compte mail : lecomptegmailcomplet@gmail.com

En effet lors de l'envoi de courriels par l'intermédiaire de ce compte, la boite d'envoi de Gmail est modifiée mais pas celle en local ! Je suis actuellement en train de chercher une solution afin de synchroniser seulement ces deux répertoires !

Synchroniser les deux serveurs :

$ perl imapsync.pl -D imap.gmail.com:993/votrelogingmailcomplet@gmail.com/motdepassegmail -S localhost:993/userlocal/motdepasselocal

Cette ligne permet de synchroniser le serveur initial en accord avec le serveur en local ! 🙂

Références :

http://www.google.fr/search?sclient=psy&hl=fr&q=fetchmail+gmail+imaps&aq=f&aqi=&aql=&oq=&pbx=1&cad=h
http://www.vosinformations.com/fetchmail-Gmail.html
http://mbrisby.blogspot.com/2007/11/fetchmail-for-gmail.html
http://lists.ccil.org/pipermail/fetchmail-friends/2004-October/009133.html
http://www.google.fr/search?sclient=psy&hl=fr&q=where+fetchmail+put+mails&aq=f&aqi=&aql=&oq=&pbx=1&cad=h
http://www.google.fr/search?hl=fr&&sa=X&ei=UIZsTfikOdKHhQfhmN2WBA&ved=0CBcQBSgA&q=automatically+start+fetchmail&spell=1
http://www.scalix.com/wiki/index.php?title=Configuring_Fetchmail_Ubuntu_Gutsy
http://www.exim.org/exim-html-current/doc/html/spec_html/ch07.html
http://blog.edseek.com/~jasonb/articles/exim4_courier/exim4.html
http://wiki.edseek.com/howto:exim4_courier
http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-spamassassin-avec-exim-4-sur-debian-4-0-etch
http://www.debian.org/releases/stable/mipsel/ch08s05.html.fr
http://www.google.fr/search?source=ig&hl=fr&rlz=&q=Message+1PuZYr-0001WU-H8+has+been+frozen&btnG=Recherche+Google&aq=f&aqi=&aql=&oq=#sclient=psy&hl=fr&lr=lang_fr&tbs=lr:lang_1fr&q=configurer+exim4&aq=f&aqi=&aql=&oq=&pbx=1&fp=87ab37491ab3576e
http://www.debian.org/releases/stable/mipsel/ch08s05.html.fr
http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-spamassassin-avec-exim-4-sur-debian-4-0-etch
http://wiki.edseek.com/howto:exim4_courier
http://blog.edseek.com/~jasonb/articles/exim4_courier/exim4.html
http://www.exim.org/exim-html-current/doc/html/spec_html/ch07.html
http://www.uno-code.com/?q=node/118
http://arnofear.free.fr/linux/template.php?tuto=4&page=1
https://www.memolinux.info/doku.php?id=unix:mail:exim4
http://help.directadmin.com/item.php?id=51
http://pwet.fr/man/linux/administration_systeme/update_exim4_conf
http://steveyoung.wordpress.com/2007/01/15/17/

Une lecture intéressante : http://www.google.com/support/a/bin/answer.py?hl=fr&answer=61369

- Fin -

Print Friendly, PDF & Email

Posted in Linux, Mandriva, Technique, Toutes. Tagged with , , , .

0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.

Time limit is exhausted. Please reload CAPTCHA.


/* */
Creative Commons License
Cette création par Laurent Besson est mise à disposition selon les termes de la licence Creative Commons Paternité-Partage des Conditions Initiales à l'Identique 2.0 France.