Sieve with plussed delivery / 'seen flag'?

Дилян Палаузов dilyan.palauzov at aegee.org
Sun Jun 30 12:52:46 EDT 2013


Hello,

this is similar to Bug 3695 ( 
https://bugzilla.cyrusimap.org/show_bug.cgi?id=3695 ).

I use "lmtp_fuzzy_mailbox_match: 1".

Delivery (to a plus or simple address) is proceeded first by 
imap/lmtpd.c:deliver_local() and then by deliver_mailbox().  I found 
out, that when I use an address without plus, the 7th parameter passed 
to deliver_mailbox is "username" (owner of the mailbox), and 
mydata->authuser (which was NULL in my tests) otherwise.

This leads later to a call of imap/append.c:append_setseen().  If 
username was passed as 7th argument to deliver_mailbox (no 
plus-address), as->internalseen is true in that function and the message 
is marked as \\Seen.  Otherwise internalseen is false and the message 
does not appear as \\Seen.  I have no investigated what as->seen_seq 
does or is supposed to do.

This patch fixes the problem on my system (addr+Sent is resolved during 
fuzzy-matching), but I don't know if it causes any side effects.

diff --git a/imap/lmtpd.c b/imap/lmtpd.c
index f70f587..5bba193 100644
--- a/imap/lmtpd.c
+++ b/imap/lmtpd.c
@@ -724,7 +724,7 @@ int deliver_local(deliver_data_t *mydata, char 
**flag, int n
             /* try delivery to a fuzzy matched mailbox */
             ret2 = deliver_mailbox(md->f, mydata->content, mydata->stage,
                                    md->size, flag, nflags,
-                                  mydata->authuser, mydata->authstate, 
md->id,
+                                  (char*) username, mydata->authstate, 
md->id,
                                    username, mydata->notifyheader,
                                    namebuf, md->date, quotaoverride, 0);
         }

Comments?

Greetings
   Dilian


On 24.06.2013 16:20, Karl Pielorz wrote:
>
> Hi,
>
> We're running Cyrus IMAP 2.4.17. We've got sieve rules used for accounts
> - and some users use 'plussed' addresses.
>
> For example, I've setup a Sieve rule that matches on a subject of 'Test':
>
> "
> require ["fileinto"];
> require ["imapflags"];
>
> if header :contains ["Subject"] ["Test"] {
>   addflag "\\Seen";
> }
> "
>
> This works fine e.g. if we email 'user at example.com' - with a subject of
> 'Test' it'll appear in their inbox as 'Seen' mail (i.e. already read).
>
> However, if we do a direct delivery to a subfolder e.g. email
> 'user+sent at example.com' - the mail appears in that folder, but appears
> as 'Unseen'.
>
> Weirdly, if we change it to do:
>
>   addflag "\\Seen"
>   addflag "\\Flagged"
>
> And send an email to the plussed address, it arrives - is Flagged, but
> has not had the 'Seen' flag added to it? (i.e. it arrives as Flagged,
> Unseen).
>
> Does anyone know why this is? - Or how we can fix it?
>
> 'anyone' has p rights to the destination folder (and during testing we
> gave 'anyone' all rights to the destination) with the same effect.
>
> Thanks,
>
> -Karl


More information about the Cyrus-devel mailing list