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 |
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
Assigned to Michael Slusarz
State ⇒ Resolved
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
Priority ⇒ 2. Medium
Patch ⇒ No
Milestone ⇒
Queue ⇒ Horde Framework Packages
Summary ⇒ Horde SMTP sends empty EMail if PIPELINING is used...
Type ⇒ Bug
State ⇒ Unconfirmed
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