Bonjour,
Suite a une grosse mise à jour de notre pool de serveur et changement de notre serveur mail.
J'ai rencontré de gros soucis avec javaMail.

Les servers de prod sont sous windows 2012, avec tomcat 9 et java 8
Chaque appli web a ses propres librairies, pour divers raisons mais du coup java mail n'est pas centralisé.
Avant j'utilisait javamail 1.4.1 j'ai jamais senti l'obligation d'augmenter de version car il repondait vite.
Hors j'ai eu besoin d'upgrader la version de celle-ci car notre nouveau serveur de mail fonctionne en SMTP + TLS.

Sur mon poste de dev : avant avec l'ancienne lib 1.4.1 et sur l'ancien serveur mail (sans TLS donc ) un mail de type hello world partait environ en 220 ms, il est passer a 330 ms avec javamail 1.5.6 (même chose avec 1.5.1)
Sur le nouveau serveur mail avec le TLS je me retrouve a 525 ms, ce qui est beaucoup je trouve

La ou ça devient dérangeant est sur le nouveau serveur de prod avec l'ancienne librairie et sans TLS j'était a 300 ms environ pour le même profil de mail.
Mais je suis passé avec la nouvelle lib a 10 000 ms, après de longue recherche on s'est rendus compte que c'était le InetAddress et surtout getCanonicalHostName qui déconnait et prenait plus de 9 secondes , on a découvert que le serveur renvoyait l'ip de la seconde carte réseau au lieu de la principal, mais ce point a pu être corrigé de 2 façon : arretter la seconde carte réseau et mettre le nom du serveur dans mail.smtp.localhost des propriétés de session de javamail.
Mais même avec ses changements un mail sans TLS part en 545 ms, perte de 200 ms entre javamail 1.4.1 et 1.5.1

Maintenant cela se corse avec le TLS activé sur le nouveau serveur , la génération du MailSSLSocketFactory prend 600 ms et l'envoie de l'email 500 ms de plus, arrivant a 1 100 ms a peu pres avec les variation ( de 900 ms a 1500 ms).


Je doit préciser que le nouveau serveur mail en TLS utilise un certificat auto-signé étant qu'a l'utilisation interne de ma société on a pas trouvé d'interet a prendre une clé vérifié.
donc lors de la création du MailSSLSocketFactory je fais ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
        try{
 
             MailSSLSocketFactory sf = new MailSSLSocketFactory();
             sf.setTrustAllHosts(true); 
             mavar.MYSSLFACTORY=sf;
         }catch(Exception ex){
              ex.printStackTrace();
         }
J'aimerais savoir d'ou vienne mes soucis car j'ai trouvé quasiment aucune information sur le net pouvant m'aider a résoudre le soucis et si il y a un moyen d'améliorer le temps de réponse du serveur.

Question supplémentaire : Peut on définir MailSSLSocketFactory au démarrage d'une appli ? ou faut il le renouveller fréquement ?




PS : J'aurais du mal a répondre la semaine prochaine cause de déplacement, si une réponse arrive et je vous en remercie d'avance