Re: Maildir lock problem
Steven Saner <[email protected]>
| Newsgroups | gmane.mail.spam.active-spam-killer.general |
|---|---|
| Message-ID | <[email protected]> |
I suspected that there would be no reason to lock a Maildir file. It works fine now, thanks. Steve On Thu, Aug 07, 2003 at 03:12:39PM -0400, Marco Paganini wrote: > Hello Steven, > > > There seems to be an inconsistency in the deliver_mail method of > > askmail.py with regard to locking. In the case of an mbox type of > > mailbox, the locking mechanism uses the rc_lockfile configuration > > value if it is defined, but for a Maildir type of mailbox it does not. > > > > Since I am using NFS, I need to specify an rc_lockfile so that the > > file locking mechanism works. I am also using Maildir, and when I try > > to run a remote command that requires the delivery of a queued > > message, I would get a "No locks available" message. > > > > I have hacked the askmail.py file to do essentially the same thing for > > a Maildir type of mailbox as is done for an mbox type, and that fixes > > the error. Is there something I am overlooking that will cause me > > problems? > > Maildir deliveries do not need file locking. This is so because maildir files > have unique names, so no contention should occur. Note that the code tests > for the existence of a file and generates a new name if that file already > exists. > > However... > > You just pointed me a problem with ASK: It still tries to lock maildir > files and does not obey the rc_lockfile setting. I'd say the easiest way > to go about this is to remove locking altogether when delivery is being > performed in Maildir mode. I'll code these changes on 2.5.1 (CVS) right > now. For the meantime, if you want to change the code: > > In askmail.py: > > Look for something like: > > if not (os.path.exists(maildir_file) or os.path.exists(maildir_file_new)): > fh_mbox = lck.open(maildir_file, "w") > break > else: > > And change it to: > > if not (os.path.exists(maildir_file) or os.path.exists(maildir_file_new)): > fh_mbox = open(maildir_file, "w") > break > else: > > Also, look for something like: > > ## Unlock and close > if (using_stdout == 0 and using_pipe == 0): > lck.close() > > ## Pipe delivery closes normally > if using_pipe: > fh_mbox.close() > > And change it to: > > ## Unlock and close > if (using_stdout == 0 and using_pipe == 0 and using_maildir == 0): > lck.close() > > ## Pipe delivery closes normally > if using_pipe or using_maildir: > fh_mbox.close() > > Pay special attention to tabs. Python is *very* picky about tabs. Set your > tabsize to 4 and make sure you indent with tabs, not spaces. > > This should solve your problem. Please let me know if it works. > > Regards, > Paga > > -- > Marco Paganini | UNIX / Linux / Networking > [email protected] | PGP: http://www.paganini.net/pgp/ > http://www.paganini.net | Magnus Frater te spectat... > > > ------------------------------------------------------- > This SF.Net email sponsored by: Free pre-built ASP.NET sites including > Data Reports, E-commerce, Portals, and Forums are available now. > Download today and enter to win an XBOX or Visual Studio .NET. > http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01 > _______________________________________________ > A-S-K-users mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/a-s-k-users -- -------------------------------------------------------------------------- Steven Saner <[email protected]> Voice: 316-858-3000 Director of Network Operations Fax: 316-858-3001 Hubris Communications http://www.hubris.net ------------------------------------------------------- This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET. http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01