我正在使用: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,否则您可以将其省略。
用作zsh
Procmail 处理的 shell 看起来很奇怪;尝试将其更改为/bin/sh
.即使您喜欢zsh
,您可能也应该避免在 Procmail 中使用它的功能。使用非标准 shell 在过去曾造成过难以解释的麻烦(尽管我见过的错误是tcsh
)。
你有两个spamc
食谱。一个就够了。第二个应该去(spamc
无论如何,它本身会拒绝太大的消息),但我也会从第一个中删除锁定。
你的DEFAULT
应该是$HOME/Mail/Inbox
吧?您不想$HOME/Mail
直接邮寄,是吗?
除此之外,你的.procmailrc
表现平淡无奇。
答案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