Revision history for Net-IMAP-Server 1.33 Sat Apr 07 19:37:17 2012 * Test fixes; use recv() with MSG_PEEK | MSG_DONTWAIT to determine if a TCP connection is in state CLOSE_WAIT 1.32 Fri Apr 06 00:45:17 2012 * Trim newlines passed to all commands, including continuation lines * Remove erroneous extra \n on server SASL responses * Bump MIME::Base64 dependency, and adjust bad mime encoding techniques to compensate * Better mapping of SASL mechanism names to method names 1.31 Sun Apr 01 01:18:17 2012 * Add test dependency on IO::Socket::SSL * Minor ASCII art updates 1.30 Tue Oct 25 11:30:17 2011 * Beginnings of a testsuite based on the RFC spec * Prepend, rather then append, un-asked-for message attributes, for picky clients * Properly escape mailbox names with quotes in LIST/LSUB * Trap and report base64 errors during AUTH * Returning -1 from a SASL auth now returns BAD, while returning false returns NO * Send an [ALERT] if the password was sent unprotected in plaintext * Remove an incorrect call to ->socket which caused errors during DESTROY * Selecting a bogus mailbox now leaves the state unselected * Return BAD on CREATE or RENAME with 8-bit mailbox names or invalid UTF-7 encoding * Forbid removal of INBOX 1.29 Mon Aug 2 10:42:17 2010 * Fix "UID SEARCH 1,2" * Allow "UID SEARCH *" * A better fix for [rt.cpan.org #58160], which is caused by a bug in DateTime::Format::Strptime ([rt.cpan.org #58459]) * Fix a minor bug in UID wherein unknown subcommands would attempt to call a nonexistant method 1.28 Tue Jun 8 14:14:17 2010 * Prevent warnings when CLOSE is called * strftime("%e") can generate leading space, which strptime("%e") fails to parse; parse with strptime("%n%e") [rt.cpan.org #58160] * Ensure that EXAMINE collowed by SELECT in the same mailbox leaves it write-able [rt.cpan.org #58162] 1.27 Mon May 3 21:27:17 2010 * Make ->handle_command return the instance of the ::Command subclass that ran, for more useful subclassing 1.26 Tue Dec 15 22:31:17 2009 * Fix ->read_only to only care about ->selected_read_only if the mailbox is currently selected. * Add a ->select callback (defautls to doing nothing) on mailboxes which is called when it becomes selected. * The content returned by FETCH BODY[1] should be the raw content, without decoding transport encoding. 1.25 Sat Nov 7 23:58:17 2009 * BACKWARDS-INCOMPATIBLE CHANGE: Net::IMAP::Server::Command's ->log method takes a loglevel argument by default, and simply defers to Net::Server's logging infratructure. * Handle more of Net::Server's arguments to ->new, including logging * Pass through arguments to Net::Server any arguments to ->run * Support mailboxes with flat hierarchies (undef hierarchy separator) * Fix a bug where UID COPY set two OK responses 1.24 Fri Oct 16 11:01:17 2009 * Fix overzealous caching during mailbox renaming * Bump Net::Server::Coro dep, to be able to specify SSL certificate paths 1.23 Fri Jul 17 17:34:17 2009 * Fix RT#47955; session flags were never getting stored, causing no messages to ever be marked \Recent 1.22 Mon Jul 13 12:13:17 2009 * Warning avoidance for "substr outside of string" warnings * Net::IMAP::Server::Command::UID still contained a reference to untagged_fetch 1.21 Thu Jul 9 14:52:17 2009 * Bump copyright, link to mailing list * Remove mostly undocumented an no-servicable-parts session_flags * untagged_* renamed to _unsent_* (and thus private) * A bit more documentation of accessors * Better error message on unknown SEARCH token * Add caching of "start of the day in utc" for searching * Add extraction of "start of the Date: header in utc" for searching * Add BEFORE, ON, SINCE, SENTBEFORE, SENTON, SENTSINC support to SEARCH * Document Net::IMAP::Server::Message->expunged 1.20 Fri Jun 19 16:04:17 2009 * The logic for STATUS UNSEEN was backwards, counting the number of seen messages. Reported by Paul Miller 1.19 Fri Jun 19 13:26:17 2009 * Fix POD coverage on Net::IMAP::Server::Error 1.18 Wed Jun 17 14:50:16 2009 * Handle compile errors in required commands better * Add missing DateTime::Format::Strptime dependency 1.17 Sun May 3 14:54:17 2009 * Document "NO" and "BAD" die() arguments * Fix mailbox read-only attribute 1.16 Tue Apr 7 23:45:17 2009 * Make UID fetches no longer O(range client requested), which is fragile when there are few messages but they are high in UID. 1.15 Mon Apr 6 12:49:17 2009 * Calls to ->header_raw were being made on Email::MIME objects, instead of Email::MIME::Header objects. Reported by 1.14 Mon Apr 6 03:55:17 2009 * Bump Email::MIME dep, for ->header_raw method * Fix typo in RFC reference. Reported by * Documentation typo fixes 1.13 Fri Mar 20 14:11:17 2009 * More UNSEEN fixes; the UNSEEN reported by STATUS and the UNSEEN reported by SELECT are different beasts, and have been split into different methods. 1.12 Tue Mar 10 13:46:17 2009 * Ensure that mailboxes passed to CREATE aren't trying to encode things they shouldn't be, by round-tripping and comparing. * Match query in LIST and LSUB against encoded path, not raw utf8 path * Support for adding new commands via 'add_command' in Net::IMAP::Server 1.11 Fri Mar 6 14:20:17 2009 * Move IMAP-UTF-7 handling into model's ->split, so it runs for _all_ client-given input. Then adjust ->handle_command to be able to send specific messages to the client on some exceptions. Reported by Jan Dvorak . * Add a case for the suspected edge case where a timeout or printing error is discovered while handling a command * Upper-case command name in "command not recognized" to not leak implementation as much 1.10 Thu Mar 5 14:27:17 2009 * Fix a major bug where UNSEEN reported the total number of unseen messages in the mailbox, rather than the sequence of the first unseen message. Reported by Jan Dvorak * Always return un-decoded headers to the client. Reported by Jan Dvorak * Fixes for people who have set $" to something odd 1.08 Tue Feb 24 16:27:17 2009 * UTF-7 support for mailbox naming * Add and document purge => 1 option to full_path 1.07 Sun Nov 23 01:03:24 2008 * Fixed missing UNIVERSAL::require dep 1.06 Mon Nov 17 17:06:52 2008 * Added NAMESPACE support 1.05 Mon Oct 20 16:40:19 2008 * Fixed spelling of 'separator' -- THIS BREAKS BACKWARDS COMPATIBILITY if you had overridden the 'seperator' method. * Added some missing pod on Net::IMAP::Server::DefaultModel 1.01 Sat Aug 16 21:06:31 2008 * Now with updated changelog and signatures - no functionality changes 1.00 Sat Aug 16 21:05:25 2008 * Remove Email::Folder dep, and default load_data behavior 0.95 Wed Aug 6 18:46:09 2008 * We can intuit the is_inbox mailbox property * Include a simple example server 0.9 Mon Jul 7 17:35:04 2008 * Add update_tree hook so servers can dynamically create sub-mailboxes 0.8 Mon Jun 16 18:34:56 2008 * Special-casing for Zimbra clients * client_id is a connection property, not an auth property * Bump the Net::Server::Coro dep 0.7 Mon May 19 13:30:17 2008 * Per-session message flags actually stored on the session * STATUS is now on the mailbox 0.6 Fri May 16 13:29:12 2008 * Add missing Net::SSLeay dep 0.5 Fri Apr 25 12:18:17 2008 * Add 'use Coro's for the places I added 'cede's * Module::Install version bump 0.4 Wed Apr 23 15:24:22 2008 * Weaken the timeout callback, so we don't leak connection objects * Don't double-store refs to connections * Actually clean out old keys in the connection hash * Try to print from the right coro, so EV doesn't complain about recursive entry, and then wedge the next time it happens. * Drop some more 'cede's in for commands which do many things 0.3 Tue Mar 11 12:33:14 2008 * Connections weren't being fully closed on timeout 0.2 Mon Mar 10 16:47:52 2008 * Initial release to CPAN