Benoit Tellier created JAMES-4132:
-------------------------------------
Summary: Incoming SMTP: limit header size
Key: JAMES-4132
URL: https://issues.apache.org/jira/browse/JAMES-4132
Project: James Server
Issue Type: Improvement
Components: SMTPServer
Affects Versions: master
Reporter: Benoit Tellier
Fix For: 3.9.0
h3. Context
The processing of large amounts of header is known to cause prolems in the mail
community
CF https://www.cve.org/CVERecord?id=CVE-2024-23184
Processing 500.000 headers can result in 32s delays in earlier versions of
Dovecot.
Apache james do not limit header size prior processing.
Apache James is significantly more efficient handling large amounts of header
and we were able to process 10MB emails of only headers in a subsecond fashion.
Yet offering options for limiting received header sizes would be an appreciable
feature.
h3. How ?
I would like the James project to ship tools to enforce protective measures and
be able to enforce a configurable maximim size of headers of incoming emails.
Say 64KB. We can also limit the count of headers. 500 seems like a common
practice.
I propose to implement a EnforceHeaderLimitationsMessageHook implementing
JamesMessageHook within
server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver.
Example setup:
{code:java}
<smtpservers>
<smtpserver enabled="true">
<handlerchain>
<handler
class="org.apache.james.smtpserver.EnforceHeaderLimitationsMessageHook">
<maxLines>500</maxLines>
<maxSize>64KB</maxSize>
</handler>
<handler class="org.apache.james.smtpserver.CoreCmdHandlerLoader"/>
</handlerchain>
</smtpserver>
</smtpservers>
{code}
Iterate all header lines and verify the two aforementionned limits.
If not exceeded DECLINE will allow keep processing the mail.
If exceeded reject the mail:
{code:java}
552 Too many header lines
552 Header size too large
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]