在使用开源邮件Postfix+Dovecot+Roundcube时候,如果碰到需要对邮件分类、垃圾邮件过滤时,那么就可以尝试使用Sieve这个方案,相比maildrop兼容性更好。
Sieve 是一个用于电子邮件过滤的开源项目,它基于 Sieve 脚本语言,允许用户定义复杂的规则来管理他们的电子邮件。该项目由 Thomas Schmid 维护,旨在提供一个高效、灵活的邮件过滤解决方案。
典型生态项目
Sieve 项目与其他邮件服务器和客户端项目紧密集成,以下是一些典型的生态项目:
Dovecot:一个开源的 IMAP 和 POP3 邮件服务器,支持 Sieve 脚本。
Roundcube:一个基于 Web 的 IMAP 客户端,支持 Sieve 脚本。
Pigeonhole:一个为 Dovecot 提供的 Sieve 插件,增强了邮件过滤功能。
部署
1、安装 dovecot-pigeonhole
yum install dovecot-pigeonhole
2、修改Postfix配置
# 修改 master.cf
# Dovecot LDA for delivery
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/local/libexec/dovecot/dovecot-lda -f ${sender} -d ${recipient}
# 修改 main.cf
dovecot_destination_recipient_limit = 1
virtual_transport = dovecot
3、修改Dovecot配置
mkdir -p /usr/local/etc/dovecot/sieve/global
dovecot/conf.d/10-mail.conf
mail_home = /var/mailbox/%d/%n/Maildir/sieve
mail_location = maildir:/var/mailbox/%d/%n/Maildir
dovecot/conf.d/15-lda.conf
protocol lda {
mail_plugins = $mail_plugins sieve
}
dovcot/conf.d/20-managesieve.conf
protocols = $protocols sieve
dovecot/conf.d/90-sieve.conf
plugin {
sieve = /var/mailbox/%d/%n/Maildir/sieve/dovecot.sieve
sieve_global_path = /usr/local/etc/dovecot/sieve/default.sieve
sieve_dir = /var/mailbox/%d/%n/Maildir/sieve
sieve_global_dir = /usr/local/etc/dovecot/sieve/global/
}
4、Roundcube启用插件
config/config.inc.php
$config['plugins'] = ['managesieve',];
plugins/managesieve/config.inc.php
$config['managesieve_port'] = 4190;
$config['managesieve_host'] = '192.168.16.202';
$config['managesieve_usetls'] = false;
$config['managesieve_default'] = '/usr/local/etc/dovecot/sieve/global';
测试
最后登录roundcube,可以看到设置里面多了一个过滤器的选项。但是首次运行我这边出现500错误,查看日志报如下错误
“[01-Sep-2024 13:50:24 PRC] PHP Fatal error: Class 'Net_Sieve' not found in /www/wwwroot/mail.nbqykj.cn/plugins/managesieve/lib/Roundcube/rcube_sieve.php on line 68”
查找资料发现必须安装 Net_Sieve ,我使用一下命令安装成功解决。
pear install Net_Sieve
总结,设置比较方便,基本满足我的需求,完成。