现在的位置: 首页 > 综合 > 正文

邮箱系统原理——SMTP协议

2018年06月08日 ⁄ 综合 ⁄ 共 933字 ⁄ 字号 评论关闭

SMTP协议是一个基于TCP/IP的应用层协议,SMTP服务器的默认的网络监听端口号为25

SMTP协议中一共定义了18条命令:其中比较发送一封邮件的过程通常需要的有以下6条命令

ehlo命令:SMTP邮件发送程序与SMTP接收程序建立连接后必须发送的第一条SMTP命令,后面通常加本主机名

auth命令:认证命令,如auth login,然后输入用户名和密码(必须是BASE64编码后的)

userName = "abc"
BASE64Encoder encoder = new BASE64Encoder();
encoder.encode(userName.getBytes());

mail from命令:发送者邮箱地址,如mail from:<123@qq.com>

rcpt to命令:接受者邮箱地址,如rcpt to:<456@163.com>

data命令:此命令表示SMTP邮件发送程序准备开始传送邮件内容了,在该命令后发送的都被当成邮件内容,直到遇到结束符号内容结束,可以用"."

quit命令:表示要结束邮件发送过程

开始测试方法:dos命令下:

telnet命令+SMTP服务器名+端口号,如

telnet smtp.sina.com.cn 25

发送命令过程中,响应状态码的最高位数字代表了不同的分类,2代表命令执行成功,5代表命令执行失败,3代表命令还没完成

说明:一些邮件系统支持自动回复邮件的功能,但是如果两个邮箱的mail from命令后的地址是对方,这样会造成死循环回复,为了避免这样的情况,一些SMTP服务器在进行邮件自动回复时,通常不填写mail from命令后面的邮件地址,借此来避免循环回复

SMTP虽然是使用了TCP/IP的应用层协议,但是如果SMTP服务器用于向其他SMTP服务器转发邮件,它在接收到邮件发送程序的rcpt to 命令后,由于并不会马上向其他SMTP服务器转发当前邮件,而是先将当前邮件保存到邮件发送队列里面,所以,它无法检测到收件人是否存在,总是会返回250的响应状态码,。所以人们在通过SMTP服务器向外转发邮件时,即使收件人的地址不存在,或者邮件最终没有从邮件队列中转发出去,邮件客户端程序当时也会看到邮件发送成功的信息。故电子邮件并不是一种完全可靠的通信方式

抱歉!评论已关闭.