PiApplications 2026
Mise à jour du 15/05/2026.

Objectif et présentation

Utiliser une messagerie est devenu au cours du temps une action risquée (tentatives d'escroquerie en tout genre). C'est particulièrement vrai pour les personnes vulnérables ou dont les activités sont trop éloignées de l'Internet. En général, ces personnes ont peu de contacts Internet. Un moyen de les aider est de faire le recensement des adresses courriels des personnes et des organisations susceptibles de leur écrire et de filtrer toutes celles qui ne sont pas dans cette liste blanche.

Au delà de cette protectioin élémentaire, et, disposant de plusieurs boîtes aux lettres (BAL) pour des raisons de cloisonnement de mes activités, je souhaitais disposer d'une application exécutable depuis un VPS capable de lire ces BAL "source" et de redistribuer leurs courriels vers une ou plusieurs autres BAL "cible". Cela a deux avantges :

  1. rendre anonyme en réception la véritable BAL "cible" (seule la "source" est connue) ;
  2. fusionner plusieurs BAL "source" vers une même BAL "cible".

Pour autant, je ne voulais pas non plus entrer dans le détail de réalisation d'un serveur POP, IMAP ou SMTP car ces serveurs imposent une charge d'exploitation non négligeable. J'avais donc besoin d'un mécanisme automatique de redirection des courriels :

Principe.

La plupart des clients de messagerie comme Thunderbird peuvent faire cette action mais ceux qui l'ont tenté se sont heurtés à plusieurs inconvénients majeurs :

Chemin faisant on constate aussi qu'un redirecteur de messages pourrait être un excellent moyen d'archivage automatique des courriels.

Ces réflexions m'ont conduit à imaginer un système capable de :

  1. rediriger les courriels d'une ou plusieurs BAL vers une autre ;
  2. archiver tous les courriels reçus ;
  3. filtrer de manière personnalisable et extensible les courriels reçus ;
  4. chiffrer éventuellement les courriels ré-émis.

En quelque sorte, ce système centralise les flux de messagerie du monde public pour les redistribuer dans une sphère plus privée.

N'étant pas contraint par les serveurs récepteurs (POP, IMAP) ou émetteurs (SMTP), ce système peut se placer sur n'importe quelle machine reliée à l'Internet, et, au final, une même application peut travailler pour des personnes ou des organisations différentes. On pourrait qualifier un tel système de système "du milieu".

Ce projet a également été l'occasion de remettre de l'ordre dans l'usage que l'on peut faire de certaines libariries. En matière de messagerie et compte tenu du nombre et de la complexité actuelle des standards de messagerie, il serait très pénalisant de devoir tout ré-écrire à partir des RFC. C'est là qu'intervient le logiciel libre. En fait, il n'existe pas vraiment une librairie qui couvre complétement le sujet. Cela aurait pu être le cas avec vmime mais ce projet n'a plus vraiment de support et il commence à lui manquer des fonctions clefs notamment dans le domaine de la sécurité des connexions.

Nous allons donc répartir la messagerie en deux grands domaines :

  1. La construction et l'interprétation des messages en s'appuyant sur un modèle pivot que nous nommons flux EML. Le flux EML est le tableau d'octets qui transite sur le réseau (chiffré ou non) et dont le format répond à la RFC 5322 (ex 2822 et 822) ainsi qu'aux RFC 2045 à 2049 (types MIME). Pour ce travail nous avons construit une librairie Qt qui encapsule la librairie du projet Gmime.
  2. Le transport réseau (chiffré ou non) (trop nombreuses RFC pour être listées ici). Pour ce travail nous avons construit une librairie Qt qui encapsule la librairie du projet curl.

Le pojet s'appuie également sur les librairies du projet openssl pour tout ce qui touche au chiffrement/déchiffrement. Enfin, pour l'accès à la base PostgreSQL nous avons construit une librairie Qt qui encapsule la librairie libpq car Qt est un peu limité avec ce SGBDR.