# RFC6186 + RFC8314 La méthode d'autoconfiguration des clients de courriel la plus répandue est définie dans la [RFC6186](https://www.rfc-editor.org/rfc/rfc6186) et la [RFC8314](https://www.rfc-editor.org/rfc/rfc8314) qui rajoute le support du TLS à la première. # Thunderbird La méthode d'auto-configuration de Thunderbird est aussi supporté par d'autres clients mail comme [Evolution ou KMail, ...](https://wiki.mozilla.org/Thunderbird:Autoconfiguration:ConfigFileFormat). L'auto-configuration se fait à partir de fichier de configuration local au client, à partir de la base de donnée hébergé sur les serveurs de Mozilla, mais il est aussi possible de définir cette auto-configuration par nous même. Pour ces ressources distances (qui ne dépendent pas de Mozilla) ça se fait dans [cet ordre-là](https://wiki.mozilla.org/Thunderbird:Autoconfiguration#Implementation) : 1. `http://autoconfig.emailaddressdomain/mail/config-v1.1.xml?emailaddress=alice@example.com`, qui retourne un fichier de config comme décrit ci-dessous 2. `http://example.com/.well-known/autoconfig/mail/config-v1.1.xml`, même fichier attendu que pour le point n°1 3. Devine la configuration en essayant les ports communs ainsi que le support SSL pour les domaines : imap.domain, pop.domain, pop3.domain, smtp.domain and mail.domain Pour générer un fichier d'autoconfiguration au format [ConfigFileFormat](https://wiki.mozilla.org/Thunderbird:Autoconfiguration:ConfigFileFormat) pour Thunderbird : ~~~ sh hostname=mail00.example.com imap_server=imap.example.com imap_port=993 smtp_server=smtp.example.com smtp_port=587 cat < ${hostname} Service de messagerie électronique ${hostname} ${hostname} ${imap_server} ${imap_port} SSL password-cleartext %EMAILADDRESS% ${smtp_server} ${smtp_port} SSL %EMAILADDRESS% password-cleartext EOF ~~~ Malheuresement, Mozilla Thunderbird est le principal client mail qui [ne supporte pas (encore ? )](https://bugzilla.mozilla.org/show_bug.cgi?id=342242#c63) la [RFC6186](https://www.rfc-editor.org/rfc/rfc6186), on ne peut donc pas mettre en place de l'autoconfiguration juste en changeant des entrées DNS. # Outlook (Autodiscover) Depuis au moins 2016, Outlook [supporte](https://support.microsoft.com/en-us/topic/outlook-2016-implementation-of-autodiscover-0d7b2709-958a-7249-1c87-434d257b9087) la [RFC6186](https://www.rfc-editor.org/rfc/rfc6186), ce qui pratique quand on veux configurer l'autconfiguration des clients de courriels exclusivement par DNS. La documentation du fonctionnement d'Autodiscover ainsi que la description du format de configuration est documenté par Microsoft [ici](https://learn.microsoft.com/en-us/previous-versions/office/office-2010/cc511507(v=office.14)?redirectedfrom=MSDN) et [là](https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/pox-autodiscover-response-for-exchange). Pour générer un fichier d'autoconfiguration pour Outlook : ~~~ sh imap_server=imap.example.com imap_port=993 smtp_server=smtp.example.com smtp_port=587 cat < email settings IMAP ${imap_server} ${imap_port} on off on on SMTP ${smtp_server} ${smtp_port} on off on on EOF ~~~ # Apple Pour générer un fichier d'autoconfiguration pour les clients mails d'Apple : ~~~ sh hostname=mail00.example.com hostname_reverse=$(echo "$hostname" | tr . '\n' | tac | tr '\n' . | sed 's/.$//') imap_server=imap.example.com imap_port=993 smtp_server=smtp.example.com smtp_port=587 cat < PayloadContent EmailAccountType EmailTypeIMAP IncomingMailServerAuthentication EmailAuthPassword IncomingMailServerHostName ${imap_server} IncomingMailServerPortNumber ${imap_port} IncomingMailServerUseSSL OutgoingMailServerAuthentication EmailAuthPassword OutgoingMailServerHostName ${smtp_server} OutgoingMailServerPortNumber ${smtp_port} OutgoingMailServerUseSSL OutgoingPasswordSameAsIncomingPassword PayloadDisplayName Email autoconfiguration profile PayloadIdentifier ${hostname_reverse} PayloadType com.apple.mail.managed PayloadUUID $(uuidgen) PayloadVersion 1 SMIMEEnablePerMessageSwitch SMIMEEnabled disableMailRecentsSyncing PayloadDisplayName Email autoconfiguration PayloadIdentifier ${hostname_reverse} PayloadRemovalDisallowed PayloadType Configuration PayloadUUID $(uuidgen) PayloadVersion 1 EOF ~~~