---
layout: post
title:  "Email - autodiscover / autoconfig"
date:   2020-04-26
categories: [technique, outils]
excerpt_separator: <!--more-->
---

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, ...
<!--more-->
## 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 :
```bash
@                       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](https://github.com/gronke/email-autodiscover).
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.
```bash
/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]({{ site.baseurl }}/assets/images/thunderbird_autoconfig.png)