我一直想在家里运行自己的邮件服务器。我不一定绝对需要这样的东西,但它会非常有用,因为我现在经营自己的生意,而且我真的需要一个比个人 Hotmail 帐户更专业的电子邮件。
我断断续续花了好几个周末的时间做这件事,但并没有取得多大进展。我首先按照 Luke Smiths 的指南开始,该指南可在 YouTube 上找到。(链接将附在本文末尾。)
以下是我已尝试做的事情的概述:
- 在 Raspberry Pi 上安装所需的软件。在我的家庭网络上设置所需的端口转发。发现我的 ISP 路由器阻止转发端口 25,因此尝试改用 2525。(在线阅读时,如果 25 被阻止,2525 是一个常见的替代端口。不确定此信息是否有效。)
- 尝试将 R-Pi 直接连接到 ISP 路由器,而不是位于另一个路由器后面。(pfSense 盒)
- 将 ISP 路由器置于调制解调器模式,将所有内容传递给 pfSense。启用端口转发并要求防火墙规则进行流量控制。(见下文)当然,在将 ISP 路由器置于调制解调器模式时,我将 R-Pi 放回了其中一个 pfSense 接口上。
以下是我当前转发的端口列表:
- 25(SMTP)
- 143(IMAP)
- 465(SMTP/S)
- 587(提交)
- 993(IMAP/S)
说实话,我不明白这些都是用来做什么的。我知道其中一些是安全版本,例如:SMTP/S 是 SMTP 的安全版本,我知道有些是用于与其他邮件服务器通信,有些是用于与其他邮件客户端通信。这是我理解的极限。
此外,我还安装了 postfix 和 dovecot。同样,我不能 100% 确定它们各自的功能,我相信一个是将邮件移入/移出不同邮件服务器的软件,另一个是允许电子邮件客户端登录并发送/检索邮件的服务器。
我使用 Epik 作为我的域名注册商。我已设置 MX 记录和 IP 地址。
如果我登录到不同网络上的远程机器(例如大学计算机),我能够运行 dig
mail.mydomainname.com
并获取预期的 ip 地址。我还可以使用 nmap 查看上面列出的端口是否打开。
我尝试运行此邮件诊断工具https://mxtoolbox.com/diagnostic.aspx。它会对 SMTP 横幅发出警告。我不确定这是否是个问题。
使用此工具,它对 不起作用
mydomain.com
,只对 起作用mail.mydomain.com
。我不知道这是否表示存在问题?
有几件事不起作用。
首先,直到今天我都能够让 Thunderbird 连接到我的 R-Pi。现在却不能了。我的 IP 地址已更改,但我已在 Epik 上更新了它,所以我不明白为什么突然出现问题。(同样,我不知道要采取什么步骤来诊断这个问题 - 除了无法连接下载/同步邮件外,没有产生任何错误。)
我能够从我的邮件服务器向其他服务器发送邮件。(例如 Outlook 或 Gmail。)但我无法从 Gmail 或 Outlook 向我自己的邮件服务器发送邮件。我认为这是因为无法转发端口 25。但我也不确定。
抱歉,这里的文字太多了。我已经花了好几个星期的时间研究这个问题,花了我大部分的空闲时间试图让它工作,但似乎毫无进展。令人沮丧的是,我可以让 ssh 之类的东西毫无问题地工作。另外,我不知道如何开始诊断这一事实也无济于事。
所以我的问题是:有哪些工具可以帮助我诊断这个问题,以及我应该采取哪些进一步的步骤来诊断这个问题?
目前我知道
- nmap 进行端口扫描,检查某些服务器软件(例如 postfix/dovecot)正在监听的端口的路由
- 这个在线 mxtoolbox 东西,虽然我不完全明白它是干什么的
任何帮助/建议均感激不尽。
可能是 Luke 给了我不好的建议。也许我应该使用其他资源来参考如何设置邮件服务器,而不是参考 YouTube 上的某个人?
https://www.youtube.com/watch?v=3dIVesHEAzc
编辑:更多信息
我发现如果我将本地 IP 地址输入到 Thunderbird 配置中,则“重新测试”按钮表明安装配置正确。
但是如果我输入 mail.mydomain.com,设置就会失败。这是否表示 DNS 设置存在问题?
答案1
从您的电子邮件服务器发送邮件和向您的电子邮件服务器接收电子邮件肯定是不一样的,所以这听起来是正确的,您可能在其中一个上遇到问题,而在另外一个上没有问题。
您说您的 IP 地址已更改,然后您开始无法接收电子邮件,所以我怀疑这是您的 ISP 分配的公共 IP。如果您没有来自电子邮件服务器所在的 ISP 的静态 IP 地址,那么您将无法解析 mail.yourdomain.com,除非您更新公共 DNS 记录以指向新的 IP 地址。
如果您经常更改公共 IP 地址,我会在您的邮件主机记录上设置 1 小时的 TTL。如果 IP 发生变化,并且您更新了 DNS 记录,而距离已连接的客户端向您的服务器发送电子邮件还有 23 小时,则指向您的电子邮件服务器的 DNS 记录将在 23 小时内不会更新,并且无法将电子邮件发送到旧 IP。
考虑从你的 ISP 获取静态 IP 地址,并联系他们了解具体操作,或者考虑使用动态 DNS并将该域名作为您的电子邮件地址域名。
更新
后进一步讨论和故障排除根据 OP 的回复,确定该问题与 pfSense 防火墙有关发夹形没有被启用,称为NAT 反射在 pfSense 配置中。
一旦 OP 启用 pfSense 的“NAT 反射”功能,电子邮件就可以发送到该域上的邮箱。
支持资源
-
大多数电子邮件帐户都有两个服务器:一个用于向其他人发送电子邮件,另一个用于接收其他人发送给您的电子邮件。允许您发送邮件的服务器称为发送服务器或 SMTP 服务器。允许您接收邮件的服务器称为接收服务器或 POP 服务器,或简称为邮件服务器。
-
DNS TTL(生存时间)是一种设置,用于告诉 DNS 解析器在请求新查询之前缓存查询的时间。收集的信息随后会存储在递归或本地解析器的缓存中,以计算生存时间 (TTL),然后再返回收集新的更新详细信息。
-
发夹技术是指 LAN 上的一台机器能够通过 LAN/路由器的外部 IP 地址访问 LAN 上的另一台机器(路由器上设置端口转发以将请求转发到 LAN 上的适当机器)。
-
NAT反射是指能够从内部网络使用外部(通常是公共)IP地址访问外部服务,就像客户端在互联网上一样。
-
NAT 反射的更好替代方案是部署拆分 DNS 基础设施。拆分 DNS 是指这样一种 DNS 配置:对于给定的主机名,公共 Internet DNS 解析为公共 IP 地址,而内部网络上的 DNS 解析为内部私有 IP 地址。
拆分 DNS 允许服务器查看真实的客户端 IP 地址,并且同一子网中的服务器和客户端之间的连接将直接进行,而不必不必要地涉及防火墙。
答案2
在 Raspberry Pi 上安装所需的软件。在我的家庭网络上设置所需的端口转发。发现我的 ISP 路由器阻止转发端口 25,因此尝试改用 2525。(在线阅读时,如果 25 被阻止,2525 是一个常见的替代端口。不确定此信息是否有效。)
不太好。对于服务器到服务器的邮件交换,25 是仅有的使用的端口。如果您尝试接收来自其他域的邮件,则需要端口 25 入站才能工作。只有当发件人手动为您的域配置了该端口时,监听任何其他端口才会起作用 - 而这根本不可能发生。同样,如果您尝试向其他域发送邮件,则需要允许端口 25 出站,因为这是其他邮件系统唯一可以保证监听的端口。
(以前端口 25 是通用的 SMTP 端口,因此由于它被阻止,某些服务可能提供 2525 用于客户端到服务器的邮件提交,即从桌面邮件应用程序提交。但是,现在 587(连同 465)是专用的邮件提交端口,25 是服务器到服务器的邮件交换端口,而 2525 仅在自定义配置中可见。)