[Mails] Pourquoi et comment je les sauvegarde ?

Publié le 30 mai 2021

Informatique Sauvegardes

 Attention, cet article date de plus d'un an. Les informations qu'il contient sont peut-être obsolètes. 

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


Home Screen Advantage - Infrequently Noted

A slide from Apple's presentation in Apple v. Epic, attempting to make the claim Epic could have just made a PWA if they didn't like the App Store terms because circa '20 Safari was so capable. LOL. Je n'aurai pas assez de popcorn pour le DM…

via Shaarli le 28 février 2024

800 employés de la poste britannique condamnés à tort à cause d’un logiciel défectueux - Next

En droit anglais et gallois, les ordinateurs sont considérés comme « fiables », sauf preuve du contraire, souligne The Guardian, ce qui « renverse la charge de la preuve normalement appliquée dans les affaires pénales ». Euh, ok !

via Shaarli le 15 janvier 2024

Mise en place et étude d'un Honey Pot SSH (Cowrie) | | Sécurité Informatique | IT-Connect (it-connect.fr) – wallabag

Article intéressant. C'est clairement dans la même démarche que mon article sur les phishing.

via Shaarli le 09 janvier 2024

Généré avec openring


Recettes de gourmands


Meringues

Pratique pour utiliser des blancs d'œufs, car les ingrédients sont au tant pour tant.

via cooking.pofilo.fr le 21 mars 2024

Risotto classique

Vraiment très simple mais le résultat est succulent.

via cooking.pofilo.fr le 28 février 2024

Pain italien

via cooking.pofilo.fr le 17 février 2024

Généré avec openring