procmail 递送至 cyrus imap

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 A-Z a-z` # 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

答案1

在您编辑之前,我的评论是正确的。没有 Return-Path 存在。您的日志文件证实了这一点。但是您没有听从我的建议,而是以不同的方式更改了脚本。

编辑后,您输入了一个新的命令行参数-e,该参数不可用deliver。请参阅手册页。因此删除该参数可能会使其起作用。

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

相关内容