Dans le cadre d’une migration de serveur, il arrive que l’on change tous les systèmes, pour remplacer du Mac OS X Snow Leopard Server par de l’Exchange par exemple.
Dans ce genre de situation, il est impératif de pouvoir migrer les anciens e-mails et donc, d’y accéder.
Lorsqu’il y a peu d’utilisateurs, il est éventuellement acceptable de demander à chacun son mot de passe e-mail. Cependant, c’est quelque chose de peu recommandable en terme de sécurité, et d’absolument pas viable à grande échelle. Certain se dirons « nous n’avons qu’à remettre à zéro les mots de passe utilisateur », ce qui est assez mauvais en terme d’expérience utilisateur.
La bonne solution est bien plus simple : un MasterPassword. Dovecot (le serveur IMAP/POP utilisé par Apple) dispose d’une fonction qui permet de s’authentifier avec un mot de passe unique sur tous les comptes.
Autant le dire, cette fonction ne doit pas être activée en permanence, elle est présente uniquement à des fins de migration et de récupération.
Voyons ensemble comment mettre ce système en place et s’en servir.
L’article porte sur Dovecot 1 utilisé dans Snow Leopard Server, cependant il doit être valable pour Dovecot 2 utilisé de nos jours.
Pour activer le MasterPassword, c’est très simple, il suffit d’ajouter une méthode d’authentification au serveur e-mail via le fichier dovecot.conf
Le contenu par défaut de ce fichier ressemble à cela :
base_dir = /var/run/dovecot protocols = managesieve pop3 imap protocol managesieve { listen = *:2000 sieve_storage = /var/spool/imap/dovecot/sieve-scripts/%u sieve = /var/spool/imap/dovecot/sieve-scripts/%u/dovecot.sieve } disable_plaintext_auth = no log_path = info_log_path = syslog_facility = local6 ssl_disable = yes ssl_cipher_list = ALL:!LOW:!SSLv2:!aNULL:!ADH:!eNULL login_dir = /var/run/dovecot/login login_user = _dovecot login_process_per_connection = no mail_location = maildir:/var/spool/imap/dovecot/mail/%u mail_access_groups = mail mail_debug = yes verbose_proctitle = yes first_valid_uid = 6 last_valid_uid = 0 first_valid_gid = 6 last_valid_gid = 0 max_mail_processes = 200 protocol imap { mail_process_sharing = full mail_max_connections = 5 mail_max_userip_connections = 20 mail_plugins = quota imap_quota } protocol pop3 { mail_process_sharing = full mail_max_connections = 5 mail_plugins = quota } protocol lda { postmaster_address = postmaster@example.com hostname = snow-srv.lab.office.inig-services.com mail_plugins = cmusieve quota quota_full_tempfail = yes sendmail_path = /usr/sbin/sendmail auth_socket_path = /var/run/dovecot/auth-master log_path = /var/log/mailaccess.log info_log_path = /var/log/mailaccess.log } auth_verbose = yes auth_debug = yes auth_debug_passwords = yes auth default { mechanisms = login plain apop cram-md5 passdb od { } userdb od { args = partition=/etc/dovecot/partition_map.conf enforce_quotas=no } user = root socket listen { master { path = /var/run/dovecot/auth-master mode = 0600 user = _dovecot group = mail } } } dict { } plugin { quota_warning = storage=100%% /usr/libexec/dovecot/quota-exceeded.sh quota = maildir:User quota sieve = /var/spool/imap/dovecot/sieve-scripts/%u/dovecot.sieve }
Soit une belle liste d’option dont une petite partie nous intéressant sur la fin : le groupe auth default.
C’est dans cette partie que nous allons simplement rajouter une nouvelle source d’authentification au côté de la base d’utilisateur Open Directory.
Vous pouvez ajouter la configuration suivante après la ligne passdb od :
auth_master_user_separator = * passdb passwd-file { args = /etc/dovecot/passwd.masterusers master = yes }
Cette configuration indique à Dovecot que le caractère spécial utilisé pour séparer l’identifiant de l’utilisateur cible de l’identifiant de l’utilisateur maitre sera * et que la base d’utilisateur maitre se trouvera dans /etc/dovecot/passwd.masterusers.
Lors de l’authentification avec un compte maitre, l’identifiant à utiliser sera donc de la forme user_id*master_id et le mot de passe sera celui du compte maitre master_id.
Pour définir les comptes maitres et leur mot de passe, il suffit d’utiliser la commande htpasswd avec les options suivantes :
htpasswd -c -s /etc/dovecot/passwd.masterusers master New password: Re-type new password: Adding password for user master |
Où master est le nom de notre compte maitre.
Attention, l’option -c permet de créer le fichier s’il n’existe pas ou remplace l’actuel. Si vous voulez ajouter plusieurs comptes maitres, retirez l’option après le premier usage.
Maintenant que le fichier de mot de passe est présent et que la configuration de dovecot est faite, il est temps de relancer le serveur e-mail :
bash-3.2# serveradmin stop mail && serveradmin start mail mail:state = "STOPPED" mail:state = "RUNNING" |
À partir de maintenant, vous pouvez vous connecter via vos clients e-mail (webmail, Mail, imapsync…) avec un identifiant du type alice*master et le mot de passe maitre.
Pensez à désactiver cette fonctionnalité lorsque vous n’en avez plus besoin !