6.0.0-beta1
7/19/25

[#12659] Horde SMTP sends empty EMail if PIPELINING is used...
Summary Horde SMTP sends empty EMail if PIPELINING is used...
Queue Horde Framework Packages
Queue Version Git master
Type Bug
State Resolved
Priority 2. Medium
Owners slusarz (at) horde (dot) org
Requester wbreyha (at) gmx (dot) net
Created 09/05/2013 (4335 days ago)
Due
Updated 12/17/2013 (4232 days ago)
Assigned
Resolved 09/05/2013 (4335 days ago)
Github Issue Link
Github Pull Request
Milestone
Patch No

History
12/17/2013 11:35:51 AM Git Commit Comment #4 Reply to this comment
Changes have been made in Git (master):

commit 1c5aa652d33512965a3b6a02ba407e5214a7edbd
Author: Michael M Slusarz <slusarz@horde.org>
Date:   Thu Sep 5 10:41:43 2013 -0600

     [mms] Fix aborting a pipelined DATA command if only a subset of 
recipients were rejected (Bug #12659).

     See: http://www.imc.org/ietf-smtp/mail-archive/msg02687.html

     The RFC 2920 text is a bit vague.  Servers must issue a 554 if ALL
     recipients are rejected.  This might not happen until after the DATA
     command is sent though (which is why we were sending empty DATA data).
     Unfortunately, *partial* rejection of recipients will NOT abort the DATA
     command. Since we don't pre-verify mail recipients, we want to catch the
     case if ANY recipients are bad, since the user generally is expecting
     that all e-mail addresses provided will have the message sent to.  This
     means we can't pipeline DATA.

  framework/Smtp/lib/Horde/Smtp.php |   49 
++++++++++++++++++-------------------
  framework/Smtp/package.xml        |    2 +
  2 files changed, 26 insertions(+), 25 deletions(-)

http://git.horde.org/horde-git/-/commit/1c5aa652d33512965a3b6a02ba407e5214a7edbd
09/05/2013 04:55:47 PM Michael Slusarz Comment #3
Assigned to Michael Slusarz
State ⇒ Resolved
Reply to this comment
Horde_Smtp 1.2.2.
09/05/2013 04:55:37 PM Git Commit Comment #2 Reply to this comment
Changes have been made in Git (master):

commit aca52bf6d1e07b04ec77d6bb61af8e5a6111c192
Author: Michael M Slusarz <slusarz@horde.org>
Date:   Thu Sep 5 10:41:43 2013 -0600

     [mms] Fix aborting a pipelined DATA command if only a subset of 
recipients were rejected (Bug #12659).

     See: http://www.imc.org/ietf-smtp/mail-archive/msg02687.html

     The RFC 2920 text is a bit vague.  Servers must issue a 554 if ALL
     recipients are rejected.  This might not happen until after the DATA
     command is sent though (which is why we were sending empty DATA data).
     Unfortunately, *partial* rejection of recipients will NOT abort the DATA
     command. Since we don't pre-verify mail recipients, we want to catch the
     case if ANY recipients are bad, since the user generally is expecting
     that all e-mail addresses provided will have the message sent to.  This
     means we can't pipeline DATA.

  framework/Smtp/lib/Horde/Smtp.php |   49 
++++++++++++++++++-------------------
  framework/Smtp/package.xml        |    2 +
  2 files changed, 26 insertions(+), 25 deletions(-)

http://git.horde.org/horde-git/-/commit/aca52bf6d1e07b04ec77d6bb61af8e5a6111c192
09/05/2013 03:45:26 PM wbreyha (at) gmx (dot) net Comment #1
Priority ⇒ 2. Medium
Patch ⇒ No
Milestone ⇒
Queue ⇒ Horde Framework Packages
Summary ⇒ Horde SMTP sends empty EMail if PIPELINING is used...
Type ⇒ Bug
State ⇒ Unconfirmed
Reply to this comment
Hi!

We have Horde Webmail Edition 5.1.2 running. Today someone triggered 
the following bug....

Prerequisits: SMTP Server announcing PIPELINING

Write an Email and set one correct recipient and one which the SMTP 
Server will reject with "user unknown" or other 550 error code. Then 
send the EMail. The correct recipient will get an empty EMail.

Why... in Horde/Smtp.php::482ff you send all recipients and the final 
DATA together as usual with PIPELINING active. But then you catch the 
errors for the recipients. If there was an error on one recipient you 
do not send the body at line 519ff. But since there was one correct 
recipient the mailserver already responded with "354 send message 
body". Finally you send the "." without body and say QUIT. The empty 
EMail gets out to all correct recipients.

A first workarround would be to not use PIPELINING at all for 
submissions. Using PIPELINING makes it impossible to warn the user 
without sending the message to all correct recipients.

With kind regards,
Wolfgang Breyha

Saved Queries