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:虽然我现在的服务器还没好用。。。。哈哈哈哈