SMTP的相关命令

SMTP是Simple Mail Transfer Protocol的简写。

邮件是日常工作、生活中不能缺少的一个工具,下面是邮件收发的流程。

邮件的发送,主要是通过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

参考资料:

1、SMTP指令说明

2、SMTP百度百科

3、Wiki Smtp

4、RFC 5321

5、电子邮件收发原理和实现

6、Telnet下Smtp命令发送邮件

7、Send Mail Using Telnet

时间: 2024-10-28 23:37:58

SMTP的相关命令的相关文章

linux网络操作相关命令汇总_unix linux

linux操作相关命令汇总的github地址:https://github.com/zhwj184/shell-work 复制代码 代码如下: #/bin/sh #查看http请求的header tcpdump -s 1024 -l -A -n host 192.168.9.56 tcpdump -s 1024 -l -A src 192.168.9.56 or dst 192.168.9.56 sudo tcpdump -A -s 1492 dst port 80 #本地网络中IP地址为192

SMTP服务对命令流水的扩展

1.摘要 本文主要定义了一种SMTP服务扩展,使用这种服务扩展服务器可以说明它在一个TCP发送操作中可以接收多少个指令.在一个TCP发送指令中使用多个操作可以大大提高系统的运行效率. 2.介绍 虽然SMTP服务已经广泛使用了,效果也不错,但是对它的扩展也是不可少的.如果某个网络需要很长时间进行连接,那SMTP运行的效果可就比较差了.SMTP的时间就费在等待一个个的命令上了.如果能够使SMTP客户端进行命令流水,也就是一次发送许多指令,就会提高运行效率.但以前的协议中没有说明这一条,客户无法知道服

SMTP协议的命令和应答

从前面的通讯模型可以看出SMTP协议在发送SMTP和接收SMTP之间的会话是靠发送SMTP的SMTP命令和接收SMTP反馈的应答来完成的.在通讯链路建立后,发送SMTP发送MAIL命令指令邮件发送者,若接收SMTP此时可以接收邮件则作出OK的应答,然后发送SMTP继续发出RCPT命令以确认邮件是否收到,如果接收到就作出OK的应答,否则就发出拒绝接收应答,但这并不会对整个邮件操作造成影响.双方如此反复多次,直至邮件处理完毕.SMTP协议共包含10个SMTP命令,列表如下: SMTP命令命令说明 H

Linux组、用户、权限相关命令练习

任务要求 研发部开发人员David和Peter属于组A: 行政部人员Jack 和Mike属于组B: 1.建立共享目录"/project_a",该目录里面的文件只能由 研发部开发人员读取.增加.删除.修改以及执行,其他用户不能对该目录进行 任何的访问操作: 2.建立目录"/project_b",该目录里面的文件只能由行 政部人员读取.增加.删除.修改以及执行,其他用户不能对该目录进行任何的 访问操作: 3.建立目录"/project",该目录里面的

Linux中进程前后台切换相关命令

我们使用Linux时大多数是用shell命令行.一个命令窗口是无法直接执行多任务的.我们可以把某个任务先切到后台,再切别的任务到前台来操作.这个帖子整理一下这些常用的命令. 后台进程查看: jobs是用于后台进程查看的很方便的命令. jobs -l 可以显示出进程的pid. 注意一点:shell收到了SIGHUP信号后在退出前将SIGHUP转发给所有的作业(jobs).jobs由于收到SIGHUP而终止运行.(这取决于shell的) 将前台任务放到后台: 按下ctrl + z ,就将任务移到后台

linux网络配置相关命令、虚拟网络接口eth0:0

网络接口(interface)是网络硬件设备在操作系统中的表示方法,比如网卡在Linux操作系统中用ethX,是由0开始的正整数,比如eth0.eth1...... ethX.而普通猫和ADSL的接口是 pppX,比如ppp0等:  机器中所有可用网卡.名字.配置文件:  dmesg | grep eth :可以看到系统启动时,网卡启动的信息及相应网卡的名字,然后就可以手动添加相应的/etc/sysconfig/network-scripts/ifcfg-ethX文件对网卡进行配置 ifconf

使用CRT工具连接weblogic 服务器,相关命令

问题描述 使用CRT工具连接weblogic 服务器,相关命令 使用CRT工具连接weblogic 服务器,备份某个文件,应如何操作

SaltSack入门(三)Salt相关命令和Pillar应用

1.先了解下管理端(master)常用相关命令  1.1 salt     #主要管理命令    命令格式:salt [options]  <target> [arguments]     例:salt '*' test.ping  1.2 salt-key #证书管理 1 2 3 4 5     # salt-key –L           #查看所有minion-key     # salt-key –a  <keys-name>   #接受某个minion-key     

ipc通道入侵相关命令整理_DOS/BAT

利用ipc$入侵的相关命令: 我们在入侵的时候难免遇到忘记命令的时候,现在将我所知道的一些命令总结出来提供给各位.通过这些命令可以解决很大一部分新手的问题. 00:net use 作用:连接计算机或断开计算机与共享资源的连接,或显示计算机的连接信息. 命令格式: net use [devicename | *] [\\\\computername\\sharename[\\volume]] [password | *]] [/user:[domainname\\]username] [[/del