Skip to main content
  1. internet/

在终端使用命令连接邮箱服务器

·658 words·2 mins·

背景 #

日常工作中经常要有连接邮箱服务器的需求,比如查看邮箱是否正常,查看邮箱的配置是否正确等等。登录客户的邮箱是不被允许的,这时候可以使用telnet命令来连接邮箱服务器。

步骤 #

前置-获取账号密码的base64编码 #

首先要获取账号和密码,如果是用的邮箱服务器(比如qq、企微邮箱),需要在管理页面获取授权码:

企微邮箱-获取授权码

获取账号和密码的base64编码,比如账号是stong@github.com, 密码是abcdefg, 那么可以通过命令得到:


echo -en "stong@github.com" | base64
c3RvbmdAZ2l0aHViLmNvbQ==

echo -en "abcdefg" | base64
YWJjZGVmZw==

使用telnet连接 #

  1. 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
  1. 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, 所以可以直接使用账号密码进行登录。

  1. 使用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