[英]Procmail Troubles
我已经尝试解决这个问题好几个星期了...
我的目标是在收件箱中搜索以下消息:
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文件未编码写入。 因为,在我给自己发送电子邮件之后,它应该复制并移动到指定目录。
难怪我犯了那些错误,我编辑了这三个文件一千次。
我的日志文件中什么都没有显示...
我已经修复了所有其他问题,并且知道我的/ usr / bin / procmail存在,因为我使用whereis来查看其路径。
但是我的测试仍然失败。 我一直向自己发送电子邮件,并检查“邮件文件夹”,以查看“ Hello”文件中的字节是否增加。
我如何才能使用日志? general.rc错误吗?
Procmail会处理传入的邮件,而不是仅将其放在您的邮箱中时处理。 如果要处理邮箱中已存在的邮件,则必须再次将其通过procmail传递,方法是将其“反弹”给自己,或者通过procmail通过管道传递。 在像mutt这样的命令行电子邮件客户端中,您可以使用“ b”命令来完成前者,而通过输入|procmail
后者。
如果您希望处理已有的电子邮件,则需要:
您的〜.forward文件在usr之前有一个丢失的'/'。 另外,您可以这样简短:
“ | ** / ** usr / bin / procmail”
我认为在进行任何其他调试之前,您最关心的是验证传入邮件中是否正在运行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文件的内容上。 您应该编辑问题以显示这两个文件的当前内容。
如果您只想在磁盘上找到带有这些“主题”行之一的邮件,我建议在您的收件箱中使用fgrep
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.