前言
首先,我们知道国外注册账户通常会用到邮箱,可这个发信的邮箱怎么来呢,一个是可以租用其它的邮箱比如SendCloud,腾讯企业邮箱等等,另一个是企业自己搭建邮箱服务器,然而,我们都知道,国内的大部分服务器以及很多国外的服务器禁邮件25端口,这导致了搭建邮件服务器变得困难。
之前我还不懂这些概念的时候,我选择直接使用网易的邮箱然后开启SMTP服务给我的博客发注册邮件,但这样做局限性很大,大部分免费的邮箱使用SMTP服务的发信量限制为50封,这意味着如果需求量大就不能这么做(除非你用N多个免费的邮箱并且监控发信量来做邮箱轮询)。
所以,我迫切需要一个邮件服务器,我当时贪便宜在CloudCone买了一个VPS,它这个服务器有些坑,虽然带宽很大(我最大可以达到300Mbps),但是CPU是真的不行,貌似还有丢数据的黑历史,但是这个VPS没有禁邮件端口,而且支持RDNS,这正好适合搭VPN、搭邮件服务器。
开始
我这里为了贪快用的是宝塔面板的宝塔邮局管理器,如果不嫌麻烦的话,你可以手搓Dovecot、Rspamd和Postfix。
验证时确保这个域名不走CDN,然后按照插件的提示设置好MX记录、A记录、SPF记录、DKIM记录、DMARC记录
然后设置SSL证书,需要确保填入的SSL证书链是完整的(否则走SSL/TLS协议时会出现一些奇怪的问题),如果不完整,可以使用MySSL.com的证书链下载/证书链修复工具修复证书链
然后记录全设置好了成绿色的了我的 xiwangly.com 就可以再上CDN了,但是需要专门留个不走CDN的域名做MX(修改指向不走CDN的域名)、SMTP、POP和IMAP服务,比如smtp.xiwangly.com、pop.xiwangly.com、imap.xiwangly.com。
需要放行以下端口,如果有的端口确定用不到可以禁用(比如出于安全策略,禁用存在特定漏洞的协议端口)
我使用WordPressd的Easy WP SMTP插件来为我的博客发送邮件,我的配置如下所示
测试发送邮件,提示发送成功并且能正常接收到就OK了(到这一步省略了亿点细节)
要利用此邮箱图形化的发送和接收邮件,我使用了Outlook软件,
对于使用何种端口和加密方法,视应用需求而定,但让我百思不得其解的是,Windows 11自带的Mail软件填入设置后能接受邮件不能发送邮件,我一开始以为是SMTP协议的问题,但我使用Outlook却不会这样,然后我打开Mail软件的设置,我知道前面那个冒号的993是IMAPS协议的端口,但这个后面的:1
我不能理解是什么意思(如果有大佬知道的话可以评论讲解一下)
在发送邮件中我遇到了这样一个问题,就是发送到Gmail邮箱时发送没有提示错误,但邮件在垃圾邮件里都找不到,有时能得到这样的系统退信:
由于我的服务器和博客支持IPV6访问,并且我的服务器提供商不支持IPV6的RDNS,这给修复这个问题增加了难度。根据提示,我的PTR记录配置有问题,我只配置了IPV4的PTR记录,我没有配置IPV6的PTR记录(如果追求简单粗暴的话,直接让邮件服务器禁用IPV6就行了,但是我这人就喜欢折腾),可以用intoDNS工具检查PTR记录,Google在Gmail帮助上给出了问题的解决方法:(似乎对我没有太大的帮助)
修正 IPv6 授权错误
IPv6 授权错误可能意味着发件人服务器的 PTR 记录未使用 IPv6。如果您使用电子邮件服务提供商的服务,请确认他们是否使用了 IPv6 PTR 记录。以下是 IPv6 授权错误消息的示例:
550-5.7.1:邮件不符合有关 PTR 记录和身份验证的 IPv6 发送指南。
我们来看看RFC 3596对IPV6 PTR的定义,既然服务器提供商不支持,那就我的SPF记录增加允许IPV4和IPV6地址的设置,也就是TXT记录里填v=spf1 ip4:xxx.xxx.xxx.xxx ip6:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx include:xiwangly.com +all
(后面的+all也就是允许所有的邮件,即使来自不同的域,因为有时候我需要一个临时的域来借此邮箱代发邮件,但这存在他人通过我的邮箱伪造电子邮件的安全隐患)
最后,问题终于得到解决。