这几天尝试在vps上搭建一个邮件服务器玩一下,查找资料,学习了一些知识,记录一下。
1. DNS与邮件服务器的关系:
通常,我们使用的邮件格式为 XXX@abc.com。首先跟网站域名一样,邮箱域名也是要dns解析的,因此我们也要添加邮件域名对应的解析记录。
针对XXX@abc.com这个邮件地址,分成两部分:XXX和abc.com,首先我们添加一条abc.com的邮件域名解析记录,即mx类型。同时该记录的记录值设定为一个其他域名(注意是域名不是ip),同时再为这个域名添加一条记录A类型记录(或AAAA,CNAME之类的,反正能解析到其ip即可)。这样dns服务器就知道这个邮箱地址究竟要送到那个邮箱服务器了。另外,XXX表示该邮箱服务器中的用户名,通过dns知道@符号后面的域名所对应的邮箱服务器,而XXX就知道该邮箱服务器中的哪个用户了。
2. 搭建postfix + dovecot + mutt
查阅资料,发现邮件系统分成三部分:MUA,MRA,MTA,另外MTA中包含MDA。MTA (mail transfer agent)是真正的邮件服务器,对应的是postfix。MDA是MTA的一部分,主要功能是负责分析MTA所收到的邮件信息,来决定邮件的去向,也就是说MDA是MTA最关键的一部分。但是MTA有一个缺点就是他只能发送和收邮件,同时每个用户在邮件服务器中有对应的空间存储自己的邮件,但收到邮件之后用户不能再自己的电脑上浏览,因为MTA根本不提供远程接口让用户在远程主机,即自己的机子上浏览自己的邮件。
为了解决这个问题,邮件服务器上MRA的存在就有必要了,它主要就是提供pop,imap接口,让用户能够在自己的本地机子上处理邮件。而MRA对应的就是dovecot,它支持pop,imap,同时还支持pops,imaps,即安全版。
邮件服务器上现在有了postfix,有了dovecot,那么就能够收发邮件,并且能够提供接口让用户收邮件了。现在还要做的就是在本地机子上收邮件,而帮助用户处理邮件的软件就是MUA,对应的就是mutt。这个mutt有个特点,他的操作实际上都是调用很多其它软件的,例如编辑用vi,发邮件用postfix,msmtp,sendmail等。当时安装的时候,就是因为本地机子上没有sendmail,自己又没装postfix,所以一直报错,还不知道什么情况。
最终安装完毕后,通过mutt就能远程登录邮件服务器,进入自己的邮箱,进行各种处理操作了。
至于具体操作,这里就省略了,因为问题很多,一一列出来就麻烦了,但托谷歌百度的福,最终还是装成功了。
3. 问题
转时装成功了,但是有一个问题就是我只能收到gmail,qq的邮件,但是我不能够发邮件到这些大型邮件服务提供商的邮箱中。查看日志(我的是在/var/log文件目录下有mail.err, mail.info, mail.log等等),发现一直550错误。一开始还有个原因提示说邮件服务器unreachable,查了一下说是我设置postfix的时候设置成支持ipv6,但实际上vps是不支持的,所以报错。改了之后,就直接显示550,连原因都没有,就说被拒了。上网查资料,总结是因为dns没有设置反解,邮件服务提供商不能找到我的邮件服务器的反解,导致认定我的邮件不合法。但具体原因是不是就不知道了。
总的来说,本来搞这个是出于娱乐,也瞎弄了好几天,最后因为万网上不提供反解选项这个原因就没弄了。虽然可惜,但是还是有收获的,因为之前上课学的理论,没有实践,一知半解,都不知道他是怎么搞的,现在大概有点印象,还算有收获。而且邮箱搭好以后还要防垃圾邮件,防攻击等等,还是有很多工作,这个不是硬需求就算了。
其实最主要的是,我发现qq邮箱中提供了一个选项,就是让我使用自己的域名进行自定义邮箱,所以我要的东西其实有人已经提供完善的解决方案,那就这样吧!