Laisser un commentaire

PSTconverter: convertir les archives Exchange/Outlook

Au pringtemps 2018, ma mère avait besoin de récupérer le contenu d’une archive PST Exchange de plus de 50GB. Impossible d’importer ça sur Linux, pas possible non plus sur les autres systèmes sans s’abonner à Office 365. Je fais quelques recherches et entre 400 logiciels Windows payants, je finis par trouver un outil libre en ligne de commande.

Ce logiciel s’appelle readpst et fait partie de la collection d’outils libpst. Je fais la conversion et tout fonctionne à merveille. Le seul bémol : j’imagine mal ma chère maman installer et utiliser un logiciel en CLI. De là me vient l’idée d’en faire une solution web : PSTconverter.

Une seule question : pourquoi une solution web ? Tout simplement parce que j’installe le minimum de choses sur ma machine. De plus, l’idée d’installer un logiciel que je n’utiliserai qu’une seule fois me donne des boutons. D’autant plus qu’il s’agit pour la plupart de logiciels qui donnent moyennement confiance.

L’objectif est donc de fournir un outil en ligne permettant très simplement la conversion d’archives PST vers MBOX.

La technique

Le seul challenge que représente ce service est l’upload de très gros fichiers, on parle ici de plusieurs dizaines de gigaoctets. C’est donc sur ce point que je vais me concentrer.

Je ne compte pas passer mon été sur ce projet. Je prends donc un thème libre depuis HTML5 Up et je l’intègre à mon outil de build pour sites statiques. Ça me permet de profiter d’une bonne base, de booster un peu les perfs avec minification et pre-compression et d’ajouter ce dont je vais avoir besoin pour l’upload.

Côté back, rien de très complexe. Toute la vitrine du site est statique, reste plus qu’à mettre en place une micro API pour gérer les uploads, les conversions et les notifications. Bien entendu, c’est Node.js qui sera utilisé. La tâche est simple, je n’utilise aucun framework. Libpst sera bien entendu utilisée pour les conversions et les notifications seront envoyées par email, du classique !

Concernant l’upload, il est d’usage d’utiliser Resumable.js pour cette tâche. Je ne trouve pas la bibliothèque à mon goût pour de multiples raisons et puis il n’y a pas de module npm. On est en 2019, je ne me vois pas utiliser un truc qui nécessite que je l’intègre via script src="…".

Je décide donc de créer un module d’upload. Il devra gérer le chunking pour permettre l’upload de très gros fichiers, gérer les défaillances du réseau et permettre la mise en pause. Je créé en fait deux modules : huge uploader est le module client dans le navigateur et huge uploader nodejs est, comme son nom l’indique, son pendant côté serveur.

Une fois l’upload terminé, l’archive est réassemblée sur le serveur et une crontask s’assurera de convertir l’archive PST en archive Mailbox. Lorsque c’est terminé, un email est envoyé au propriétaire de l’archive afin qu’il puisse la télécharger.

Enfin, 48h plus tard, tout est effacée car je n’ai ni l’usage ni la place de garder tout cela et qu’on est en Europe, RGPD ready baby.

Business ?

Comme je l’ai mentionné, j’avais simplement l’envie de créer un service face à un besoin perçu et pour le fun de coder une solution. Il est clair que ce n’est pas la prochaine licorne française.

Je fais simplement payer un coût fixe de 5€ pour les archives de plus de 100Mo histoire d’amortir le serveur, ni plus ni moins.

Commentaires

Rejoignez la discussion !

Vous pouvez utiliser Markdown pour les liens [ancre de lien](url), la mise en *italique* et en **gras**. Enfin pour le code, vous pouvez utiliser la syntaxe `inline` et la syntaxe bloc

```
ceci est un bloc
de code
```