我正在尝试配置fetchmail
并procmail
使用 Google 帐户。这是我的$HOME/.fetchmailrc
:
poll imap.gmail.com protocol IMAP
user "<email>" is jviotti here
password '<password>'
folder 'Inbox'
keep
ssl
mda 'procmail'
这是我的$HOME/.procmailrc
:
MAILDIR=$HOME/Mail
DEFAULT=$MAILDIR/$LOGNAME/
LOGFILE=$MAILDIR/log/procmail
VERBOSE=on
procmail
我在运行fetchmail -a -v
下载的每条消息时都会收到以下错误:
fetchmail: IMAP> A0005 FETCH 1 RFC822.HEADER
fetchmail: IMAP< * 1 FETCH (RFC822.HEADER {2865}
reading message <email>@gmail-imap.l.google.com:1 of 22 (2865 header octets) #
fetchmail: IMAP< )
fetchmail: IMAP< A0005 OK Success
fetchmail: IMAP> A0006 FETCH 1 BODY.PEEK[TEXT]
fetchmail: IMAP< * 1 FETCH (BODY[TEXT] {3983}
(3983 body octets) *******************************.************************.***********.*****
fetchmail: IMAP< )
fetchmail: IMAP< A0006 OK Success
procmail: Couldn't create "/var/mail/jviotti"
not flushed
fetchmail: IMAP> A0007 STORE 1 +FLAGS (\Seen)
fetchmail: IMAP< A0007 OK Success
注意procmail: Couldn't create "/var/mail/jviotti" not flushed
。出于某种原因,尽管和procmail
,仍坚持写信给。/var/mail
MAILDIR=$HOME/Mail
DEFAULT=$MAILDIR/$LOGNAME/
为什么会这样呢?
通过查看procmailrc
手册页,我发现ORGMAIL
默认为/var/mail/$LOGNAME
,并且DEFAULT
默认为ORGMAIL
:
ORGMAIL /var/mail/$LOGNAME
(Unless -m has been specified, in which case it is unset)
DEFAULT $ORGMAIL
但是,即使在设置ORGMAIL
了其他内容后$HOME/.procmailrc
,我仍然收到相同的错误/警告。
请注意,即使我收到此错误,我的邮件仍被正确下载到$HOME/Mail
。
编辑:查看 的输出procmail -v
。由于某种原因,它仍然将我的系统邮箱设置为 /var/mail/jviotti。
$ procmail -v
procmail v3.22 2001/09/10
Copyright (c) 1990-2001, Stephen R. van den Berg <[email protected]>
Copyright (c) 1997-2001, Philip A. Guenther <[email protected]>
Submit questions/answers to the procmail-related mailinglist by sending to:
<[email protected]>
And of course, subscription and information requests for this list to:
<[email protected]>
Locking strategies: dotlocking, flock()
Default rcfile: $HOME/.procmailrc
Your system mailbox: /var/mail/jviotti
编辑2:请参阅以下内容man procmail
:
如果命令行中没有指定 rcfiles 和 -p,procmail 将在读取 $HOME/.procmailrc 之前解释来自 /etc/procmailrc(如果存在)的命令。创建 /etc/procmailrc 时必须小心,因为如果情况允许,它将以 root 权限执行(当然与 $HOME/.procmailrc 文件相反)。
这里说的是,在读取我的主配置之前,它会从中读取/etc/procmailrc
,但是该文件在我的系统中不存在,即使明确传递-p
(指向我的主配置),系统邮箱仍然是/var/mail/jviotti
。
手册页还说:
如果未找到 rcfile,或者 rcfile 的处理未完成,procmail 将会把邮件存储在默认系统邮箱中。
“falls off the end” 是什么意思?
以下是 Procmail 日志文件中来自一条传入消息的输出:
procmail: [49293] Tue Dec 13 14:29:20 2016
procmail: Assigning "LASTFOLDER=/Users/jviotti/Mail/jviotti/new/1481653760.49293_2.jviotti-rmbp.local"
procmail: Notified comsat: "jviotti@0:/Users/jviotti/Mail/jviotti/new/1481653760.49293_2.jviotti-rmbp.local"
From jviotti Tue Dec 13 14:29:20 2016
Subject: Re: [resin-io/etcher] chore: add support for snapshot builds (#968)
Folder: /Users/jviotti/Mail/jviotti/new/1481653760.49293_2.jviotti-r 8015
答案1
您看到的错误消息基本上是无害的,但它是 Procmail 告诉您它无法使用您当前的权限创建默认收件箱 - 您需要以 root 身份创建一个空邮箱。
使用正确的权限手动创建它应该可以解决此问题。
sudo install -o $USER -g mail -m 0600 /dev/null /var/mail/$USER
procmail -v
只是报告编译后的默认值是什么;它.procmailrc
根本不会检查你(如果它检查了,任何非平凡的配方文件都会包含大量的邮箱,这些邮箱具有不同的条件,以确定何时写入哪个邮箱)。
“落下结尾”的意思是如果你有一个.procmailrc
不告诉Procmail投递到特定邮箱并停止处理(比如你的邮箱)的命令,最后的动作将类似于如果你的命令中的最后几行.procmailrc
是
:0:
$DEFAULT
这也说明了无条件 Procmail 传递配方是什么样的。
您发布的 Procmail 日志文件片段显示 Procmail 实际上执行.procmailrc
得很好。错误消息显然是在它启动时出现的,在它开始执行之前.procmailrc
(虽然我无法准确重现这一点,所以这只是一种推测)。