`
udvs
  • 浏览: 14842 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Email基础知识: SMTP/POP3 命令简介

阅读更多
Email基础知识: SMTP/POP3 命令简介

    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是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 localhost ESMTP Postfix - by ExtMail -------------------- 显示服务器标识 ( 修改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 .------------------------- 断开连接

注意: 本问引用自:http://www.magicwinmail.com/technic_smtp.htm 并做了小量修改。 ====================================================== 以下由genius提供的POP3命令简介,将原来单独置顶的文章去掉,融合到这里。

    Email基础知识: 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 是 192.168.0.1(蓝色字体内容由客户端输入,红色字体内容是服务返回的)
      telnet 119.119.119.212 110 ----------------------------- 使用 telnet 命令连接服务器 110 端口     
      Trying 119.119.119.212... ------------------------------ 正在连接服务器 110 端口     
      Connected to 119.119.119.212. -------------------------- 连接服务器 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 ---------------------------------------------------- 执行命令成功
分享到:
评论

相关推荐

    基于SMTP和POP3协议的EMAIL收发软件

    SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)是电子邮件系统中的两个核心协议,用于处理电子邮件的发送和接收。本项目是一个基于C#编程语言的课程设计,旨在实现一个能够通过...

    发送电子邮件软件和代码

    电子邮件是互联网上最常用的一种通信方式,用于发送文本、图片、附件等信息。在这个主题中,我们将探讨如何使用软件和...如果你正在处理一个项目,需要批量发送邮件或自动化邮件通知,那么了解这些基础知识将非常有用。

    一行代码登陆邮箱.rar

    对于登录邮箱,这可能涉及到OAuth认证、SMTP(Simple Mail Transfer Protocol)、IMAP(Internet Message Access Protocol)或POP3(Post Office Protocol version 3)协议,这些都是常见的用于发送、接收和管理邮件...

    利用winsock动态检测email

    综上所述,"利用Winsock动态检测email"是一个涉及网络通信基础、SMTP/POP3/IMAP协议理解和Winsock编程实践的综合项目。通过这个实例,开发者不仅可以掌握网络编程的基本技能,还能了解到电子邮件服务的工作原理。

    ruby实现邮件收发

    1. **通过SMTP发送Email** SMTP是互联网上用于传输电子邮件的标准协议。在Ruby中,可以使用内置的`Net::SMTP`库来实现邮件发送。清单1展示了如何创建并发送一封邮件的方法。关键步骤如下: - 定义全局变量,如`...

    第6章_构建和管理Email服务.ppt

    - **SMTP协议**:SMTP是邮件发送的基础,它在TCP端口25上运行,用于邮件的传输。SMTP服务器仅能接收来自客户机的邮件,或向其他SMTP服务器发送邮件,不负责接收邮件。 - **POP3协议**:POP3用于邮件的接收,它在...

    Nucleus email.pdf

    Nucleus Email 是一套专门为 Nucleus PLUS 和 Nucleus NET 设计的 API 函数集合,它为开发人员提供了一个构建POP3客户端、SMTP服务器以及SMTP客户端应用程序的基础框架。通过实现Post Office Protocol版本3(POP3)...

    Email服务程序设计.zip

    在IT领域,电子邮件服务程序设计是一项基础且重要的工作,它涉及到网络通信、协议解析和数据交换等多个技术层面。本项目是用C#语言编写的,C#是一种面向对象的编程语言,尤其适合开发Windows平台的应用程序,包括...

    Android Email程序源码.zip源码资源下载

    6. **SMTP/POP3/IMAP协议**:邮件应用需要与邮件服务器交互,这就涉及到SMTP(Simple Mail Transfer Protocol)用于发送邮件,POP3(Post Office Protocol version 3)或IMAP(Internet Message Access Protocol)...

    JAVA发送电子邮件

    在深入探讨电子邮件工具程序的开发之前,我们需要先了解电子邮件的一些基础知识,包括电子邮件的格式、使用的协议以及关键的组成部分。 ##### 1. 邮件格式 根据RFC 2822规定,电子邮件由多行文本组成,每行由`...

    SIMPLE_MAPI_DEMO.rar_SIMPLE_MAPI_DEMO_email_smtp demo_mapi_smtp_

    在本示例中,SIMPLE_MAPI_DEMO展示了如何使用MAPI接口来实现邮件服务,这通常比直接操作SMTP和POP3协议更为简便,因为MAPI已经封装了这些底层通信细节。 SMTP是互联网上用于发送电子邮件的标准协议。通过SMTP,用户...

    计算机二级复习纲要.pdf

    - 电子邮件(Email):网络通信方式,使用SMTP/POP3协议。 - 网页基础:HTTP、HTML、URL,构成互联网的基础技术。 8. 常用软件与服务 - 浏览器(如IE):用于访问和浏览网页。 - 文件传输协议(FTP):用于文件...

    Java邮件开发—–javaMail

    前面介绍了电子邮件系统的基本知识,那篇博客知识对基础理论知识做一些简要介绍,并不妨碍我们做邮件开发。现在开始Java邮件开发。  一、JavaMail简介  JavaMail,顾名思义,提供给开发者处理电子邮件相关的...

    Android Email程序源码.zip

    2. **SMTP/IMAP/POP3 协议**:邮件发送和接收通常涉及到SMTP(简单邮件传输协议)用于发送,IMAP(Internet消息访问协议)和POP3(邮局协议)用于接收。源码会展示如何在Android中实现这些协议,以与邮件服务器进行...

    email系统一个很好用的系统就是简单了点

    电子邮件(Email)系统是互联网上最基础且广泛使用的通信工具之一。它允许用户发送和接收文本、图片、附件等多种类型的信息。"一个很好用的系统就是简单了点"这句话可能暗示了一个优秀的Email系统应具备易用性和简洁...

    eamil.rar_C# Email_CSharp 邮件_email_mail c#_site:www.pudn.com

    10. **第三方库**: 除了.NET框架提供的基础支持,还有许多第三方库如MailKit、SharpMimeTools等,它们提供更强大的邮件处理功能,如解析复杂的邮件格式、支持IMAP/POP3等。 在"www.pudn.com.txt"文件中,可能包含的...

    qq序列邮件全自动订阅程序

    5. **自动化工具和库**:为了实现邮件的自动化订阅,程序可能会利用如Python的smtplib、email库来处理SMTP通信,以及imaplib库来处理IMAP/POP3操作。这些库简化了邮件系统的交互过程。 6. **数据处理**:订阅程序...

    email james

    2. **POP3/IMAP 服务**:James 同时支持 POP3 和 IMAP 协议,使得用户可以通过邮件客户端(如 Outlook、Thunderbird)接收邮件。POP3 通常用于下载邮件到本地,而 IMAP 允许在服务器上管理邮件,保持同步。 3. **...

    邮件系统查考(比较全面的邮件系统发送代码)

    了解这些基础知识后,你就能更好地理解和使用邮件系统,无论是开发自定义的邮件应用,还是优化现有系统的功能,都将大有裨益。在实际应用中,你可能还需要考虑错误处理、邮件附件、HTML格式邮件、多语言支持等更多...

Global site tag (gtag.js) - Google Analytics