使用 Roundcube 的网页邮件

此功能完全可选。如果您想尽快完成设置,可以跳过此页面,稍后再回来。您仍然可以使用 Thunderbird 等邮件客户端访问您的邮件服务器。

高级用户可能仍然希望使用 Thunderbird 等邮件客户端。但如今大多数用户似乎更喜欢在网页浏览器中阅读电子邮件。让我们为此安装一个网络应用程序:Roundcube

安装

首先安装软件包:

sudo apt install -y roundcube roundcube-plugins roundcube-plugins-extra roundcube-mysql

如果您使用的是 PostgreSQL,请将 roundcube-mysql 替换为 roundcube-pgsql。Roundcube 将用户设置存储在数据库中。因此,系统会要求您设置数据库访问权限。

选择“是”。

当系统提示输入密码时,只需按 ENTER 键即可。

配置 Apache

您还记得在本指南前面我问过您想如何命名您的邮件服务器吗?您是想为所有域使用一个通用名称,例如“webmail.example.org”?还是更喜欢为每个域使用不同的主机名,例如“webmail.domain1.com”和“webmail.domain2.com”?如果您想使用多个主机名,则需要为每个域创建一个虚拟主机配置。以下说明仅针对一个通用主机名。

要让 Apache 提供 Roundcube 应用程序,您需要编辑 /etc/apache2/sites-available/webmail.example.org-https.conf 文件。我建议您将 DocumentRoot 行更改为:

DocumentRoot /var/lib/roundcube/public_html

所有 URL 都相对于该目录。因此,如果您访问 https://webmail.example.com/,则会在该目录中查找文件。

此外,在同一个 VirtualHost 部分中添加以下行,以添加一些预配置的安全设置:

Include /etc/roundcube/apache.conf

与往常一样,配置更改后需要重启 Apache:

sudo systemctl restart apache2

检查 Apache 是否正常运行:

systemctl status apache2

如果出现问题,请运行“sudo apache2ctl configtest”查找原因。

限制访问仅限本地主机

Roundcube 的主配置文件位于 /etc/roundcube/config.inc.php。您可以随意修改此文件。幸运的是,现在基本设置已经符合我们的需求。但是,您需要更改以下两个设置:

$config['imap_host'] = 'tls://mail.example.org:143';
$config['smtp_host'] = 'tls://mail.example.org:587';

对于 Debian 11 上的 Roundcube,您需要配置默认主机和 smtp 服务器。

$config['default_host'] = ‘’;
$config['smtp_server'] = 'localhost';

例如,我将它们更改为:

$config[‘default_host’] = ‘localhost’;
$config[‘smtp_server’] = “tls://webmail.umd.me.uk”;

默认情况下,登录界面会提供一个文本框,您需要在其中输入要连接的 IMAP 主机。通过将 default_host 设置为 localhost,可以隐藏此文本框。

重启 apache2 服务器。现在,当您的用户在浏览器中输入 https://webmail.example.org/ 时,应该会看到 Roundcube 登录表单。

请记住,我们使用电子邮件地址作为用户的帐户名。因此,登录时请使用电子邮件地址作为用户名。例如,“john@example.org” 和密码 “summersun”。

插件

Roundcube 附带各种插件,您可以提供给用户使用。我建议至少启用以下两个插件: 同样,编辑 /etc/roundcube/config.inc.php 文件,找到插件配置部分。要启用推荐的插件,请将其更改为:
        $config['plugins'] = array(
            'managesieve',
            'password'
        );
        

密码插件

插件的配置位于 /etc/roundcube/plugins 目录下的文件中。让我们从密码插件开始。编辑 /etc/roundcube/plugins/password/config.inc.php 文件。

哦,这个文件看起来很空。但它引用了位于 /usr/share/roundcube/plugins/password/config.inc.php.dist 的示例文件。有很多不同的方法可以让用户更改密码。由于我们将这些信息存储在 SQL 数据库中,因此我们需要配置这部分内容。

删除 config.inc.php 文件中 $config 的空定义行。让我们逐一查看所需的设置: 确保此配置文件不可被所有人读取:

sudo chown root:www-data /etc/roundcube/plugins/password/config.inc.php
sudo chmod u=rw,g=r,o= /etc/roundcube/plugins/password/config.inc.php

试试看。以 john@example.org 用户名和密码“summersun”登录 Roundcube。转到“设置”。选择“密码”。两次输入新密码。您应该会在右下角收到成功消息。现在注销并使用新密码登录。成功了吗?太好了。

sieve 插件

Sieve 是一种简单的编程语言,用于编写服务器端规则。Dovecot 会在每次收到新邮件时执行这些规则。存在适用于所有邮件的全局规则。当然,每个用户/邮箱也可以拥有自己的规则。为了管理 Sieve 规则,Dovecot 提供了您之前启用的 managesieve 接口。因此,我们只需要告诉 Roundcube 如何访问它。

Roundcube 的 managesieve 插件的配置文件位于 /etc/roundcube/plugins/managesieve/config.inc.php。这次只需要一个设置即可告诉 Roundcube 要连接哪个服务器:

$config['managesieve_host'] = 'localhost';

Sieve 规则以特殊的语法存储在服务器上。这是一个示例,它会将所有主题包含“test”的收件箱邮件移动到 test 文件夹:
        require ["fileinto"];
        if header :contains "subject" "test"
        {
          fileinto "INBOX/test";
        }
        
不过,您无需学习这种语法。Roundcube 的 Sieve 规则编辑器更加用户友好。

尝试在 Roundcube 中为 john@example.org 添加一条 Sieve 规则。该功能位于“设置/过滤器”中。您可以在 /var/vmail/example.org/john/sieve/roundcube.sieve 找到机器可读的 Sieve 代码。

规则编辑器界面如下所示:

Roundcube 过滤器

测试电子邮件投递

到目前为止,您已经花费了大量时间进行理论学习和配置。您是否担心您所做的一切是否真的能够构建一个正常工作的邮件服务器?最后,验证一下您目前所做的一切是否都按预期工作。

您可以运行以下命令获取所有文件和目录的列表:

sudo find /var/vmail

您可能会看到类似以下内容:

/var/vmail/umd.me.uk/sjin1239
/var/vmail/umd.me.uk/sjin1239/Maildir
/var/vmail/umd.me.uk/sjin1239/Maildir/cur
/var/vmail/umd.me.uk/sjin1239/Maildir/tmp
/var/vmail/umd.me.uk/sjin1239/Maildir/dovecot.list.index.log
/var/vmail/umd.me.uk/sjin1239/Maildir/dovecot-uidvalidity.6869d39b
/var/vmail/umd.me.uk/sjin1239/Maildir/dovecot.index.log
/var/vmail/umd.me.uk/sjin1239/Maildir/new
/var/vmail/umd.me.uk/sjin1239/Maildir/dovecot-uidlist
/var/vmail/umd.me.uk/sjin1239/Maildir/dovecot-uidvalidity

基本上,您看到的结构是 /var/vmail/DOMAIN/USER/Maildir/…

每个 IMAP 邮件文件夹都有三个子目录:

发送测试电子邮件

现在是时候向系统中发送一封新的电子邮件了。我最喜欢的邮件测试工具是您之前安装的 swaks。在原始终端中运行以下命令:

swaks --to sjin1239@umd.me.uk --server localhost

如果一切正常,Postfix 已接受该电子邮件并将其转发给 Dovecot,Dovecot 随后将该电子邮件写入 sjin1239 的邮件目录。

再看一下:

sudo find /var/vmail

Dovecot 现在已经为 sjin1239 创建了目录结构,并创建了一个新文件:

/var/vmail/
[…]
/var/vmail/umd.me.uk/sjin1239/Maildir/new/1762718252.M298981P723801.webmail.umd.me.uk,S=731,W=751
[…]

您系统上的文件名可能与此不同——这没关系。它是“new”文件夹中唯一的文件。

您还可以使用一个更方便的工具来访问 Maildir 目录,这对于邮件服务器管理员来说非常实用: “mutt”。

sudo mutt -f /var/vmail/umd.me.uk/sjin1239/Maildir

现在您看到的是 sjin1239 的邮箱内容:

mutt Inbox

使用 mutt 是在登录邮件服务器时检查邮箱的一种便捷方式。

再次重申收到电子邮件时的流程:

  1. Postfix 接收电子邮件(本例中使用“swaks”命令,但通常是通过网络使用 SMTP 协议从其他服务器接收)
  2. Postfix 通过 LMTP 协议与 Dovecot 通信并传递电子邮件
  3. Dovecot 将电子邮件文件写入磁盘

通过 IMAP 访问电子邮件(Roundcube)

现在电子邮件已送达,您可以使用 IMAP 协议与 Dovecot 通信再次检索您的电子邮件。如果您仍然通过 Roundcube 界面登录,只需刷新页面即可看到新邮件。

roundcube 邮件内容

使用 DKIM 防止欺骗

电子邮件发件人欺骗是指假装控制他人的电子邮件地址。这是 网络钓鱼 中常见的问题。诈骗分子经常使用类似 something@paypal.com 这样的发件人地址发送电子邮件,希望收件人上当受骗并信任他们。事实上,SMTP 并不关心你发送邮件的发件人地址。许多邮件服务提供商强制要求你仅使用自己的电子邮件地址发送电子邮件,但也有一些服务提供商没有这项规定。而垃圾邮件发送者和诈骗分子显然对此毫不在意。

十多年前,一种新的方法被提出,它在电子邮件的头部添加了加密签名,收件人可以通过检查该签名来验证发件人的身份和邮件的完整性。该签名使用只有发送邮件服务器才拥有的私钥创建。收件人可以通过从发送域的 DNS 区域下载相应的公钥并运行签名检查来验证签名。这与 PGP 或 S/MIME 签名非常相似——只是作用于域级别。您的邮件服务器可以自动对所有外发邮件进行签名。如今使用的方法称为“域密钥识别邮件”(Domain Keys Identified Mail),简称 DKIM

举个例子。我刚刚从 umd.edu 向我自己的邮件服务器上的个人邮箱发送了一封邮件。UMD 使用 Google DKIM 签名,因此这封邮件从 UMD 的邮件服务器获得了以下额外的邮件头:
    DKIM 签名:v=1;a=rsa-sha256;c=relaxed/relaxed;
        d=umd.edu; s=google; t=1769009380; x=1769614180; darn=umd.me.uk;
        h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=XRSk1gOjGr6A0Uwo/26eRJlDhIZB0ADlk0G2eiYneK4=;
        b=fH633CdWduxnD3BTeYMr161bOUmpgSUa8JyG+PKsRY85GE+…
        

我需要马里兰大学的 DKIM 公钥来验证该签名。它以 TXT 记录的形式存储在他们的 DNS 区域中,记录名为“google._domainkey.umd.edu”。“google”是密钥选择器,在签名中以“s=google”的形式出现。您可以使用任意数量的密钥,只要您使用匹配的私钥创建签名即可。“_domainkey”部分是 DKIM 密钥的标准子域名。现在让我们获取该 TXT 记录:

dig +short google._domainkey.umd.edu txt

这将返回……

k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuc26OdDu/pFkYHU...

这就是我可以用来验证签名的公钥。稍后会介绍如何使用“opendkim-testmsg”工具进行自动检查。我可以运行该工具,并将包括邮件头和正文在内的整封邮件粘贴进去。如果它没有报错,则说明签名正确。

听起来不错?那我们也把它应用到您的电子邮件域名上吧。

创建密钥对

如上所述,您需要一个私钥供邮件服务器使用,以及一个公钥添加到您的 DNS 区域。Rspamd 已经可以创建 DKIM 密钥。不过,您可能还需要安装“dig”工具,它允许您查询 DNS 记录。它的工作方式类似于“nslookup”,但功能更强大。

sudo apt install dnsutils

首先,安装 Rspamd。可选步骤:安装 Redis 作为 Rspamd 的存储后端,用于存储其关于垃圾邮件和非垃圾邮件的训练数据。

sudo apt install -y rspamd redis-server

Rspamd 的内置 DKIM 签名模块默认启用。

如果您使用特定的命名规则将密钥文件放入 /var/lib/rspamd/dkim/ 目录下,它将自动识别。创建该目录以存储密钥:

sudo mkdir /var/lib/rspamd/dkim
sudo chown _rspamd:_rspamd /var/lib/rspamd/dkim

创建您的密钥对:

rspamadm dkim_keygen -d example.org -s 20250626

我使用的选择器是 20250626,因为那是我创建它的日期。不过这并不重要——你可以随意命名。“dkim”是默认选择器,如果你不使用映射的话。但你可能将来会需要替换密钥,所以我建议你使用映射,如下文所述。它能提供更大的灵活性,而且操作起来也很简单。

输出结果如下所示:
-----私钥开始-----
MIICdwIBADANBgkqhkiG9w0BAQE…
-----私钥结束-----
20250626._domainkey IN TXT ( "v=DKIM1; k=rsa; "    "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCZ8..." ) ;
        
第一部分是私钥,包括“…BEGIN…”和“…END…”两行。此密钥必须保密,且仅供您的邮件服务器用于签署外发邮件。

第二部分是需要添加到域名DNS区域的DNS记录。我们先从这部分开始。

添加 DNS 记录

在开始对电子邮件进行签名之前,您必须确保公钥已正确添加到您用于发送电子邮件的域名的 DNS 区域中。否则,收件人将无法验证签名,并可能错误地认为该电子邮件是伪造的。

请查看TXT记录。它看起来会像这样:

**20250626**._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxenHupkYLPmFMbJjV9dQI..." ) ;

如果您运行自己的 DNS 服务器,则可以复制整个文件并将其放入您的 DNS 区域中。但是,如果您的互联网服务提供商仅提供网页界面来管理您的域名,则需要在您的域名中创建一个主机名为“20250626._domainkey”的新 TXT 记录,并将双引号内的字符串作为值放入其中。例如:

**20250626**._domainkey ➠"v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCc7EX3nl1VNCi6......"

请注意,您获取的字符串包含两个字符串“…” + “…”,必须将它们合并为一个才能生效。(带引号的语法适用于 DNS 区域文件,如果您运行自己的名称服务器。)根据您的 ISP,新记录可能需要一段时间才能在互联网上生效。您可以使用 dig 命令进行验证:

dig +trace **20250626**._domainkey.example.org txt

如果您收到如下所示的 TXT 条目,则表示您已准备好在 Rspamd 中为该域启用 DKIM 签名:
TXT "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxen..." "" 来自服务器 foo.bar,耗时 24 毫秒。

在 Rspamd 中启用 DKIM 映射

如上所述,建议使用 DKIM映射。这并不复杂,只是一个简单的文件,用于定义您希望为特定域名使用的 DKIM 选择器。除非在映射中另有指定,否则 Rspamd 会默认您的选择器始终为“dkim”。如果您使用了“dkim”,那么当您以后想要更换密钥时,可能会遇到问题。DNS 系统响应速度较慢,传播新的 DKIM 公钥可能需要一天的时间。在 DNS 记录尚未在全球范围内生效期间,使用新密钥签名的电子邮件可能会被拒绝。

使用映射很简单。首先,我们需要修改dkim_signing 模块的selector_map设置。为此,请在 /etc/rspamd/local.d/dkim_signing.conf 中创建一个新文件,并使其仅包含以下两行:

path = "/var/lib/rspamd/dkim/$domain.$selector.key";
selector_map = "/etc/rspamd/dkim_selectors.map";

配置非常简单明了。Rspamd 会在dkim_selectors.map文件中查找域名到密钥的映射关系。创建该文件并使其包含以下行:

example.org 20250626

就是这样。Rspamd 现在知道,每当它看到来自 anyone@example.org 的外发邮件时,它都会从 /var/lib/rspamd/dkim/example.org.20250626.key 获取 DKIM 私钥,并使用它来对邮件进行签名。

重新加载配置:

sudo systemctl restart rspamd

将域密钥添加到 Rspamd

将之前创建的私钥(包含“…BEGIN PRIVATE KEY…”和“…END PRIVATE KEY…”的多行字符串)放入 Rspamd 将要查找的文件中:

/var/lib/rspamd/dkim/example.org.20250626.key

文件名必须像上面那样,格式为 DOMAIN + 点 + 选择器 + “.key”。如果文件名不正确,rspamd.log 文件中会出现类似“lua_dkim_sign_handler: 无法加载 dkim 密钥 /var/lib/rspamd/dkim/example.org.dkim.key”的错误。

确保只有 _rspamd 可以读取它:

sudo chown _rspamd /var/lib/rspamd/dkim/umd.me.uk.20250626.key
sudo chmod u=r,go= /var/lib/rspamd/dkim/umd.me.uk.20250626.key

Rspamd 会自动识别文件,无需重启。

让 Postfix 使用 Rspamd

让我们告诉 Postfix 将所有收到的邮件都通过 Rspamd 处理。在 shell 中运行以下命令:

sudo postconf smtpd_milters=inet:127.0.0.1:11332
sudo postconf non_smtpd_milters=inet:127.0.0.1:11332
sudo postconf milter_mail_macros="i {mail_addr} {client_addr} {client_name} {auth_authen}"

Postfix 将连接到监听本地主机 (127.0.0.1) TCP 端口 11332 的 Rspamd,并通过该连接发送电子邮件。`smtpd_milters` 设置定义了该连接,用于处理通过 SMTP 协议从互联网进入系统的邮件。`non_smtpd_milters` 设置是可选的——它使 Postfix 检查所有来自系统自身的邮件。最后,`milter_mail_macros` 设置定义了 Rspamd 为更好地检测垃圾邮件而需要的几个变量。然后,Rspamd 运行其检查并告知 Postfix 邮件是否应该通过或被拒绝。

发送测试邮件

如果您在其他地方还有另一个电子邮件帐户,那么您可以通过邮件服务器向该帐户发送一封测试邮件。如果您查看收到的邮件,它现在应该会有一个类似这样的 DKIM 标头:
DKIM 签名:v=1;a=rsa-sha256;c=relaxed/relaxed;d=umd.me.uk;s=20260121;
    t=1769108454;
    h=发件人:发件人:回复到:主题:主题:日期:日期:信息 ID:信息 ID:
     收件人:收件人:抄送:MIME 版本:MIME 版本:内容类型:内容类型:
     内容传输编码:内容传输编码:
     回复:回复:引用:引用;
    bh=Cx91GHgjW61hMAScYshCO3hCt4i+N5TQeiR3v/060u8=;
    b=mbYVHhxxYDWSHI7bKo5atScvpV7aei7eJ...
        
要验证签名,请安装 opendkim-tools 软件包,复制整个测试电子邮件(包括标头和正文),在 shell 中运行 opendkim-testmsg 并粘贴电子邮件(以 CTRL-D 结束)。

如果没有输出,则表示签名验证成功。但如果您收到类似“opendkim-testmsg: dkim_eom(): 无法验证”的信息,请仔细检查您的 DNS 记录。

您还可以使用 dkimvalidator.comisnotspam.commail-tester.com 等网站服务来验证您的签名是否有效。

SPF 和 DMARC

添加 DKIM 签名是很好的第一步。但您还可以更进一步,告知接收邮件服务器,任何来自您域名但未添加有效签名或来自您未运营服务器的邮件都不应被接收。有两种方法可以实现这一点:较早的 SPF 和较新的 DMARC。它们都涉及创建一个预定义格式的机器可读字符串,并将其添加到您的 DNS 区域中。接收邮件服务器可以检查这些记录,并根据您(作为域名所有者)的建议,在邮件不符合要求时采取相应措施。服务器可以选择接受邮件、将其标记为垃圾邮件或直接拒绝。

我们来看一个典型的SPF记录:

"v=spf1 ip4:157.97.194.11 mx ~all"

它的含义是:
  1. 这是 SPF 标准版本 1 的记录(目前没有其他版本)。
  2. 请允许接收来自 IP 地址 157.97.194.11 的电子邮件
  3. 或者,接受来自我们域名 MX 记录中提到的任何服务器的电子邮件(即接收您域名电子邮件的服务器)。
  4. 任何其他电子邮件都应视为可疑——它可能是垃圾邮件,甚至更糟。

有些 网站 可以帮助您创建 SPF 字符串并将其添加到您的 DNS 域名中。但请记住:

我之前提到过 DMARC 是较新的标准。那么为什么还要使用 SPF 呢?因为有些邮件服务商会认可你同时使用 SPF 的做法。从技术上讲,只需指定一条 DMARC 记录即可。在我看来,限制允许发送邮件的 IP 地址有点危险,也略显僵化。更有意义的做法是要求来自你域名的邮件必须具有有效的 DKIM 签名。一条 DMARC 记录可能如下所示:

"v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s;"

迁移邮件服务器和 Roundcube 数据库

您需要复制包含电子邮件域和帐户控制数据的数据库。以 root 或 sudo 帐户登录到旧的 (Bullseye) 服务器,并备份邮件服务器和 Roundcube 数据库。操作非常简单,只需运行……

mysqldump mailserver > mailserver.sql
mysqldump roundcube > roundcube.sql

将文件复制到新服务器(使用 scp 命令),然后将其导入到新服务器:

mysql mailserver < mailserver.sql
mysql roundcube < roundcube.sql

显然,从现在开始,对旧服务器上的任何数据库更改都必须在新服务器上同时进行,直到迁移完成为止。

为了避免迁移时出现名称冲突,可以分两步进行。首先,设置一个新服务器,并使用新的名称,例如 mail.example.org。将所有内容复制到新服务器,然后删除旧服务器。接下来,设置另一个服务器,使用原来的名称,例如 webmail.example.org。虽然需要迁移两次,但这种方法很简单。这就像把所有东西从一个房间搬到另一个房间,彻底升级原来的房间,然后再把东西搬回去一样。这种方法的优势在于,在 www.dnsinspect.com 上,MX 记录的评分将达到 100/100。如果在 MX 记录中使用 CNAME,则会收到警告。

警告:MX 记录中发现 CNAME,MX 记录无效:

RFC 2181 第 10.3 节规定,主机名必须直接映射到一个或多个地址记录(A 或 AAAA),且不得指向任何 CNAME 记录。RFC 1034 第 3.6.2 节规定,如果某个名称出现在资源记录 (RR) 的右侧,则不应出现在 CNAME RR 的左侧,因此 CNAME 记录不应与 NS 和 MX 记录一起使用。尽管存在这些限制,但仍有许多配置允许将 CNAME 与 NS 和 MX 记录一起使用。

关于 Redis

Rspamd 的许多功能都使用 Redis 来持久化数据。让我简单解释一下 Redis 是什么。

Redis 是一种数据库系统。它比传统的 SQL 数据库功能要少得多,因为它只存储键和值。不像 SQL 那样有多个字段/列。但它的运行速度却非常快。在我那台老旧的服务器上,它每秒可以处理大约 5 万个请求。它的速度优势在于其简洁性以及将数据存储在内存中。因此,它无需访问磁盘即可获取信息。(但它会定期将数据复制到磁盘以防止数据丢失。)人们使用 Redis 作为缓存或用于快速查找简单的数据结构。Rspamd 也是 如此

您之前已选择安装了“redis-server”软件包。这就是您需要做的全部工作。它会自动启动,并在本地主机上的 TCP 端口 6379 监听传入连接。Rspamd 默认启用 Redis 后端。您只需告诉它您的 Redis 服务器的 IP 地址即可。添加一个文件 /etc/rspamd/override.d/redis.conf 并插入以下内容:

servers = "127.0.0.1";

重启rspamd服务即可。

sudo systemctl restart rspamd

网页界面

Rspamd 附带一个很棒的附加功能:一个网络界面。它允许您检查电子邮件中的垃圾邮件、获取统计数据并微调评分。它默认已安装并启用,并接受本地主机接口上 11334 端口的 HTTP 请求。我建议您在已启用 HTTPS 的网络邮件配置中添加一个简单的代理配置即可访问它。

首先,您需要启用 Apache 的 HTTP 代理和重写模块:

a2enmod proxy_http
a2enmod rewrite

您可以创建一个新的虚拟主机配置,或者直接编辑 /etc/apache2/sites-available/webmail.example.org-https.conf文件。在VirtualHost标签内的任何位置添加:

<Location /rspamd>
Require all granted
</Location>

RewriteEngine On
RewriteRule ^/rspamd$ /rspamd/ [R,L]
RewriteRule ^/rspamd/(.*) http://localhost:11334/$1 [P,L]

这段配置会将对 https://webmail.example.org/rspamd 的所有请求转发到 localhost:11334,从而使您可以访问 Rspamd 网络界面。

该界面已设置密码保护。让我们生成一个新的访问密码:

pwgen 15 1

这样就得到了一个类似“eiLi1lueTh9mia4”的密码。你可以把这个密码放到rspamd的配置文件里。但是把明文密码放在配置文件里并不优雅。我们来生成这个密码的哈希值:

rspamadm pw
输入密码: …
$2$icoahes75e7g9wxapnrbmqnpuzjoq7z…

输入 pwgen 为你生成的密码,你就会得到一个很长的哈希密码。顺便一提,Rspamd 在页面上也有关于这个步骤的文档。

创建一个新的配置文件 /etc/rspamd/local.d/worker-controller.inc,并将你的哈希密码放入其中:

password = "$2$icoahes75e7g9wxapnrbmqnpuzjoq7z…"

配置部分到此结束。最后,重启 Rspamd 和 Apache 服务以加载更改后的配置:

sudo systemctl restart rspamd
sudo systemctl restart apache2

如果一切顺利,您现在应该可以通过 https://webmail.example.org/rspamd 访问 Rspamd 的网页界面。

完整示例

希望这些教程能帮助您设置瓦片、路径规划、地理编码和邮件服务器。您可以查看以下完整示例: