Je n’avais pas eu pris le temps de mettre en place les configurations nécessaires permettant aux différents clients de messagerie (bureau / mobile) de récupérer automatiquement l’adresse du serveur, les ports, les protocoles, …

Ca marche comment ?

Lorsqu’on souhaite lire ses emails ailleurs que sur son navigateur Internet, on ouvre son client de messagerie préféré et on suit les différentes étapes ; il y a alors 2 solutions, soit le client arrive à “récupérer” la configuration liée au domaine de messagerie, soit vous êtes obligé de le faire manuellement ..

L’idée est bien de se faciliter la vie :) Mais comme tout n’est pas simple, chaque client utilise un des mécanismes suivants :

  • une base de données ISPB gérée par Mozilla ;
  • deux fichiers de configuration mis à disposition en HTTPs ;
  • des entrées DNS sur la zone du domaine ;
  • la devinette, le client essaye de combiner smtp ou imap avec le nom de domaine de votre messagerie ;

On met quoi en place ?

Du coup pour pouvoir répondre aux demandes de tous les clients de messagerie, on va commencer par rajouter les entrées DNS suivantes :

@                       IN      MX 10   mail.allella.io.
autoconfig              IN      CNAME   www
autodiscover            IN      CNAME   www
_imaps._tcp             SRV 0 1 993     mail.allella.io.
_submission._tcp        SRV 0 1 465     mail.allella.io.
_autodiscover._tcp      SRV 0 0 443     autodiscover.allella.fr.

On met à disposition aussi les fichiers de configuration en se basant sur cette proposition. On clone le repo dans un répertoire local sur le serveur, on adapte les fichiers pour sa configuration et on inclut ce bloc pour chaque domaine.

/etc/nginx/conf.d/local$ cat autodiscover.conf
location ~ /(?:a|A)utodiscover/(?:a|A)utodiscover.xml {
    root            /var/www;
    try_files       /autodiscover/autodiscover.php =404;
    fastcgi_pass    unix:/run/php/php7.3-fpm.sock;
    fastcgi_param   PATH_INFO $path_info;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param   SERVER_ADDR "";
    fastcgi_param   REMOTE_ADDR $http_x_real_ip;
}

location ~ /mail/config-v1.1.xml {
    root            /var/www;
    try_files       /autodiscover/config-v1.1.xml =404;
}

/etc/nginx/sites-enabled$ cat allella.fr
server {
    listen 443;
    server_name allella.fr www.allella.fr;

    include /etc/nginx/conf.d/local/autodiscover.conf;
[...]
}

Et voilà, une fois l’adresse ajoutée, Thunderbird trouve tout seul sa configuration :

thunderbird_autoconfig