红帽解决mail追加filter问题

Linux版本众多,Ubuntu本特别多的人使用,但是在企业中,RedHat被使用的也是极为普遍。

但是对于RedHat的资料却不是特别全面。

最近由于项目有要求是要对mail服务器接收mail时追加过滤器,于是就进行了各种调查

下面说明一下我的实现过程

①因为我是直接在运行中的项目的服务器上进行调查,所以mail的发送接收等基础功能已经实现。

详情请直接查询postfix+dovecot实现mail服务器

②安装 dovecot-pigeonhole.x86_64 包

查询可用安装包

yum --disablerepo=* --enablerepo=rhel-dvdlist | grep dovecot

安装

yum --disablerepo=* --enablerepo=rhel-dvd install dovecot-pigeonhole.x86_64 --downloaddir=rpm/.
这个包中包含了需要使用到的sieve包。

我之前在网上直接找到了sieve的rpm包进行安装,可能是应为版本不匹配的原因,使用网上的rpm进行配置的时候,重启dovecot服务时候就会报错。

③进行配置sieve相关配置文件

之前如果已经安装过了dovecot,那么应该已经存在managersieve相关内容

/etc/dovecot/conf.d/目录下

15-lda.conf

20-lmtp.conf

20-managesieve.conf

90-sieve.conf
以上4个文件是主要配置文件。

15-lda.conf中,将自动创建mailbox开关打开,防止设置过滤时出错,而不能创建目录

在mail_plugins中追加sieve插件

15-lda.conf:

lda_mailbox_autocreate = yes

lda_mailbox_autosubscribe = yes

protocol lda {

mail_plugins = $mail_plugins sieve

}
20-lmtp.conf中,同样追加sieve插件

20-lmtp.conf:

protocol lmtp {

mail_plugins = $mail_plugins sieve

}
20-managesieve.conf中,使用默认文件即可,为防止出错,将默认文件的注释释放。

20-managesieve.conf:

protocols = $protocols sieve

service managesieve-login {

inet_listener sieve {

port = 4190

}

}

plugin {

sieve = file:/sieve;active=/.dovecot.sieve

}
90-sieve.conf中进行sieve的主要配置

90-sieve.conf:

plugin {

sieve = file:/sieve;active=/.dovecot.sieve

sieve_global_path = /var/lib/dovecot/sieve/default.sieve

sieve_global = /var/lib/dovecot/sieve/global/

sieve_dir = ~/sieve

mail_plugins = $mail_plugins sieve

}
以上配置基本都是使用的默认配置,没有进行特殊的路径修改,如果需要修改特殊的路径,请在配置各种路径的时候注意一下。

我在配置的时候,只有/var/lib/dovecot/sieve/下的文件夹和文件是没有的,这部分是手动创建的。

/etc/dovecot/目录下,进行配置dovecot的配置

dovecot.conf:

protocols = imap pop3 lmtp sieve
向协议中也追加sieve。

以上设置执行结束后,重启dovecot服务

service dovecot restart
全部ok之后,配置就结束了。

④编写.sieve控制文件

在上面的90-sieve.conf中设置过sieve = file:/sieve;active=/.dovecot.sieve

这个设置的意思是,使用当前mail用户下的mailbox本目录的.dovecot.sieve文件进行控制

我的目录为/home/testuser/Maildir/,有已经进行用户分组的应该还有一层目录

在这个目录下创建.dovecot.sieve进行mail的过滤。

require “fileinto”;

# -------------------------------------------------

--------------- Global sieve rules --------------

-------------------------------------------------

rule:[Move Spam to Junk Folder]

if header :matches [“X-Spam-Flag”] [“YES”] {

#

# If you want to copy this spam mail to other people, uncomment

# below line and set correct email address. One email one line.

#

#redirect "user1@domain.ltd";

#redirect "user2@domain.ltd";

# Keep this mail in INBOX.

#keep;      <-- 沒有 stop, reject, discard 的话, 它就是 Deault "keep"

# If you ensure it is really a spam, drop it to 'Junk', and stop

# here so that we do not reply to spammers.

fileinto "Junk";

# Do not waste resource on spam mail.

# "stop" 才能跳出现在的 flow

stop;

# If you ensure they are spam, you can discard it.

#discard;

}
以上代码片段的意思是,如果mail地址的开头包含"X-Spam-Flag",那么就将该mail移动到"Junk"文件夹下。

网上可以找到更加全面的sieve文件写法。

以上就是基于红帽RedHat CentOS6的dovecot+sieve解决mail过滤的解决方法。

PS:虽然我现在的服务器还没好用。。。。哈哈哈哈

上一篇:Java性能优化:Stream如何提高遍历集合效率?


下一篇:JavaEE(Session与Filter)