有没有人看到以下问题与写入到mbox文件时procmail文件locking超时? 对于具有以下procmailrc的用户,每隔几周会发生一次:
:0 c: #copy all mail to "bkp" bkp
大多数时候,这个工作没有问题。 每隔几周,procmail日志中将显示以下消息:
procmail: Forcing lock on "bkp" procmail: Timeout, was waiting for "bkp"
有时procmail能够在postfix命令超时(现在设置为一个小时)之前释放锁(或锁消失)。 否则,邮件传递将失败:
relay=local, delay=2001, delays=0.78/0.05/0/2000, dsn=5.3.0, status=bounced (Command time limit exceeded: "procmail -t -f-")
bkp文件非常大(超过10千兆字节),但是问题实例之间的问题是间歇性的,在具有相同procmailrc和GB大小文件的其他用户之间不会发生(尽pipe没有这么大)。
用户不喜欢使用MailDir风格的文件夹,并希望将其保存为mbox文件。 有没有一种方法,我可以重新编写脚本,以允许邮件传递到用户的邮箱,而procmail等待锁的bkp? 我试过了:
:0c #copy all mail to "Saved" { :0: bkp }
编辑:我已经改变了上面的食谱:0 w:到:0:因为w等待一个程序,没有在这个声明中执行。
在procmail停止接受电子邮件之前,如果我在testing期间手动lockingbkp,它将允许两个电子邮件。 如果我在postfix超时之前释放锁,邮件将被发送。 我也想确定locking问题的根本原因,但我还没有能够触发它,除非通过自己locking文件。 我已经添加LOCKTIMEOUT = 10来尝试强制在正常的邮件传递没有成功的条件。
这里是procmail的版本信息:
procmail v3.22 2001/09/10 Copyright(c)1990-2001,Stephen R. van den Berg版权所有(c)1997-2001,Philip A. Guenther
通过发送到以下方式,向procmail相关邮件列表提交问题/答案:
当然,这个列表的订阅和信息请求可以:
locking策略:dotlocking,fcntl()默认rcfile:$ HOME / .procmailrc它可能是您的主要组可写的
您是否考虑过使用较小的每日/每周备份邮箱/文件?
您可以使用cron作业将其移动到主备份中。
man procmailex举例说明如何根据date输出获取目的地名称。
man procmail举例说明如何使用formail来后台处理locking邮箱文件。
以下是我所做的:
为了testing我的问题,我构build了一个debian squeeze的vmware映像,并将磁盘IOPS限制为40,内存限制为256MB。
我使用postfix,dovecot和procmail,就像我在生产机器上设置的一样。
我发现:
这并不完全确定,但它看起来像高磁盘负载连同访问procmail试图locking的邮件文件的Outlook客户端可以很容易地延迟邮件传递足够长的时间来命中postfix中设置的命令超时。
我还没有尝试过: