目录:
这是我们设置和配置邮件服务器的第三部分。 在本教程中,我们将介绍Rspamd垃圾邮件过滤系统的安装和配置,并将其集成到我们的邮件服务器中,创建DKIM和DMARC DNS记录。
您可能会问为什么我们选择使用Rspamd而不选择Spamassassin。 Rspamd被更积极地维护和用C编写,并且比用Perl编写的Spamassassin快得多。 另一个原因是Rspamd带有DKIM签名模块,因此我们不必使用其他软件来签名我们的外发电子邮件。
先决条件
在继续本教程之前,请确保您以具有sudo特权的用户身份登录。
安装Redis
Redis将被Rspamd用作存储和缓存系统,只需运行即可安装:
安装未绑定
Unbound是非常安全的验证,递归和缓存DNS解析器。
安装此服务的主要目的是减少外部DNS请求的数量。 此步骤是可选的,可以跳过。
sudo apt update
sudo apt install unbound
对于大多数服务器,默认的“未绑定”设置应足够。
要将未绑定设置为服务器主DNS解析器,请运行以下命令:
sudo echo "nameserver 127.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
sudo resolvconf -u
如果不使用
resolvconf
则需要手动编辑
/etc/resolv.conf
文件。
安装Rspamd
我们将从官方存储库中安装Rspamd的最新稳定版本。
首先安装必要的软件包:
sudo apt install software-properties-common lsb-release
sudo apt install lsb-release wget
使用以下wget命令将存储库GPG密钥添加到apt源密钥环:
wget -O- https://rspamd.com/apt-stable/gpg.key | sudo apt-key add -
通过运行以下命令启用Rspamd存储库:
echo "deb http://rspamd.com/apt-stable/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/rspamd.list
启用存储库后,更新软件包索引并使用以下命令安装Rspamd:
sudo apt update
sudo apt install rspamd
配置Rspamd
无需修改库存配置文件,我们将在
/etc/rspamd/local.d/local.d/
目录中创建新文件,该文件将覆盖默认设置。
默认情况下,Rspamd的
normal worker
程序扫描电子邮件的工作程序会在端口11333上的所有接口上侦听。创建以下文件以将Rspamd正常工作程序配置为仅侦听localhost接口:
bind_socket = "127.0.0.1:11333";
proxy worker
在端口11332上侦听并支持milter协议。 为了使Postfix与Rspamd通信,我们需要启用milter模式:
bind_socket = "127.0.0.1:11332"; milter = yes; timeout = 120s; upstream "local" { default = yes; self_scan = yes; }
接下来,我们需要为
controller worker
服务器设置一个密码,该密码可以访问Rspamd Web界面。 要生成加密的密码,请运行:
rspamadm pw --encrypt -p P4ssvv0rD
输出应如下所示:
$2$khz7u8nxgggsfay3qta7ousbnmi1skew$zdat4nsm7nd3ctmiigx9kjyo837hcjodn1bob5jaxt7xpkieoctb
不要忘记将密码(
P4ssvv0rD
)更改为更安全的密码。
从终端复制密码,并将其粘贴到配置文件中:
/etc/rspamd/local.d/worker-controller.inc
password = "$2$khz7u8nxgggsfay3qta7ousbnmi1skew$zdat4nsm7nd3ctmiigx9kjyo837hcjodn1bob5jaxt7xpkieoctb";
稍后,我们将Nginx配置为控制器工作器Web服务器的反向代理,以便我们可以访问Rspamd Web界面。
通过将以下行添加到
classifier-bayes.conf
文件,将Redis设置为Rspamd统计信息的后端:
servers = "127.0.0.1"; backend = "redis";
打开
milter_headers.conf
文件并设置milter标头:
use =;
您可以在此处找到有关milter标题的更多信息。
最后,重新启动Rspamd服务,以使更改生效:
配置Nginx
在本系列的第一部分中,我们为PostfixAdmin实例创建了一个Nginx服务器块。
打开Nginx配置文件并添加以下位置指令,该指令以黄色突出显示:
/etc/nginx/sites-enabled/mail.linuxize.com.conf
… location /rspamd { proxy_pass http://127.0.0.1:11334/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }…
重新加载Nginx服务以使更改生效:
sudo systemctl reload nginx
转到
https://mail.linuxize.com/rspamd/
,输入您以前使用
rspamadm pw
命令生成的密码,然后将显示Rspamd Web界面。
配置后缀
我们需要配置Postfix以使用Rspamd milter。
运行以下命令以更新Postfix主配置文件:
sudo postconf -e "milter_protocol = 6"
sudo postconf -e "milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}"
sudo postconf -e "milter_default_action = accept"
sudo postconf -e "smtpd_milters = inet:127.0.0.1:11332"
sudo postconf -e "non_smtpd_milters = inet:127.0.0.1:11332"
重新启动Postfix服务以使更改生效:
sudo systemctl restart postfix
配置鸽舍
我们已经在本系列的第二部分中安装并配置了Dovecot,现在我们将安装
sieve
滤模块并将Dovecot与Rspamd集成。
首先安装Dovecot过滤模块:
sudo apt install dovecot-sieve dovecot-managesieved
安装软件包后,打开以下文件并编辑以黄色突出显示的行。
/etc/dovecot/conf.d/20-lmtp.conf
… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins sieve }…
/etc/dovecot/conf.d/20-imap.conf
… protocol imap {… mail_plugins = $mail_plugins imap_quota imap_sieve… }…
/etc/dovecot/conf.d/20-managesieve.conf
… service managesieve-login { inet_listener sieve { port = 4190 }… }… service managesieve { process_limit = 1024 }…
/etc/dovecot/conf.d/90-sieve.conf
plugin {… # sieve = file:~/sieve;active=~/.dovecot.sieve sieve_plugins = sieve_imapsieve sieve_extprograms sieve_before = /var/mail/vmail/sieve/global/spam-global.sieve sieve = file:/var/mail/vmail/sieve/%d/%n/scripts;active=/var/mail/vmail/sieve/%d/%n/active-script.sieve imapsieve_mailbox1_name = Spam imapsieve_mailbox1_causes = COPY imapsieve_mailbox1_before = file:/var/mail/vmail/sieve/global/report-spam.sieve imapsieve_mailbox2_name = * imapsieve_mailbox2_from = Spam imapsieve_mailbox2_causes = COPY imapsieve_mailbox2_before = file:/var/mail/vmail/sieve/global/report-ham.sieve sieve_pipe_bin_dir = /usr/bin sieve_global_extensions = +vnd.dovecot.pipe…. }
保存并关闭文件。
为筛选脚本创建目录:
mkdir -p /var/mail/vmail/sieve/global
创建全局筛选器筛选器,以将标记为垃圾邮件的电子邮件移动到
Spam
目录:
require; if anyof(header:contains "YES", header:contains "Yes", header:contains "*** SPAM ***") { fileinto:create "Spam"; stop; }
每当您将电子邮件移入或移出
Spam
目录时,都会触发以下两个筛选脚本:
require; pipe:copy "rspamc";
/var/mail/vmail/sieve/global/report-ham.sieve
require; pipe:copy "rspamc";
重新启动Dovecot服务以使更改生效:
sudo systemctl restart dovecot
编译筛子脚本并设置正确的权限:
sievec /var/mail/vmail/sieve/global/spam-global.sieve
sievec /var/mail/vmail/sieve/global/report-spam.sieve
sievec /var/mail/vmail/sieve/global/report-ham.sieve
sudo chown -R vmail: /var/mail/vmail/sieve/
创建DKIM密钥
DomainKeys Identified Mail(DKIM)是一种电子邮件身份验证方法,它将密码签名添加到出站邮件头中。 它允许接收者验证声称来自特定域的电子邮件确实已被该域的所有者授权。 其主要目的是防止伪造的电子邮件。
我们可以为所有域使用不同的DKIM密钥,甚至可以为单个域使用多个密钥,但是为了本文的简单起见,我们将使用单个DKIM密钥,以后可以将其用于所有新域。
使用
rspamadm
实用程序创建一个新目录来存储DKIM密钥并生成一个新的DKIM密钥对:
sudo mkdir /var/lib/rspamd/dkim/
rspamadm dkim_keygen -b 2048 -s mail -k /var/lib/rspamd/dkim/mail.key | sudo tee -a /var/lib/rspamd/dkim/mail.pub
rspamadm dkim_keygen -b 2048 -s mail -k /var/lib/rspamd/dkim/mail.key | sudo tee -a /var/lib/rspamd/dkim/mail.pub
在上面的示例中,我们将
mail
用作DKIM选择器。
现在,您应该在
/var/lib/rspamd/dkim/
目录中有两个新文件,
mail.key
是我们的私钥文件,而
mail.pub
是一个包含DKIM公钥的文件。 我们将在以后更新我们的DNS区域记录。
设置正确的所有权和权限:
sudo chown -R _rspamd: /var/lib/rspamd/dkim
sudo chmod 440 /var/lib/rspamd/dkim/*
现在,我们需要告诉Rspamd在哪里寻找DKIM密钥,选择器的名称和最后一行将为别名发件人地址启用DKIM签名。 为此,请创建一个具有以下内容的新文件:
/etc/rspamd/local.d/dkim_signing.conf
selector = "mail"; path = "/var/lib/rspamd/dkim/$selector.key"; allow_username_mismatch = true;
Rspamd还支持对身份验证接收链(ARC)签名进行签名。 您可以在此处找到有关ARC规范的更多信息。
Rspamd使用DKIM模块来处理ARC签名,因此我们可以简单地复制以前的配置:
sudo cp /etc/rspamd/local.d/dkim_signing.conf /etc/rspamd/local.d/arc.conf
重新启动Rspamd服务以使更改生效:
DNS设置
我们已经创建了DKIM密钥对,现在我们需要更新DNS区域。 DKIM公钥存储在
mail.pub
文件中。 该文件的内容应如下所示:
cat /var/lib/rspamd/dkim/mail.pub
mail._domainkey IN TXT ("v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGaVuUZBmi4ZTg0O4yl" "nVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB");
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGaVuUZBmi4ZTg0O4ylnVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB
我们还将创建一个基于域的消息身份验证(
DMARC
),该消息被设计为告诉接收服务器是否接受来自特定发件人的电子邮件。 基本上,它将保护您的域免受直接域欺骗,并提高您的域信誉。
我们将实施以下DMARC政策:
_dmarc IN TXT "v=DMARC1; p=none; adkim=r; aspf=r;"
让我们分解上面的DMARC记录:
-
v=DMARC1这是DMARC标识符p=nonev=DMARC1告诉接收者如何处理未通过DMARC的消息。 在我们的情况下,将其设置为none,这意味着如果消息未通过DMARC,则不采取任何措施。 您也可以使用'reject'或quarantineadkim=r和aspf=r-DKIM和SPF对齐,r表示Relaxed,s表示Strict,在我们的示例中,我们同时对DKIM和SPF使用Relaxed Alignment。
与以前一样,如果您正在运行自己的Bind DNS服务器,则只需将记录复制并粘贴到您的域区域文件中;如果您使用的是其他DNS提供程序,则需要使用
_dmarc
作为名称创建一个TXT记录,并且
v=DMARC1; p=none; adkim=r; aspf=r;
v=DMARC1; p=none; adkim=r; aspf=r;
作为价值/内容。
DNS更改可能需要一段时间才能传播。 您可以使用dig命令检查记录是否已传播:
dig mail._domainkey.linuxize.com TXT +short
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGa" "VuUZBmi4ZTg0O4ylnVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFdepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB"
dig _dmarc.linuxize.com TXT +short
"v=DMARC1; p=none; adkim=r; aspf=r;"
您还可以检查域当前的DMARC策略,或在此处创建自己的DMARC策略。
结论
教程的这一部分就是这样。 在本系列的下一部分中,我们将继续RoundCube的安装和配置。
邮件服务器后缀dovecot dns rspamd这篇文章是“设置和配置邮件服务器”系列的一部分。
本系列的其他文章:
•使用PostfixAdmin设置邮件服务器•安装和配置Postfix和Dovecot•安装和集成Rspamd•安装和配置Roundcube Webmail






