[Mails] Pourquoi et comment je les sauvegarde ?

Tags: Informatique Sauvegardes


Bonjour à tous,

Aujourd’hui, on va parler d’un sujet toujours ultra-important à mes yeux: les sauvegardes. Et ce dans un contexte bien part, il s’agit aujourd’hui de parler de la sauvegarde des mails.

Pourquoi maintenant ?

Les sauvegardes en général

Je ne vais pas vous le cacher, à propos des sauvegardes de mon serveur, c’est relativement ceinture-bretelle.

Je réalise des sauvegardes automatiques plusieurs fois par jour au sein du serveur avec borg (un outil de sauvegarde) pour archiver les modifications (pour revenir facilement à un état antérieur d’un service). J’ai ensuite des sauvegardes toutes les 12 heures de ce serveur sur un disque dur chez moi et enfin toutes les quelques semaines sur un autre disque stocké ailleurs. De plus, sur mon PC chez moi, j’ai également une copie des fichiers du serveur dans une machine virtuelle dans le but de pouvoir réaliser des tests (mises à jours de services comme Nextcloud, etc…).

Pour un serveur pour un usage personnel, ça peut paraitre beaucoup mais c’est le minimum selon moi. Mais voilà, il fallait une faille dans la matrice: un des seuls services que je n’héberge pas sur mon serveur, à savoir les mails.

Pourquoi les mails ?

Pour la petite histoire, je suis maintenant depuis quelques mois/années à la recherche d’un outil de prises de notes simple mais efficace et multi-plateforme. Dans l’idéal, si vous me connaissez, il faudrait que je puisse l’héberger et qu’il soit Open-source.

D’ailleurs, si vous avez un outil de prise de note multi-plateforme open-source à auto-héberger, n’hésitez pas à m’en faire part, j’en ai essayé beaucoup sans jamais être convaincu !

N’ayant rien trouvé de ce côté, j’ai orienté mes tests vers une solution qui n’est ni Open-source, si auto-hébergeable: l’application Notes d’Apple.

En fait, j’ai été déjà intrigué par la solution technique. Dans l’application, l’utilisateur voit ses notes et peut les modifier très simplement (on connait Apple pour la simplicité d’utilisation de ses outils). Derrière cette jolie façade, la façon dont sont stockées les notes est assez intéressante et je ne l’ai revu nulle part ailleurs. Dans l’adresse mail associée au compte iCloud, un dossier Notes est créé au milieu des autres dossiers. Les notes sont alors simplement stockées à cet endroit et modifiées quand la note est sauvegardée (on a une note = un mail).

Les applications Notes d’Apple sont alors uniquement des clients mails qui n’affichent que ce dossier dans un affichage dédié à la prise de notes.

Bref, j’avais testé ça avec mon mail perso. Et quelque temps après, depuis mon client Webmail (Rainloop), j’ai un jour voulu supprimer ce fameux dossier Notes. Je clique donc sur supprimer et je valide (en pestant sur le bouton de validation trop petit). Et au moment où je relâche le bouton de validation, je me rends compte que ce n’était pas le dossier Notes mais un dossier nommé Perso. Malheureusement, c’était trop tard, j’avais supprimé ce dossier et tous son contenu.

J’ai eu de la chance d’avoir un client mail qui m’avait téléchargé tous mes mails de tous mes dossiers. Cela m’a permis de me rendre compte que c’était un dossier vide !

Par contre, hors de question que cette situation ne se reproduise.

Comment sauvegarder ?

Bien qu’au final des mails ne valent pas grand-chose et qu’il soit vraiment rare les fois où un ancien mail serve à quelque-chose, j’ai donc cherché à les sauvegarder de façon pérenne.

Je me suis rapidement souvenu avoir mis un lien dans mes favoris RSS permettant cela, ni une ni deux, je le retrouve. Il s’agit de ce script (miroir ici).

Ce script est d’une utilisation la plus simple possible. Pas de fioriture, juste le nécessaire comme le veut le principe KISS (pour Keep It Simple, Stupid).

Il suffit en effet d’avoir Python 2 ou 3.8, et le script fonctionne sans avoir à installer la moindre dépendance. On donne notre nom d’utilisateur, le mot de passe et le serveur de la boîte mail et le tour est joué, les mails sont téléchargés dans le dossier courant.

Si on lance le script (3.8 tout du moins) avec l’option -h, on trouve alors toutes les options disponibles, à savoir:

Usage: imapbackup [OPTIONS] -s HOST -u USERNAME [-p PASSWORD]
 -d DIR --mbox-dir=DIR         Write mbox files to directory. (defaults to cwd)
 -a --append-to-mboxes         Append new messages to mbox files. (default)
 -y --yes-overwrite-mboxes     Overwite existing mbox files instead of appending.
 -f FOLDERS --folders=FOLDERS  Specifify which folders use.  Comma separated list.
 -e --ssl                      Use SSL.  Port defaults to 993.
 -k KEY --key=KEY               PEM private key file for SSL.  Specify cert, too.
 -c CERT --cert=CERT           PEM certificate chain for SSL.  Specify key, too.
                               Python's SSL module doesn't check the cert chain.
 -s HOST --server=HOST         Address of server, port optional, eg. mail.com:143
 -u USER --user=USER           Username to log into server
 -p PASS --pass=PASS           Prompts for password if not specified.  If the first
                               character is '@', treat the rest as a path to a file
                               containing the password.  Leading '' makes it literal.
 -t SECS --timeout=SECS        Sets socket timeout to SECS seconds.
 --thunderbird                 Create Mozilla Thunderbird compatible mailbox
 --nospinner                   Disable spinner (makes output log-friendly)

Par défaut, on voit que les nouveaux mails sont récupérés et ajoutés aux anciens. On a donc nos fichiers (1 fichier = 1 dossier sur le compte mail) qui grossissent au fil du temps. Il y a également la possibilité d’écraser tous les fichiers avec le contenu à un instant T, tout dépend des usages (on peut imaginer un cas où on télécharge tous les mails, on les archive avec borg puis on les supprime du serveur).

Le script compatible Python 2 offre la possibilité de compresser.

Et la conteneurisation dans tout ça ?

Certains vont trouver ça aberrant dans le sens où le script n’a aucune dépendance si ce n’est Python. Personnellement, je préfère tout scripter et que ça fonctionne sans que je ne me demande où tournera le script (que j’ai Python 3.7 ou Python 3.9 par exemple).

Le fait que le script soit ultra simple d’utilisation rend son image (Docker dans mon cas), ultra simple à écrire. Voici donc mon fichier Dockerfile.

FROM python 3.8-slim-buster

WORKDIR /app
COPY imapbackup38.py /

ENTRYPOINT ["python", "/imapbackup38.py"]

On a donc le script imapbackup38.py à la racine et on l’exécute dans le dossier /app. Afin de l’utiliser dans une tâche cron (tâche récursive sous Linux), j’ai également créé un fichier docker-compose.yml:

version: '3.7'

services:
    imapbackup:
        image: imapbackup:latest # to adapt according to your image
        container_name: "imapbackup"
        command: --ssl --server=${SERVER_MAIL} --user=${USER_MAIL} --pass=${PASS_MAIL}
        volumes:
            - ./data/imapbackup/user_at_example.com/:/app/

Avec le fichier .env associé:

SERVER_MAIL=example.com
USER_MAIL=user@example.com
PASS_MAIL=this-is-a-password-without-numbers

Il suffit alors de lancer la commande docker-compose run --rm imapbackup et le tour est joué. Une fois par semaine dans mon cas me semble suffisant, à compléter avec un archivage avec borg. De plus, de temps à autre, on peut vider les dossiers sur la boîte mail pour l’alléger.

Conclusion

J’avais croisé ce script il y a déjà un moment. Par manque de temps, je n’avais jamais pris le temps de mettre tout cela en place alors que franchement, c’est simple à mettre en place.

Un dernier point avant de vous quitter: peu importe ce que vous sauvegardez, si vous ne testez pas régulièrement vos sauvegardes, ça revient à ne rien faire du tout.

Commentaires




Ailleurs sur le Web


L'art de choisir et gérer ses mots de passe.

Un article (très) complet sur le choix des mots de passe. L'article traite évidemment de l'intérêt d'utiliser un gestionnaire de mots de passe !

via Shaarli le 14 juin 2021

Power over Wi-Fi : des scientifiques veulent grappiller de l’énergie sur les 2,4 GHz

Ca serait bien pour éviter piles et batteries dans des tous petits systèmes en domotique. Après, si les oscillateurs et condensateurs ne se recyclent pas, ça restera des déchets inutiles. Après, on pourrait aussi éteindre les enseignes/lumières des magasins…

via Shaarli le 07 juin 2021

Copie privée : les ayants droit veulent jusqu'à 9,80 euros sur chaque téléphone reconditionné

A quand une redevance lors du redémarrage de chaque téléphone ? C'est la prochaine étape non ?

via Shaarli le 26 mai 2021

Généré avec openring


Recettes de gourmands


Pizza poulet curry

Une pizza plus estivale, mais qui sait rester gourmande !

via cooking.pofilo.fr le 31 mai 2020

Fajitas

A manger avec les mains, évidemment !

via cooking.pofilo.fr le 24 mai 2020

Pad Thai

Une recette longue mais qui reste relativement simple qui devrait ravir tous les gourmands !

via cooking.pofilo.fr le 17 mai 2020

Généré avec openring