返回顶部
首页 > 资讯 > 后端开发 > Python >SMTP/POP3/IMAP 命令简介
  • 103
分享到

SMTP/POP3/IMAP 命令简介

命令简介SMTP 2023-01-31 06:01:53 103人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

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

 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]

--结束END--

本文标题: SMTP/POP3/IMAP 命令简介

本文链接: https://lsjlt.com/news/189829.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SMTP/POP3/IMAP 命令简介
     SMTP 命令简介 什么是 SMTP SMTP (Simple Mail Transfer Protocol) : 电子邮件从客户机传输到服务器或从某一个服务器传输到另一个服务器使用的传输协议。 SMTP 是请求/响应协议,命令...
    99+
    2023-01-31
    命令 简介 SMTP
  • smtp、esmtp、pop3命令使用
    SMTP命令:HELO fqdn  识别发送SMTP主机MAIL FROM:<sender>  识别邮件发件人RCPT TO:<recipient> 识别邮件收信人信息DATA    指示发送主机邮件数据发送已经准备...
    99+
    2023-01-31
    命令 smtp esmtp
  • pop3命令
             user username     输入你要查看用户的用户名  pass password    输入该用户对应的密码      stat                        请求server回送邮箱统计资料,如...
    99+
    2023-01-31
    命令
  • outlook 设置POP3/IMAP/SMTP服务 (账号密码-授权码)发送、获取授权码
    1. 说明 三方应用账号密码连接邮箱时,此时的密码并不是真正的邮箱密码,而是授权码。授权码需要去对应的邮箱设置中开通,此处是outlook 的授权码获取方式 2. 准备工作 2.1 申请邮箱 直接访问地址 https://www.micro...
    99+
    2023-08-19
    outlook 服务器 microsoft
  • linux tar命令简介
    一、使用介绍 tar命令用来打包,解包和压缩。 1、名词区分 打包:将一大堆文件或目录变成一个总的文件【tar命令】 压缩:将一个大的文件通过一些压缩算法变成一个小文件【gzip,bzip2等】 Linux...
    99+
    2022-06-04
    命令 简介 linux
  • lsnrctl reload 命令简介
    转载自:https://yq.aliyun.com/articles/28161 摘要: oracle 提供了lsnrctl reload 命令,在下面两种情况 1 修改listener.ora ...
    99+
    2024-04-02
  • windows下taskkill命令简介
    在Windows操作系统下,taskkill命令是用于终止或结束进程的命令。它可以通过进程ID或进程名称来识别要结束的进程。以下是t...
    99+
    2023-09-28
    windows
  • KVM常用命令简介
    Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少...
    99+
    2023-06-04
  • powermt 命令简介(转载)
    转载地址:http://blog.chinaunix.net/uid-28255964-id-3898038.html转载请在文首保留原文出处:EMC中文支持论坛介绍...
    99+
    2023-06-06
  • zookeeper:简介及常用命令
    目录 一、Zookeeper简介 二、Zookeeper服务端常用命令 1、启动ZooKeeper服务 2、查看ZooKeeper服务状态 3、停止ZooKeeper服务 4、重启ZooKeeper服务 三、Zookeeper客户端常用命...
    99+
    2023-10-03
    java-zookeeper zookeeper 大数据
  • Android 命令行工具简介
    关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导...
    99+
    2023-10-04
    android 命令行 log
  • MySQL source命令的使用简介
     一个线上问题的引发的思考     今天上班的时候,开发的同事拿过来一个.zip的压缩包文件,说是要把里面的数据倒入到数据库里面,本来想着是成型的SQL,只需要复制粘贴一下,倒入到数据库...
    99+
    2022-05-14
    MySQL source MySQL source命令的使用
  • mysql prompt命令的简单介绍
    这篇文章主要介绍“mysql prompt命令的简单介绍”,在日常操作中,相信很多人在mysql prompt命令的简单介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”my...
    99+
    2024-04-02
  • linux下chgrp和newgrp命令简介
    这篇文章主要讲解了“linux下chgrp和newgrp命令简介”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux下chgrp和newgrp命令简介”吧!使用 chgrpchgrp 只...
    99+
    2023-06-16
  • 用Telnet 命令测试基本POP3服务
    测试POP3通常都是用邮件客户端来做,如果遇到没有客户端或者需要设置客户端时就很麻烦,特此总结一个小巧的测试方法,就是 使用Telnet命令来测试POP3: 1、telnet IP_address 110(如果连接成功会显示类似:+OK m...
    99+
    2023-01-31
    命令 测试 Telnet
  • shell命令行参数用法简介
    一个shell脚本,它本身的命令参数是什么样呢?首先 ,shell脚本编程和python等脚本编程一样可以使用参数;其次 ,shell参数分为位置参数和内部参数;其中,位置参数 :是由系统提供的参数,就是我...
    99+
    2022-06-04
    命令行 参数 简介
  • shell脚本命令行参数简介
    之所以用到命令行参数,关键在于shell脚本需要与运行脚本的人员进行交互。bash shell提供了命令行参数添加在命令后面的数据值)、命令行选项修改命令行为的单字符值)和直接读取键盘输入。 1、命令行参数...
    99+
    2022-06-04
    命令行 脚本 参数
  • MYSQL的简单操作命令介绍
    这篇文章主要介绍“MYSQL的简单操作命令介绍”,在日常操作中,相信很多人在MYSQL的简单操作命令介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MYSQL的简单操作命令...
    99+
    2024-04-02
  • Dockerfile常用命令的使用简介
    目录01 CMD02 ENTRYPOINT03 WORKDIR04 ENV05 USER06 VOLUME07 ADD08 COPY   之前的文章中,...
    99+
    2024-04-02
  • Linux下rm命令的简单介绍
    本篇内容介绍了“Linux下rm命令的简单介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!rm 的那些事首先,这条命令是用来清除 ...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作