我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SMTP/POP3/IMAP 命令简介

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SMTP/POP3/IMAP 命令简介

 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 结束会话

连接到 Postfix 使用 SMTP 命令发送邮件
例如:安装 Postfix 的邮件服务器IP是mail.test.com (蓝色字体内容由客户端输入,红色字体内容是服务返回的)

telnet mail.test.com --------------------------------------- 使用 telnet 命令连接服务器 25 端口
Trying mail.test.com... --------------------------------------- 正在连接服务器 25 端口
Connected to mail.test.com. ----------------------------------- 连接服务器 25 端口成功
220 localhost ESMTP Postfix - by mail.test.com -------------------- 显示服务器标识 ( 修改main.cf 的smtpd_banner)
helo test.com ----------------------------------------------- 向服务器标识用户身份,发信不要认证,跳过下面几步直接发送 mail from 命令
250 localhost
ehlo test.com ------------------------------------------------ ESMTP 命令,发信需要认证。
250-localhost
250-PIPELINING
250-SIZE 102400000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login ------------------------------------------------- 进行用户身份认证
334 VXNlcm5hbWU6
Y29zdGFAYW1heGl0Lm5ldA== ----------------------------------- BASE64 加密后的用户名
334 UGFzc3dvcmQ6
MTk4MjIxNA== ----------------------------------------------- BASE64 加密后的密码
235 authentication successfully ---------------------------- 身份认证成功
(535 authentication failed --------------------------------- 身份认证失败)
发到本系统中域名下的账户可跳过身份认证。
mail from: <test1@domain.com> ------------------------------ mail from 地址 test1@domain.com
250 ok ----------------------------------------------------- 命令执行成功
rcpt to: <test2@domain.com> -------------------------------- 递送给地址 test2@domain.com
250 ok ----------------------------------------------------- 命令执行成功
data ------------------------------------------------------- 数据传输初始化
354 End data with .----------------------------------------- 开始传输数据
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: queued as 2F6DE3929--------------------------------- 命令执行成功
quit ------------------------------------------------------- 结束会话
221 Bye
Connection closed by foreign host .------------------------- 断开连接

POP3命令简介
什么是 POP3
POP3 (Post Office Protocol 3) 即邮局协议的第 3 个版本,它规定怎样将个人计算机连接到 Internet 的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的        
第一个离线协议标准, POP3 允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循 POP3 协议的接收邮件服务器,用来接收电子邮件的。

POP3 命令
POP3 命令包括:
USER username 认证用户名        
PASS password 认证密码认证,认证通过则状态转换        
APOP name,digest 认可一种安全传输口令的办法,执行成功导致状态转换,请参见 RFC 1321 。        
STAT 处理请求 server 回送邮箱统计资料,如邮件数、 邮件总字节数        
UIDL n 处理 server 返回用于该指定邮件的唯一标识, 如果没有指定,返回所有的。        
LIST n 处理 server 返回指定邮件的大小等        
RETR n 处理 server 返回邮件的全部文本        
DELE n 处理 server 标记删除,QUIT 命令执行时才真正删除        
RSET 处理撤消所有的 DELE 命令        
TOP n,m 处理 返回 n 号邮件的前 m 行内容,m 必须是自然数        
NOOP 处理 server 返回一个肯定的响应        
QUIT 希望结束会话。如果 server 处于"处理" 状态,则现在进入"更新"状态,删除那些标记成删除的邮件。如果 server 处于"认可"状态,则结束会话时 server 不进入"更新"状态 。

使用 telnet 连接 Winmail Server 收信
例如:安装 Winmail 的邮件服务器 IP 是 mail.test.com(蓝色字体内容由客户端输入,红色字体内容是服务返回的)
  telnet mail.test.com 110 ----------------------------- 使用 telnet 命令连接服务器 110 端口      
  Trying mail.test.com... ------------------------------ 正在连接服务器 110 端口      
  Connected to mail.test.com. -------------------------- 连接服务器 110 端口成功      
  +OK Winmail Mail Server POP3 ready        
  user username ------------------------------------------ 输入用户名, username 为具体的用户名      
  +OK ---------------------------------------------------- 执行命令成功
  pass password ------------------------------------------ 输入用户密码,password 为具体的密码,这里要注意,当密码输入错误后要重新user username后再运行此命令,否则提示命令无效      
  +OK 2 messages ----------------------------------------- 密码认证通过
  (-ERR authorization failed ----------------------------- 密码认证失败)      
  stat --------------------------------------------------- 邮箱状态
  +OK 2 6415 --------------------------------------------- 2 为该信箱总邮件数,6415 为总字节数      
  list --------------------------------------------------- 列出每封邮件的字节数
  +OK ---------------------------------------------------- 执行命令成功,开始显示,左边为邮件的序号,右边为该邮件的大小
  1 537 -------------------------------------------------- 第 1 封邮件,大小为 537 字节      
  2 5878 ------------------------------------------------- 第 2 封邮件,大小为 5878 字节      
  .
  top 1 -------------------------------------------------- 接收第 1 封邮件
  +OK ---------------------------------------------------- 接收成功, 返回第 1 封邮件头
  Return-Path: <test1@look.com>
  Delivered-To: test2@look.com
  Received: (winmail server invoked for smtp delivery); Mon, 25 Oct 2004 14:24:27 +0800
  From: test1@look.com
  To: test2@look.com
  Date: Mon, 25 Oct 2004 14:24:27 +0800
  Subject: test mail
  .    
  retr 1 ------------------------------------------------- 接收第 1 封邮件    
  +OK ---------------------------------------------------- 接收成功, 返回第 1 封邮件全部内容
  Return-Path: <test1@look.com>
  Delivered-To: test2@look.com
  Received: (winmail server invoked for smtp delivery); Mon, 25 Oct 2004 14:24:27 +0800
 
From: test1@look.com
  To: test2@look.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.
 
  .
 
  dele 1 ------------------------------------------------- 删除第 1 封邮件  
  +OK ---------------------------------------------------- 删除成功    
  dele 2 ------------------------------------------------- 删除第 2 封邮件  
  +OK ---------------------------------------------------- 删除成功    
  quit --------------------------------------------------- 结束会话
  +OK ---------------------------------------------------- 执行命令成功

IMAP命令概要
IMAP协议中的命令与POP3中最大的不同是每条命令前都一有一个由Client指定的标签,同一个会话中,Client发出的每条命令都会有不同的标签;而Server对每个Client发出的命令都必须以相同的标签作应答。这就使得IMAP会话中Client可以同时送出多个命令,而Server则完全可以并发处理这些命令,不必等待上一个命令执行完毕才处理下一个。
下面是若干常用的IMAP命令
<TAG> LOGIN <user name> <password>
LOGIN命令用于登录IMAP服务器,与POP3显著不同的是用户名和口令同时作为参数提交给Server,而POP3完成同样的操作需要USER和PASS两条命令。
C: a001 LOGIN SMITH SESAME
S: a001 OK LOGIN completed
<TAG> CREATE <folder>
CREATE可以创建指定名字的文件夹。文件夹名字通常是带路径的文件夹全名。
C: A003 CREATE owatagusiam/
S: A003 OK CREATE completed
C: A004 CREATE owatagusiam/blurdybloop
S: A004 OK CREATE completed
<TAG> DELETE <folder>
DELETE命令删除指定名字的文件夹。文件夹名字通常是带路径的文件夹全名。
C: A683 DELETE blurdybloop
S: A683 OK DELETE completed
C: A684 DELETE foo
S: A684 NO Name "foo" has inferior hierarchical names
C: A685 DELETE foo/bar
S: A685 OK DELETE Completed
<TAG> RENAME <old folder> <new folder>
RENAME命令可以修改文件夹的名称。
C: A683 RENAME blurdybloop sarasoop
S: A683 OK RENAME completed
C: A684 RENAME foo zowie
S: A684 OK RENAME Completed
<TAG> LIST <BASE> <template>
LIST命令用于列出邮箱中已有的文件夹,有点像操作系统的列目录命令。这个命令可以包含起始的路径位置和需要列出的文件夹所符合的特征,可以使用通配符"*"。
C: A101 LIST "" ""
S: * LIST (\Noselect) "/" ""
S: A101 OK LIST Completed
C: A102 LIST #news.comp.mail.misc ""
S: * LIST (\Noselect) "." #news.
S: A102 OK LIST Completed
C: A103 LIST /usr/staff/jones ""
S: * LIST (\Noselect) "/" /
S: A103 OK LIST Completed
C: A202 LIST ~/Mail/ %
S: * LIST (\Noselect) "/" ~/Mail/foo
S: * LIST () "/" ~/Mail/meetings
S: A202 OK LIST completed
<TAG> APPEND <folder> <attributes> <size> <mail data>
APPEND命令允许Client上载一个邮件到指定的Folder中。命令中包含了新邮件的属性、大小,随后是邮件数据。
C: A003 APPEND saved-messages (\Seen) {310}
C: Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
C: From: Fred Foobar <foobar@Blurdybloop.COM>
C: Subject: afternoon meeting
C: To: mooch@owatagu.siam.edu
C: Message-Id: <B27397-0100000@Blurdybloop.COM>
C: MIME-Version: 1.0
C: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
C:
C: Hello Joe, do you think we can meet at 3:30 tomorrow?
C:
S: A003 OK APPEND completed
<TAG> SELECT <folder>
SELECT命令让Client选定某个Folder,表示即将对该Folder内的邮件作操作。
C: A142 SELECT INBOX
S: * 172 EXISTS
S: * 1 RECENT
S: * OK [UNSEEN 12] Message 12 is first unseen
S: * OK [UIDVALIDITY 3857529045] UIDs valid
S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
S: * OK [PERMANENTFLAGS (\Deleted \Seen \*)] Limited
S: A142 OK [READ-WRITE] SELECT completed
<TAG> FETCH …
FETCH命令是IMAP协议里最复杂的命令。FETCH的命令参数很多、很复杂,难以一一列举,但基本的特征是允许将邮件按照MIME结构拆解为零碎的部件来提取。例如,可以利用FETCH命令提取邮件头、某一个附件、或某一邮件附件头部的某一字段,等等。
<TAG> STORE <mail id> <new attributes>
STORE命令用于修改指定邮件的属性,包括给邮件打上已读标记、删除标记,等等。
C: A003 STORE 2:4 +FLAGS (\Deleted)
S: * 2 FETCH FLAGS (\Deleted \Seen)
S: * 3 FETCH FLAGS (\Deleted)
S: * 4 FETCH FLAGS (\Deleted \Flagged \Seen)
S: A003 OK STORE completed
<TAG> CLOSE
CLOSE命令表示Client结束对当前Folder的访问,随后可以SELECT另一Folder。
C: A341 CLOSE
S: A341 OK CLOSE completed
<TAG> EXPUNGE
EXPUNGE将邮箱中所有打了删除标记的邮件彻底删除。EXPUNGE删除的邮件将不可以恢复。
C: A202 EXPUNGE
S: * 3 EXPUNGE
S: * 3 EXPUNGE
S: * 5 EXPUNGE
S: * 8 EXPUNGE
S: A202 OK EXPUNGE completed
<TAG> LOGOUT
LOGOUT命令结束本次IMAP会话。
C: A023 LOGOUT
S: * BYE IMAP4rev1 Server logging out
S: A023 OK LOGOUT completed
(Server and client then close the connection)

简单例子:
1 LOGIN liyp@test.com 123456
2 LIST "" ""
3 LIST "" "*"
4 SELECT INBOX.Sent
5 FETCH 0 body[header]
6 LOGOUT
telnet liyp@test.com 143
A LOGIN username password
A SELECT INBOX
A UID SEARCH ALL
A UID FETCH 0:100 FLAGS
A LIST "" "*"
A COPY 2 INBOX.Trash
A STORE 2 FLAGS (\Seen)
A UID STORE 16:17 +FLAGS.SILENT (\Flagged)
A FETCH 1 body[header]
A FETCH 1 body[text][/code]

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SMTP/POP3/IMAP 命令简介

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SMTP/POP3/IMAP 命令简介

SMTP 命令简介什么是 SMTPSMTP (Simple Mail Transfer Protocol) : 电子邮件从客户机传输到服务器或从某一个服务器传输到另一个服务器使用的传输协议。 SMTP 是请求/响应协议,命令和响应都是基于
2023-01-31

smtp、esmtp、pop3命令使用

SMTP命令:HELO fqdn  识别发送SMTP主机MAIL FROM:  识别邮件发件人RCPT TO: 识别邮件收信人信息DATA    指示发送主机邮件数据发送已经准备好RSET    中断当
2023-01-31

linux tar命令简介

一、使用介绍 tar命令用来打包,解包和压缩。 1、名词区分 打包:将一大堆文件或目录变成一个总的文件【tar命令】 压缩:将一个大的文件通过一些压缩算法变成一个小文件【gzip,bzip2等】 Linux中很多压缩程序只能针对一个文件进行
2022-06-04

powermt 命令简介(转载)

转载地址:http://blog.chinaunix.net/uid-28255964-id-3898038.html转载请在文首保留原文出处:EMC中文支持论坛介绍
2023-06-06

KVM常用命令简介

Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目
2023-06-04

windows下taskkill命令简介

在Windows操作系统下,taskkill命令是用于终止或结束进程的命令。它可以通过进程ID或进程名称来识别要结束的进程。以下是taskkill命令的一些常用参数:- /PID :通过进程ID来终止进程。- /IM :通过进程名称来终止进
2023-09-28

SQL和基本命令简介

sql简介什么是 sql?sql(结构化查询语言)是一种用于管理和操作关系数据库的标准编程语言。它允许用户创建、读取、更新和删除数据库中的数据。 sql 提供了一种使用简单的声明性语句与数据库交互的方法。为什么要学习 sql?学习 sql
SQL和基本命令简介
2024-08-29

linux下chgrp和newgrp命令简介

这篇文章主要讲解了“linux下chgrp和newgrp命令简介”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux下chgrp和newgrp命令简介”吧!使用 chgrpchgrp 只
2023-06-16

MySQL source命令的使用简介

一个线上问题的引发的思考 今天上班的时候,开发的同事拿过来一个.zip的压缩包文件,说是要把里面的数据倒入到数据库里面,本来想着是成型的SQL,只需要复制粘贴一下,倒入到数据库中就可以了。拿到的时候,才发现问题没我想的那么简单,我
2022-05-14

Linux下rm命令的简单介绍

本篇内容介绍了“Linux下rm命令的简单介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!rm 的那些事首先,这条命令是用来清除 Linu
2023-06-05

python开发简单的命令行工具简介

这篇文章主要介绍了python开发简单的命令行工具实例的相关资料,需要的朋友可以参考下
2023-02-01

shell命令行参数用法简介

一个shell脚本,它本身的命令参数是什么样呢?首先 ,shell脚本编程和python等脚本编程一样可以使用参数;其次 ,shell参数分为位置参数和内部参数;其中,位置参数 :是由系统提供的参数,就是我们一般说的某个数组的第1,2,3.
2022-06-04

shell脚本命令行参数简介

之所以用到命令行参数,关键在于shell脚本需要与运行脚本的人员进行交互。bash shell提供了命令行参数添加在命令后面的数据值)、命令行选项修改命令行为的单字符值)和直接读取键盘输入。 1、命令行参数向shell脚本传递数据的最基本方
2022-06-04

解压rpm包的linux命令及rpm命令使用简介

rpm 是红帽(RedHat)软件包管理工具,实现类似于 Windows 中的添加/删除程序功能 rpm -ivh install_rpm tar xvf informix-linux.tar inux下解压命令大全 .tar 解包:ta
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录