Bonjour la liste, Nous sommes en train de 'rêver' à un joli reverse proxy pour les connexions IMAP, POP (hum) et SMTP avec du ssl offloading et toussa.
L'idéal serait que l'on puisse écouter sur (par exemple), le port 993 pour imap.domaine1.com, imap.domaine2.com, etc ... Le tout en présentant un certificat valide pour chaque domaine et ça, s'appelle SNI (RFC 6066 section 3). C'est une extension TLS donc indépendant du protocole.
Je prends les devants : nous ne souhaitons pas avec un gros certificat qui comprenne tous les vhosts.
SNI donc, on le fait déjà massivement en HTTP over SSL (aka HTTPS), tous les browser modernes le supportent.
Le soucis c'est déjà que l'on s'y est pris avec Nginx et ca semble pas vraiment supporté : impossible de déclarer deux vhosts qui écoutent sur le port 993, ca gère un conflit : nginx: [emerg] duplicate "993" address and port pair
Nginx tout frais : nginx version: nginx/1.13.6
Aucune doc là dessus chez Nginx, du coup la question : est-ce que quelqu'un a une trace d'un tel hack avec Nginx ? Quitte à regarder du côté d'un module 'custom' qu'on veut bien compiler, tester de debugger.
Sinon, Haproxy semble le faire et on investira le temps nécessaire à l'apprentissage.
Mais, question subsidiaire : je ne trouve aucune liste du support SNI par les clients IMAP ou SMTP ? C'est si exotique ce que l'on veut faire ? OK, il y a : https://wiki.dovecot.org/SSL/SNIClientSupport pour avoir une idée du support en IMAP.
Est-ce que quelqu'un s'est déjà lancé dans ça ? Avec du succès ou pas ?
Merci d'avance ! Julien
Bonjour,
Le 06/12/2017 à 17:04, Julien Escario a écrit :
Bonjour la liste, Nous sommes en train de 'rêver' à un joli reverse proxy pour les connexions IMAP, POP (hum) et SMTP avec du ssl offloading et toussa.
L'idéal serait que l'on puisse écouter sur (par exemple), le port 993 pour imap.domaine1.com, imap.domaine2.com, etc ... Le tout en présentant un certificat valide pour chaque domaine et ça, s'appelle SNI (RFC 6066 section 3). C'est une extension TLS donc indépendant du protocole.
Je prends les devants : nous ne souhaitons pas avec un gros certificat qui comprenne tous les vhosts.
SNI donc, on le fait déjà massivement en HTTP over SSL (aka HTTPS), tous les browser modernes le supportent.
Le soucis c'est déjà que l'on s'y est pris avec Nginx et ca semble pas vraiment supporté : impossible de déclarer deux vhosts qui écoutent sur le port 993, ca gère un conflit : nginx: [emerg] duplicate "993" address and port pair
Nginx tout frais : nginx version: nginx/1.13.6
Aucune doc là dessus chez Nginx, du coup la question : est-ce que quelqu'un a une trace d'un tel hack avec Nginx ? Quitte à regarder du côté d'un module 'custom' qu'on veut bien compiler, tester de debugger.
Sinon, Haproxy semble le faire et on investira le temps nécessaire à l'apprentissage.
Ça marche sur le port 443 mais pas sur le 993, c’est ça que tu nous dis ?
Mes vhosts ce sont des directives serveurs comme ça : server { listen 443 ssl http2 <servername>; listen [::]:443 ssl http2 <servername>; ssl_certificate /path/to/<servername>.crt; ssl_certificate_key /path/to/<servername>.key; }
J’aurais tendance à dire que la même chose avec 993 et pas en HTTP ça devrait fonctionner, mais j’ai jamais testé donc bon…
Vous voulez forcément mettre un reverse proxy devant ? Ça va pas si le serveur SMTP/IMAP le gère directement ?
Parce que…
Mais, question subsidiaire : je ne trouve aucune liste du support SNI par les clients IMAP ou SMTP ? C'est si exotique ce que l'on veut faire ? OK, il y a : https://wiki.dovecot.org/SSL/SNIClientSupport pour avoir une idée du support en IMAP.
Est-ce que quelqu'un s'est déjà lancé dans ça ? Avec du succès ou pas ?
… heureusement que ça fonctionne, oui ! Je fais du SNI avec Dovecot pour l’IMAP en effet, et avec OpenSMTPd pour le SMTP. Ça roule tout seul. :) Mes utilisateurs (dont moi) ont des clients principalement K-9 Mail et Thunderbird, mais il y a aussi du « Client Android par défaut » et du Apple Mail.
Bruno
Le 06/12/2017 à 17:32, Bruno Pagani a écrit :
Le 06/12/2017 à 17:04, Julien Escario a écrit :
Mais, question subsidiaire : je ne trouve aucune liste du support SNI par les clients IMAP ou SMTP ? C'est si exotique ce que l'on veut faire ? OK, il y a : https://wiki.dovecot.org/SSL/SNIClientSupport pour avoir une idée du support en IMAP.
Est-ce que quelqu'un s'est déjà lancé dans ça ? Avec du succès ou pas ?
Ah et pour Dovecot, la conf SNI c’est aussi simple que ça: https://wiki.dovecot.org/SSL/DovecotConfiguration#With_client_TLS_SNI_.28Ser...
Le 06/12/2017 à 17:32, Bruno Pagani a écrit :
Mes vhosts ce sont des directives serveurs comme ça : server { listen 443 ssl http2 <servername>; listen [::]:443 ssl http2 <servername>; ssl_certificate /path/to/<servername>.crt; ssl_certificate_key /path/to/<servername>.key; }
J’aurais tendance à dire que la même chose avec 993 et pas en HTTP ça devrait fonctionner, mais j’ai jamais testé donc bon…
Et en fait non : la réponse est effectivement que nginx ne supporte pas le SNI en mail proxy (la directive /listen/ n’accepte pas d’argument <servername>). En 2013–2014, certains se sont posé la question, et la réponse de l’époque c’est que ça n’était pas à l’ordre du jour : https://forum.nginx.org/read.php?2,237967,237967#msg-237967 (plus lisible ici cela dit: https://www.ruby-forum.com/topic/4412511)
Je suppose que les choses n’ont pas évolué depuis. Bonne config de HAProxy !
Bruno
Le 06/12/2017 à 18:13, Bruno Pagani a écrit :
Le 06/12/2017 à 17:32, Bruno Pagani a écrit :
Mes vhosts ce sont des directives serveurs comme ça : server { listen 443 ssl http2 <servername>; listen [::]:443 ssl http2 <servername>; ssl_certificate /path/to/<servername>.crt; ssl_certificate_key /path/to/<servername>.key; }
J’aurais tendance à dire que la même chose avec 993 et pas en HTTP ça devrait fonctionner, mais j’ai jamais testé donc bon…
Et en fait non : la réponse est effectivement que nginx ne supporte pas le SNI en mail proxy (la directive /listen/ n’accepte pas d’argument <servername>). En 2013–2014, certains se sont posé la question, et la réponse de l’époque c’est que ça n’était pas à l’ordre du jour : https://forum.nginx.org/read.php?2,237967,237967#msg-237967 (plus lisible ici cela dit: https://www.ruby-forum.com/topic/4412511)
OK, clair net et précis : no-go :-( Le petit espoir que la situation aie changée depuis vient de s'éteindre dans un râle d'agonie.
Je suppose que les choses n’ont pas évolué depuis. Bonne config de HAProxy !
C'est parti ;-)
Merci, Julien
nginx est un serveur http, à la base...
Fortinet a un load balancer (FortiADC) qui fait du SSL offload et supporte SNI.
Ca existe au format virtuel.
my 2 cents
Le 06/12/2017 à 17:04, Julien Escario a écrit :
Bonjour la liste, Nous sommes en train de 'rêver' à un joli reverse proxy pour les connexions IMAP, POP (hum) et SMTP avec du ssl offloading et toussa.
L'idéal serait que l'on puisse écouter sur (par exemple), le port 993 pour imap.domaine1.com, imap.domaine2.com, etc ... Le tout en présentant un certificat valide pour chaque domaine et ça, s'appelle SNI (RFC 6066 section 3). C'est une extension TLS donc indépendant du protocole.
Je prends les devants : nous ne souhaitons pas avec un gros certificat qui comprenne tous les vhosts.
SNI donc, on le fait déjà massivement en HTTP over SSL (aka HTTPS), tous les browser modernes le supportent.
Le soucis c'est déjà que l'on s'y est pris avec Nginx et ca semble pas vraiment supporté : impossible de déclarer deux vhosts qui écoutent sur le port 993, ca gère un conflit : nginx: [emerg] duplicate "993" address and port pair
Nginx tout frais : nginx version: nginx/1.13.6
Aucune doc là dessus chez Nginx, du coup la question : est-ce que quelqu'un a une trace d'un tel hack avec Nginx ? Quitte à regarder du côté d'un module 'custom' qu'on veut bien compiler, tester de debugger.
Sinon, Haproxy semble le faire et on investira le temps nécessaire à l'apprentissage.
Mais, question subsidiaire : je ne trouve aucune liste du support SNI par les clients IMAP ou SMTP ? C'est si exotique ce que l'on veut faire ? OK, il y a : https://wiki.dovecot.org/SSL/SNIClientSupport pour avoir une idée du support en IMAP.
Est-ce que quelqu'un s'est déjà lancé dans ça ? Avec du succès ou pas ?
Merci d'avance ! Julien _______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
Le 06/12/2017 à 17:44, Guillaume Tournat a écrit :
nginx est un serveur http, à la base...
C'est négliger un peu vite ça quand même : http://nginx.org/en/docs/mail/ngx_mail_core_module.html OK, ce n'est pas 'coeur' de métier pour Nginx mais l'idée c'est aussi de ne pas multiplier les produits (et les compétences).
Fortinet a un load balancer (FortiADC) qui fait du SSL offload et supporte SNI.
Ca existe au format virtuel.
Une boite noire, très peu pour moi. J'aime autant investir du temps pour maîtriser HAProxy.
Julien
Bonsoir,
Je pense qu'il faut plutôt regarder HaProxy que j'utilise comme redirection de flux(dernière un NAT) sur le port 943.
--- Cordialement,
Antoine Nivard.
Le 06-12-2017 17:59, Julien Escario a écrit :
Le 06/12/2017 à 17:44, Guillaume Tournat a écrit :
nginx est un serveur http, à la base...
C'est négliger un peu vite ça quand même : http://nginx.org/en/docs/mail/ngx_mail_core_module.html OK, ce n'est pas 'coeur' de métier pour Nginx mais l'idée c'est aussi de ne pas multiplier les produits (et les compétences).
Fortinet a un load balancer (FortiADC) qui fait du SSL offload et supporte SNI.
Ca existe au format virtuel.
Une boite noire, très peu pour moi. J'aime autant investir du temps pour maîtriser HAProxy.
Julien _______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
Pour ma part, j'ai testé 1/ Perdition comme ReverseProxy POP/IMAP. c'est pas mal du tout. très léger. Cela gère un backend fichier(avec regex) ou Mysql. Il gère le TLS. (à voir si le SNI est supporté) 2/ Dovecot en Proxy IMAP/POP. Le backend se fait avec Mysql avec une bonne gestion du cache pour éviter les surcharges. sur la liste, j'ai lu que Dovecot gere le SNI peut-être ta solution ?