• SMTP的相关流程和命令介绍
    时间:2012-03-14   作者:佚名   出处:互联网

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。

    SMTP是Simple Mail Transfer Protocol的简写。
    邮件是日常工作、生活中不能缺少的一个工具,下面是邮件收发的流程。
    smtp
    邮件的发送,主要是通过SMTP协议来实现的。SMTP协议最早在RFC 821(1982年)中定义,最后更新是在RFC 5321(2008年)中,更新中包含了扩展SMTP(ESMTP)。
    在平时的程序开发中经常会有发送邮件的这种需求,所以免不了要对邮件发送服务器的可用性进行测试。下面是整理的命令,用来在命令行下测试SMTP服务器,进行邮件发送等操作,相信对于加深SMTP的理解可以起到促进作用。
    SMTP默认使用25端口,我们可以使用telnet工具进行测试。
    1、连接SMTP服务器,查看是否存活。
         >telnet smtp.sina.com 25
         >Connected to mail.sina.com.
         >Escape character is '^]'.
         >220 smtp ready
         在telnet下转义符是Ctrol+],如果想退出,按转义符后输入quit,就可以退回到命令行了。
    2、用户登陆
         连接到服务器后,使用AUTH LOGIN命令进行用户登陆(SMTP命令不区分大小写)
         >auth login
         >334 VXNlcm5hbWU6
         >c2VydmljZUBoZWVwLmNx
         >334 UGFzc3dvcmQ6
         >xxxxxxxx
         >235 go ahead
         235返回码表明登陆验证成功,用户可以进行后续的操作了。用户邮箱和密码是经过Base64编码的,这个与服务器的安全特性相关,属于可配置项。
    3、发送邮件。
         用户身份验证通过后,执行下面的命令进行邮件的发送。
         >235 #2.0.0 OK Authenticated
         >MAIL FROM: yunpan001@sina.com
         >250 sender <yunpan001@sina.com> ok
         >RCPT to: cocowool@gmail.com
         >250 recipient <cocowool@gmail.com> ok
         >DATA
         >354 go ahead
         >Subject: Hi smtp mail
         >hello mail
         >.
         >250 ok:  Message 1763097690 accepted
    SMTP命令列表
    HELO
    客户端为标识自己的身份而发送的命令(通常带域名)
    EHLO

    使服务器可以表明自己支持扩展简单邮件传输协议 (ESMTP) 命令。
    MAIL FROM
    标识邮件的发件人;以 MAIL FROM: 的形式使用。
    RCPT TO
    标识邮件的收件人;以 RCPT TO: 的形式使用。
    TURN
    允许客户端和服务器交换角色,并在相反的方向发送邮件,而不必建立新的连接。
    ATRN
    ATRN (Authenticated TURN) 命令可以选择将一个或多个域作为参数。如果该会话已通过身份验证,则ATRN 命令一定会被拒绝。
    SIZE
    提供一种使 SMTP 服务器可以指出所支持的最大邮件大小的机制。兼容的服务器必须提供大小范围,以指出可以接受的最大邮件大小。客户端发送的邮件不应大于服务器所指出的这一大小。
    ETRN
    SMTP 的扩展。SMTP 服务器可以发送 ETRN 以请求另一台服务器发送它所拥有的任何电子邮件。
    PIPELINING
    提供发送命令流(而无需在每个命令之后都等待响应)的能力。
    CHUNKING
    替换 DATA 命令的 ESMTP 命令。该命令使 SMTP 主机不必持续地扫描数据的末尾,它发送带参数的 BDAT 命令,该参数包含邮件的总字节数。接收方服务器计算邮件的字节数,如果邮件大小等于 BDAT 命令发送的值时,则该服务器假定它收到了全部的邮件数据。
    DATA
    客户端发送的、用于启动邮件内容传输的命令。
    DSN
    启用传递状态通知的 ESMTP 命令。
    RSET
    使整个邮件的处理无效,并重置缓冲区。
    VRFY
    确认在邮件传递过程中可以使用邮箱;例如,vrfy ted 确认在本地服务器上驻留 Ted 的邮箱。该命令在 Exchange 实现中默认关闭。
    HELP
    返回 SMTP 服务所支持的命令列表。
    QUIT
    终止会话。
    SMTP命令响应码
    211  System status, or system help reply
    214  Help message (Information on how to use the receiver or the meaning of a particular non-standard command; this reply is useful only to the human user)
    220  <domain> Service ready
    221  <domain> Service closing transmission channel
    250  Requested mail action okay, completed
    251  User not local; will forward to <forward-path> (See Section 3.4)
    252  Cannot VRFY user, but will accept message and attempt delivery (See Section 3.5.3)
    354  Start mail input; end with <CRLF>.<CRLF>
    421  <domain> Service not available, closing transmission channel (This may be a reply to any command if the service knows it must shut down)
    450  Requested mail action not taken: mailbox unavailable (e.g., mailbox busy or temporarily blocked for policy reasons)
    451  Requested action aborted: local error in processing
    452  Requested action not taken: insufficient system storage
    455  Server unable to accommodate parameters
    500  Syntax error, command unrecognized (This may include errors such as command line too long)
    501  Syntax error in parameters or arguments502  Command not implemented (see Section 4.2.4)
    503  Bad sequence of commands
    504  Command parameter not implemented
    550  Requested action not taken: mailbox unavailable (e.g., mailbox not found, no access, or command rejected for policy reasons)
    551  User not local; please try <forward-path> (See Section 3.4)
    552  Requested mail action aborted: exceeded storage allocation
    553  Requested action not taken: mailbox name not allowed (e.g.,mailbox syntax incorrect)
    554  Transaction failed (Or, in the case of a connection-opening response, "No SMTP service here")
    555  MAIL FROM/RCPT TO parameters not recognized or not implemente

    网友留言/评论

    我要留言/评论

    相关文章

    基于Facebook和Flash平台的应用架构解析(三):Flash平台可帮助你构建富用户体验的应用,而Facebook平台可帮助你构建富社会化体验的应用。将二者合而为一,你就可以构建高交互性、富于表现力,并融入了社会化功能的杀手级应用了。
    基于Facebook和Flash平台的应用架构解析(二):Flash平台可帮助你构建富用户体验的应用,而Facebook平台可帮助你构建富社会化体验的应用。将二者合而为一,你就可以构建高交互性、富于表现力,并融入了社会化功能的杀手级应用了。
    基于Facebook和Flash平台的应用架构解析(一):Flash平台可帮助你构建富用户体验的应用,而Facebook平台可帮助你构建富社会化体验的应用。将二者合而为一,你就可以构建高交互性、富于表现力,并融入了社会化功能的杀手级应用了。
    由12306.cn谈谈网站性能技术:12306.cn网站挂了,被全国人民骂了。我这两天也在思考这个事,我想以这个事来粗略地和大家讨论一下网站性能的问题。因为仓促,而且完全基于本人有限的经验和了解,所以,如果有什么问题还请大家一起讨论和指正。(这又是一篇长文,只讨论性能问题,不讨论那些UI,用户体验,或是是否把支付和购票下单环节分开的功能性的东西)
    百万级PHP网站架构工具箱介绍:Poppen.de是德国的一个社交网站,相对Facebook、Flickr来说是一个很小的网站,但它有一个很好的架构,融合了很多技术,今天我们就来了解一下该站点的架构技术。
    memcacheq队列服务安装与原理:  Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
    Nginx + PHP-FPM + APC=绝妙的组合:本文将介绍目前让PHP最快的方法:Nginx + PHP-FPM + APC,看似有些复杂,实际上我们只需要几个步骤就可以完成,并且性能远超Apache,有兴趣的朋友不妨去试一试。
    Facebook图片存储架构技术全解析:Haystack提出了一种通用的基于HTTP的对象存储,它含有指针,映射到存储对象。在Haystack中以指针储存照片,把数以十万计的图像聚集到一个Haystack存储文件,从而消除了元数据负荷。这就使得元数据的开销非常小,并且使我们能够在存储文件和内存索引中存储每个指针的位置。这就使得能用少量的I/O操作来完成图像数据的检索,可以消除一切不必要的元数据开销。
    世界最大的PHP站点 Facebook后台技术探秘:每月570000000000页面浏览量,每个月超过30亿的图片上传,5亿的用户数量,Facebook的后台是用哪些技术保障网站的流畅运行呢?在今年举行的Facebook F8开发者大会上,我们带您了解了其最新的开放图战略和语义搜索。今天我们一起来了解Facebook背后的软件,看看作为当今世界上访问量最大的网站之一,Facebook是如何保证5亿用户的系统一直稳定可靠的运行。
    php-fpm文档中文介绍:起初php-fpm 只有俄文文档,比较郁闷,于是先用 google 翻译先弄成英文,然后再人工翻成中文。这当中会难免会在我自己的英文水平引起的错误之外,再多些错误出来。后来终于有了一个英文的 wiki,并邀请我提供中文翻译。同时,距上一次翻译(2008年5月)以后,原来的文档也已经有了更新。于是我就根据英文 wiki ,重新翻译了一遍。