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

Benoit Tellier updated JAMES-3708:
----------------------------------
    Fix Version/s: 3.7.0

> NPE in remote delivery
> ----------------------
>
>                 Key: JAMES-3708
>                 URL: https://issues.apache.org/jira/browse/JAMES-3708
>             Project: James Server
>          Issue Type: Bug
>          Components: James Core, Remote Delivery
>    Affects Versions: master
>            Reporter: Benoit Tellier
>            Priority: Major
>             Fix For: 3.7.0
>
>          Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> h2. What
> {code:java}
> 14:18:14.713 [ERROR] o.a.j.t.m.r.d.MailDelivrer - Generic exception = 
> permanent failure: null
> java.lang.NullPointerException: null
>       at 
> com.google.common.base.Preconditions.checkNotNull(Preconditions.java:889)
>       at 
> com.google.common.collect.ImmutableSet$Builder.add(ImmutableSet.java:517)
>       at 
> java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
>       at 
> java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
>       at java.base/java.util.Collections$2.tryAdvance(Collections.java:4747)
>       at 
> java.base/java.util.Collections$2.forEachRemaining(Collections.java:4755)
>       at 
> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
>       at 
> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
>       at 
> java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
>       at 
> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>       at 
> java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
>       at 
> org.apache.james.transport.mailets.remote.delivery.InternetAddressConverter.convert(InternetAddressConverter.java:36)
>       at 
> org.apache.james.transport.mailets.remote.delivery.MailDelivrer.tryDeliver(MailDelivrer.java:118)
>       at 
> org.apache.james.transport.mailets.remote.delivery.MailDelivrer.deliver(MailDelivrer.java:87)
>       at 
> org.apache.james.transport.mailets.remote.delivery.DeliveryRunnable.attemptDelivery(DeliveryRunnable.java:146)
>       at 
> org.apache.james.transport.mailets.remote.delivery.DeliveryRunnable.lambda$processMail$3(DeliveryRunnable.java:123)
>       at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:57)
>       at reactor.core.publisher.Mono.subscribe(Mono.java:4400)
>       at 
> reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.run(MonoSubscribeOn.java:126)
>       at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
>       at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
>       at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>       at 
> java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
>       at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>       at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>       at java.base/java.lang.Thread.run(Thread.java:829)
> {code}
> h2. Why ?
> Due to too relaxed parsing rules in MailAdress we end up accepting invalid 
> email addresses as part of incoming SMTP addresses.
> Example:
> {code:java}
> a...@domain.com
> a@#b.com
> a\.@b.com
> {code}
> However javax.mail is not able to work with such addresses.
> This is problematic when:
>   - We compose a message based on SMTP envelope (eg: bounces)
>   - We rely on javax mail when we send emails to remote SMTP servers (remote 
> delivery)
> h2. Proposed solution
> Stricter parsing in MailAddress POJO. Reject those invalid addresses that we 
> don't know how to handle.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to