通过四天的调查,sieve的方法已经被我pass掉了。不知道是因为什么原因,sieve的方法总是无法实现。
其实,如果sieve好用的话,个人还是推荐使用sieve,因为sieve的规则文件非常符合高级开发语言的写法。procmail的规则文件十分的复杂,但如果弄明白了写法的要求,实现简单操作还是可以的。
问题mark
下面先说一下之前sieve为什么一直不好用。最后我定位到postfix的mailbox_command参数的问题。
如果要使用dovecot+sieve的方法,需要将postfix中的mailbox_command参数设置为使用dovecot作为邮件代理
mailbox_command = /usr/lib/dovecot/deliver -c /etc/dovecot/dovecot.conf -f “
S
E
N
D
E
R
"
−
d
"
{SENDER}" -d "
SENDER"−d"{RECIPIENT}”
但是如果按照如上进行设置,我的服务器就无法再进行送受信,找了很多原因,还是没有解决掉,所以,如果这个地方设置之后,可以正常送受信,那么sieve的过滤应该就能好用了。
procmail安装配置
使用procmail的话,配置方面就简单的多了。
首先进行procmail的插件安装
查找可用安装包
安装
安装之后,只需要在postfix中配置mailbox_command,让procmail作为邮件代理即可
如上设置的时候,后面的-f -d参数可以不进行设置,这个是我在其他网上找到的一个补足,不写应该也是可用的。
procmail规则文件简书
procmail的规则文件与c语言很相似,感觉都是这种底层汇编语言。
贴上一个详细介绍网站,想知道详细情况的同学,可以直接访问那个网站进行自学。
https://www.freebsd.org/cgi/man.cgi?query=procmailex&sektion=5&manpath=freebsd-release-ports
如果是使用procmail进行代理,首先需要一个指向文件,作为指引mail的方向。
这个文件放在user的根目录下
我的目录为 /home/testuser/
别且请注意forward前面还有一个点,这个不要丢了
.forward
“|IFS=’ ’ && exec /usr/bin/procmail -f- || exit 75”
以点开头的文件,直接使用ls,ll之类的是无法看到的
需要加上参数 -a ,也就是 ll -a才能看到这种文件。
指向文件配置好后,在同目录下设置规则文件
以下是我的一个例子
.procmailrc
SHELL=/bin/bash ----------为了可以扩展与sh文件的关联使用,sh是很强大的东西,有兴趣的同学可以深入学一下
PATH=/usr/bin:/usr/local/bin -----------基础环境路径
DEFAULT=$HOME/Maildir/ -----------邮件默认接收地址,这个地方一定要设置,不设置的话,邮件是不会进入【收件箱】的
LOGFILE=$HOME/Maildir/procmail.log ------------保存log
:0 ---------语句开头标识,有这个标识后,下一行的语句才会执行
{
:0
.Spam/ ---------保存到 骚扰邮件文件夹中
}
同样的,这个procmailrc也是一个前面带点的文件,请注意。
终于解决了。呼。。。