我们在上一篇中解决了接收一行命令的问题后,就可以来具体的分析邮件发送过程中涉及到的 SMTP 协议内容了。
首先来看通讯过程中的第一个内容:服务器在客户端连接上来后会主动发送一个问好的信息,所以这第一行的内容是服务器发送的,这时候客户端要回答的内容其实并不确定。原因是根据不同的客户端意图,客户端要发送的内容是有些差异的。以我们示例中要发送一封信来说,要回复的第一句话就是 "EHLO" 命令,而看过我们前面文章都知道,要连接 163 邮箱这样的服务器光有这个命令还是不够的,还要带上 "163.com"。那么就有两个问题,一是谁规定要加这个和呢?二是如果是其实的邮箱应该加什么呢?
这个答案就要到 RFC 文档中去找了,smtp 的 rfc 文档为 RFC821 可以在以下网址中看到(内容还是比较多的,其实大家可以先别急着看,我们文章会讲解其中的内容)
http://man.chinaunix.net/develop/rfc/RFC821.txt
或者备用网址
http://newbt.net/ms/vdisk/show_bbs.php?id=8001DA8441F9AE9DC7AFF0709A875279&pid=160
其实如果大家真的仔细看了 rfc 的文档一定会觉得奇怪,通篇文章都没有 "EHLO" 命令啊,这就涉及到 rfc 文档的一个特点了,那就是一种通讯协议通常是记载在多个文档当中的,造成这种情况的原因一是通讯协议在发展,加入废弃了一些内容,而 rfc 写上去后一般就是不修改了的,一般是另外再写一个文档补充;另外一种常见的就是某个通讯协议是将之前的好几种组合在一起形成的,所以就肯定要引用别的 rfc 文档了。回到 "EHLO" 命令上来,这个命令其实记述在另外一个文档 RFC1869 当中,可以在以下网址中查看:
http://man.chinaunix.net/develop/rfc/RFC1869.txt
或者备用网址
http://newbt.net/ms/vdisk/show_bbs.php?id=9D31E50F0BEE16B48703FDF4234A332E&pid=160
我又要说大家先别急着查看,因为文档中的说明太复杂了,单就 "EHLO" 命令后面带的内容来说,其实是来自第一个文档的 "HELO" 命令的表述部分(HELO 就是英文 hello 的意思,而 EHLO 是扩展的 hello 的意思)。文档记载为 "HELO <SP> <domain> <CRLF>"。文档中的表述其实仍然有很强的误导性,命令中的空格是千万不要放到命令中的,那只是文档为了分隔语句而已,你会说命令中确实有空格啊!没错,看到那个 "<SP>" 没有,那个才表示的是空格 ... 如果有同学一上来就看命令的一定会很郁闷<SP>到底是什么意思,当然文档中是有解释的,只不过是在文档的最后,如果你老老实实的从头读到尾的话 ... 基本上都要破口大骂吧。总的来说阅读 rfc 文档是件很辛苦的事,但有时候又很必要,而且以上的都是中文版本
一步一步从原理跟我学邮件收取及发送 8.EHLO 命令详解
最新推荐文章于 2024-06-15 19:21:32 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)