Récupérer ses emails outlook via mbsync pour une consultation sur emacs avec l'oauth2
Contexte
Suite à un changement au sein de mon institution d'un Zimbra auto-hébergé vers la plateforme office365, récupérer des emails via mbsync ne fonctionnait plus: une authentification oauth2 est obligatoire. J'ai testé de suivre cet article de blog, la récupération des emails fonctionnaient bien, mais moins l'envoi. Alors je me suis tourné vers un proxy hébergé en local, écrit en python, le tout tenant dans un seul fichier: emailproxy.
Configuration de emailproxy
Je suis passé par pip pour l'installer:
DIR="~/prog/emailproxy"
# création de l'environnement virtuel
J'ai adapté le fichier de configuration, et utilisé comme client_id
et client_secret ceux de mozilla (voir
issues/297
9e5f94bc-e8a4-4e73-b8be-63364c29d753
Il semble qu'ils proviennent de Thunderbird, bien que le secret ne
soit pas dans le code source.
J'obtiens ceci au final:
[Email OAuth 2.0 Proxy configuration file]
[Server setup]
[IMAP-1501]
outlook.office365.com
993
[SMTP-1502]
smtp-mail.outlook.com
587
True
[Account setup]
[my_office365_email_address]
offline_access
08162f7c-0fd2-4200-a84a-f25a4db0b584
TxRBilcHdC6WGBee]fs?QR:SJ8nI[g82
[emailproxy]
True
False
False
Le serveur proxy écoutera sur les ports 1501 (pour imap) et 1502 (pour smtp).
Je n'ai pas réussi à faire fonctionner l'UI sur i3 (enfin l'icône
apparaissait bien dans le tray, mais aucune interaction possible
avec). Je lance le proxy via la commande suivante: emailproxy --local-server-auth.
Puis je me connecte manuellement via telnet, sur une autre console:
Sur la console de emailproxy, une url apparaît. Je la copie-colle
dans le navigateur, me connecte à mon compte office365. Je suis
ensuite redirigé vers localhost, je colle l'url dans la console de
emailproxy. emailproxy modifie alors le fichier de configuration,
et telnet m'indique que la connexion s'est bien passée.
Configuration de mbsync
J'installe le paquet isync, et configure le client mbsync via le
fichier ~/.mbsynrc.
myaccount
my_office365_email_address
1501
None
myaccount-remote
myaccount
myaccount-local
~/Mail/myaccount/
~/Mail/myaccount/INBOX
Verbatim
myaccount
myaccount-remote:
myaccount-local:
*
Both
Both
*
Les mails seront stockés dans ~/Mail/myaccount/ et
~/Mail/myaccount/INBOX. Les deux dossiers sont à créer pour éviter
un segmentation fault.