GNU mailutils TODO list. 2008-08-20 Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. * Configuration callback functions should not modify node->tag and node->label. * Debug handling in cfg vs. argp * Fix folder_imap_list in libproto/imap/folder.c * Documentation * Review the code and use mu_vartab_* and mu_kwd_* functions where necessary. * mailbox ** Generic search interface ** Locking *** Implement a read/write locker_lock() flag so that when MU_LOCKER_WRONLY is set in the locker flags, only write locks actually lock the file, read locks don't do anything. *** what kind of locking should mh use? See FIXME in mbx_mh.c *** why does mimetest fail on a symlink, but succeed on a dotlocked file? *** implement a force unlock mode... so that when a mailbox is closed or destroyed it can make sure that the lock is definitely gone. ** mailboxes don't remember whether or not they've been opened ** does IMAP do an EXAMINE instead of a select if the mailbox is being opened readonly? Does list return whether a mailbox is readonly? Check against CMUs anon server, it is a read-only mailbox. ** mu_cpystr - the size_t* size outputs only give strlen(), not the actual length? Sam Roberts: My recollection is that when you give a buffer to output APIs, you give the total size. But the size_t* that returns the required size, returns the required size, minus the NUL. The units are different, in a sense. ** need code to find a "real" envelope from... an actual email address that DSNs can be sent to. ** need to be able to map some addresses (like mail to "root") to a user for the box, a la nullmailer, perhaps Sam Roberts: If you have a really simple workstation with a basic mail system, you may want mail.local to deliver all email addressed to "root" and "postmaster", etc., to a particular user, like yourself. Sergey Poznyakoff: In short, that is kind of aliasing support. We have aliasing support in MH, possibly it could be used in libmailbox as well. ** mailer_t: the SMTP mailer isn't as fully implemented as the sendmail mailer. ** make the smtp mailer calls usable standalone, as well as url based, and use them in mail.remote. ** support AUTH=anonymous (imap://cyrus.andrew.cmu.edu/archive.info-cyrus) ** filter_trans needs readline method. * pop3 ** pop3d_readline - should this use select(), avoid the race condition, and touch the lockfile in time intervals smaller than MU_LOCKER_EXPIRE_TIME? * imap4d ** Check interaction with various imap clients. Currently tested with: mail (from mailutils itself), mutt, pine, netscape, mozilla. ** Better support of multi-access mailbox ** implement charsets in search: 1 SEARCH CHARSET ISO-8859-2 TEXT ... ** implement AUTHENTICATE KERBEROS_V4 and SKEY and SRP? * Implement extensions: - QUOTA : RFC 2087 - ACL : RFC 4314 - CHILDREN : RFC 3348 ** Consider implementing the following extensions: - CONDSTORE : RFC 4551 - ESEARCH : RFC 4731 - SEARCHRES : RFC 5182 * Mailcap API The framework is implemented. Needs extensive testing. * Mime.types API is available in mimeview. Do we need to move it to libmailbox? * examples ** unify the mbox-* and mimetest examples with messages, it would be nice to have a general purpose tool * mh -- see mh/TODO * sieve ** run as daemon, sieveing mail on arrival (need interface for notification of message arrival, this is supported by imap, but we'll have to fake for pop and local spools my polling, why can't you select() on a unix file?) * utilities ** mimeview: support nametemplate ** all * Testsuite: Tcl is not able to handle binary data properly. This makes impossible to test some aspects of MU functionalities. Following testcases are affected: ** mailbox/testsuite/mailbox/base64.exp The ability of the test program to read given file instead of the stdin is used to override the issue. ** mailbox/testsuite/mailbox/encode2047.exp Input data are represented in octal format (see mailbox/testsuite/Encode2047). ** mailbox/testsuite/mailbox/argcv.exp The affected testcase is not run (see mailbox/testsuite/Argcv and search for FIXME). * add nightly build * add more features * optimize everything * test everything Local variables: mode: outline paragraph-separate: "[ ]*$" eval: (add-hook 'write-file-hooks 'time-stamp) time-stamp-start: "list. " time-stamp-format: "%:y-%02m-%02d" time-stamp-end: "\n" end: