Garder le courrier en file jusqu’à ce que le VPN monte est un problème d’ordonnancement, et la solution habituelle est d’arrêter Postfix, d’échanger main.cf et de le redémarrer. Cela fonctionne, et c’est la mauvaise forme, parce que cela mélange deux exigences : quand la livraison doit être tentée, et quel chemin réseau peut la porter. La seconde est une décision de pare-feu, et aucune directive Postfix ne peut la prendre. Une fois les deux séparées, chacune a une réponse petite et vérifiable.

Gardez la destination du relais stable, bloquez la livraison directe à la frontière réseau, et laissez la file faire l’attente.

Deux exigences que les gens fusionnent en une

Le relais indique à Postfix où remettre le courrier ; relayhost = [smtp.corp.example]:587 nomme un hôte et un port, les crochets supprimant la sélection par MX pour ce saut suivant. Le chemin indique au noyau où les paquets sont autorisés à aller. Un relayhost correct sans restriction de chemin laisse encore Postfix atteindre Internet directement quand la table de routage l’y autorise, et un pare-feu correct avec un relayhost erroné envoie le courrier au mauvais endroit. Ni l’un ni l’autre n’implique l’autre.

Les tables de transport, les dérogations par expéditeur et les relais de secours méritent chacun la même lecture. Un relayhost stable n’est pas la preuve que chaque route de livraison configurée l’utilise, et une route de secours qui contourne le relais est la même défaillance avec un meilleur camouflage.

Ce que fait réellement defer_transports

defer_transports retient les messages pour les transports nommés, de sorte qu’aucune tentative de livraison n’a lieu avant qu’une passe de file ne les touche. C’est un contrôle d’ordonnancement, et un vidage de file le supplante ; c’est la conception et non un défaut. Utilisez les vrais noms de transport de master.cf, car un transport personnalisé ou un transport de relais nommé séparément n’est pas couvert simplement parce que son programme parle aussi SMTP. La nouvelle tentative ordinaire est un autre mécanisme : avec un chemin fail-closed, les tentatives de livraison échouent simplement et restent en file, sans qu’aucune directive de report n’intervienne.

Les échecs permanents n’attendent pas poliment. Un mauvais destinataire ou un identifiant refusé rebondit ou reste bloqué comme erreur dure au lieu d’attendre que le tunnel apparaisse, si bien qu’une file pleine de courrier reporté n’est pas automatiquement une file sûre.

Imposez le chemin au niveau réseau

La restriction appartient à la frontière de sortie locale ou à l’intérieur d’un espace de noms réseau isolé. Elle doit couvrir les adresses réelles du relais, le transport et le port, y compris IPv6 s’il est activé, car une règle bloquant TCP 25 ne fait rien pour un relais sur 587 ou 465. Gardez le loopback et les chemins de soumission locale séparés pour que la file elle-même continue de fonctionner. La politique devrait rester fermée quand la route du tunnel disparaît ou réapparaît sous un autre nom d’interface.

Un événement de montée d’interface ne prouve pas que le relais est joignable à travers elle. C’est pourquoi un hook qui vérifie le lien puis vide la file est une commodité et non une garantie : le lien peut changer entre la vérification et la tentative de livraison.

Prouvez-le avec un seul message inoffensif

Envoyez un message inoffensif avec le VPN coupé, puis inspectez postqueue -p pour la raison du report et l’ID de file. Rétablissez le chemin prévu et demandez une passe de file contrôlée, en observant si le message sort par le relais plutôt que par ailleurs. Puis coupez de nouveau le chemin en plein vol et confirmez que le message revient dans la file. Revoyez maximal_queue_lifetime avant de décider combien de temps une panne peut durer, car une valeur nulle signifie une tentative et non une rétention illimitée.

Surveillez l’âge de la file et l’usage du disque. Une politique qui attend le VPN se transforme en panne de courrier si personne ne remarque que la file grossit depuis vendredi.

Consignez ensemble le relais, le transport, la règle de pare-feu et la durée de vie. Ces quatre éléments décrivent l’agencement ; chacun d’eux seul décrit une conjecture.

Articles similaires