From e8f03bb5cf81a8d72aa9c61454c58431be3d9985 Mon Sep 17 00:00:00 2001
From: Benoit Lavenier <benoit.lavenier@e-is.pro>
Date: Mon, 16 May 2022 14:50:21 +0200
Subject: [PATCH] [fix] Upgrade JavaMail to 1.6.7, to fix startTtl issue (error
 "No appropriate protocol (protocol is disabled or cipher suites are
 inappropriate)")

---
 duniter4j-core-shared/pom.xml                       |  8 ++++++--
 .../org/duniter/core/service/MailServiceImpl.java   |  6 ++++++
 .../src/test/resources/disabled_tlsv1.properties    |  1 +
 pom.xml                                             | 13 ++++++++++---
 4 files changed, 23 insertions(+), 5 deletions(-)
 create mode 100644 duniter4j-core-shared/src/test/resources/disabled_tlsv1.properties

diff --git a/duniter4j-core-shared/pom.xml b/duniter4j-core-shared/pom.xml
index 99e919fd..ed6782c2 100644
--- a/duniter4j-core-shared/pom.xml
+++ b/duniter4j-core-shared/pom.xml
@@ -83,8 +83,12 @@
 
     </dependency>
     <dependency>
-      <groupId>javax.mail</groupId>
-      <artifactId>mail</artifactId>
+      <groupId>jakarta.mail</groupId>
+      <artifactId>jakarta.mail-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.sun.mail</groupId>
+      <artifactId>jakarta.mail</artifactId>
     </dependency>
 
     <!-- Unit test -->
diff --git a/duniter4j-core-shared/src/main/java/org/duniter/core/service/MailServiceImpl.java b/duniter4j-core-shared/src/main/java/org/duniter/core/service/MailServiceImpl.java
index f6fd0ace..5c177176 100644
--- a/duniter4j-core-shared/src/main/java/org/duniter/core/service/MailServiceImpl.java
+++ b/duniter4j-core-shared/src/main/java/org/duniter/core/service/MailServiceImpl.java
@@ -28,6 +28,8 @@ import org.duniter.core.model.SmtpConfig;
 import org.duniter.core.util.CollectionUtils;
 import org.duniter.core.util.Preconditions;
 import org.duniter.core.util.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import javax.activation.CommandMap;
 import javax.activation.MailcapCommandMap;
@@ -41,6 +43,7 @@ import java.util.stream.Collectors;
 
 public class MailServiceImpl implements MailService, Closeable {
 
+    private static Logger log = LoggerFactory.getLogger(MailServiceImpl.class);
     private SmtpConfig smtpConfig;
     private static Session session;
     private static Transport transport;
@@ -280,6 +283,9 @@ public class MailServiceImpl implements MailService, Closeable {
         if (config.isStartTLS()) {
             props.put("mail.smtp.starttls.enable", "true");
         }
+        if (log.isDebugEnabled()) {
+            props.put("mail.debug", "true");
+        }
 
         boolean useAuth = false;
         // auto set authentification if smtp user name is provided
diff --git a/duniter4j-core-shared/src/test/resources/disabled_tlsv1.properties b/duniter4j-core-shared/src/test/resources/disabled_tlsv1.properties
new file mode 100644
index 00000000..8938070f
--- /dev/null
+++ b/duniter4j-core-shared/src/test/resources/disabled_tlsv1.properties
@@ -0,0 +1 @@
+jdk.tls.disabledAlgorithms=MD5withRSA, DH keySize < 768,TLSv1,TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_RC4_128_MD5,TLS_RSA_WITH_RC4_128_SHA
diff --git a/pom.xml b/pom.xml
index 417cac1c..ed1b9295 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,6 +43,7 @@
     <!-- UI versions -->
     <spring.version>4.2.1.RELEASE</spring.version>
     <aspectj.version>1.8.7</aspectj.version>
+    <javaMail.version>1.6.7</javaMail.version>
 
     <!-- Unit test -->
     <junit.version>4.12</junit.version>
@@ -223,9 +224,15 @@
         <version>2.6</version>
       </dependency>
       <dependency>
-        <groupId>javax.mail</groupId>
-        <artifactId>mail</artifactId>
-        <version>1.4.7</version>
+        <groupId>jakarta.mail</groupId>
+        <artifactId>jakarta.mail-api</artifactId>
+        <version>${javaMail.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>com.sun.mail</groupId>
+        <artifactId>jakarta.mail</artifactId>
+        <version>${javaMail.version}</version>
+        <scope>provided</scope>
       </dependency>
       <dependency>
         <groupId>org.apache.commons</groupId>
-- 
GitLab