我一直在努力解决这个问题......
我的目标是在我的收件箱中搜索以下消息:
Hello
Hi
Hey
我使用三个文件为我做这个。第一个是我的$ HOME
中的.forward文件"|IFS=' '&&exec usr/bin/procmail||exit 75 #username"
这两个在我的〜/ .procmail目录
中.procmailrc
VERBOSE=off
MAILDIR=$HOME/Mail
PMDIR=$HOME/.procmail
DEFAULT=/var/spool/mail/username
LOGFILE=$PMDIR/log
INCLUDERC=$PMDIR/general.rc
#end of .procmailrc
最后是规则文件:general.rc
:0
* ^From:.*sumone@sumaddy.com
* ^Subject:.*hello
$HOME/Mail/Hello
应该发生的是,所有这三个文件一起工作来复制和移动包含其主题中的hello模式的邮件。为了安全起见,它还会寻找某个人的地址。然后,当这些模式匹配时,它会粘住它找到的并创建指定的路径;如果它还不存在。
但它不这样做。 在我完成emacs,vi,...中的这些文件编辑后,然后将其保存,它会自动运行吗?或者我需要编译它吗?
如果我这样做,.procmailrc可能需要(如果不是全部)'Shell = / bin / sh'
不是我没试过......
不,我的开发设计很差,无法处理收到的邮件..
我通过向自己发送电子邮件进行了测试。
我认为,我的General.RC文件不是编码写的。因为,在我给自己发送电子邮件之后,它应该立即复制并移动到指定的目录。
难怪我犯了这些错误,我已经将这三个文件编辑了一百万次。
我的LOG文件中没有显示任何内容......
我已修复其他所有内容,我知道我的/ usr / bin / procmail存在,因为我使用whereis来查看其路径。
但我的测试仍然失败。我不断发送电子邮件并检查我的邮件文件夹,看看我的“Hello”文件中的字节是否增加了..
如何让日志生效? general.rc错了吗?
答案 0 :(得分:3)
Procmail会在邮件进入时对邮件进行处理,而不是仅仅在邮件位于邮箱中时对邮件进行处理。如果你想要处理邮箱中已经存在的邮件,你必须再次通过procmail传递它,或者通过“弹回”给自己,或者通过procmail传递它。在像mutt这样的命令行电子邮件客户端中,您可以使用'b'命令执行前者,通过键入|procmail
答案 1 :(得分:2)
如果您希望处理已有的电子邮件,则需要:
答案 2 :(得分:2)
你的〜.forward文件在usr之前缺少'/'。另外,你可以像这样保持简短;
“| ** / ** usr / bin / procmail”
答案 3 :(得分:1)
我认为在进行任何其他调试之前,您首要关注的是验证procmail是否在传入的电子邮件上运行。
我的建议是让你的.procmailrc文件看起来像这样(别无其他)
VERBOSE=on
LOGFILE=/tmp/procmail.log
:0 fhbw
| sed "s/^Subject:/& --procmail working--/"
然后给自己发一封电子邮件。
您应该在/tmp/procmail.log中获取一个日志文件,并且您的电子邮件应该到达您的邮箱,主题行已修改为包含“--procmail working - ”。
如果这不起作用,则不会调用procmail,您应该编辑问题以显示.forward文件的当前内容。
如果可以,那么问题在于.procmailrc或general.rc文件的内容。您应该编辑您的问题以显示这两个文件的当前内容。
答案 4 :(得分:1)
如果您只想在磁盘上使用其中一个主题行查找邮件,我建议您在收件箱中添加fgrep
。