前提
我搭建的网站里面需要有绑定邮箱服务,用qq
邮箱这些肯定是不行的,没有那么多,计划得随机生成很多。
所以需要自己搭建一个邮箱服务器。
记录
之前有其他人弄过模版了,所以我没有实际自己去搭,就记录几个疑惑的点。
看了一些帖子:
https://qing.su/article/154.html
https://qing.su/article/158.html
https://blog.csdn.net/witton/article/details/105882959
https://blog.csdn.net/qq_37960324/article/details/83012526
让我最最疑惑的就是这里面明明都配置了dns
,而我用的那个很明显没有搭dns
,为什么它就是可以测试通。
我的环境是:
邮件服务器搭在虚拟机里,之后要实现的内容是在同一个局域网内的其他虚拟机,通过php
代码收发邮件。
直接用了已经建好的虚拟机,里面就有邮件服务器。我在物理机上测试了之后是可以正常发送、接受邮件的。但是按照上述链接4中,感觉应该需要有个配置DNS
的环节,要不然它怎么知道解析到哪里,邮件服务器搭到哪里呢??
我看了搭建邮件服务器的虚拟机里/etc/hosts
文件中有配置了127.0.0.1 mx.iredmail.org
,然后iredmail
后台是有绑定了域名mail.163.com
的。在虚拟机内部可以发送邮件是正常可以理解的,但为什么在物理机上也能发送??让我感觉像是那个web
服务器写入、读取数据库一样,就感觉是没有通过邮箱服务。
直到我查了物理机的/etc/hosts
文件之后,发现里面也配置了mx.iredmail.org
的ip
的。哦…我都不知道自己一天在纠结什么。
2020.12.22更新
应该是这样的,只要在搭建邮件服务器的虚拟机里配置了127.0.0.1 mx.iredmail.org
就是可以的了。之所以物理机也能发送,是因为物理机通过访问webmail
,发起了发送邮件的请求,而webmail
所在服务器(也就是搭建邮件服务器的虚拟机)在接收到请求之后,就会与邮件服务器通信,通信的这个请求是在搭建邮件服务器的机子上进行的,所以不管物理机有没有配置/etc/hosts
都是可以正常发送邮件的。
3中提到的问题:
错误码:550 Domain may not exist or DNS check failed
即域名不存在或者DNS检查失败。有些邮箱会在收到邮件时,验证是否可以向该地址发送邮件,如果不能发送则会拒收,以防止垃圾邮件。
我也遇到了,给了很好的解答。
总结
写的比较乱哈。
邮件服务开在mx.iredmail.org
的25端口(这是原本已经定好的域名了,感觉容易和实际的iredmail.org
搞混,最好还是弄一个自己特定的域名),然后可以通过web
管理界面去添加域名,也就是我上面提到的mail.163.com
,邮箱名就是[email protected]
。(这个后缀感觉是一般都会起的和主机域名一样的)
它的逻辑应该是发送邮件的时候,会连接到该端口,然后这个端口的服务再根据邮箱后缀名做一些什么事情。总的来说就是要有DNS
把mx.iredmail.org
解析到搭建邮件服务器的ip
上。
而/etc/hosts
文件就可以充当dns
的作用。
所以我之后可能就是需要在每台用到邮件服务的机子上都配置好邮件服务器域名和ip
的对应关系。
(涉及到这些协议的东西真是因缺思厅)
iredmail关闭https
在我的物理机上访问iredmail
的web
界面一直出问题,而且之后要用代码去发起请求,感觉https
可能会带来一些麻烦,所以就想着直接把https<