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. -- Chris Green -- http://mail.python.org/mailman/listinfo/python-list