Notifications DSN mail pleinement fonctionnelles dans tous les cas.
J’ai corrigé un problème assez mineur qui existait depuis plusieurs années sur le service mail. Jusqu’à présent, les DSN n’étaient pas correctement envoyées lorsque les mails étaient destinés à l’extérieur.
Les DSN (Delivery Status Notifications) sont des rapports automatiques qui confirment si un mail a bien été délivré. Elles permettent de vérifier si un message a atteint sa destination et peuvent être activées dans son logiciel de messagerie. (À noter que ce n’est pas la même chose qu’un accusé de réception mail.)
Désormais, les DSN sont générées correctement dans toutes les situations.
Pour résoudre ce problème, une troisième instance mail intermédiaire a été mise en place. Elle relaye les notifications entre l’instance mail sortante secondaire et le service principal, assurant ainsi leur bon acheminement.
Voilà l'explication technique plus en détail :
J'utilise depuis plusieurs années deux instances de serveur mail postfix-multi (tournant sur le même service mais pas le même port). La première reçoit les e-mails, évalue leur score de spam, et selon ce score si c'est à livrer aux clients, les livre soit dans le dossier des spams, soit dans le dossier du courrier entrant. Si des mails sont à destination de l'extérieur, elle relaie ces messages vers la seconde instance postfix. Cette seconde instance a pour rôle de bloquer les messages considérés comme du spam ou de les envoyer à l’extérieur.
Cependant, un problème survenait lorsqu’un utilisateur demandait une notification de statut de délivrance (DSN). Dans ce cas, le rapport mail ne pouvait pas revenir à la première instance depuis la seconde, car postfix-multi détectait une boucle infinie (loopback myself).
Pour résoudre ce problème, j'ai configuré un troisième serveur mail léger dans un autre conteneur LXC. Ce serveur est chargé de recevoir les e-mails DSN grâce à un transport spécifique pour les adresses locales depuis la seconde instance. Il relaie ensuite ces e-mails vers la première instance, sans déclencher le mécanisme de blocage de boucle infinie.
Et voici le schema (MOT) du traitement mail (d'une manière simplifiée) :
Je ne sais pas si j'ai pu rester limpide dans mon explication