procmail交付给cyrus imap

我使用fetchmail下载邮件并将其发送到本地unix帐户,用户.procmailrc文件以Maildir格式存储邮件,并将其发送给cyrus imap

PATH=$HOME/bin:/usr/bin:/bin:/usr/local/bin:. MAILDIR=$HOME/Maildir/ DEFAULT=$HOME/Maildir/ LOGFILE=$MAILDIR/procmail.log # Grab out the Return-Path :0 * ^Return-Path:\/.* { RETURNPATH = "$MATCH" } DELIVER="/usr/lib/cyrus-imapd/deliver" USERINBOX="$DELIVER -a $USER -m $USER.$USER -r $RETURNPATH" :0w | $USERINBOX 

在procmail.log我得到这个错误

 From root Fri Sep 30 12:09:28 2011 Subject: Welcome to pop mail! Folder: /home/user/Maildir/new/1317380968.8880_0.localhost 4634 /usr/lib/cyrus-imapd/deliver: option requires an argument -- 'r' 421-4.3.0 usage: deliver [-C <alt_config> ] [-m mailbox] [-a auth] [-r return_path] [-l] [-D] 421 4.3.0 v2.3.16-Fedora-RPM-2.3.16-6.el6 procmail: Program failure (75) of "/usr/lib/cyrus-imapd/deliver" From root Fri Sep 30 12:30:34 2011 Subject: RE: test email Folder: /home/user/Maildir/new/1317382234.8910_0.localhost 15507 

有任何想法吗?

一些更多的工作

我更新了“myuser”的.procmailrc文件,这一次在交付给cyrus时挂起

 PATH=$HOME/bin:/usr/bin:/bin:/usr/local/bin:. MAILDIR=$HOME/Maildir/ DEFAULT=$HOME/Maildir/ LOGFILE=$MAILDIR/procmail.log VERBOSE=yes USER=`echo myuser | /usr/bin/tr AZ az` # force lowercase username # Grab out the Return-Path :0 * ^Return-Path:\/.* { RETURNPATH = "[email protected]" } DELIVER="/usr/lib/cyrus-imapd/deliver" USERINBOX="$DELIVER -e -a $USER -m $USER.$USER" :0w | $USERINBOX 

从procmail.log输出…

 procmail: Assigning "USER=myuser" procmail: No match on "^Return-Path:\/.*" procmail: Assigning "DELIVER=/usr/lib/cyrus-imapd/deliver" procmail: Assigning "USERINBOX=/usr/lib/cyrus-imapd/deliver -e -a myuser-m myuser.myuser" procmail: Executing "/usr/lib/cyrus-imapd/deliver,-e,-a,myuser,-m,myuser.myuser" 

ps -ef显示正在运行的进程

 topdesk 9043 7367 0 13:25 ? 00:00:00 /usr/bin/procmail -d myuser root 9050 9043 0 13:25 ? 00:00:00 /usr/lib/cyrus-imapd/deliver -e -a myuser -m myuser.myuser 

在编辑之前,我的评论是正确的。 目前没有返回path。 你的日志文件证实了这一点。 坚果而不是按照我的build议,你以不同的方式改变了脚本。

在您编辑之后,您input了一个新的命令行参数-e ,该参数不可用于deliver 。 看手册页 。 所以删除参数可能会使其工作。

如果程序仍然挂起,那么您必须提供邮件日志,看看是否可以确定挂起的原因。