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:41:00 UTC
[jira] [Reopened] (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 reopened JAMES-3708:
-----------------------------------
> 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
> 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