在终端使用命令连接邮箱服务器
Table of Contents
背景 #
日常工作中经常要有连接邮箱服务器的需求,比如查看邮箱是否正常,查看邮箱的配置是否正确等等。登录客户的邮箱是不被允许的,这时候可以使用telnet
命令来连接邮箱服务器。
步骤 #
前置-获取账号密码的base64编码 #
首先要获取账号和密码,如果是用的邮箱服务器(比如qq、企微邮箱),需要在管理页面获取授权码:
获取账号和密码的base64编码,比如账号是stong@github.com
, 密码是abcdefg
, 那么可以通过命令得到:
echo -en "stong@github.com" | base64
c3RvbmdAZ2l0aHViLmNvbQ==
echo -en "abcdefg" | base64
YWJjZGVmZw==
使用telnet连接 #
telnet
邮箱服务器, 比如企微邮箱的域名是exmail.qq.com, smtp端口是25, 那么命令就是telnet smtp.exmail.qq.com 25
, 此时终端输出为:
telnet smtp.exmail.qq.com 25
Trying 119.147.3.176...
Connected to smtp-v6.exmail.qq.com.
Escape character is '^]'.
220 smtp.qq.com Esmtp QQ QMail Server
ehlo name
, 使用ehlo
来启动会话,命令中的name
一般使用邮箱服务器域名,但是其他字符串也可以,但是不能为空.此时终端输出为:
ehlo qq.com
250-smtp.qq.com
250-PIPELINING
250-SIZE 73400320
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME
注意到支持的协议中包含LOGIN PLAIN
, 所以可以直接使用账号密码进行登录。
- 使用
auth login
来登录,此时终端输出为:
auth login
334 VXNlcm5hbWU6
通过base64解码可知,这是要我们输入账号:
echo -en "VXNlcm5hbWU6" | base64 -d
Username:⏎
所以将base64编码之后的账号输入即可,此时终端输出为:
334 UGFzc3dvcmQ6
表示要输入密码
echo -en "UGFzc3dvcmQ6" | base64 -d
Password:⏎
此时输入base64编码之后的密码即可。如果账号密码没问题,此时终端输出为:
235 Authentication successful
完整的请求:
telnet smtp.exmail.qq.com 25
Trying 183.2.143.59...
Connected to smtp-v6.exmail.qq.com.
Escape character is '^]'.
220 smtp.qq.com Esmtp QQ QMail Server
ehlo qq.com
250-smtp.qq.com
250-PIPELINING
250-SIZE 73400320
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME
auth login
334 VXNlcm5hbWU6
c3VuxxxxxxxxxxxxxxxxzNjUuY29t
334 UGFzc3dvcmQ6
WTMzc01Gcxxxxxxxxxxxx1p2Zg==
235 Authentication successful