proxy inverse pour les serveurs SMTP
afin de traiter les requêtes des clients, ce qui permet d'améliorer la sécurité, les performances et l'évolutivité.

les clients envoient leurs requêtes au proxy inverse,
qui les achemine vers les serveurs appropriés
en servant de point d'accès unique et sécurisé.
Principaux avantages :
- Sécurité
Il permet de bloquer les requêtes malveillantes, de chiffrer le trafic,
et de protéger les serveurs backend contre les attaques directes. - Performances
Il répartit le trafic entrant entre plusieurs serveurs, ce qui évite la surcharge
d'un seul serveur et garantit une meilleure disponibilité. - Évolutivité
Cette solution vous permet d'ajouter ou de supprimer des serveurs backend sans interruption de service,
ce qui vous permet de gérer une augmentation du trafic.
Proxy inverse HTTP uniquement (couche 7)
Il existe plusieurs outils disponibles sur Internet ; après avoir effectué des recherches, nous avons dans un premier temps écarté ceux qui ne prennent en charge que le protocole HTTP (couche 7) :
PAS d'
Apache
« Oh là là. Prenez le temps de vous familiariser avec les technologies que vous utilisez. Le courrier électronique utilise le protocole SMTP.
Apache utilise le protocole HTTP. Apache ne connaît absolument rien au SMTP. Si vous souhaitez travailler avec des messages électroniques, vous aurez besoin d'une technologie qui utilise le protocole SMTP. »
– EEAA a commenté le 18 août 2016 à 2 h 49
NO Caddy
« Caddy ne peut pas servir de proxy TCP, mais uniquement HTTP sur TCP.
Utilisez un proxy inverse capable de servir de proxy TCP, comme Traefik, Nginx ou haproxy, ou utilisez ce plugin expérimental. »
– ElevenNotes a commenté le 24 septembre 2024
Nous nous sommes ensuite concentrés sur les trois solutions recommandées dans les commentaires : « Traefik, NginX ou HAProxy », que nous avons installées et testées une par une.
Traefik était le premier choix.
La plupart des tutoriels commençaient par Docker, une plateforme que je souhaitais éviter pour privilégier une solution plus simple, éventuellement basée sur l'un des gestionnaires de paquets Linux, comme YUM pour les distributions basées sur RPM telles que Fedora et CentOS, ou APT (Advanced Package Tool), utilisé sur les distributions basées sur Debian comme Ubuntu et Debian.
Après de longues recherches, nous avons trouvé cet article récent, qui décrit le type d'installation que nous recherchions : Configurer Traefik en tant que service systemd.
Remarque : vous devez modifier les paramètres SELinux pour passer du mode « Enforcing » au mode « Permissive ».
Une fois encore, après avoir testé deux formations sur Udemy, nous avons trouvé cette excellente formation :
Traefik Crash Course (sans Docker)
Nous avons réussi à la faire fonctionner en reproduisant les exemples fournis.
Vers la fin de la vidéo, l'excellent formateur a exprimé son désaccord total avec cet outil :
Traefik Crash Course - 53:50 Résumé.
Cela nous a découragés de poursuivre les tests, ce qui nous a amenés à essayer autre chose.
NginX était le deuxième choix
Dans ce cas, l'installation a été plus simple, en utilisant YUM en bref :
yum install epel-release nginx nginx-mod-stream nginx-mod-mail
Remarque : dans SELinux, vous devez activer le relais :
setsebool -P httpd_can_network_relay 1
Pour cette formation, nous avons joué la carte de la sécurité en faisant appel au même formateur que lors du cours précédent :
Cours accéléré sur NginX (la première partie se termine au bout d'environ une heure et vingt minutes).
L'instructeur n'est d'ailleurs PAS convaincu par cette application, notamment par le fait qu'elle fait office à la fois de serveur web et de proxy inverse :
Cours accéléré sur NginX - 1:20:10 Résumé.
Le rapport se termine par « Je préfère HAProxy à NginX », nous avons donc décidé d'essayer HAProxy également.
Enfin, nous avons également testé HAProxy.
L'installation s'est avérée être un jeu d'enfant, car il s'agit d'une application très courante, disponible dans tous les gestionnaires de paquets Linux, par exemple : yum install haproxy
Nous avons également consulté notre guide de référence : HAProxy Crash Course.
Ça fonctionne, mais malheureusement, cela ne convient PAS à l'authentification SMTP :
« Il n'est pas possible de configurer HAProxy de cette manière, car HAProxy ne prend pas du tout en charge le protocole SMTP. »
– lukastribus a commenté le 17 août 2023
Un serveur SMTP standard utilisé comme proxy inverse
À ce stade, après deux semaines de tests, nous avons réalisé qu'
il valait mieux utiliser un serveur SMTP standard comme proxy inverse pour d'autres serveurs SMTP.
Il remplit sa fonction, en utilisant uniquement le protocole SMTP, authentifie correctement les connexions,
et peut transférer les requêtes vers d'autres serveurs SMTP via la fonction « smarhost ».
Dans Postfix, dans le fichier main.cf, comme suit :
relayhost = [adresse_du_smarthost]:port
Dans Sendmail, dans le fichier sendmail.mc, comme suit :
define(`SMART_HOST',`mail.example.com')