https://bugs.exim.org/show_bug.cgi?id=1974
Bug ID: 1974
Summary: Handle missing final CRLF in chunked/BDAT transferred
messages, resulting in a missing final LF in spool
files
Product: Exim
Version: 4.87
Hardware: x86
OS: Linux
Status: NEW
Severity: bug
Priority: medium
Component: Transports
Assignee: nigel@???
Reporter: hs@???
CC: exim-dev@???
Created attachment 938
-->
https://bugs.exim.org/attachment.cgi?id=938&action=edit
perl script to reproduce the missing newline bug for chunked data
Mail that arrives via the BDAT SMTP extension may miss the final newline.
Currently Exim spools the incoming data and doesn't append the final newline.
This causes transport problems to hosts that do not support CHUNKED
transportation, as the final DOT is sent as part of the very last line of the
spooled data.
Solutions:
a) silently fix the missing CRLF during message reception, as it
*should* be there.
From RFC1830:
particular, text messages sent with the BDAT command must be sent
in the canonical MIME format with lines delimited with a <CR><LF>.
It may not be possible to convert the entire message to the canonical
b) add an ACL verification, about this way
verify = bodyformat/final-crlf
c) just don't accept messages with a broken body format
d) fix it during forwarding of the message
Simple reproducer:
$ nc 0 587
EHLO ME
250-ssl.schlittermann.de Hello localhost [127.0.0.1]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250-AUTH PLAIN LOGIN
250-CHUNKING
250-STARTTLS
250 HELP
MAIL FROM:<>
250 OK
RCPT TO:<hs@???>
250 Accepted
BDAT 12
From: <ax>
250 12 byte chunk received
BDAT 3 LAST
abcQUIT
250- 3 byte chunk, total 17
250 OK id=1cDvwm-0000zH-L9
221 ssl.schlittermann.de closing connection
Another reproducer is the attached perl script.
--
You are receiving this mail because:
You are on the CC list for the bug.