procmail 未运行

procmail 未运行

我正在使用:Mutt-kz + Isync + msmtp + spamassassin + Procmail

Mutt-kz、Isync 和 msmtp 正在运行。我无法让 procmail 在邮件到达时自动启动。我以非 root 用户身份执行所有操作并运行 Arch Linux。 procmail 已安装。

文件夹结构:

$HOME/Mail/Inbox
          /Enviados
          /Borradores
          /Spam
          /P-Spam
          /Trash

邮件带有以下 cronjob 脚本:

#!/bin/bash
mbsync googlemail && notmuch new

这是我的 .forward,权限为 644。

"|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #damian"

这是我的 .procmailrc,权限为 644。

PATH=/bin:/usr/bin
LOGFILE=$HOME/Mail/procmail.log
LOGABSTRACT=ALL
VERBOSE=YES   
DEFAULT=$HOME/Mail
MAILDIR=$HOME/Mail
SHELL=/usr/bin/zsh

:0fw: spamassassin.lock
* < 512000
| /usr/bin/vendor_perl/spamc 

:0fw
| /usr/bin/vendor_perl/spamc 

:0:
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
Spam

:0:
* ^X-Spam-Status: Yes
P-Spam

如果我运行 procmail -v 我得到(只有重要的东西):

procmail v3.22 2001/09/10
Locking strategies:     dotlocking, fcntl(), lockf(), flock()
Default rcfile:         $HOME/.procmailrc
Your system mailbox:    /var/spool/mail/damian

二运行:

procmail DEFAULT=/dev/null VERBOSE=yes /dev/null </dev/null

我得到:

procmail: [1970] Tue Apr 21 22:16:37 2015
procmail: Rcfile: "/dev/null"
procmail: Assigning "MAILDIR=/home/damian"
procmail: Assigning "LASTFOLDER=/dev/null"
procmail: Opening "/dev/null"
Folder: /dev/null             

答案1

似乎没有任何简单的方法可以将 Procmail 集成到isync/中mbsync。我会选择服务器端过滤,或者可能放弃将 IMAP 与本地文件夹同步的(如此简洁的)想法。

这样,我原来的答案可能并不重要,但我将其保留在下面。


您的.forward文件包含语法错误。这damian应该是一条注释# damian,但在当今时代,除非您运行的是上世纪遗留的 Sendmail,否则您可以将其省略。

用作zshProcmail 处理的 shell 看起来很奇怪;尝试将其更改为/bin/sh.即使您喜欢zsh,您可能也应该避免在 Procmail 中使用它的功能。使用非标准 shell 在过去曾造成过难以解释的麻烦(尽管我见过的错误是tcsh)。

你有两个spamc食谱。一个就够了。第二个应该去(spamc无论如何,它本身会拒绝太大的消息),但我也会从第一个中删除锁定。

你的DEFAULT应该是$HOME/Mail/Inbox吧?您不想$HOME/Mail直接邮寄,是吗?

除此之外,你的.procmailrc表现平淡无奇。

如需更多帮助,请参阅http://iki.fi/era/mail/procmail-debug.html

答案2

由于procmail不用作您的 MDA,因此不会调用它。

我建议您在 shell 脚本的基础上工作,该脚本将定期触发cron并用于formail显式提供procmail.

以下是此类 shell 脚本的框架:

$ cat <<eof >splitter.sh
#!/bin/sh

orig_mailbox=${HOME}/Mail/Inbox

[ -s ${orig_mailbox} ] && formail -s <${orig_mailbox} procmail ${HOME}/.procmailrc
eof

当然,只有当您.procmailrc从传入邮箱中删除任何邮件时,这才有效。为了确保这一点,我建议.procmailrc通过一个包罗万象的规则来结束你的:

:0
${HOME}/Mail/Received

相关内容