Summary | Ingo Procmail vacation rules bug |
Queue | Ingo |
Queue Version | 1.2.3 |
Type | Bug |
State | Resolved |
Priority | 1. Low |
Owners | jan (at) horde (dot) org |
Requester | rene.plattner (at) uibk (dot) ac (dot) at |
Created | 04/22/2010 (5525 days ago) |
Due | 04/30/2010 (5517 days ago) |
Updated | 08/07/2010 (5418 days ago) |
Assigned | |
Resolved | 08/07/2010 (5418 days ago) |
Github Issue Link | |
Github Pull Request | |
Milestone | 1.2.5 |
Patch | No |
Fix procmail vacation rule if no dates are set (Gaudenz Steinlin
<gaudenz@debian.org>,
Bug #8982).http://git.horde.org/diff.php/ingo/docs/CHANGES?rt=horde-git&r1=ac2de5be025256de7a2eec40b1662ed0e9c87699&r2=cda18fe5401fff1daa9b11675c51062fea1dcca0
http://git.horde.org/diff.php/ingo/lib/Script/Procmail/Recipe.php?rt=horde-git&r1=c4232e3d4d98929909c02900d62a188479d4eccd&r2=cda18fe5401fff1daa9b11675c51062fea1dcca0
Assigned to Jan Schneider
State ⇒ Resolved
Milestone ⇒
[jan] Fix procmail vacation rule if no dates are set (Gaudenz Steinlin
<gaudenz@debian.org>,
Bug #9134).http://cvs.horde.org/diff.php/ingo/docs/CHANGES?rt=horde&r1=1.55.2.144&r2=1.55.2.145&ty=u
http://cvs.horde.org/diff.php/ingo/lib/Script/procmail.php?rt=horde&r1=1.46.10.35&r2=1.46.10.36&ty=u
New Attachment: ingo_procmail_vacation_nodate_fix.patch
can confirm that the patch the original submitter added in the bug
text works. I have attached the same patch as an attachment in case
this is more convenient to integrate.
delivery of mails.
So I decided to block the rule as the date rule version.
auto-reply is triggered normal delivery is not completed.
But the fix is much easier. There's just a missing "c" on the rule
that actually sends the reply; we need procmail to reply to a copy of
the message so that it continues rather than stopping after the reply
is sent.
So the code should be:
$this->_action[] = ' | formail -rD 8192
${VACATION_DIR:-.}/.vacation.' . $address;
$this->_action[] = ' :0 ehc';
$this->_action[] = ' | (formail -rI"Precedence: junk" \\';
Rather than the current:
$this->_action[] = ' | formail -rD 8192
${VACATION_DIR:-.}/.vacation.' . $address;
$this->_action[] = ' :0 eh';
$this->_action[] = ' | (formail -rI"Precedence: junk" \\';
Priority ⇒ 1. Low
State ⇒ Unconfirmed
Patch ⇒ No
Milestone ⇒ MYASK
Queue ⇒ Ingo
Due ⇒ 04/30/2010
Summary ⇒ Ingo Procmail vacation rules bug
Type ⇒ Bug
deliver the message.
The next message of the same sender is delivered.
This is caused because the last rule with the eh flags checks the
result of the preceding rule. If the sender is not it the vacation
file then the result of formail is an error and the last rule is
executed und the script finish without to deliver the received
message. So we need a carbon copy flag (c) to deliver the received
message.
I added this flag to the last rule and discovered a double delivery of
the message.
Then I used the vacation with a time window an discovered that it works.
Finally I used the time vacation code for the vacation without a time
frame with removed time check rule.
So I updated the code as follows:
--- horde-orig/ingo/lib/Script/procmail.php 2009-09-16
14:37:22.000000000 +0200
+++ horde-dev/ingo/lib/Script/procmail.php 2010-04-21
10:00:29.000000000 +0200
@@ -491,9 +491,9 @@
$this->_action[] = ' :0 Whc:
${VACATION_DIR:-.}/vacation.lock';
if ($timed) {
$this->_action[] = ' * ? test $DATE -gt
$START && test $END -gt $DATE';
- $this->_action[] = ' {';
- $this->_action[] = ' :0 Wh';
}
+ $this->_action[] = ' {';
+ $this->_action[] = ' :0 Wh';
$this->_action[] = ' * ^TO_' . $address;
$this->_action[] = ' * !^X-Loop: ' . $address;
$this->_action[] = ' * !^X-Spam-Flag: YES';
@@ -524,9 +524,7 @@
$reason = addcslashes($reason, "\\\n\r\t\"`");
$this->_action[] = ' ' .
$this->_params['echo'] . ' -e "' . $reason . '" \\';
$this->_action[] = ' ) | $SENDMAIL -f' .
$address . ' -oi -t';
- if ($timed) {
- $this->_action[] = ' }';
- }
+ $this->_action[] = ' }';
$this->_action[] = ' }';
}
}
Kind regards,
Rene Plattner