Назад | Перейти на главную страницу

procmail настаивает на записи в / var / mail в macOS Sierra

Я пытаюсь настроить 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 (хотя я не могу это точно воспроизвести, так что это в некоторой степени умозрительно).