sieve redirect mail loop causing mail to be lost
rjs3 at andrew.cmu.edu
Wed Aug 13 09:28:51 EDT 2003
On Wed, 13 Aug 2003, Stephen Grier wrote:
> We are running Cyrus-imapd-2.1.11 with sieve and duplicate delivery
> suppression. One of our users complained that they had not been
> receiving mail. It appears that this is because he has set up a sieve
> script with a redirect rule which redirects all his mail to himself (his
> own email address).
As you note, this is a problem with the sieve script and the user should
expect to not see any mail.
> As far as I can tell, his mail is initially delivered to his Inbox, at
> which point lmtpd redirects the mail back via the MTA to his email
> address. The redirected mail is delivered a second time, at which point
> it appears that the mail is suppressed by Cyrus' duplicate delivery
As it should be.
> I have seen a few references to this behaviour on the list from a while
> back, but I'm not sure if this problem has been addressed in 2.1.11 or
> later. When a redirect rule redirects mail to the same mailbox in this
> way, will this always result in mail being silently discarded?
It will always result in the mail being discarded.
> Would this problem be solved by disabling duplicate delivery
> suppression? I am slightly confused by the fact that lmtpd is not
> actually logging that it has suppressed the message when this occurs.
> Yet the messages never appear in the user's Inbox.
Yeah, it should probably be logging this.
> Obviously the user's sieve script is broken and I would expect it to
> produce a mail loop, which our MTA should handle. But it is very likely
> that other users will inadvertently redirect mail to themselves, and if
> this is going to cause mail to be lost we may have to disable duplicate
> delivery suppression.
If it is likely that your users will redirect mail to themselves, they are
going to lose mail no matter what they do.
RFC 3028 states:
Implementations SHOULD take measures to implement loop control,
possibly including adding headers to the message or counting received
headers. If an implementation detects a loop, it causes an error.
Duplicate suppression handles this for Cyrus.
Relying on the MTA to handle it is a sure way to get yourself into
trouble. Any half-decent auto-responder should be performing its own loop
Rob Siemborski * Andrew Systems Group * Cyert Hall 207 * 412-268-7456
Research Systems Programmer * /usr/contributed Gatekeeper
More information about the Info-cyrus