前言
我对于邮箱理解,在很长一段时间里,都是qq邮箱、163邮箱、126邮箱等等的各种第三方邮箱。这些邮箱都是注册一下,然后从web页面登陆进去,就可以收发邮件了。后来上了计算机网络这门课,学习到了有关于邮件的一些协议比如SMTP、POP3、IMAP。但是,当时也只是知道有这几种协议,也没有去实践过,现在想起来真的觉得计算机各方面知识自己都实践得太少了。而且最近在学习java web开发,想着实现一个邮件发送验证码的功能,同时又想拥有一个自己的域名邮箱,所以就决定配置一下邮件服务器。
技术框架
系统环境
命令行输入lsb_realse -a
,查询结果如下:
1 | LSB Version: :core-4.1-amd64:core-4.1-noarch |
软件
软件 | 说明 |
---|---|
postfix | 提供SMTP服务 |
dovecot | 提供POP3、IMAP服务 |
协议解释
协议 | 说明 | 端口 |
---|---|---|
SMTP imple Mail Transfer Protocol | 主要作用是推送邮件 | 25 |
POP3 Post Office Protocol | 主要作用是从服务器获取邮件 | 110 |
IMAP Internet Mail Access Protocol | 主要作用是从服务器获取邮件 | 143 |
协议的工作流程大致如下:
部署实践
好的,理论就说到这里了,下面开始部署实践。
首先,查看系统有没有带有sendmail,有就卸载了,然后安装postfix和dovecot
1 | rpm -qa | grep sendmail |
然后开始配置工作,首先配置postfix。
1 | vim /etc/postfix/main.cf |
将默认配置改为以下配置:
1 | myhostname = uzpeng.top |
接着配置dovecot
1 | vim /etc/dovecot/dovecot.conf |
添加如下配置:
1 | login_trusted_networks = <your client ip> |
然后分别启动服务
1 | systemctl start postfix |
接着防火请打开,25,110,143端口。
DNS解析添加MX记录指向自己的服务器。
至此,服务器配置完毕。
默认服务器有一个名为liu的用户,下面开始客户端的配置。搜索下载foxmail,账号管理新增用户填充信息如图
点击创建就可以创建成功了。
然后到了这里,我可以成功的接收邮件了,但是发送的话一直就是接收不到。查看了一下运行日志,提示如下错误:
1 | Mar 3 17:30:36 uzpeng postfix/smtp[24921]: connect to mx3.qq.com[183.57.48.35]:25: Connection timed out |
纳尼?网络都连不上吗?赶紧运行telnet mx3.qq.com 25
测试了一下端口,结果如下,一直连不通。
后来我本地运行telnet mx3.qq.com 25
,妥妥得连接上去了,如图
所以基本断定是服务器的问题了,但是服务器的防火墙是打开了25端口的,莫非阿里云屏蔽这个端口?搜索引擎一搜,果然是这么一回事。
所以搞了一个下午,最终的结果就是阿里云不允许直接使用stmp发送邮件,必须通过第三方。
基于第三方邮箱配置自己的域名邮箱
既然阿里云都屏蔽了端口,所以没办法咯,只能用第三方的了,那就直接用阿里家的呗。
控制台>域名与万网>企业邮箱>管理,然后修改管理员账号密码,登录进去,创建一下用户,配置一下基本信息,这些都是比较傻瓜式的操作了,不再赘述。
最后域名解析按照阿里云的提示来,主要是添加MX记录到阿里云的邮箱服务器,添加CNAME记录到阿里的stmp,pop3,imap服务器,服务器端基本就配置完成啦。
客户端的配置和话,和自己搭建的差不多啦,就是服务器地址换一换。
遇到的问题
登录不上去。
1 | Mar 3 14:42:35 uzpeng dovecot: imap(liu): Error: Invalid user settings. Refer to server log for more information. |
dovecat配置文件添加
1 | mail_location=maildir:~/Maildir |
结语
弄了一个下午,总算有了自己的域名邮箱。虽然没有成功在自己服务器跑邮箱服务,但是捣鼓这么一遭,自己对邮件服务还是有了更深刻的理解。好了,最近捣鼓的内容差不多就这样了,接下来需要把时间投入到java web和春招中去了,希望自己能找到满意的工作!