Email原理

简介:

E-mail与Internet

   在专业的E-mail解决方案中,整个系统的各个组件通常都是来自同一家公司的软件,你不能随意更换个别组件,因为通常没有“等效程序”可以更换。另一方面,Internet Email系统采取开放式设计,任何人都是可以用不同的软件组合来架设一套邮件系统,并且能够与其他interner Email系统交换信息,唯一前提是所有软件都不惜遵守一组公开的标准与协议。这组协议制定了邮件的标准格式、邮件系统个角色的定位与任务以及邮件从发送方传递到接收方的详细过程。Exchange本身不是一个完整的Interner Email邮件系统,它只是整个系统中的一个重要组件。大多数Email用户只熟悉用来读信、写信的软件,称为“邮件用户代理”(Mail User Agent,MUA),常见的MUA包括:mutt、elm、pine、netscape与outlook express。其任务是让用户能够读信、写信、寄信。不过,MUA并非直接将Email送到收件人手中,而是由“邮件传输代理”(Mail Transfer Agent,MTA)代为传递。exchange扮演的角色正是MTA。

邮件系统的组成

      当你寄信时,信件是交给邮局处理。同理,当你要求MUA送出一封邮件,它只能将该邮件交给一台运行MTA软件(例如exchange、postfix)的服务器。图1-1是Email从发信者到收信者所经过的处理流程。MTA的任务是接受MUA的委任,将Email从一个系统递送到另一个系统。并收下远方MTA送来的邮件。每当MTA收到MUA的寄信请求,它会先判断是否应该受理。通常,如果邮件是来自本地系统的用户,或是本地网络上的系统,或是任何特许可以通过它转发(relay)邮件到其他目的地的网络,MTA都会受理寄信请求。另一方面,MTA也会依据“收件人”来决定是否要收下邮件。如果收件人是本地系统的用户,或是收件人位于它知道要如何转递(forword)的其他系统,MTA就会收下信息。

      MTA收到邮件之后,它必须决定下一步做什么。它有可能将邮件递送给自己系统上的用户,也有可能将邮件交给另一个MTA来继续传递。对于要交给其他网络的邮件,有可能会经过多个MTA接力传递。如果MTA无法递送信息,也无法转交给其他MTA处理,则退信给原发信者,或是发出通知函给系统管理员。一般,个人的MTA Server通常是由ISP控管;公司员工的,则可能由企业的信息系统部门控管。

wKioL1nN4QTzO6GkAABoy_-vjcg951.jpg

邮件终点站的MTA,在发现收件人是本地系统的用户之后,必须将邮件交给“邮件投递代理”(message delivery agent,MDA)。MDA可能将信息存放在普通文件夹内,也可能存入专门存储电子邮件的特殊数据库。不管是哪一种形式,任何用来长期保存邮件的机制,我们一律统称为邮箱(message storage),或俗称为“信箱”。

邮件被存入邮箱后,它就待在那里,等待收件人将它收走。收件人使用MUA来取信、读信。提供邮箱访问服务的服务器软件,并非当初收下信息的MTA,两者的角色是分离的。MUA必须让用户成功通过身份验证,才可取走邮箱里的邮件,呈现给用户阅读。

由于Internet Email采用开放式标准,所以MTA、MDA、MUA等不同角色,可分别由许多不同的软件来扮演。实现相同协议的不同包,可以彼此互相交流,而不管他们是在什么系统上运行。如果将一个完整的Email邮件系统集中在一起,你可能会发现,处理SMTP的是一套软件,处理POP/IMAP的是另一套软件。但邮件系统中每一种角色,都有许多不同的软件可以选择。




   本文转自327051661 51CTO博客,原文链接:http://blog.51cto.com/andyboge/1969730,如需转载请自行联系原作者






相关文章
|
安全 JavaScript 前端开发
用JAVA实现Email和短信验证(下)
用JAVA实现Email和短信验证(下)
108 0
用JAVA实现Email和短信验证(下)
|
安全 JavaScript 前端开发
用JAVA实现Email和短信验证(上)
在Web项目中Email和短信验证是很普遍的情形,下面我们来介绍如何用Java来实现。
110 0
用JAVA实现Email和短信验证(上)
|
JavaScript 前端开发 数据安全/隐私保护
手写一个Input.Password与Mentions功能结合的组件
手写一个Input.Password与Mentions功能结合的组件
239 0
|
Python
Python: email-validator验证Email地址
Python: email-validator验证Email地址
126 0
|
Java Linux 程序员
记录:Could not resolve placeholder 'user.userName' in value "${xxx.xx}"...【亲测有效】
记录:Could not resolve placeholder 'user.userName' in value "${xxx.xx}"...【亲测有效】
749 0
|
Java 数据安全/隐私保护
【Email】Java发送邮件接口与配置类
【Email】Java发送邮件接口与配置类
303 0
【Email】Java发送邮件接口与配置类
|
Java 开发者
email 验证|学习笔记
快速学习 email 验证
email 验证|学习笔记
谋杀 Email
作为新来者,凭着技术的进步、企业提升效率的需求、大厂们留下的中小客户市场切口,Zoom、Slack们高歌猛进,抢夺“Email们”的市场,在“WinTel大厂”们没能涉足的市场切下一块蛋糕。但在未来,当深入到大厂腹地,深入大型客户市场,新老企服软件公司的一战似乎不可避免。面对这些老玩家,他们能成功么
223 0
|
Web App开发 安全 Windows
提高IE和Email的安全性的四步骤
恶意黑客和病毒编译者能利用你邮件和网页浏览软件中的不安全设置来侵入你的电脑。他们可以通过给你发电子邮件或者诱惑你浏览含有恶意代码的网页来达到他们的目的。通过提高你的微软IE浏览器,Outltlook和Outlook Express的安全设置,可以来帮助你减小被攻击的可能。
1044 0
JavaUtil_09_email_使用 commons-email 发送邮件
  二、参考资料 1.【commons】邮件发送工具——commons-email
1044 0