On Tue, Aug 10, 2010 at 2:01 AM, <tinn...@isbd.co.uk> wrote: > Tim Roberts <t...@probo.com> wrote: >> tinn...@isbd.co.uk wrote: >> > >> >I'm using the python mailbox class in a script that processes incoming >> >mail and delivers it to various mbox format mailboxes. It appears >> >that, although I am calling the lock method on the destination before >> >writing to the mbox and calling unlock afterwards the locking isn't >> >working correctly. >> >... >> >So it seems that python's mailbox class locking isn't playing nicely >> >with mutt's mailbox locking whereas postfix's locking does work >> >correctly. >> >> Correct. The "dest.flush()" method creates a temporary file, copies the >> entire modified mailbox into it, removed the original file, and renames the >> temp file into place. >> > Yes, I just took a look at the mailbox.py code and it does exactly > that which of course screws up just about any normal MUA looking at > the mbox. Grrrrrr! > > >> The Postfix MDA, like most MDAs, just opens the existing file and appends >> the new data to it. >> >> >Has anyone seen this problem before, and/or do I need to anything more >> >than the following for the locking to work correctly:- >> >> It's not the locking. It's the flush mechanism. The mbox class doesn't >> know that the ONLY thing you did was an append. You might have modified >> other messages in the middle. If you want to do an append, you'll need to >> write your own subclass of mbox. > > OK, thanks. In reality I can probably just use straightforward file > reading and writing as the *only* thing I will ever be doing is to > append a message to a mailbox file. > > I think there should be a big warning in the mailbox documentation to > this effect as doing it the way that Python's mailbox class does it > will break all sorts of things. There should maybe be a specific > 'append' method.
File a documentation and/or library bug: http://bugs.python.org/ Cheers, Chris -- http://mail.python.org/mailman/listinfo/python-list