web-dev-qa-db-ja.com

procmailはmacOSSierraの/ var / mailへの書き込みを主張しています

Googleアカウントでfetchmailprocmailを設定しようとしています。これは私の$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に注意してください。何らかの理由で、/var/mailMAILDIR=$HOME/Mailであっても、procmailDEFAULT=$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に正しくダウンロードされていることに注意してください。

EDIT: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

編集2man procmailから以下を参照してください:

コマンドラインでrcfilesと-pが指定されていない場合、procmailは$ HOME/.procmailrcを読み取る前に、/ etc/procmailrc(存在する場合)からのコマンドを解釈します。/etc/procmailrcを作成するときは注意が必要です。状況が許せば、root権限で実行されるためです(もちろん$ HOME/.procmailrcファイルとは異なります)。

これは、ホーム構成を読み取る前に/etc/procmailrcから読み取ることを示していますが、そのファイルはシステムに存在せず、明示的に-p(ホーム構成を指す)を渡しても、システムメールボックスはまだ/var/mail/jviottiです。

マニュアルページにも次のように書かれています。

Rcfileが見つからない場合、またはrcfileの処理が終了しない場合、procmailはメールをデフォルトのシステムメールボックスに保存します。

「終わりから落ちる」とはどういう意味ですか?

1つの受信メッセージからの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
3
jviotti

表示されるエラーメッセージは基本的に無害ですが、現在の権限ではデフォルトの受信トレイを作成できないことを示すProcmailです。空のメールボックスを作成するにはrootである必要があります。

適切な権限で手動で作成すると、この問題が解決するはずです。

Sudo install -o $USER -g mail -m 0600 /dev/null /var/mail/$USER

procmail -vは、コンパイルされたデフォルトが何であるかを単に報告します。 .procmailrcはまったく調べられません(調べた場合、重要なレシピファイルには、いつどの書き込みを行うかについてさまざまな条件のメールボックスが多数含まれます)。

「Falloffthe end」とは、Procmailに特定のメールボックスに配信して処理を停止するように指示しない.procmailrcがある場合(あなたのような)、最終的なアクションは、.procmailrcの最後の行が

:0:
$DEFAULT

これは、無条件のProcmail配信レシピがどのように見えるかも示しています。

投稿したProcmailのログファイルスニペットは、Procmailが実際に.procmailrcを正常に実行していることを示しています。エラーメッセージは、起動中、.procmailrcの実行を開始する前に発生するようです(ただし、これを正確に再現することはできないため、これはやや推測的です)。

3
tripleee