Version 4.6.3 22 June 2006 -fix regression: spurious errors thrown when required multidrop retriever parameter "envelope_recipient" not present in getmailrc file. Thanks: Elliot Schlegelmilch. -fix regression: getmail_fetch no longer properly supported external MDAs because of problems parsing the arguments to them. Thanks: ?. -change getmail's handling of regular expressions in the "locals" parameter of MultiSorter destination to allow it to handle backslashes correctly. Unfortunately this means complicating the configuration syntax slightly. Thanks: Tim van der Molen. -update filters to use new configuration code. Remove obsolete code. Version 4.6.2 8 June 2006 -fix regression introduced in 4.6.0 where atime on mbox files would get updated (i.e. not set back), making it difficult for other programs to tell if there was new mail or not without actually opening the mbox. Thanks: Tim van der Molen. Version 4.6.1 31 May 2006 -fix attribute deletion error with Filter_classifier when strip_delivered_to is set. Thanks: Darren Stevens. -do not consider qmail-local writing to stderr a delivery error. Thanks: Darren Stevens. Version 4.6.0 5 April 2006 -clean up logger API. -refactor configuration mechanism to use classes with embedded logic, rather than simply dictionaries. Version 4.5.4 14 February 2006 -added Maildir "filemode" parameter. Thanks: Martin Haag. Version 4.5.3 8 February 2006 -keyfile and certfile parameters to SSL retrievers are now expanded for leading "~/" and "~username/" as well as environment variables, just like other path parameters. Thanks: Fredrik Steen. Version 4.5.2 7 February 2006 -fix IMAP bug where no mail was retrieved introduced in 4.5.0. Thanks: Scott Robbins. Version 4.5.1 3 February 2006 -fix accidental use of sorted() builtin only present in Python 2.4 and up. Thanks: Juergen Nagel. Version 4.5.0 1 February 2006 -add delete_dup_msgids option to non-multidrop POP3 retrievers. Thanks: Matthias Andree. -suppress stack trace in getmail_fetch error message when configuration error detected. Thanks: Dave Jarvis. -documentation updates. -build and development environment changes. The plaintext versions of the documentation are now generated with links instead of lynx. -explicitly log the reason for not retrieving a message (seen or oversized). Thanks: Payal Rathod. Version 4.4.4 3 January 2006 -improve parsing of flags in IMAP responses. Thanks: Gareth McCaughan. Version 4.4.3 1 December 2005 -fix harmless copy and paste error in IMAPRetrieverBase class. Thanks: Henry Miller. Version 4.4.2 13 November 2005 -fix logging import in corrupt messages with Python 2.3. Thanks: Marco Ferra. Version 4.4.1 10 November 2005 -work around bug in Python which meant POP3-over-SSL with Python >= 2.4 could "hang" (it's exactly the same bug that affected getmail's initial IMAP-over-SSL code). Version 4.4.0 9 November 2005 -add new POP3-over-SSL initialization class, which is automatically used when Python 2.4 or newer is in use. This reduces the overhead involved in retrieving messages from a POP3SSL server (reduces systime about 35%, user time about 50%, wall time 10-30%). Thanks: Jan Vereecke. -add getmail_fetch configuration-less commandline POP retriever, perfect for scripting use. Development of getmail_fetch was sponsored by Texas Communications. -future proofing: eliminate relative imports within getmailcore package. Version 4.3.14 2 November 2005 -Fix copy and paste error that caused BrokenUIDLPOP3SSLRetriever to default to port 110. Thanks: Daniel Burrows via Fredrik Steen. Version 4.3.13 15 October 2005 -add BrokenUIDLPOP3SSLRetriever as SSL version of BrokenUIDLPOP3Retriever, based on an idea by a user of the Debian package. Thanks: Daniel Burrows, Fredrik Steen. Version 4.3.12 13 October 2005 -remove deprecated "strict" argument from message/header parsing calls. While it was possible to suppress the warning that resulted when using Python 2.4, it appears many getmail users couldn't bother to do that and complained to me instead. Version 4.3.11 16 June 2005 -getmail could previously record an envelope return path header of "<<>>". Fixed. Thanks: Fredrik Steen. Version 4.3.10 19 May 2005 -bugfix for missing import. Thanks: Matthias Andree. Version 4.3.9 18 May 2005 -for multidrop retrievers, change the way the envelope recipient header field is parsed, to prevent odd values from being interpreted as multiple addresses when they look like an 822-style address group. Thanks: "aal". -try to avoid parsing message bodies, in case they're corrupt or invalid. Thanks: Michael Gold. Version 4.3.8 6 May 2005 -change (again) handling of deleted messages vs. connection that dies. Inability to send QUIT to POP3 server should be less problematic now. -improve housekeeping of old message state file. Thanks: Thomas Schwinge. Version 4.3.7 1 May 2005 -add error message for missing mboxrd file. Thanks: Marco Ferra. -change handling of connection that dies vs. deleted messages. Thanks: Thomas Schwinge. Version 4.3.6 8 April 2005 -broke BrokenUIDLPOP3Retriever when I added the forget_deleted parameter to the retrievers base class; now fixed. Thanks: Georg Neis. Version 4.3.5 3 April 2005 -make getmail less conservative about remembering messages as already-seen when unrelated errors occur after successfully delivering them. Thanks: Thomas Schwinge. Version 4.3.4 14 March 2005 -documentation changes; getmail v4 cannot run natively on Windows. Use Cygwin if you must run on a Windows platform; this works. -remove some Windows-specific code. Version 4.3.3 19 February 2005 -previously, for safety, getmail would re-retrieve messages after a session that encountered errors. However, getmail had enough information to safely remember those messages that had been successfully delivered. This behaviour has been changed, to avoid delivering duplicate messages where it isn't necessary. Thanks: Thomas Schwinge. -in output/log files, getmailrc files are now specified only by filename, instead of by complete paths. This will prevent some overly-long output lines. -add Windows versions of functions to lock/unlock files, so mbox delivery can be used on Windows. Thanks: Felix Schwarz. Version 4.3.2 5 February 2005 -previously, if an SSL POP3 or IMAP server abruptly closed the connection before getmail could finish logging in, getmail would exit instead of proceeding to the next configured mail account. Fixed. Thanks: Matthias Andree, Frank Benkstein, Thomas Schwinge. -eliminate duplicate Return-Path: header fields. Thanks: Angles Puglisi. Version 4.3.1 18 January 2005 -some IMAP errors would cause getmail to raise an exception, instead of gracefully proceeding with the next configured mail account. Fixed. Thanks: Matthias Andree. Version 4.3.0 10 January 2005 -add BrokenUIDLPOP3Retriever class to support servers that do not implement the UIDL command, or which fail to uniquely identify messages using it. Version 4.2.6 2 January 2005 -add new error message and documentation for POP3 servers that cannot uniquely identify messages in a mailbox. Thanks: Thomas Schwinge. Version 4.2.5 8 December 2004 -fix typo in getmailcore/exceptions.py that would raise a NameError exception in certain rare cases. Thanks: Gour ?. Version 4.2.4 22 November 2004 -one type of filter error would cause getmail to skip to the next configured mail account, rather than simply proceeding to the next message from the same account. Fixed. Thanks: Adrien Beau. -documentation updates. Version 4.2.3 18 November 2004 -documentation updates. -getmailrc examples file updated. Thanks: Scott Robbins. -clarify error message when user insecurely tries to deliver mail as GID 0. Version 4.2.2 11 October 2004 -in child delivery processes, change real as well as effective uid/gid. Thanks: David Watson. -handle corrupted oldmail file better. Thanks: Matthias Andree. Version 4.2.1 8 October 2004 -set message attributes on corrupt container objects to prevent problems with destinations that expect multidrop-retrieved messages. Thanks: Harry Wearne. -move tests for existence of file from mbox destination initialization to delivery method, and change error from configuration to delivery error. Thanks: David Watson. Version 4.2.0 18 September 2004 -SECURITY: previous versions of getmail contain a security vulnerability. A local attacker with a shell account could exploit a race condition (or a similar symlink attack) to cause getmail to create or overwrite files in a directory of the local user's choosing if the system administrator ran getmail as root and delivered messages to a maildir or mbox file under the control of the attacker, resulting in a local root exploit. Fixed in versions 4.2.0 and 3.2.5. This vulnerability is not exploitable if the administrator does not deliver mail to the maildirs/mbox files of untrusted local users, or if getmail is configured to use an external unprivileged MDA. This vulnerability is not remotely exploitable. Thanks: David Watson. My gratitude to David for his work on finding and analyzing this problem. -Now, on Unix-like systems when run as root, getmail forks a child process and drops privileges before delivering to maildirs or mbox files. getmail will absolutely refuse to deliver to such destinations as root; the uid to switch to must be configured in the getmailrc file. -revert behaviour regarding delivery to non-existent mbox files. Versions 4.0.0 through 4.1.5 would create the mbox file if it did not exist; in versions 4.2.0 and up, getmail reverts to the v.3 behaviour of refusing to do so. Version 4.1.5 13 September 2004 -getmail would not delete messages from the server if it was configured not to retrieve them and the delete_after directive was not in use (i.e. user normally left messages on server but occasionally wanted to force-delete them). Fixed. Thanks: Frankye Fattarelli. Version 4.1.4 1 September 2004 -change failure of a message filter to produce at least as many mail headers as it was provided from a non-fatal error to warning. If your filter strips headers, getmail will now warn you about it, but will not consider it an error. -documentation additions. Version 4.1.3 31 August 2004 -enhance warning diagnostics about non-accessible or non-writable maildirs. -change method of determining name of local host; only fall back to getfqdn() if the result of gethostname() does not contain a dot. -documentation enhancements. Version 4.1.2 28 August 2004 -dumping config would raise an exception since 4.1.0; fixed. Thanks: Ilya Krel. Version 4.1.1 27 August 2004 -getmail raised an exception after processing all accounts, while printing a summary, if verbose was set to 2. Fixed. Thanks: Matthias Andree. Version 4.1.0 24 August 2004 -biggest change is multiple verbosity levels. To support this from rc file, the verbose parameter had to change from a boolean to an integer. Update your getmail rc files: for quiet, set verbose to 0. For more output, set it to 1 or 2. 2 includes info about messages not retrieved, etc. -add rc filename to error messages -change fix from 4.0.11 for email module raising exception during .flatten(). Thanks: Jürgen Nagel. -some types of SSL error could cause getmail to exit instead of continuing to the next mail account; fixed. Thanks: Matthias Andree. Version 4.0.13 19 August 2004 -unrecognized parameters could trigger a traceback instead of a warning. Fixed. Thanks: Frankye Fattarelli. Version 4.0.12 19 August 2004 -forgot to add the new Message attribute (from 4.0.11) to its slots declaration. Fixed. Version 4.0.11 18 August 2004 -change oldmail file writing to save a few bytes of disk space -documentation additions. -Python's standard library email.Message().flatten() could barf on certain types of badly mis-formatted messages (instead of the during instantiation, like the /other/ buggy cases). Hope this is fixed in Python 2.4. Developed a work-around for getmail. Thanks: Jürgen Nagel. -changes to "normal" output of getmail to make it slightly less verbose. Version 4.0.10 12 August 2004 -cosmetic fix to output: add whitespace after timestamp when not retrieving message. Thanks: Matthias Andree. -include MANIFEST.in in source distribution, to assist users in building "built distributions" from it. -change a few output messages' level to make verbose mode slightly less verbose, and add --debug switch to get "more verbose" behaviour. Version 4.0.9 9 August 2004 -fix cosmetic error for IMAP mailboxes with 0 messages in them. -change method of obtaining uidvalidity from IMAP server and remove wrapper. -previously, connecting to an IMAP-SSL server could fail if a non-SSL IMAP connection were attempted immediately before. This was due to the Python bug discussed here: http://sourceforge.net/tracker/index.php?func=detail&aid=945642&group_id=5470&atid=305470 Implemented a workaround for getmail. Thanks: Payal Rathod. Version 4.0.8 6 August 2004 -add an extra error message if you ask getmail to deliver to a maildir, but getmail can't check the contents of it due to permissions. Thanks: Clemens Buschmann. -fix breakage introduced in 4.0.7: getmail would forget a message was "seen" after a cycle of not retrieving it. Thanks: Payal Rathod. Version 4.0.7 5 August 2004 -change failure of a message filter to produce at least as many mail headers as it was provided from a fatal to a non-fatal error. The message will be skipped. Thanks: Payal Rathod. -a few non-conformant IMAP4 servers don't implement SEARCH, so getmail couldn't get a list of UIDs. Changed to use FETCH instead. Thanks: Matthias Andree. -prevent traceback if IMAP SSL connection closed during connect(). Thanks: Payal Rathod. -add warning if unknown parameters are supplied to a retriever, filter, or destination. -write subclasses of Python imaplib classes to work around missing UIDVALIDITY select() response. Add it to the state getmail keeps. Thanks: Matthias Andree. -move message state saving to later, so getmail doesn't falsely remember having handled a message. Thanks: Matthias Andree. -change location of documentation/man pages to /share/{doc/getmail,man}/ to be more comformant with the FHS. -documentation updates Version 4.0.6 4 August 2004 -if the connection failed in a certain way, getmail could forget which messages it had already retrieved, and therefore retrieve them again when the next successful connection occurred. Fixed. Thanks: Wim Uyttebroek. -add win32 executable installer as third download option. Version 4.0.5 3 August 2004 -add additional error handler for certain network errors with POP3-over-SSL connections. Thanks: Frank Benkstein. -rename retriever class for Demon UK: it should have been SDPS; my transposition. Thanks: Paul Howarth. Version 4.0.4 2 August 2004 -corrupt-message handler introduced in 4.0.1 needed tweaking. Thanks: Bernhard Riedel. Version 4.0.3 2 August 2004 -some types of socket errors would raise an exception instead of letting getmail gracefully continue; fixed. Thanks: David. -documentatation updates; fix two typos and add to the section on using ClamAV with getmail. -changes to my release process; the current version's URL will not change when a new version is released. See, I try to help others, even when they don't do the same... Version 4.0.2 30 July 2004 -trying to use MDA_qmaillocal destination with a non-multidrop retriever would raise an exception instead of printing a configuration error message. Fixed. Thanks: Clemens Buschmann. Version 4.0.1 26 July 2004 -documentation fixes. Thanks: Roland Hill. -add handler for badly-misformatted messages as a workaround for Python 2.3.x, where the email module can raise exceptions while parsing messages. Thanks: Paul. Version 4.0.0 23 July 2004 -exit beta; final release of version 4.0.0, with approximately four thousand lines (~150 kbytes) of Python code and five thousand lines (~180 kbytes) of documentation. Version 4.0.0b10 21 July 2004 -documentation updates and cleanups -add MultiGuesser destination; it's like MultiSorter, but guesses at the message recipient based on addresses found in the message header, to be used for mail sorting if you don't have a proper domain/multidrop mailbox. -consolidate initialization code from retrievers to RetrieverSkeleton base class. -slight change to main script and retriever base classes to change the way the retriever objects are destroyed and garbage-collected -get rid of unneeded hostname variable in MultiDestinationBase -add "Summary:" header line to main script output in verbose mode -wrap code for 80 columns -fix error message when a filter doesn't return a message properly. Thanks: Shantanu Kulkarni. Version 4.0.0b9 19 July 2004 -change syntax of MultiSorter's locals parameter. The previous syntax was fragile and was mostly a holdover from previous versions; it is now a tuple of items, each of which is a 2-tuple of quoted strings. -add Python version to --dump output. -eliminate redundant _confstring() method in _retrieverbases.py. -small documentation updates. Version 4.0.0b8 18 July 2004 -documentation updates. -include RPM build. Rapidly approaching release state. Version 4.0.0b7 17 July 2004 -changes to an "impossible" error handler in _child_handler(), just in case. -move some code from destinations.MultiSorter() into new MultiDestinationBase base class. -fix MultiDestinationBase._get_destination() -add MultiDestination class to deliver messages to multiple destinations unconditionally. -cosmetic fixes to output Version 4.0.0b6 15 July 2004 -move common child-handling code out of filters and destinations into new baseclasses.ForkingBase() class. -add __all__ declarations to modules that were missing them, to help prevent namespace clutter for others Version 4.0.0b5 15 July 2004 -apply the child fix from b3 to Filter_classifier; I missed this in the update. Thanks: Dave Osbourn. -cosmetic fix for output describing filters and destination objects. Thanks: Dave Osbourn. -catch configuration error of non-multidrop retriever with multidrop-only destination. This broke when I cleaned up the message attribute interface in alpha 29. Thanks: Dominik Kacprzak. Version 4.0.0b4 14 July 2004 -remove unneeded code raising a ConfigurationError in Filter_TMDA -clean up output for Maildir, Mboxrd destinations and getmail_maildir script, messages dropped by filters, various other bits -add --show-default-install-dirs to setup.py -documentation updates, including more clarification and examples of installation options -tweak to getmail manpage. Thanks: Frankye Fattarelli. Version 4.0.0b3 13 July 2004 -different fix for the reaping child problem. This one tested by Paul and confirmed working on Mandrake 10's kernel. -add Filter_TMDA filter class. -changes to setup.py to account for --install-data specifying a non-default path for the documentation and man pages Version 4.0.0b2 13 July 2004 -documentation fixes regarding installation. Thanks: Emily Jackson. -do environment variable expansion in paths and arguments (before substitutions like %(sender), etc) in addition to expanding leading ~/ or ~user/ . Thanks: Paul. -try change to code which reaps child processes; the previous code failed on a few Linux systems (perhaps the ones where the kernel changed fork() behaviour to run the child first?) Reported by Paul. Version 4.0.0b1 10 July 2004 -first beta release -add missing os import to getmail_maildir -fix received_by in getmail_mbox and don't create Received: header -a handful of trivial changes to make the code idiomatically consistent -fix to oldmail file writing -documentation updates Version 4.0.0a30 8 July 2004 -documentation updates -change header-adding code from filters to a method in Message class. Thanks: Frankye Fattarelli. -make MultiSorter pass retriever info down to its sub-destinations. This fixes a problem reported by Frankye Fattarelli. Version 4.0.0a29 8 July 2004 -flesh out the getmailrc-examples file (note that it's been renamed from getmailrc-example) -clean up message attributes. Make Message() class. Move flatten_msg() out of utilities and make it into a Message method. Remove header-length checking when generating flattened representation of message. Change callers to use the new class. -move SENDER check from deliver_maildir() to getmail_maildir where it belongs. -update the miscellaneous documentation files -last alpha, I think Version 4.0.0a28 7 July 2004 -documentation additions and changes. -add manpages for getmail, getmail_maildir, getmail_box. These go in PREFIX/man/man1/. Version 4.0.0a27 4 July 2004 -documentation fixes and additions. Split documentation into reasonably-sized files. I need to add inter- and intra-document links to most of the documentation yet. -add auto-generated tables of contents to each doc file. -start flushing out the website with copies of the docs, download directories, etc. Version 4.0.0a26 4 July 2004 -add explicit checks for multidrop classes to prevent users from incorrectly specifying certain header fields as recording the envelope recipient address -documentation fixes and additions Version 4.0.0a25 2 July 2004 -add handler for KeyboardInterrupt. Thanks: Thomas Schwinge. -change setup script to not error if the specified directory prefix doesn't exist. Thanks: Thomas Schwinge. -pass retriever protocol info to filters. Thanks: Frankye Fattarelli. -first inclusion of "real" documentation. See docs/documentation.html or its plaintext counterpart docs/documentation.txt. Version 4.0.0a24 1 July 2004 -setup script/distutils changes. The setup.py script now looks for --prefix or --home specifying an alternate installation directory, and otherwise defaults to the hierarchy that Python was installed to. /usr/share/doc/ or similar is no longer hardcoded anywhere. Version 4.0.0a23 1 July 2004 -changes to MDA_qmaillocal: add "group" parameter, and make "user" parameter also have getmail change UID before invoking qmail-local. -change two instances of socket.gethostname() to socket.getfqdn() -change localparttranslate to localpart_translate -add explicit checks for socket.ssl(), which is optional. Raise getmailConfigurationError if they're not present and the user tries to use it. Thanks: Thomas Schwinge. -fix missing received_by in destinations. Thanks: Frankye Fattarelli and Andrew Raines. Version 4.0.0a22 30 June 2004 -MultiSorter default destination can now be a named destination section as well, so postmaster mail can go to an external MDA, etc. -deliver_maildir writes out a new Return-Path: header field if SENDER is set. -include getmail_maildir and getmail_mbox delivery scripts for use as MDAs with other programs. -add starting/finishing log lines for each retriever -change eval_bool to raise exception on unexpected values, rather than using Python's native idea of what is boolean True and False -ensure no message has partial final line regardless of delivery method. Thanks: Thomas Schwinge. -get rid of msg_lines(), mbox_timestamp() and their only callers. -add the Delivered-To: and Received: header creation like getmail v.3 had, and boolean options delivered_to and received to allow the user to disable them. This necessitates adding some data attributes to retriever classes and additional code to destination classes and utilities. Thanks: Thomas Schwinge. -drop .py suffix on the name of the main getmail script -declare the three scripts to be scripts instead of modules (for distutils) -some fixups to the distutils setup script. If files or directories are still installed with "wrong" permissions (like 0600/0700 instead of 0644/0755), please let me know. -a few miscellaneous fixups -heading for beta, working on documentation ... Version 4.0.0a21 27 June 2004 -leave Return-Path header field alone for program deliveries. Thanks: Andrew Raines. Version 4.0.0a20 25 June 2004 -fix typo in Filter_classifier -wrap additional exception check around executing subprocesses to ensure nonzero exit on error -finish MDA_qmaillocal address handling and add strip_delivered_to parameter. Document MDA_qmaillocal. -change email module import in utilities.py. Submit bug report to Python bug tracker. Thanks: Frankye Fattarelli. Version 4.0.0a19 24 June 2004 -bring some docstrings, comments, and documentation up to date. -add Filter_classifier filter module, to support adding information to the message header from programs that don't provide the original message back on stdout (like clamscan/clamdscan, apparently). Thanks: Frankye Fattarelli. -missed seek(0) in msg_flatten(). Add missing imports. Thanks: Andrew Raines. Version 4.0.0a18 24 June 2004 -add msg_flatten(), msg_lines() and use them exclusively to prevent .as_string() from changing header fields for spurious reasons. Thanks: Andrew Raines. -remove code doing From_-escaping in Mboxrd and let the email module do it. -fix copy & paste errors in change_uidgid(). Thanks: Andrew Raines. -catch timeouts Version 4.0.0a17 23 June 2004 -add exitcodes_keep and exitcodes_drop parameters to Filter_external. Thanks: Frankye Fattarelli. Version 4.0.0a16 23 June 2004 -add user and group, and allow_root_commands parameters to MDA_external destination and Filter_external filter classes. -make import pwd fail gracefully for Windows, etc. -add allow_root_commands parameter to MDA_external destination and Filter_external filter classes to force overriding of running external commands as root. -pass reference to configparser to retriever, destination, and filters -add MultiSorter destination of "[section]" which invokes another destination from the same getmail rc file. Use this to deliver to programs by including an MDA_external destination in a section named [foo] in the rc file, then specify that section name in the MultiSorter in the locals part, i.e. [destination] type = MultiSorter postmaster = /path/to/maildir/ locals = joe /path/to/maildir/ sam /path/to/mbox/ chris [myprogram] [myprogram] type = MDA_external path = /usr/local/bin/mymda arguments = ("--strip-attachments", "-f%(sender)", "--fast") Don't try to cause a loop using this to point to itself. You have been warned. -MultiSorter is now a little stricter about destination names. A maildir (after any tilde expansion, if applicable) must start with "." or "/" and end with "/". An mboxrd (after any tilde expansion, if applicable) must start with "." or "/". This means if you previous had something like: locals = sam@example.net subdir/maildir/ You'll need to change it to: locals = sam@example.net ./subdir/maildir/ Of course, locals = sam@example.net ~sam/maildir/ is already okay if sam is a valid user and has a valid home directory. -add message_log_syslog Version 4.0.0a15 22 June 2004 -add summary "Retrieved X messages for ..." for each rc file at program close. Thanks: Frankye Fattarelli. -add explicit delete of retriever after quit() to try to force writing oldmail file immediately instead of at garbage collection. Python makes no guarantees about when garbage collection takes place, so this won't be perfect. Thanks: Julian Gomez. -add message_log -add traceback formatting on exception -change --dump to include filters. Change order of operations. Version 4.0.0a14 22 June 2004 -fix IMAP-over-SSL. socket.ssl objects are apparently incompatible with socket timeouts, even in the IMAP_SSL class. -ensure --trace debugging output doesn't output passwords. Thanks: Julian Gomez. -IMAP classes would stop indexing mailboxes when they hit an empty one. Fixed. Thanks: Julian Gomez. Version 4.0.0a13 21 June 2004 -add missing default for max_messages_per_session. Thanks: Frankye Fattarelli. Version 4.0.0a12 21 June 2004 -slight change to quit() to ensure old connections are closed and garbage-collected before trying to make new ones. Thanks: Frankye Fattarelli. -move default documentation directory to /usr/local/share/doc/ . -filters.py now checks that the filtered message is at least basically sane in that it has a header no shorter than the message it was supplied. Let me know if this causes problems. -add and document max_messages_per_session Version 4.0.0a11 21 June 2004 -add MultidropIMAPRetriever and MultidropIMAPSSLRetriever -add move_on_delete parameter to all IMAP retrievers. -add and document delete_after and max_message_size options -document read_all and delete options -rename pop3ssl.py -fix --quiet. i.e., getmail should again operate truly silently if you want it to. -retrievers' quit() method wasn't getting called. Fix. Thanks: Frankye Fattarelli. Version 4.0.0a10 19 June 2004 -fix the retrieve-every-other-message bug when delete == True. -move base classes out of retrievers.py into _retrieverbases.py -fix exception when retrieving mail from an empty IMAP account Version 4.0.0a9 19 June 2004 -accidentally edited initialize() in the wrong class; it broke POP3. This update should fix it. Version 4.0.0a8 18 June 2004 -fix 6 instances of getmailConfirurationError typo in retrievers.py -finish basics of IMAP support -- i.e., it successfully retrieves mail. delete might not work yet. IMAP-over-SSL /might/, but the server I was testing against wasn't working with SSL (no connection). -handle email.Utils.getaddresses returning None. Thanks: Frankye Fattarelli. -fix default port for MultidropPOP3SSLRetriever. Version 4.0.0a7 17 June 2004 -debug and rewrite POP3-over-SSL functionality. Involved writing around some ugly limitations and kludges in Python's socket.ssl and poplib.POP3 code. But POP3-over-SSL actually works now, and is fairly clean. Let me know if it hangs; I might need to change the way blocking mode is handled on the underlying socket. Version 4.0.0a6 16 June 2004 -add pseudofile class to implement readline() and sslwrapper to implement sendall() on ssl objects. ssl objects in Python don't behave like a file, or like a socket; they're just ... broken. It's a deficiency in the Python standard library. This might make POP3-over-SSL work, or it might need more work yet. I've got it talking some SSL, but it hangs at the moment. Might be blocking in read(). -move Mboxrd file locking to _deliver_message(). Thanks: Frankye Fattarelli. -make --trace more useful and add extra debug info to main script. -eliminate noise from defaults in non-[options] section processing -found Python's ConfigParser .getboolean() method failed when the passed-in default was a non-string. Maybe I should have stayed with my own replacement configuration parser, as it properly handled this case ... submitted a patch to the Python bug tracker and added a workaround to getmail for the moment. -/really/ enable delete and read_all in [options] of rc file. Version 4.0.0a5 16 June 2004 -document tuple syntax. Thanks: Frankye Fattarelli. -fix "filters" name collision in script. Thanks: Frankye Fattarelli. Version 4.0.0a4 15 June 2004 -fix default values in three classes' parameters which previously relied on type conversion. Thanks: Andrew Raines. -fix default port for POP3-over-SSL and "username" parameter in documentation. Thanks: Frankye Fattarelli. -enable delete and read_all in [options] of rc file. Change handling of verbose. Version 4.0.0a3 15 June 2004 -fix typo in processing filters. Thanks: K. Shantanu. -fix typo in processing non-default parameters. Thanks: Andrew Raines. -document SSL retrievers -move retrievers.py configuration functionality into ConfigurableBase class -convert filters.py to use ConfigurableBase -convert destinations.py to use ConfigurableBase Version 4.0.0a2 14 June 2004 -fix default/'default' in filters module. Thanks: Andrew Raines. -add the mix-in classes for SSL support with POP3 classes. Meant small rewrites to the POP3 classes, but the design should be even cleaner now. Version 4.0.0a1 14 June 2004 -first alpha release of getmail version 4 Changes since getmail version 3 ------------------------------- -complete rewrite -switch to Python version 2.3.3: -increased code readability (augmented assignment, list comprehensions, string methods, etc) -eliminate external modules (ConfParser, timeoutsocket) -use standard library modules which have come up to reasonable levels of quality and functionality over old custom code (optparse, ConfigParser) -no longer require workarounds for older, broken standard library modules/ functions -modular, object-oriented framework for retrievers, destinations, filters allows extensibility -make more platform-agnostic (transparently support system EOL convention, etc) -support for multiple retriever/account types: -POP (single-user, multidrop, SDPS) -IMAPv4 (single-user, multidrop) -full native support for POP3-over-SSL and IMAP-over-SSL. -configuration (rc) file format changes: -support multiple rc files per invocation -one mail account per rc file