Il existe deux façons d’envoyer des e-mails via un serveur SMTP local :
- se connecter et s’authentifier au port de soumission, comme le 587 avec STARTTLS ou le 465 avec TLS implicite/immédiat => requête réseau, vérifications et restrictions appliquées via
smtpd - utiliser
sendmailou similaire, qui invoque la commande localepickup(dans le cas de Postfix), sans établir de connexion réseau, et contourne toutes les vérifications et restrictions configurées pour le service de soumissionsmtpd.
Ce dernier est plus simple et plus rapide, implémenté dans les systèmes d’exécution et les frameworks courants, comme PHP mailer et cette bibliothèque de courrier Ruby utilisée par Discourse. Et l’authentification est contournée, aucun identifiant en texte brut ne doit être stocké quelque part. Autrement dit : le serveur SMTP n’est pas du tout utilisé dans ce cas, mais seulement le client SMTP.
Je veux dire oui, la connexion au port de soumission ne devrait pas avoir d’impact significatif sur la charge du serveur, par rapport à ce que fait Discourse par ailleurs. Ce dernier point peut être résolu avec par exemple la règle smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject au port de soumission, pour autoriser les soumissions depuis les adresses IP de bouclage (par défaut, réglage mynetworks), avant toute authentification. Si la requête du conteneur est vue avec une autre adresse IP, elle peut être ajoutée à mynetworks. Je suppose que c’est ainsi que cela fonctionnait dans le cas du sujet que j’ai lié précédemment.
Nous verrons la prochaine fois que nous mettrons à jour/reconstruirons notre Discourse, lorsque les paramètres SMTP modifiés seront appliqués. Je ferai un retour sur le fonctionnement.
Mais il serait toujours intéressant de savoir s’il existe d’autres moyens, et à quoi sert ce réglage “Méthode de livraison”.
Postfix s’exécute sur l’hôte, pas à l’intérieur d’un conteneur, mais cela ne ferait pas beaucoup de différence, car cela reste une authentification basée sur le réseau.
Ouais, une pensée plus tard, il est logique que sendmail etc. de l’hôte/d’un autre conteneur ne puissent pas fonctionner à l’intérieur d’un conteneur, car cela nécessite un accès direct à de vastes parties des exécutables, bibliothèques et configurations de Postfix, je suppose. À moins qu’il n’y ait une sorte de socket magique qui puisse être monté en bind dans le conteneur ou quelque chose comme ça
.