I'm not convinced that this is being caused by Cyrus. Here a snippit of the code which produces the vacation response. As you can see, there is no extra CRLF after the Message-ID (or before Date).
I further tracked down the empty line. Seems like something is going wrong with the line termination.
I configured Exim to deliver using LMTP over TCP/IP instead of using a socket:
-- exim.conf: local_lmtp: driver = smtp protocol = lmtp service = lmtp hosts = localhost hosts_override gethostbyname allow_localhost
-- cyrus.conf: lmtp cmd="lmtpd -a" listen="lmtp" prefork=0 # lmtpunix cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=0
Then I attached tcpdump/ethereal to the loopback interface. The communication between Exim and Cyrus is shown below.
The lines up to and including "Received: ... +0200" are terminated using \r\n. The following lines are terminated using \r\r\n.
220 ente.berdmann.de LMTP Cyrus v2.1.13 ready LHLO ente.berdmann.de 250-ente.berdmann.de 250-8BITMIME 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-SIZE 250-AUTH EXTERNAL 250 IGNOREQUOTA MAIL FROM:<> SIZE=3054 RCPT TO:<[EMAIL PROTECTED]> DATA 250 2.1.0 ok 250 2.1.5 ok 354 go ahead Received: from cyrus by ente.berdmann.de with local (Exim 3.36 #1) id 19dwYQ-0000uw-00 for [EMAIL PROTECTED]; Sat, 19 Jul 2003 20:35:34 +0200 Message-ID: <[EMAIL PROTECTED]> Date: Sat, 19 Jul 2003 20:35:34 +0200 X-Sieve: CMU Sieve 2.2 From: Mail Sieve Subsystem <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> MIME-Version: 1.0 Content-Type: multipart/report; report-type=disposition-notification; boundary="3529/ente.berdmann.de" Subject: Automatically rejected mail Auto-Submitted: auto-replied (rejected) [...]