Add config support for 'verifyingServerIdentity' with SMTP, also: since Angus 1.1.0 (8.6.0) server identity checks are on by default and can be countered by `mailerBuilder.verifyingServerIdentity(false)`
Starting from version 8.6.0 everything stopped working.
My config (Kotlin):
private fun connectMailBuilder() {
mailBuilder = MailerBuilder
.withSMTPServer(
System.getenv("POSTFIX_HOST"),
25,
System.getenv("POSTFIX_USER"),
System.getenv("POSTFIX_PASSWORD")
)
.withProperty("mail.smtp.ssl.enable", false)
.withDebugLogging(false)
.async()
pooledMailer = mailBuilder
.withConnectionPoolCoreSize(1)
.withConnectionPoolMaxSize(2)
.withConnectionPoolClaimTimeoutMillis(1)
.withConnectionPoolExpireAfterMillis(59000)
.withTransportModeLoggingOnly(false)
.buildMailer()
connect.set(true)
}
When trying to connect I started getting this error:
Exception in thread "pool-1-thread-1" org.simplejavamail.smtpconnectionpool.TransportHandlingException: Error when trying to open connection to the server, session:
{mail.smtp.user=utp1-postfix, mail.smtp.ssl.trust=*, mail.smtp.port=25, mail.smtp.auth=true, mail.smtp.starttls.enable=true, mail.smtp.host=00.000.000.000, simplejavamail.transportstrategy=SMTP, mail.smtp.ssl.enable=false, mail.smtp.connectiontimeout=60000, mail.transport.protocol=smtp, mail.smtp.writetimeout=60000, mail.smtp.starttls.required=false, mail.smtp.timeout=60000, SESSION_BASED_EMAIL_TO_MIME_MESSAGE_CONVERTER_KEY=SessionBasedEmailToMimeMessageConverter(session=jakarta.mail.Session@592a514a, operationalConfig=OperationalConfigImpl(async=true, properties={mail.smtp.ssl.enable=false}, sessionTimeout=60000, threadPoolSize=10, threadPoolKeepAliveTime=1, clusterKey=70f8eadc-ebaa-4bee-a059-c7c69049f7d9, connectionPoolCoreSize=1, connectionPoolMaxSize=2, connectionPoolClaimTimeoutMillis=1, connectionPoolExpireAfterMillis=59000, connectionPoolLoadBalancingStrategy=ROUND_ROBIN, transportModeLoggingOnly=false, debugLogging=false, disableAllClientValidation=false, sslHostsToTrust=[], trustAllSSLHost=true, verifyingServerIdentity=true, executorService=org.simplejavamail.internal.batchsupport.concurrent.NonJvmBlockingThreadPoolExecutor@5c29bb95[Running, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0], executorServiceIsUserProvided=false, customMailer=null), emailGovernance=EmailGovernanceImpl(emailValidator=EmailValidator[validationRuleCount=3], emailDefaults=Email{
id=null
sentDate=null
fromRecipient=null,
replyToRecipients=[],
bounceToRecipient=null,
text='null',
textHTML='null',
textCalendar='null (method: null)',
contentTransferEncoding='quoted-printable',
subject='null',
recipients=[]
}, emailOverrides=Email{
id=null
sentDate=null
fromRecipient=null,
replyToRecipients=[],
bounceToRecipient=null,
text='null',
textHTML='null',
textCalendar='null (method: null)',
contentTransferEncoding='quoted-printable',
subject='null',
recipients=[]
}, maximumEmailSize=null))}
at org.simplejavamail.smtpconnectionpool.TransportAllocator.connectTransport(TransportAllocator.java:73)
at org.simplejavamail.smtpconnectionpool.TransportAllocator.allocate(TransportAllocator.java:45)
at org.simplejavamail.smtpconnectionpool.TransportAllocator.allocate(TransportAllocator.java:28)
at org.bbottema.genericobjectpool.GenericObjectPool$AutoAllocatorDeallocator.allocatedCorePoolAndDeallocateOneOrPlanDeallocations(GenericObjectPool.java:266)
at org.bbottema.genericobjectpool.GenericObjectPool$AutoAllocatorDeallocator.run(GenericObjectPool.java:256)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: jakarta.mail.MessagingException: Could not convert socket to TLS;
nested exception is:
java.io.IOException: Can't verify identity of server: 00.000.000.000
at org.eclipse.angus.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:2173)
at org.eclipse.angus.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:741)
at jakarta.mail.Service.connect(Service.java:367)
at jakarta.mail.Service.connect(Service.java:225)
at jakarta.mail.Service.connect(Service.java:174)
at org.simplejavamail.smtpconnectionpool.TransportAllocator.connectTransport(TransportAllocator.java:70)
... 5 more
Caused by: java.io.IOException: Can't verify identity of server: 00.000.000.000
at org.eclipse.angus.mail.util.SocketFetcher.checkServerIdentity(SocketFetcher.java:699)
at org.eclipse.angus.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:636)
at org.eclipse.angus.mail.util.SocketFetcher.startTLS(SocketFetcher.java:555)
at org.eclipse.angus.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:2168)
... 10 more
Before this everything worked without errors. I deliberately replaced the IP address with zeros - that’s my real address.
What has changed with the 8.6.0 release, and what configurations need to be changed to continue to benefit from the latest updates and improvements?
Thank you!