$Cambridge: hermes/src/prayer/docs/DONE,v 1.19 2005/10/13 10:26:55 dpc22 Exp $ By 13/06/2005 ============= Release: Prayer 1.0.16 Fix silly bug when replying to multipart messages where the main message and the text/plain subpart have different encoding (missing mail_body call). Add a limit_vm backstop to stop single runaway process from taking over the system. By 10/06/2005 ============= Release: Prayer 1.0.15 (1.0.13 and 14 internal releases only). list screen doesn't set "current" message to middle of range. Means that switching between various sort modes works more consistently. Go fishing for text/plain or failing that text/html bodypart within top level of multipart/mixed or multipart/alternate message when replying to a message. Behaviour should now be consistent with cmd_forward and cmd_display. Include LDAP and local finger database lookups (latter for Cambridge use only) Addressbook screen: Addressbook sort (can be set on Manage => Preferences => Display) Addressbook bulk removal Import and Export CSV (Outlook) format address screen Spellcheck: Support native aspell as well as ispell, aspell in ispell compatibility mode. Means that Quoted text is not checked if the following is set: Manage => Preferences => Extra Compose => Skip quoted text on spell check By 09/08/2005 ============= Spam whitelist Test the Referer header on login. Two independant prayer.cf options: referer_block_invalid and referer_log_invalid Test the Referer: header before performing a /redirect/ action in order to protect against URL redirector abuse Doesn't work with "Save Target As". Remove entirely Confirm on expunge. Cleanup up account_message error reporting so consistent. Fix format=flowed quoting problems. Fix memory leak in mailbox download (2 x size of mail folder) until next transfer or idle shutdown. 25/01/2005 ========== line_wrap_on_send preference not used by draft_init(). Fixed problems with multipart/alternate display and forwarding 06/01/2005 ========== Release: Prayer 1.0.12 Apparently "mutex" is already claimed by a system header on Solaris. 26/11/2004 ========== Release: Prayer 1.0.11 File locking on Linux (probably other operating systems) is pretty dumb when lots of processes are trying to lock a single file for serialisation: all of the processes are woken each time that the file is unlocked. Most of the process will simply loop inside the kernel and attempt to lock again. Presumably this approach makes nonblocking locks and EINTR easier to do, but it does mean that you can get occasional load average spikes. Add MUTEX_SEMAPHORE to implement System V semaphore based lock, which does not have this problem in Linux. Warning: System V semaphores are a finite resource, and they are not released automatically. See: prayer-sem-prune. Quotas now reported in MBytes rather than KBytes. Add download links for text/html and text/plain attachments Fix bug with body->type TYPEMESSAGE: c-client API very poorly documented :( Strip out common HTML entity encodings that might be used in HREFs with text/html attachments. Fix mydb_db3.c to work with DB4. Integrate into Tony's funky packaging system for Hermes and PPSW. Add interface to automatic spam folder pruning utility that I wrote for Cyrus (controlled through special Sieve files). Fix uploads where mailboxes contain NUL characters (translate to space?) Assorted minor bugfixes 22/04/2004 ========== Release: Prayer 1.0.10 Fix nasty /redirect bug that I managed to introduce by switching from url_encode to canon_encode to work around bug in Opera. Missing a url_encode: infinite loop from dumb UAs :(. Otherwise identical to 1.0.9. 21/04/2004 ========== Release: Prayer 1.0.9 Few minor bug fixes, covered in CVS history. 30/03/2004 ========== Prayer oddity with lots of disp_delete actions (not Cyrus specific?) Not reproducible. cmd_spam: Invalid test on empty list for directory list when deciding whether spam folder exists. Message dated 24 Sep 2003: I use pine with remote settings stored on hermes. If I postpone a message from pine and then send it subsequently from webmail it gets copied to a new folder: "mail/{imap.hermes.cam.ac.uk/user=jdb1003/tls}mail/sent-mail" "Status: Browser history disabled as unsafe: use Webmail navigation icons and links" appearing erratically? FIXED: typo in session sequence number encoding. 29/03/2004 ========== list_insert_sorted broken? No tail updates. Looks fine to me: not sure how I came to this conclusion. Handle In-Reply-To: and Received: headers correctly when replying to a message, for interoperability with threaded MUAs. (RFC 2822 sect. 3.6.4) 26/03/2004 ========== Opera 7.23: daft things with '/' quoting. Timeout on sieve screen. Better/more consistent address checking. Typo caused abook lookup failures when we tried to install this in October 2003. Preserve System abd User flags when uploading/downloading mail folders Remove SIGCHLD handler in prayer-session: this was confusing waitpid() on FreeBSD and Solaris. Assorted fixes for clean compilation under SuSE. Assorted small fixes (typos etc) which will be recorded in CVS history. 14/07/2003 ========== :days option on vacation screen for Sieve vacation. 29/05/2003 ========== Release: Prayer 1.0.8 The only really significant change from 1.0.7 is support for spam filtering based on X-Cam-SpamScore headers and support for a sieve backend for mail filtering, currently undocumented. This will be of limited use to anyone who isn't us. Small bugfix: Added "SSL_INCLUDE= -I/usr/kerberos/include" to work around rather peculiar header dependancy in Redhat 9. We don't actually link against any Kerboros libary. Think that's everything significant of late. Afraid that the detailed comments are going into our (private) CVS repository these days. 12/05/2003 ========== Switch to using SSL_CTX_use_certificate_file(): appears to give us certificate chain support without complications? Initial (and very rough!) Sieve support for testing purposes. CVS === Fed Prayer through: indent -kr --no-tabs before checking into CVS. 16/04/2003 ========== Fixed ctype.h. Incorporate session_banner_path patch from Clive McDowell. Fixed 2002 --> 2003 on recent timestamps in this file (I'm just so observant) 07/04/2003 ========== Release: Prayer 1.0.7 Additional Configuration options: msgs_per_page_max. msgs_per_page_min. abook_per_page_max. abook_per_page_min Need to add to master cf file. 05/04/2003 ========== Fix session_server() ping interval logic. 28/03/2003 ========== Added message download link for Message/RFC822 sections. 27/03/2003 ========== MHT nonsense. Fixed: Message/822 shouldn't be encoded as BASE64 or QUOTED Fixed abook_list boundary condition when current entry is last on page. (Same fix that we had to apply to cmd_list long time back: sigh). Attachment download/display esp: IE6 - Better use of Content-Disposition: inline - Use '.' in filenames: quoting arrangments changed. 26/03/2003 ========== Slow process leak in iostream_getchar() Looks like SSL_read can block even after SELECT - need proper timeout here somehow. - need to use non blocking I/O method: will need some testing. - Fixed (I hope!) by putting underlying socket into non blocking mode and more careful use of select/retry and error testing around ssl_read. - Cleaned up code in process. Nee Make sure cmd_restart robust e.g: browser buttons. - Seems to be reasonably robust, though hard to trap error conditions on every ml_ call reliably. Delete open folder => close, bounce to inbox if required IP address off by one error: I also tried a different IP address and it acts the same way, i.e., i had to specify 193.160.13.2:80 to make it use 192.160.13.2:80. - Looks like SCO/Unixware bug: no success duplicating this. Additional Configuration options: msgs_per_page_max. msgs_per_page_min. abook_per_page_max. abook_per_page_min Missing /usr/lib/sendmail ==> mail dropped. 24/03/2003 ========== Manage with single "\n" in .forward file => splat. End up with a redirect address Fixed at accountd end, but also made an effort to catch invalid cases at accountd client side. Spelling correction should use rather than - Disagree: clearer, at least when defined. 13/02/2003 ========== Typo: "MSshell :: subject" --> "MSshell :: redirect" 06/02/2003 ========== Fixed config->prayer_user expansion. fatal() shouldn't dump core if root. 31/01/2003 ========== Release: Prayer 1.0.6 27/01/2003 ========== Add initial support for getpwnam(), getspnam() for accountd authentication. Use c-client address parsing code to split pattern into localpart & domain components. 24/01/2003 ========== Apply sanity checks to email dialogue on filter screen: either simple name which matches Hermes account name or legit email address 21/01/2003 ========== Fix mydb_db3.c to work with DB 4.1 Disable gzip for Opera attachment download. session cookies: No expiry date => disappear when browser closed down. Quote username in argv: Just want to stop Prayer interpretuing funny usernames e.g: fred@xxx Simple string_url_decode in prayer_server.c, session_exchange.c 03/12/2002 ========== Remove "Feel free to send more messages" text from vacation messages. 18/11/2002 ========== Release: Prayer 1.0.5 11/11/2002 ========== Better handling of quota errors (UW server may generate list of quota warnings followed by "OK" response, even though operation has failed. Even worse c-client quietly ignores the warnings and takes the final OK as definitive). cmd_abook_list: Fix "Added 1 addresses to draft" 06/11/2002 ========== Fixed inconsistent DB_RECOVER stuff. - transcient nature of data means Best to run without recover, remove Dbase on startup Add allow_changing_from config option. Catch (session->upload_file == NIL) in cmd_upload_xfer (People playing silly buggers with browser history). 30/10/2002 ========== Small amount of juggling to get rpmbuild working correctly on Redhat 8.0a Release: Prayer 1.0.4 28/10/2002 ========== Berkeley db libraries still leaking 12 Mbytes on DB create: close, reopen should fix the problem. Add DB_RECOVER mode to mydb startup at first attempt. Remove invalid NIL argument to log_panic() call in mm_fatal() 22/10/2002 ========== Missing argument in cmd_expunge reporting message count socket_split_spool - '.' was a bad choice of character in session sequence ID: mkdir('.') anyone? Switch to + which should be safe. - DONE 15/10/2002 ========== Appear to have a good stable version Release: Prayer 1.0.3 09/10/2002 ========== socket_split_dir as safe guard (64 way split on sockets directory based on first character of sessionID) DONE, including backwards and forwards compatibility 08/10/2002 ========== Reverse alarm(0) and os_signal_alarm_clear() in ssl.c: tiny race condition. Refresh doesn't do "New mail" correctly. - msgmap_check() should have been msgmap_update() to get accurate count immediately. - Added safety check so that folder onto gets checkpointed once every 5 seconds. 07/10/2002 ========== Nasty SSL_accept bug - Appears to have actually been problem with deadlock inside SSL session cache. Side effect of ssl_prune job hanging? /robots.txt - DONE Links in message should use: /redirect to avoid Referrer attack. -DONE http_max_servers spin: sleep(0) is NOOP. Replace with sleep(1). - DONE. 06/10/2002 ========== Added login_prefix_path and login_suffix_path. - DONE (still need to verify output pages) Added support for /static/ URLS and .css files, just in case we need them - DONE Spell check: Fixed at least one, possible two bugs in interaction between spell checker and browser history. Safest to bail out if we see people playing silly buggers with browser history there: very stateful. - DONE Fix /icons - /opts lost! - DONE Fix /icons and /static namespace. - DONE 30/09/2002 ========== msgmap_find_deleted(): Fix zm_offset initialisation if zm changed size 23/09/2002 ========== SESSION_CACHE_ENABLE - managed to break this when upgrading to latest Cyrus session cache. 06/09/2002 ========== Release: 1.0.2 05/09/2002 ========== Fix off by one bug in cmd_abook_list form processing. cmd_reply2: do stream_check_uid to stop out of range effects. 16/08/2002 ========== Release: 1.0.1 15/08/2002 ========== Fix bug handling empty prefs esp: maildir 13/08/2002 ========== Add vacation aliases list - DONE Check password changing via accountd - Need way of skipping "Warning: " text from passwd program e.g: 8 character passwords. Added "warning" clause. Need to test quietly. - Test. Remove stray upload tmp files. - DONE Need to integrate latest session cache into prayer - DONE Port back iostream changes... - DONE Abook list is missing first entry in each range. Doh! - DONE - Added # numbers to code and documentation. http:// links: Remove final '.' from link. - Fixed Source link in RPM incorrect! - FIXED 06/08/2002 ========== Released code had 3 x fprintf(stderr) left installed for debugging. Silly boy! 29/07/2002 ========== Made hash function used by assoc keys a bit better distributed. 23/07/2002 ========== Release: Prayer v1.0 Set up RPM build environment: "make RPM_BUILD=true" sets up build parameters using Config-RPM. prayer.spec file written. Make sure that account has a default configuration file. 22/07/2002 ========== Couple of minor tidyups inspired by Tony looking at FreeBSD install 21/07/2002 ========== Check documentation briefly. Only initialise SSL subsystem if HTTPS ports defined Add Copyright line/disclaimer to all source files ready for source release. (making sure that the session cache stuff is correctly attributed). local_domain_list problems when prayer_session running --foreground for debugging purposes: Problem was that session_free() was calling config_free() when it didn't own the config => config go bye-bye - FIXED Catch message number out of range on postponed message list screen (combination of browser history + Outlook silly caching behaviour meant that it is possible to end up on invalid postponed msg list). - DONE 19/07/2002 ========== Bug: Select unseen, read/delete, then expunge when still in the subset returned from the search. Mailbox access error: mail/IN/incidents Status: Lost connection to IMAP server (possible concurrent access?) FIXED: Needed to integrate msgmap_recalculate() into msgmap_update() as expunge events can change number of marked messages => must force full recalculation of sorted and subset ranges. Make http://... in body of mail a 'clickable' link: Should be possible to subvert line wrap system Download <-> Show full headers. Fixed "" markup bug in cmd_prefs. prefs->html_inline_auto set => Display docs starting move to "previous" message rather than "next". DONE cmd_display(): 'Copy' should move to "next" message like delete - DONE 24/06/2002 ========== Remove trailing \012 from request->request. These started to appear when I fixed a bug parsing the method lines (it was translating CRLF to LF on the quiet). Bug fix was causing CR characters to turn up in log files. No longer log invalid requests in accesslog - silly idea as unparsed requests were already reported in prayer log and parsed request contains little useful content. 22/06/2002 ========== Added bounds check to chunked transfer encoding. (Prayer isn't vulnerable to the buffer overrun exploits seen in Apache < 1.3.26, but it wasn't counting bytes correctly, which could lead to a denial of service attack) Removed a few redundant config parameters from request_* methods. Fixed (safe but slightly confusing) overloaded use of request->body_size by introducing request->chunked_body_size and friends. 21/06/2002 ========== Verify install works okay on Redhat Linux (using Redhat RPMs + own install for c-client), FreeBSD and Solaris. 20/06/2002 ========== Tidied up include files for clean install. Make sure that accountd compiles cleanly on Redhat Linux, FreeBSD and Solaris. (Interaction with the Linux /usr/bin/passwd is still proving temperamental). 19/06/2002 ========== Added is_netscape4 clause into user_agent (+prefs +config) - enables broken HTML to keep Netscape 4 happy. (border=0 in image submit clauses, wrap="virtual" in