찾다
백엔드 개발PHP 튜토리얼SMTP协议原始命令码和工作原理_PHP
SMTP协议原始命令码和工作原理_PHPJun 01, 2016 pm 12:37 PM
규약원칙보내다주문하다일하다인수하다섬기는 사람

SMTP

http://www.linuxforum.net Jephe Wu (2001-04-21 18:16:42)
                  
1.SMTP是工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个
  服务器
2.SMTP是个请求/响应协议,命令和响应都是基于ASCII文本,并以CR和LF符结束。响应包括一个表示返 
  回状态的三位数字代码
3.SMTP在TCP协议25号端口监听连接请求
4.连接和发送过程:

a.建立TCP连接
b.客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令
  服务器端正希望以OK作为响应,表明准备接收
c.客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行 
  服务器端则表示是否愿意为收件人接受邮件
d.协商结束,发送邮件,用命令DATA发送
e. 以.表示结束输入内容一起发送出去
f.结束此次发送,用QUIT命令退出。


5.另外两个命令:
VRFY---用于验证给定的用户邮箱是否存在,以及接收关于该用户的详细信息。
EXPN---用于扩充邮件列表。

6.邮件路由过程:
  SMTP服务器基于‘域名服务DNS中计划收件人的域名来路由电子邮件。SMTP服务器基于DNS中的MX记录
来路由电子邮件,MX记录注册了域名和相关的SMTP中继主机,属于该域的电子邮件都应向该主机发送。

若SMTP服务器mail.abc.com收到一封信要发到shuser@sh.abc.com:

a.Sendmail请求DNS给出主机sh.abc.com的CNAME记录,如有,假若CNAME到shmail.abc.com,则再次
请求shmail.abc.com的CNAME记录,直到没有为止
b.假定被CNAME到shmail.abc.com,然后sendmail请求@abc.com域的DNS给出shmail.abc.com的MX记录,
   shmail    MX   5   shmail.abc.com
                  10   shmail2.abc.com
c. Sendmail最后请求DNS给出shmail.abc.com的A记录,即IP地址,若返回值为1.2.3.4
d. Sendmail与1.2.3.4连接,传送这封给shuser@sh.abc.com的信到1.2.3.4这台服务器的SMTP后台程序

7.SMTP基本命令集:

命令       描述
------------------------------
HELO      向服务器标识用户身份
          发送者能欺骗,说谎,但一般情况下服务器都能检测到。

MAIL      初始化邮件传输
          mail from:
RCPT      标识单个的邮件接收人;常在MAIL命令后面
          可有多个rcpt to:
DATA      在单个或多个RCPT命令后,表示所有的邮件接收人已标识,并初始化数据传输,以.结束。
VRFY      用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令
EXPN      验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用
HELP      查询服务器支持什么命令
NOOP      无操作,服务器应响应OK
QUIT      结束会话
RSET      重置会话,当前传输被取消
--------------------------------

8. MAIL FROM命令中指定的地址是称作 envelope from地址,不需要和发送者自己的地址是一致的。
   RCPT TO 与之等同,指明的接收者地址称为envelope to地址,而与实际的to:行是什么无关。
9.为什么没有RCPT CC和RCPT BCC:?
   所有的接收者协商都通过RCPT TO命令来实现,如果是BCC,则协商发送后在对方接收时被删掉信封接收者
10.邮件被分为信封部分,信头部分和信体部分
   envelope from, envelope to 与message from:, message to:完全不相干。
   evnelope是由服务器主机间SMTP后台提供的,而message from/to是由用户提供的。有无冒号也是区别。

11. 怎样由信封部分检查是否一封信是否是伪造的?
a. received行的关联性。
   现在的SMTP邮件传输系统,在信封部分除了两端的内部主机处理的之个,考虑两个公司防火墙之间
   的部分,若两台防火墙机器分别为A和B,但接收者检查信封received:行时发现经过了C.则是伪造的。
b. received:行中的主机和IP地址对是否对应如:
   Receibed: from galangal.org (turmeric.com [104.128.23.115] by mail .bieberdorf.edu....
c. 被人手动添加在最后面的received行:
    Received: from galangal.org ([104.128.23.115]) by mail .bieberdorf.edu (8.8.5)
    Received: from lemongrass.org by galangal.org (8.7.3)
    Received: from graprao.com by lemongrass.org (8.6.4)


Jephe Wu  

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
趣谈ChatGPT原理及算法趣谈ChatGPT原理及算法Apr 27, 2023 pm 08:46 PM

​去年12月1日,OpenAI推出人工智能聊天原型ChatGPT,再次赚足眼球,为AI界引发了类似AIGC让艺术家失业的大讨论。ChatGPT是一种专注于对话生成的语言模型。它能够根据用户的文本输入,产生相应的智能回答。这个回答可以是简短的词语,也可以是长篇大论。其中GPT是GenerativePre-trainedTransformer(生成型预训练变换模型)的缩写。通过学习大量现成文本和对话集合(例如Wiki),ChatGPT能够像人类那样即时对话,流畅的回答各种问题。(当然回答速度比人还是

深入解析MySQL MVCC 原理与实现深入解析MySQL MVCC 原理与实现Sep 09, 2023 pm 08:07 PM

深入解析MySQLMVCC原理与实现MySQL是目前最流行的关系型数据库管理系统之一,它提供了多版本并发控制(MultiversionConcurrencyControl,MVCC)机制来支持高效并发处理。MVCC是一种在数据库中处理并发事务的方法,可以提供高并发和隔离性。本文将深入解析MySQLMVCC的原理与实现,并结合代码示例进行说明。一、M

前端工程师职责解析:主要做什么工作?前端工程师职责解析:主要做什么工作?Mar 25, 2024 pm 05:09 PM

前端工程师职责解析:主要做什么工作?随着互联网的快速发展,前端工程师作为一个非常重要的职业角色,扮演着连接用户与网站应用程序的桥梁,起着至关重要的作用。那么,前端工程师主要做些什么工作呢?本文将对前端工程师的职责进行解析,让我们来一探究竟。一、前端工程师的基本职责网站开发与维护:前端工程师负责网站的前端开发工作,包括编写网站的HTML、CSS和JavaScr

2023年我可以用Java技能申请哪些工作?2023年我可以用Java技能申请哪些工作?Sep 21, 2023 am 11:41 AM

当我们谈论编程语言和工作时,我们想到的一种编程语言是Java。全世界大多数公司都使用Java。它很受欢迎,而且有很多工作机会。如果您想在2023年借助Java技能找到工作,那么这对您有好处,因为Java技能可以让您快速找到工作。此外,它还能快速提升你的职业生涯。没有什么魔法能让你快速找到工作。但你的技能对你来说就像魔法一样。选择一份让你满意的工作和一个能够极大提升你职业生涯的良好环境。如果你是一个刚入行且有经验的人,Java也给你提供了一份不错的工作。许多公司使用Java作为其开发的主要程序。它

学java可以从事哪些工作学java可以从事哪些工作Jan 16, 2024 pm 04:58 PM

可从事的工作:1、企业级应用开发;2、网站开发;3、移动应用开发;4、游戏开发;5、大数据分析;6、科学计算与人工智能;7、嵌入式系统开发;8、金融行业应用开发等。详细介绍:1、企业级应用开发:Java在企业级应用开发中占据重要地位,可以用于开发大型、复杂的系统,如ERP、CRM等。这些系统通常需要处理大量数据、支持高并发、保证系统稳定性;2、​网站开发:包括前端和后端等等。

学java能找什么工作学java能找什么工作Jan 16, 2024 pm 05:18 PM

学java能找的工作:1、企业级应用开发;2、网站开发;3、Android开发;4、嵌入式领域;5、大数据与云计算;6、游戏开发;7、科学应用;8、软件开发与维护;9、系统与网络编程;10、安全与加密;11、教育与培训;12、咨询与顾问。详细介绍:1、企业级应用开发,Java在企业级应用开发中占据着非常重要的地位,利用Java,可以开发出各种复杂的企业级应用,如OA系统等等。

ChatGPT等不会很快接管人类工作,易出错,AI也不会免费打工ChatGPT等不会很快接管人类工作,易出错,AI也不会免费打工May 21, 2023 am 08:49 AM

ChatGPT等大模型的相继发布,让很多人倍感压力,害怕AI会很快接管他们的工作。对此,OpenAI也曾发表过一项研究,表明ChatGPT的影响涵盖所有收入阶层,且高收入工作可能面临更大的风险。事实到底如何呢?我们应该将所有的工作,即使是那些令人满意的工作都实现自动智能化吗?这是未来生命研究所(FutureofLifeInstitute)最近提出的几个问题之一,该研究所呼吁暂停大型人工智能实验,目前埃隆・马斯克(ElonMusk)、SteveWozniak和AndrewYang等1万多人均已签署

了解PHP底层开发原理:基础知识和概念介绍了解PHP底层开发原理:基础知识和概念介绍Sep 10, 2023 pm 02:31 PM

了解PHP底层开发原理:基础知识和概念介绍作为一名PHP开发者,了解PHP底层开发原理是非常重要的。正因为如此,本文将介绍PHP底层开发的基础知识和概念,帮助读者更好地理解和应用PHP。一、什么是PHP?PHP(全称:HypertextPreprocessor)是一门开源的脚本语言,主要用于Web开发。它可以嵌入到HTML文档中,通过服务器解释执行,并生成

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경