以前玩smtp的时候申明都是用的helo,最近在整理邮件服务的时候,才知道还有一个叫做ehlo的(太落后了)。

google了一下,了解了基本上是这么个情况:ehlo是对helo的扩展,即extend helo,可以支持authorization,即用户认证。下面我们通过一个例子来解释一下ehlo的用法:

[lyychee@mysun ~]# telnet smtp.mysun.org 25
// telnet到邮件服务器的25端口
Trying 172.18.250.250...
Connected to smtp.mysun.org (172.18.250.250).
Escape character is '^]'.
220 Welcome to my smtp server(EQManager V3.5) ESMTP
ehlo
// 用ehlo申明,表示自己需要身份验证
250-Welcome to my smtp server(EQManager V3.5)
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-PIPELINING
250-SIZE 10485760
250 8BITMIME
auth login
// 用这个命令表示身份验证开始
334 VXNlcm5hbWU6
// 这句是服务器返回的,是base64编码过的“user”
emhhbmd4aW5qaQ==
// 你的用户名经过base64编码的串
334 UGFzc3dvcmQ6
// 这句也是服务器返回的,是是base64编码过的“pass”
*******
// 密码,也要经过base64编码
235 ok, go ahead (#2.0.0)
mail from:zhangxinji@mysun
// 声明邮件来源email地址
// 为了防止被发垃圾邮件,去掉了域名的后半段
250 ok
rcpt to:lyychee@citiz
// 声明邮件目的email地址
// 为了防止被发垃圾邮件,去掉了域名的后半段
250 ok
data
// 邮件开始
354 go ahead
subject:Test Mail
// 主题
from:zhangxinji@mysun
// 在邮件头中声明邮件来源(仅在outlook或foxmail中显示,跟真实的投递无关)
// 比如你rcpt给了,在这里你完全可以写,信还是会被投到lyychee
to:lyychee@citiz
// 这个也是仅现实邮件目的地址

// 中间要留空一行,对邮件头跟邮件内容加以区分。
Mail Context
// 以上是邮件内容,可以是多行。
.
// “.”号表示邮件主体的结束。
250 ok 1184307659 qp 118430765900561 (eqmail)
quit
// 请求与服务器断开链接
221 Welcome to my smtp server(EQManager V3.5)
Connection closed by foreign host.
// 邮件发送过程完成。

smtp中ehlo的使用的更多相关文章

  1. 【RL-TCPnet网络教程】第34章 RL-TCPnet之SMTP客户端

    第34章      RL-TCPnet之SMTP客户端 本章节为大家讲解RL-TCPnet的SMTP应用,学习本章节前,务必要优先学习第33章的SMTP基础知识.有了这些基础知识之后,再搞本章节会有事 ...

  2. mailsend - Send mail via SMTP protocol from command line

    Introduction mailsend is a simple command line program to send mail via SMTP protocol. I used to sen ...

  3. [转载]SMTP的几个端口的比较

    出处:https://blog.csdn.net/zhangyuan12805/article/details/78781330 1. SMTP Port 25: 25口是四个端口中最老的.这是在33 ...

  4. gitlab配置smtp时,总是提示需要鉴权,记录一下爬坑过程。

    配置好smtp,然后发送邮件时总是提示 Net::SMTPFatalError: 550 5.7.1 authentication is required 最后发现是因为在gitlab web界面上配 ...

  5. 协议基础:SMTP:使用Telnet学习SMTP协议

    协议基础:SMTP:使用Telnet学习SMTP协议 2018-07-30 20:05:50 liumiaocn 阅读数 7479更多 分类专栏: 工具 Unix/Linux   版权声明:本文为博主 ...

  6. Postfix邮件服务器搭建及配置

    一.邮件服务器(Mail Server)的传输协议 1.简单邮件传输协议(SMTP):Simple Mail Transger Protocol 2.扩展的简单邮件传输协议(ESMTP):Extend ...

  7. 【转】在RedHat上搭建自己Email服务器

    原文:http://6839976.blog.51cto.com/6829976/1323482 by LN__@linux 目前邮件服务器中,想要拥有自己的邮件服务器,单单使用senmail,pos ...

  8. 使用 telnet 发邮件

    我们都习惯了用邮件客户端软件或者登录到电子邮件站点进行收发邮件,现在尝试一下使用 Windows 自带的 Telnet 程序手工地发送一封简单的邮件,以此来稍微明白关于邮件发送的一些知识. 现在 E- ...

  9. javaweb笔记全套

    Lesson 1 一.eclipse工具的使用 1. java代码的位置 1) 选择工作空间 workspace  选择一个文件夹存放程序(代码) 不要用中文和空格 2) 新建一个java 工程(Pr ...

随机推荐

  1. Linux入门介绍

    Linux入门介绍 一.Linux 初步介绍 Linux的优点 免费的,开源的 支持多线程,多用户 安全性好 对内存和文件管理优越 系统稳定 消耗资源少 Linux的缺点 操作相对困难 一些专业软件以 ...

  2. Cocos发育Visual Studio下一个HttpClient开发环境设置

    Cocos2d-x 3.x相关类集成到网络通信libNetwork图书馆project于.这其中包括:HttpClient分类. 我们需要在Visual Studio溶液中加入libNetwork图书 ...

  3. UVA Don't Get Rooked

    主题如以下:  Don't Get Rooked  In chess, the rook is a piece that can move any number of squaresverticall ...

  4. P31RestKit.dll 2.0 Unity3d json

    using System.Collections.Generic; using UnityEngine; using System.Collections; using Prime31; public ...

  5. CSharp设计模式读书笔记(15):命令模式(学习难度:★★★☆☆,使用频率:★★★★☆)

    命令模式(Command Pattern):将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化:对请求排队或者记录请求日志,以及支持可撤销的操作.命令模式是一种对象行为型模式,其别名为 ...

  6. 认识bash这个shell

    我们通过shell将我们输入的命令与内核通信,好让内核可以控制硬件来正确无误地工作bash是我们Linux默认的shell 用户界面(Shell,application)--------核心(Kern ...

  7. PHP的MySQL扩张:MySQL数据库概述

    资源:http://www.ido321.com/1023.html 一.SQL:结构化查询语言 SQL(Structured Query Language)是高级的非过程化变成语言.专门用于查询和改 ...

  8. gnu 扩展之#和##

    转自:http://chongsoft.bokee.com/5816474.html 今天测试了宏定义中的 "#" 和 "##" 的区别. 结果如下: &quo ...

  9. C# 窗口间传递数据

    C#两个窗口之间传递数据 1 公用变量值传递 public partial class Form1 : Form //parent form { public string name="&q ...

  10. Ejb in action(七)——message与JMS

    我们扩大MDBs学前,我们需要理解message(新闻)与JMS(Java Message Service)的概念. 我们在Java EE中谈论消息,实际上就是意味着实现一个松耦合的过程.系统组件之间 ...