You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by "Benoit Tellier (Jira)" <se...@james.apache.org> on 2022/05/05 03:42:00 UTC

[jira] [Updated] (JAMES-3708) NPE in remote delivery

     [ 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..b@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org