SMTP 命令简介
什么是 SMTP
SMTP (Simple Mail Transfer Protocol) : 电子邮件从客户机传输到服务器或从某一个服务器传输到另一个服务器使用的传输协议。 SMTP 是请求/响应协议,命令和响应都是基于 ASCII 文本,并以 CR 和 LF 符结束。响应包括一个表示返回状态的三位数字代码。SMTP 在 TCP 协议 25 端口监听连接请求。
什么是 ESMTP
ESMTP (Extended SMTP),顾名思义,扩展 SMTP 就是对标准 SMTP 协议进行的扩展。它与 SMTP 服务的区别仅仅是,使用 SMTP 发信不需要验证用户帐户,而用 ESMTP 发信时, 服务器会要求用户提供用户名和密码以便验证身份。验证之后的邮件发送过程与 SMTP 方式没有两样。
SMTP 命令
SMTP 命令包括:
HELO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。
EHLO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。
MAIL FROM 命令中指定的地址是发件人地址
RCPT TO 标识单个的邮件接收人;可有多个 RCPT TO;常在 MAIL 命令后面。
DATA 在单个或多个 RCPT 命令后,表示所有的邮件接收人已标识,并初始化数据传输,以 CRLF.CRLF 结束
VRFY 用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令
EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用
HELP 查询服务器支持什么命令
NOOP 无操作,服务器应响应 OK
RSET 重置会话,当前传输被取消
QUIT 结束会话
使用 SMTP 命令发送邮件
例如:邮件服务器IP是192.168.0.1 (蓝色字体内容由客户端输入,红色字体内容是服务返回的)
telnet 192.168.0.1 25 --------------------------------------- 使用 telnet 命令连接服务器 25 端口
Trying 192.168.0.1... --------------------------------------- 正在连接服务器 25 端口
Connected to 192.168.0.1. ----------------------------------- 连接服务器 25 端口成功
220 Winmail Mail Server ESMTP ready ------------------------- 显示服务器的标识名称 (Winmail 管理工具->高级设置->系统参数->基本参数中可更改)
helo cnu.com ------------------------------------------------ 向服务器标识用户身份,发信不要认证,跳过下面几步直接发送 mail from 命令
250 Winmail Mail Server
ehlo cnu.com ------------------------------------------------ ESMTP 命令,发信需要认证。
250-Winmail Mail Server
250-PIPELINING
250-AUTH=LOGIN PLAIN
250-AUTH LOGIN PLAIN
250-SIZE 20480000
250 8BITMIME
auth login ------------------------------------------------- 进行用户身份认证
334 VXNlcm5hbWU6
Y29zdGFAYW1heGl0Lm5ldA== ----------------------------------- BASE64 加密后的用户名
334 UGFzc3dvcmQ6
MTk4MjIxNA== ----------------------------------------------- BASE64 加密后的密码
235 auth successfully -------------------------------------- 身份认证成功
(535 auth failure ------------------------------------------ 身份认证失败)
发到本系统中域名下的账户可跳过身份认证。
mail from: <test1@domain.com> ------------------------------ mail from 地址 test1@domain.com
250 ok ----------------------------------------------------- 命令执行成功
rcpt to: <test2@domain.com> -------------------------------- 递送给地址 test2@domain.com
250 ok ----------------------------------------------------- 命令执行成功
data ------------------------------------------------------- 数据传输初始化
354 go ahead ----------------------------------------------- 开始传输数据
From: test1@domain.com
To: test2@domain.com
Date: Mon, 25 Oct 2004 14:24:27 +0800
Subject: test mail
Hi, test2
This is a test mail, you don't reply it.
.
------------------------------------------------------------ 数据内容,包括BASE64加密后的邮件内容, 以 CRLF.CRLF 结束数据传输
250 ok message accepted for delivery ----------------------- 命令执行成功
quit ------------------------------------------------------- 结束会话
221 Winmail Mail Server
Connection closed by foreign host .------------------------- 断开连接
分享到:
相关推荐
下面将详细讲解如何在C++中使用SMTP命令来发送邮件,以及涉及到的相关知识点。 首先,理解SMTP的工作原理至关重要。SMTP基于TCP/IP协议栈,通过建立连接(通常在端口25上)与邮件服务器通信。发送邮件的过程包括一...
描述pop3和smtp的通信命令及各种响应码含义以及MIME的数据格式。
通过Wireshark等分析工具打开"smtp.pcap"文件,可以详细查看上述每个步骤的网络报文,包括TCP旗标、SMTP命令和响应代码,甚至可能包含SMTP认证过程(如PLAIN、LOGIN或CRAM-MD5)的具体内容。 这样的数据包捕获文件...
实验一“SMTP命令及消息捕获_指导手册1”主要涉及了如何使用SMTP协议和POP3协议进行电子邮件的发送和接收,并介绍了如何利用Wireshark抓包软件进行网络消息的捕获与分析。以下是相关知识点的详细说明: 1. **SMTP...
SMTP(Simple Mail Transfer Protocol)是互联网上用于发送电子邮件的标准协议,它定义了客户端与服务器之间交互的命令和响应格式。SMTP服务命令对于理解和实现电子邮件系统至关重要,尤其对初学者来说,掌握这些...
SMTP协议原始命令码和工作原理
SMTP命令通常包括HELO/EHLO(与服务器建立连接)、MAIL FROM(指定发件人地址)、RCPT TO(指定收件人地址)、DATA(发送邮件内容)和QUIT(结束会话)等。通过SMTP,用户可以通过本地的邮件客户端软件或Webmail服务...
3. **SMTP命令**:SMTP协议基于文本命令,如HELO/EHLO、MAIL FROM、RCPT TO、DATA、RSET、QUIT等。你需要知道这些命令的含义,以及如何在服务器端响应这些命令。 4. **身份验证**:SMTP服务器通常需要验证发送者的...
5. **遵循SMTP命令和响应**:SMTP是基于命令/响应的协议,客户端发送命令(如HELO、MAIL FROM、RCPT TO、DATA等),服务器返回响应,确保正确执行每一步操作。 6. **处理错误和异常**:当遇到网络问题、权限错误或...
SMTP 协议简介 SMTP(Simple Mail Transfer Protocol)是一种用于发送电子邮件的协议。SMTP 协议工作在应用层,使用 TCP 协议作为传输层协议。SMTP 协议使用 25 号端口作为默认端口。 Java Socket 实现 SMTP 协议 ...
文章重点阐述了如何在VC++开发环境中通过直接使用SMTP命令来实现这一功能,并提供了一些关键的代码片段。 #### SMTP协议简介 SMTP是一种基于TCP/IP的应用层协议,主要用于在计算机之间传输电子邮件。它的核心功能...
用Telnet命令收发邮件(SMTP和POP3协议)实验报告 本实验报告介绍了使用Telnet命令收发邮件的实验过程,包括使用SMTP协议发送邮件和使用POP3协议收邮件的实验步骤。 SMTP协议发送邮件 SMTP(Simple Mail Transfer...
攻击者利用SMTP注入漏洞,可以在用户提交的数据中嵌入SMTP命令,从而控制邮件的发送过程,可能导致未经授权的邮件发送、信息泄露甚至恶意软件传播。 测试SMTP注入的步骤通常包括以下几个方面: 1. **识别易受攻击...
4. **新的SMTP命令**: 定义了一个新的SMTP命令`AUTH`,用于执行实际的身份验证流程。该命令接受一个标识SASL认证机制的字符串以及一个可选的Base64编码响应作为参数。 5. **MAIL FROM命令的扩展**: 在`MAIL FROM`...
2. **SMTP命令**:一旦连接建立,你需要发送一系列SMTP命令来与服务器进行交互。这些命令包括`HELO`(或`EHLO`,支持扩展的SMTP)用于身份验证,`MAIL FROM:`指定发件人地址,`RCPT TO:`指定收件人地址,以及`DATA`...
以下是关于如何使用Java调用SMTP命令发送邮件,包括抄送、密送和添加附件的详细步骤。 1. **JavaMail API**:首先,我们需要引入JavaMail API的依赖。JavaMail API提供了一系列接口和类,如`Session`、`Message`、`...
SMTP定义了14条命令,如HELO(你好)、MAIL FROM(发件人)、RCPT TO(收件人)、DATA(数据)和QUIT(退出)等。每条命令通常由四个字母组成,而服务器的响应通常只有一行。例如,"250 OK"表示命令执行成功,"550 ...