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 figurant sur l'article de blog ci-haut:
-0fd2-4200-a84a-f25a4db0b584
08162f7c?QR:SJ8nI[g82
TxRBilcHdC6WGBee]fs
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]
.office365.com
outlook993
[SMTP-1502]
-mail.outlook.com
smtp587
True
[Account setup]
[my_office365_email_address]
offline_access
-0fd2-4200-a84a-f25a4db0b584
08162f7c?QR:SJ8nI[g82
TxRBilcHdC6WGBee]fs
[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
-remote
myaccount myaccount
-local
myaccount~/Mail/myaccount/
~/Mail/myaccount/INBOX
Verbatim
myaccount
-remote:
myaccount-local:
myaccount*
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.