On Thu, Jul 03, 2008 at 01:16:57PM +0200, Carlos García Gómez wrote:
>    I need to store last authentication time for imap login.

A simple solution is to look at the mtime timestamp on the 'cur'
subdirectory of the Maildir. This is because every time the user logs in,
any mail in new/ is moved to cur/, and this updates the timestamp on cur/.

This doesn't work if the user has no new mail, but you can add a simple
patch to update the cur/ directory in that case.

The attached patches are a couple of years old, you'll have to see if they
still apply cleanly. They have been posted before, e.g.
http://sourceforge.net/mailarchive/message.php?msg_id=20080401054905.GA13986%40uk.tiscali.com

Regards,

Brian.
diff -uNr courier-imap-4.0.3.orig/imap/imapscanclient.c 
courier-imap-4.0.3/imap/imapscanclient.c
--- courier-imap-4.0.3.orig/imap/imapscanclient.c       Tue Jul 20 00:54:14 2004
+++ courier-imap-4.0.3/imap/imapscanclient.c    Sun May 22 18:16:33 2005
@@ -358,6 +358,7 @@
 struct dirent *de;
 unsigned long left_unseen=0;
 int    dowritecache=0;
+int    gotnew=0;
 
        if (is_sharedsubdir(dir))
                maildir_shared_sync(dir);
@@ -723,6 +724,7 @@
                        }
 
                        if (dirp)       closedir(dirp);
+                       if (n)          gotnew = 1;
 
                        while (n)
                        {
@@ -749,6 +751,13 @@
                        }
                } while (keepgoing);
        }
+
+       /* Update the 'cur' timestamp if no new mail arrived */
+       if (!gotnew) {
+               strcpy(p+strlen(p)-3, "cur");
+               utimes(p, 0);
+       }
+
        free(p);
 
        /*
diff -uNr courier-imap-4.0.3.orig/maildir/maildirgetnew.c 
courier-imap-4.0.3/maildir/maildirgetnew.c
--- courier-imap-4.0.3.orig/maildir/maildirgetnew.c     Tue Jun  8 23:44:24 2004
+++ courier-imap-4.0.3/maildir/maildirgetnew.c  Sun May 22 18:09:46 2005
@@ -77,6 +77,7 @@
        int n;
        char *new_buf[20];
        char *cur_buf[20];
+       int gotnew = 0;
 
        do
        {
@@ -125,6 +126,7 @@
                        }
                }
                if (dirp)       closedir(dirp);
+               if (n)          gotnew = 1;
 
                while (n)
                {
@@ -151,4 +153,7 @@
                        free(cp);
                }
        } while (keepgoing);
+
+       /* Update the 'cur' timestamp even if no new mail arrived */
+       if (!gotnew) utimes(curd, 0);
 }
diff --exclude *~ -uNr sqwebmail-5.0.2.orig/sqwebmail/maildir.c 
sqwebmail-5.0.2/sqwebmail/maildir.c
--- sqwebmail-5.0.2.orig/sqwebmail/maildir.c    Thu Oct 21 02:13:18 2004
+++ sqwebmail-5.0.2/sqwebmail/maildir.c Sun May 22 20:15:03 2005
@@ -1115,6 +1115,7 @@
        DIR     *dirp;
        struct  dirent  *dire;
        char    acl_buf[2];
+       int     gotnew=0;
 
        /* Delete old files in tmp */
 
@@ -1143,8 +1144,14 @@
                rename(oldname, newname);
                free(oldname);
                free(newname);
+               gotnew=1;
        }
        if (dirp)       closedir(dirp);
+       if (!gotnew) {
+               /* Update the 'cur' timestamp if no new mail arrived */
+               strcpy(dirbuf+strlen(dirbuf)-3, "cur");
+               utimes(dirbuf, 0);
+       }
        free(dirbuf);
 
        /* Look for any messages mark as deleted.  When we delete a message
-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Courier-imap mailing list
Courier-imap@lists.sourceforge.net
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-imap

Reply via email to