Backup headless de ses emails ProtonMail sous Debian 10

1/52/53/54/55/5 (Pas encore de note)
Loading...
B

Bonjour à tous,

Aujourd’hui, on va voir comment réaliser une sauvegarde hors-ligne (et en différentiel) de vos emails ProtonMail de façon automatique sur un serveur Debian 10 sans avoir à passer par le bridge protonmail.

Il est important de noter que vos emails seront déchiffrés une fois sorti de ProtonMail, il est donc important de bien sécuriser ce serveur (idéalement mettez-le chez vous, sur une vm ou un raspberry par exemple).

 

Installation des prérequis

Nous allons utiliser Hydroxide pour servir de pont IMAP avec ProtonMail et un script Python pour le backup mail.

Il va donc falloir installer Python et Go (1.13 minimum) sur votre serveur :

echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list
apt update && apt install git python3 -y
apt install golang-go/buster-backports golang-src/buster-backports

 

Ensuite, installez Hydroxide :

cd /opt && git clone https://github.com/emersion/hydroxide.git && cd hydroxide
go build ./cmd/hydroxide
chmod +x hydroxide

 

Maintenant, téléchargez le script de backup IMAP :

cd /opt
wget https://raw.githubusercontent.com/rcarmo/imapbackup/master/imapbackup.py
chmod +x imapbackup.py

 

Configuration du pont IMAP et de la sauvegarde

Lancez l’authentification sur Hydroxide :

/opt/hydroxide/hydroxide auth machin@protonmail.com

 

Ensuite, rentrez votre mot de passe et votre code de double authentification.

Un mot de passe “Bridge password” vous sera communiqué, gardez-le pour la suite :

 

Lancez maintenant le serveur IMAP intégré à Hydroxide en background :

/opt/hydroxide/hydroxide imap &

 

Créez maintenant un dossier qui contiendra vos sauvegardes et allez dedans :

mkdir /root/mailbck
cd /root/mailbck

 

Ici, lancez un backup de vos emails :

python2.7 /opt/imapbackup.py -s 127.0.0.1:1143 -u machin@protonmail.ch -p BRIDGE_PASSWORD -t 300 -f "INBOX, Sent, ..."

 

Remplacez évidemment l’adresse email et le mot de passe avec celui qui vous a été fourni juste avant.

L’option -t sert à définir le timeout (dans mon cas j’ai un dossier avec 40000 emails qui nécessite cela) et l’option -f sert à définir les dossiers spécifiques que vous souhaitez récupérer (je ne sauvegarde ni les spams, ni les drafts, ni certains dossiers avec des notifications automatiques).

La sauvegarde devrait se faire comme ceci :

 

Automatisation de la sauvegarde

Créez un script dans votre dossier personnel :

nano /root/backup-email.sh

 

Remplissez-le comme ceci (en adaptant votre commande de sauvegarde avec ce que vous aurez retenu avant) :

date
/opt/hydroxide/hydroxide imap &

cd /root/mailbck
python2.7 /opt/imapbackup.py -s 127.0.0.1:1143 -u machin@protonmail.ch -p BRIDGE_PASSWORD -t 900 -f "INBOX, Sent, Starred, Archive, TAP, Time4VPS, Résiliation, OldEmails, BJM"

 

Sauvegardez et rendez-le exécutable :

chmod +x /root/backup-email.sh

 

Lancez-le pour un test :

/root/backup-email.sh

 

Lorsque c’est tout bon, ouvrez votre cron :

crontab -e

 

Ajoutez la ligne suivante (pour moi, une sauvegarde toutes les 6h) :

0 */6 * * * /root/backup-email.sh > /var/log/backup-email.last.log

 

Attendez et vérifiez votre log, idéalement, faites-le vous parvenir par email ou autre moyen afin d’avoir un œil dessus en continu (ce que je vous recommande fortement si vous avez la 2FA, les tokens d’authentification expirent rapidement) 🙂

 

Si votre token expire, relancez une authentification sur Hydroxide :

/opt/hydroxide/hydroxide auth machin@protonmail.com

 

Ensuite, modifiez votre mot de passe dans le script de backup.

 

Bonus : Intégration avec Ansible

Pour piloter tout cela avec Ansible, je ne me suis pas claqué un neurone, voici mon playbook : https://raw.githubusercontent.com/stylersnico/own-ansible-update-tools/master/ansible/playbooks/backup-email.yml

 

Liens externes et remerciements

A propos de l'auteur

Nicolas Simond

Administrateur Systèmes et Réseaux et guitariste hard rock et metal à mes heures perdues.
Je suis le créateur et l'unique rédacteur d'Abyss Project, c'est ici que je note la plupart de mes procédures et quelques divagations.

Si vous l'article vous a aidé, pensez à me payer un café :)

guest

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

0 Commentaires
Inline Feedbacks
View all comments