You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mailet-api@james.apache.org by "Benoit Tellier (Jira)" <ma...@james.apache.org> on 2020/04/28 06:10:00 UTC
[jira] [Created] (MAILET-166) AutomaticSentMail detector should not
fail for mails of more than one MB
Benoit Tellier created MAILET-166:
-------------------------------------
Summary: AutomaticSentMail detector should not fail for mails of more than one MB
Key: MAILET-166
URL: https://issues.apache.org/jira/browse/MAILET-166
Project: James Mailet
Issue Type: Improvement
Components: Base Mailets
Affects Versions: 3.5.0
Reporter: Benoit Tellier
Fix For: 3.6.0
We encountered the following error:
{code:java}
java.io.IOException: Input stream limit exceeded
at org.apache.james.mime4j.io.LimitedInputStream.enforceLimit(LimitedInputStream.java:39)
at org.apache.james.mime4j.io.LimitedInputStream.read(LimitedInputStream.java:51)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at org.apache.james.mime4j.stream.MimeEntity.advanceToBoundary(MimeEntity.java:393)
...
Wrapped by: javax.mail.MessagingException: Can not read content
at org.apache.mailet.base.AutomaticallySentMailDetectorImpl.isMdnSentAutomatically(AutomaticallySentMailDetectorImpl.java:107)
at org.apache.mailet.base.AutomaticallySentMailDetectorImpl.isAutomaticallySent(AutomaticallySentMailDetectorImpl.java:54)
at org.apache.james.jmap.mailet.VacationMailet.service(VacationMailet.java:72)
at org.apache.james.mailetcontainer.impl.camel.CamelProcessor.process(CamelProcessor.java:75)
at org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor$MailetContainerRouteBuilder.handleMailet(CamelMailetProcessor.java:176)
at org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor$MailetContainerRouteBuilder.lambda$configure$0(CamelMailetProcessor.java:153)
at org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)
{code}
Vacation mailet calls AutomaticallySentMailDetector
AutomaticallySentMailDetectorImpl::isMdnSentAutomatically do calls MDN parsing.
```
@Override
public boolean isAutomaticallySent(Mail mail) throws MessagingException {
return !mail.hasSender() ||
isMailingList(mail) ||
isAutoSubmitted(mail) ||
isMdnSentAutomatically(mail);
}
```
And...
```
@Override
public boolean isMdnSentAutomatically(Mail mail) throws MessagingException {
ResultCollector resultCollector = new ResultCollector(false);
MimeStreamParser parser = new MimeStreamParser(MimeConfig.custom()
.setMaxContentLen(1024 * 1024) // there's no reason for a mdn report to be bigger than 1MiB
.setMaxHeaderCount(-1)
.setMaxHeaderLen(-1)
.setMaxLineLen(-1)
.setHeadlessParsing(mail.getMessage().getContentType())
.build());
parser.setContentHandler(createMdnContentHandler(resultCollector));
try {
parser.parse(mail.getMessage().getInputStream());
} catch (MimeException e) {
throw new MessagingException("Can not parse Mime", e);
} catch (IOException e) {
throw new MessagingException("Can not read content", e);
}
return resultCollector.getResult();
}
```
I see a pretty good reason for an MDN mail to be bigger than 1Mb ;-)
So in short, please:
- Write an integration test showing that vacation do not work for a mail bigger than one MB
- Fix it!
--
This message was sent by Atlassian Jira
(v8.3.4#803005)