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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.