Hello,

I've hit a snag running Courier-IMAP under Cygwin ( yes, I know, I'm crazy! )

Users have their mail-client setup to "Leave messages on server" , however they 
receive duplicate messages once connecting via POP3 to download messages.

Courier is making the messages "Seen" via the maildir, however the next time 
the 
client logs in the UIDL changes for the message.

Example:

uidl
+OK
1 1137068235.H966875P3836.bensbox
2 UID3-1137070551
3 UID4-1137070551
retr 3
....
quit
+OK Bye-bye.

Login again :

uidl
+OK
1 1137068235.H966875P3836.bensbox
2 UID3-1137070551
3 UID5-1137070551

UID4 from the previous session magically becomes UIDL5 without any valid 
reason, 
which makes the remote mail-client download the message again because it thinks 
its 
new. Same message in maildir, on the "S" flag was added.

Any suggestions to this problem? Duplicate messages are been downloaded for 
clients 
and it's got me stuck.


---

I notice in pop3dserver.c the following is used:

--------------

static void print_uidl(unsigned i)
{
        const char *p;

        if (enomem_1msg)
                /* Error recovery - out of disk space, see comments
                ** at the beginning of this file.
                */
        {
                char dev_buf[NUMBUFSIZE];
                char ino_buf[NUMBUFSIZE];
                char mtime_buf[NUMBUFSIZE];

                printf("ENOMEM-%s-%s-%s\r\n",
                       libmail_strh_time_t(enomem_stat.st_mtime, mtime_buf),
                       libmail_strh_dev_t(enomem_stat.st_dev, dev_buf),
                       libmail_strh_ino_t(enomem_stat.st_ino, ino_buf));
                return;
        }

        if (msglist_a[i]->uid.n != 0)
        {
                /* VERSION 1 and VERSION 2 UIDL */

                printf((msglist_a[i]->uid.uidv ?
                        "UID%lu-%lu\r\n":"UID%lu\r\n"),
                       msglist_a[i]->uid.n, msglist_a[i]->uid.uidv);
                return;
        }

        /* VERSION 0 UIDL */

        p=strchr(msglist_a[i]->filename, '/')+1;

        while (*p && *p != MDIRSEP[0])
        {
                if (*p < 0x21 || *p > 0x7E || *p == '\'' || *p == '"' ||
                        *p == '+')
                        printf("+%02X", (int)(unsigned char)*p);
                else
                        putchar(*p);
                ++p;
        }
        printf("\r\n");
}

--------------

What are version 1&2 UIDL's compared to version-0? Perhaps I should comment out 
version 1&2 and use the raw maildir filename?



---- Msg sent via @Mail v4 - http://atmail.com/

-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_idv37&alloc_id865&op=click
_______________________________________________
courier-users mailing list
[email protected]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

Reply via email to