procmail 坚持在 macOS Sierra 中写入 /var/mail

procmail 坚持在 macOS Sierra 中写入 /var/mail

我正在尝试配置fetchmailprocmail使用 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/mailMAILDIR=$HOME/MailDEFAULT=$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(虽然我无法准确重现这一点,所以这只是一种推测)。

相关内容