我正在尝试使用Google帐户configurationfetchmail和procmail 。 这是我的$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
运行fetchmail -a -v获取下载的每条消息时,从procmail得到以下错误:
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 。 出于某种原因,即使MAILDIR=$HOME/Mail和DEFAULT=$MAILDIR/$LOGNAME/ , procmail坚持写入/var/mail 。
这是为什么?
通过查看procmailrc手册页,我发现ORGMAIL默认为/var/mail/$LOGNAME ,并且DEFAULT默认为ORGMAIL :
ORGMAIL /var/mail/$LOGNAME (Unless -m has been specified, in which case it is unset) DEFAULT $ORGMAIL
但是,即使在$HOME/.procmailrc ORGMAIL设置为其他值之后,我ORGMAIL得到相同的错误/警告。
请注意,即使我得到这个错误,我的邮件被正确地下载到$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中的命令(如果存在)。 在创build/ etc / procmailrc时一定要小心,因为如果情况许可的话,它将以root权限执行(当然,与$ HOME / .procmailrc文件相反)。
这里是说,在阅读我的家庭configuration之前,它将从/etc/procmailrc读取,但是该文件不存在于我的系统中,甚至通过显式传递-p (指向我的主页configuration),系统邮箱是仍然/var/mail/jviotti 。
手册页还说:
如果没有findrcfile,或者rcfile的处理结束,procmail会把邮件存储在默认的系统邮箱中。
“落底”是什么意思?
以下是来自一个传入消息的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
您看到的错误消息基本上是无害的,但它是Procmail告诉您,它不能创build具有您当前权限的默认收件箱 – 您需要是root用户才能创build一个空邮箱。
用正确的权限手动创build它应该可以解决这个问题。
sudo install -o $USER -g mail -m 0600 /dev/null /var/mail/$USER
procmail -v只是报告编译的默认值是什么; 它根本不检查你的.procmailrc (如果是这样的话,任何不重要的配方文件都会包含大量不同条件的邮箱,以便在何时写入)。
“Fall off the end”意味着如果你有一个.procmailrc ,它不会告诉Procmail把邮件发送到一个特定的邮箱并停止处理(比如你的邮件),那么最后的动作将类似于你的.procmailrc中的最后一行
:0: $DEFAULT
这也说明了什么是无条件的Procmail交付食谱看起来像。
你发布的Procmail的日志文件片段显示了Procmail实际上正在执行你的.procmailrc 。 这个错误消息显然是在它启动之前发生的,在它开始执行.procmailrc (尽pipe我不能完全重复这个,所以这是轻度的推测)。