Я загружаю почту с помощью fetchmail и доставляю ее в локальную учетную запись unix, файл пользователей .procmailrc хранит почту в формате Maildir, а также доставляет ее в cyrus imap
PATH=$HOME/bin:/usr/bin:/bin:/usr/local/bin:.
MAILDIR=$HOME/Maildir/
DEFAULT=$HOME/Maildir/
LOGFILE=$MAILDIR/procmail.log
# Grab out the Return-Path
:0
* ^Return-Path:\/.*
{
RETURNPATH = "$MATCH"
}
DELIVER="/usr/lib/cyrus-imapd/deliver"
USERINBOX="$DELIVER -a $USER -m $USER.$USER -r $RETURNPATH"
:0w
| $USERINBOX
в procmail.log я получаю эту ошибку
From root Fri Sep 30 12:09:28 2011
Subject: Welcome to pop mail!
Folder: /home/user/Maildir/new/1317380968.8880_0.localhost 4634
/usr/lib/cyrus-imapd/deliver: option requires an argument -- 'r'
421-4.3.0 usage: deliver [-C <alt_config> ] [-m mailbox] [-a auth] [-r return_path] [-l] [-D]
421 4.3.0 v2.3.16-Fedora-RPM-2.3.16-6.el6
procmail: Program failure (75) of "/usr/lib/cyrus-imapd/deliver"
From root Fri Sep 30 12:30:34 2011
Subject: RE: test email
Folder: /home/user/Maildir/new/1317382234.8910_0.localhost 15507
Любые идеи?
еще немного работы
Я обновил .procmailrc для "myuser", и на этот раз он зависает при доставке в cyrus
PATH=$HOME/bin:/usr/bin:/bin:/usr/local/bin:.
MAILDIR=$HOME/Maildir/
DEFAULT=$HOME/Maildir/
LOGFILE=$MAILDIR/procmail.log
VERBOSE=yes
USER=`echo myuser | /usr/bin/tr A-Z a-z` # force lowercase username
# Grab out the Return-Path
:0
* ^Return-Path:\/.*
{
RETURNPATH = "not.set@domain.invalid"
}
DELIVER="/usr/lib/cyrus-imapd/deliver"
USERINBOX="$DELIVER -e -a $USER -m $USER.$USER"
:0w
| $USERINBOX
вывод из procmail.log ...
procmail: Assigning "USER=myuser"
procmail: No match on "^Return-Path:\/.*"
procmail: Assigning "DELIVER=/usr/lib/cyrus-imapd/deliver"
procmail: Assigning "USERINBOX=/usr/lib/cyrus-imapd/deliver -e -a myuser-m myuser.myuser"
procmail: Executing "/usr/lib/cyrus-imapd/deliver,-e,-a,myuser,-m,myuser.myuser"
а ps -ef показывает, что этот процесс запущен.
topdesk 9043 7367 0 13:25 ? 00:00:00 /usr/bin/procmail -d myuser
root 9050 9043 0 13:25 ? 00:00:00 /usr/lib/cyrus-imapd/deliver -e -a myuser -m myuser.myuser
До вашего редактирования мой комментарий был правильным. Обратного пути не было. Ваш лог-файл подтверждает это. Нут, вместо того, чтобы последовать моему совету, ты изменил сценарий по-другому.
После редактирования вы ввели новый параметр командной строки -e
который недоступен для deliver
. Увидеть страница руководства. Так что удаление параметра, вероятно, заставит его работать.
Если программа все еще зависает, вам необходимо предоставить журнал почты и посмотреть, сможете ли вы определить причину зависания.