Я пытаюсь настроить 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 <srb@cuci.nl>
Copyright (c) 1997-2001, Philip A. Guenther <guenther@sendmail.com>
Submit questions/answers to the procmail-related mailinglist by sending to:
<procmail-users@procmail.org>
And of course, subscription and information requests for this list to:
<procmail-users-request@procmail.org>
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 не найден или обработка файла rc завершается неудачно, 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 сообщает вам, что он не может создать почтовый ящик по умолчанию с вашими текущими разрешениями - вам нужно быть 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
(хотя я не могу это точно воспроизвести, так что это в некоторой степени умозрительно).