sieve redirect mail loop causing mail to be lost

Rob Siemborski rjs3 at
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
> suppression.

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 mailing list