[ 
https://issues.apache.org/jira/browse/CAMEL-3769?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen reassigned CAMEL-3769:
----------------------------------

    Assignee: Claus Ibsen

> Mail component issue with starttls option
> -----------------------------------------
>
>                 Key: CAMEL-3769
>                 URL: https://issues.apache.org/jira/browse/CAMEL-3769
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-mail
>    Affects Versions: 2.6.0
>            Reporter: Alfred Hiebl
>            Assignee: Claus Ibsen
>         Attachments: MailConfiguration.java
>
>
> The problem occurs when I read from a pop3 endpoint and send to an smtp 
> endpoint in the same camel context with the mail.pop3.starttls.enable=true 
> and mail.smtp.starttls.enable=true options.
> Required Java options for starttls are set:
> -Djavax.net.ssl.trustStore=D:\test\xxx.jks
> -Djavax.net.ssl.trustStorePassword=yyy
> When I only configure one of either route, everything works fine. When I 
> configure both, I get the following exception:
> AUTH LOGIN
> C: STAT
> 530 Must issue STARTTLS command first
> STARTTLS
> S: +OK 0 0
> C: NOOP
> 220 begin TLS negotiation
> S: +OK
> C: RSET
> S: +OK
> C: QUIT
> AUTH LOGIN
> S: +OK POP3 server closing connection
> 503 wrong state for AUTH command
> 2011-03-03 10:08:36,797 [foo] ERROR DefaultErrorHandler - Failed delivery for 
> exchangeId: ID-E6500-ahi-61446-1299143304838-0-2. Exhausted after delivery 
> attempt: 1 caught: org.springframework.mail.MailAuthenticationException: 
> Authentication failed; nested exception is 
> javax.mail.AuthenticationFailedException: 503 wrong state for AUTH command
> org.springframework.mail.MailAuthenticationException: Authentication failed; 
> nested exception is javax.mail.AuthenticationFailedException: 503 wrong state 
> for AUTH command
>         at 
> org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:392)[org.springframework.context.support-3.0.5.RELEASE.jar:3.0.5.RELEASE]
>         at 
> org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:340)[org.springframework.context.support-3.0.5.RELEASE.jar:3.0.5.RELEASE]
>         at 
> org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:355)[org.springframework.context.support-3.0.5.RELEASE.jar:3.0.5.RELEASE]
>         at 
> org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:344)[org.springframework.context.support-3.0.5.RELEASE.jar:3.0.5.RELEASE]
>         at 
> org.apache.camel.component.mail.MailProducer.process(MailProducer.java:44)[camel-mail-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:50)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:104)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:272)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:98)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:99)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:299)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:208)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:269)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.Pipeline.process(Pipeline.java:125)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.Pipeline.process(Pipeline.java:80)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:102)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.RoutePolicyProcessor.process(RoutePolicyProcessor.java:75)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:91)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:85)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:104)[camel-core-2.6.0.jar:2.6.0]
>         at 
> org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:49)[camel-core-2.6.0.jar:2.6.0]
>         at java.util.TimerThread.mainLoop(Unknown Source)[:1.5.0_22]
>         at java.util.TimerThread.run(Unknown Source)[:1.5.0_22]
> The problem seems to be in 
> org.apache.camel.component.mail.MailConfiguration.createJavaMailSender() 
> where it uses the same mail session for both connection; see 
> Session.getDefaultInstance below
>         if (session != null) {
>             answer.setSession(session);
>         } else {
>             // use our authenticator that does no live user interaction but 
> returns the already configured username and password
>             Session session;
>             try {
>                 session = 
> Session.getDefaultInstance(answer.getJavaMailProperties(), 
> getAuthenticator());
>             } catch (Throwable t) {
>                 // fallback as default instance may not be allowed on some 
> systems
>                 session = Session.getInstance(answer.getJavaMailProperties(), 
> getAuthenticator());
>             }
>             answer.setSession(session);
>         }
> This is because getDefaultInstance creates a Session object the first time it 
> is called. Then it caches that Session and returns it for all subsequent 
> calls. It also ignores the new and different properties for the second route.
> See also 
> http://camel.465427.n5.nabble.com/Mail-component-with-starttls-td3409505.html 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to