群晖配置自建邮件服务器
开篇之前,我想说通过群晖 Mailplus Server 自建一个邮件服务器绝对是一个非常有成就感的事情,搭建过程中我们可以学习到邮件服务使用的协议,端口号,MX解析等很多知识。如果你已经准备好,那就让我们开始吧。
前期准备:
- 支持MailPlus的群晖NAS
- 动/静态公网IP的宽带
- 顶级域名且配置了DDNS服务
通过浏览器设置:
- 打开套件中心,先安装 MailPlus Server 和 MailPlus 这两个套件,前者是服务端,后者是客户端。
- 安装好后,会看到系统中出现了刚才安装的两个套件,打开Mailplus server设置我们的邮件服务器。初次安装我们选择”创建新邮件系统”
- 域名填写你自己的域名,比如 example.com
FQDN 即“邮件服务器的主机”:按照系统提示设置成 mail.example.com,后续在域名解析中增加该MX记录。
- Mailplus Server开始初始化配置。
- 配置完成后,进入邮件服务器的状态界面,可以看到邮件的入站/出站统计。
- 先到“账号”选项卡中,开启使用权限,这里注意,每台NAS可以免费开启5个用户使用Mailplus,想让更多人使用需要购买许可证。这我们现在只有admin这个账户在使用邮箱,就先勾选一个。
关于 MailPlus 许可证
- 许可证分5用户和20用户两种,购买一个5用户的许可证,加上机器自带5个免费许可证,即可让 MailPlus Server 支持10个用户。
- 许可证和机器是绑定的,也就是说你换一台NAS是没有办法把许可证转到新NAS上的。除非你的NAS出故障并由售后更换了新机,才可申请转移。
- 继续配置,进入“邮件投递”选项卡,确认”启用STMP认证”已勾选。确认域名和主机名正确。
- 进入“服务”选项卡,确认 SMTP 和 IMAP/POP3 下的选项全部勾选,打开所有的协议端口。
服务器端初步设置到此完成。
路由器设置
- 进入路由器的端口转发选项,把以下端口号全部转发到群晖所在局域网的固定IP。如果路由器有DMZ主机功能,将群晖所在局域网的固定IP设置为DMZ主机,则不需要设置任何端口映射,默认全端口都会映射到群晖。
- SMTP:25
- SMTP SSL:465
- SMTP TLS:587
- POP3:110
- POP3 SSL:995
- IMAP:143
- IMAPS:993
- 域名设置:
登陆域名解析界面,设置MX解析地址为 mail.example.com,优先级一般设为5或者10,TTL保持默认即可。
- MailPlus收发邮件测试
如何防止邮件被拒收
通过上面的步骤即可实现群晖 MailPlus Server 搭建个性化专属邮件系统,但偶尔发现发出的邮件会被邮件服务商列为垃圾邮件或者直接拒收。邮箱其实最担心的就是被拒收和被当成垃圾邮件屏蔽,不然,这个邮箱的作用就不大了,幸运的是,接下来我要给大家讲解一下如何防止邮件被拒收的原理和实现步骤。首先,我给大家普及一下SPF、DKIM和DMARC的概念:
SPF
发件人策略框架(SPF)只是DNS TXT记录,其中列出了允许为指定域发送邮件的服务器。 这使收件人可以确定电子邮件的确是来自谁发来的电子邮件。 然后,收件人可以根据发件人是否被授权采取措施。 通常,建议采取的措施包括“软失败”或“硬失败”-硬失败建议完全不传递消息,而软失败则建议传递但将其标记为可疑。
DKIM
DKIM或DomainKeys Identified Mail是SPF的补充,并建立了一种对您的域中的外发电子邮件进行数字签名的机制。 通过建立协议来验证发送电子邮件的组织是否有权发送邮件,这可以防止在发件人和收件人之间的传输中可能被更改的电子邮件。
DMARC
简而言之,DMARC允许您发件人指出该邮件受SPF和/或DKIM保护,并指定一条带有清晰说明的策略,以便收件人在电子邮件未通过SPF或DKIM时可以遵循(例如,拒绝邮件,标记为垃圾邮件等)。 DMARC还将提供有关通过和未通过DMARC评估消息的报告。
实现步骤
SPF、DMARC和DKIM这三个设置都要添加域名解析,其中SPF、DMARC直接在域名解析界面添加 TXT 解析,如下:
SPF语法基本解释:根据OpenSPF 的介绍,我编造了一个 SPF 的示例:v=spf1 mx a:pluto.example.net ip4:192.168.0.1/16 ip6:1080::8:800:200C:417A/96 include:aspmx.googlemail.com -all看起来很长的样子,其实很多成分是可选的,我只是尽量把它们都列出来而已,如果拆解看来看是这样的:
v=spf1 这说明这是 SPF 第一版,这个一定要有
mx 这个说明把这个域名上的 MX 记录所对应的服务器加入「信任列表」。可选。
a:pluto.example.net 代表把 pluto.example.net 这个域名 A 记录所对应的 IP 加入「信任列表」。可选。 ip4:192.168.0.1/16 代表把这一段 IPv4 的地址段加入「信任列表」。可选。
ip6:1080::8:800:200C:417A/96 代表把这一段 IPv6 的地址段加入「信任列表」。可选。 include:aspmx.googlemail.com 代表读取这个域名上的 SPF,然后把它们都加入「信任列表」。可选。
-all 拒绝所有,+all 表示接受所有,~all 列表中的除外拒绝 。
ip4
格式为ip4:<ip4-address>
或者ip4:<ip4-network>/<prefix-length>
,指定一个 IPv4 地址或者地址段。如果prefix-length
没有给出,则默认为/32
。例如:
"v=spf1 ip4:192.168.0.1/16 -all"
只允许在 192.168.0.1 ~ 192.168.255.255 范围内的 IP
ip6
格式和ip4
的很类似,默认的prefix-length
是/128
。例如:
"v=spf1 ip6:1080::8:800:200C:417A/96 -all"
只允许在 1080::8:800:0000:0000 ~ 1080::8:800:FFFF:FFFF 范围内的 IP
a 和 mx
这俩的格式是相同的,以a
为例,格式为以下四种之一:
a
a/<prefix-length>
a:<domain>
a:<domain>/<prefix-length>
会命中相应域名的 a 记录(或 mx 记录)中包含的 IP 地址(或地址段)。如果没有提供域名,则使用当前域名。例如:
"v=spf1 mx -all"
允许当前域名的 mx 记录对应的 IP 地址。
"v=spf1 mx mx:deferrals.example.com -all"
允许当前域名和 deferrals.example.com 的 mx 记录对应的 IP 地址。
"v=spf1 a/24 -all"
类似地,这个用法则允许一个地址段。
例如,这是一个比较常见的 SPF 记录,它表示支持当前域名的 a 记录和 mx 记录,同时支持一个给定的 IP 地址;其他地址则拒绝:
v=spf1 a mx ip4:173.194.72.103 -all
include
格式为include:<domain>
,表示引入<domain>
域名下的 SPF 记录。注意,如果该域名下不存在 SPF 记录,则会导致一个PermError
结果。例如:
"v=spf1 include:example.com -all" 即采用和 example.com 完全一样的 SPF 记录
exists
格式为exists:<domain>
。将对<domain>
执行一个 A 查询,如果有返回结果(无论结果是什么),都会看作命中。
ptr
格式为ptr
或者ptr:<domain>
。使用ptr
机制会带来大量很大开销的 DNS 查询,所以连官方都不推荐使用它。
关于v=spf1
这是必须的,这个表示采用 SPF 1 版本,现在它的最新版本就是第 1 版。
Modifiers
SPF 记录中还可以包括两种可选的 modifier;一个 modifier 只能出现一次。
redirect
格式为redirect=<domain>
将用给定域名的 SPF 记录替换当前记录。
exp
格式为exp=<domain>
,目的是如果邮件被拒绝,可以给出一个消息。而消息的具体内容会首先对<domain>
执行 TXT 查询,然后执行宏扩展得到。
- SPF添加 TXT 解析:
- 主机记录:@
- 记录值:v=spf1 mx a:pluto.example.net ip4:192.168.0.1/16 ip6:1080::8:800:200C:417A/96 include:aspmx.googlemail.com -all
- DMARC添加 TXT 解析:
- 主机记录:_dmarc
- 记录值:v=DMARC1; p=reject; rua=mailto:[email protected]
注:其中p后参数自己根据情况设置,有none , quarantine 和 reject三种,rua=mailto:后面填写接收反馈报告的邮箱地址。
- DKIM设置
打开 MailPlus server 套件,点击“域” -> “选择域名” ->“编辑” -> “高级设置” -> “勾选DKIM签名” -> “填写前缀” -> “点击生成公共密钥”;
- 在域名解析页面添加 TXT 解析:
- 主机记录:设置的前缀._domainkey
- 记录值:v=DKIM1; k=rsa; p=公共密钥
添加域名解析
完成以上域名解析设置,发邮件再也不用担心被拒收了。
继续完善邮件服务器
完成了初步设置以后,现在邮件服务器已经可以正常工作。为了防止遭受垃圾邮件骚扰,建议在MailPlus Server “安全性”选项卡内,启用反垃圾邮件、防毒、验证功能和内容扫描。
内容扫描处之所以保留“将HTML转换为纯文本”不勾选,是因为勾选会导致收件的图片变成链接,看着十分别扭。
最后再查看威胁监控选项卡,安全功能已全部启用,这样子就可以安心使用Mailplus 来收发邮件了。
让邮箱名称和DSM用户名不一样
例如:我的管理员账号是 admin,我的邮箱地址是 [email protected],可是我想用 [email protected] 给客人发邮件怎么办?请按照我下面介绍进行设置即可:
发送端设置:进入MailPlus客户端,选择”设置“ –> “SMTP” –> “新增”,添加一个自定义邮箱名称。
- SMTP服务器:mail.example.com
- 勾选“需要验证“。
- 填写验证用户名和密码。
- 填写发件人邮箱和名称,这里就可以自定名称了比如邮箱 [email protected],名称为ozss。
接收端设置:进入 MailPlus Server,选择“邮件投递” –> “别名” –> “添加”,别名填写ozss,下面勾选我们的admin账号。
完成上述设置后,当外部邮箱发送到 [email protected] 时,MailPlus就知道这是发给用户admin的邮件。
而用MailPlus发出邮件时,我们要手动选择一下使用哪一个邮箱。
体验一下自己搭建的邮件服务器
搭建完成后,MailPlus Server 和普通邮件服务器一样支持 POP 和 IMAP 协议,可以从任何邮件客户端登陆,比如Outlook、Foxmail等等。我们也可以使用群晖的官方手机客户端来收发邮件。