电子邮件系统是如何运作的?
电子邮件系统是如何运作的?
由Linux魔法师
电子邮件的历史
电子邮件的出现比Internet的出现要早。电子邮件于1965年在MIT诞生。当时,MIT开发出了一种分时操作系统,可以让多个用户在各自的终端同时登录并使用同一个大型机。一个用户可以给同一个大型机上的另外一个用户发送电子邮件。随着Internet的出现,电子邮件可以发送到世界的任何一个邮件服务器上。
电子邮件系统的六个组成部分
如今的电子邮件系统由以下六个部分组成:
MTA MDA mailbox POP3/IMAP Server MUA MSA
在下文中,我用中文“服务器”来表示硬件意义上的服务器,用英文”Server”来表示软件意义上的服务器。
MTA
MTA的全称是Mail Transfer Agent。MTA的职责是向其他MTA发送邮件,接收或拒收其他MTA发来的邮件。邮件的发送和接收是通过SMTP协议在各个邮件服务器的MTA之间完成的,所以MTA又可以被称为SMTP Server。MTA还有很多别名,如 Message Tranfer Agent, Mail Relay, Mail Exchanger。
发件人MTA ----------->> 收件人MTA
MDA
MDA的全称是Mail Delivery Agent。它负责把本地MTA从远程发件人MTA接收到的邮件投递到用户的邮箱(mailbox),这个过程叫做本地邮件投递,所以MDA又被称为LDA(Local Delivery Agent)。你也可以让MDA自动回复邮件。
发件人MTA ------->> 收件人MTA -------->> MDA ---------->> 收件人mailbox
Mailbox
Mailbox用来存放用户的邮件,用户可以使用POP3协议或IMAP协议查看邮件服务器上mailbox里的邮件。
POP3/IMAP Server
POP3/IMAP Server负责把mailbox里的邮件传递给MUA,以供用户查看。
收件人mailbox ------->> POP3/IMAP Server ----->> 收件人MUA
MUA
MUA的全称是Mail User Agent,也被叫做email client。它分为两类,一类是本地邮箱客户端,比如thunderbird,foxmail,outlook。本地邮箱客户端是安装在用户电脑上的。另一类是web邮箱客户端,英文名叫webmail。web邮箱客户端安装在web服务器上,用户通过浏览器使用web邮箱客户端。例如,我们经常在浏览器地址栏输入mail.qq.com使用腾讯QQ的web邮件客户端。MUA有两个功能,一是查看邮件。一般情况下,图形界面的MUA通过POP3 Server或IMAP Server来查看mailbox里的邮件,不过很多命令行MUA可以直接访问邮件。
收件人mailbox -------->> POP3 Server/IMAP Server -------->> 收件人MUA
MSA
MUA的另外一个功能是发邮件。当MUA发邮件时,需要借助MSA。MSA是的全称是Mail Submission Agent。当用户使用MUA写好邮件,点击发送按钮后,MSA从MUA那里接收邮件,然后提交给发件人的MTA,发件人的MTA再把邮件投递给收件人的MTA。
发件人MUA-------->> MSA --------->> 发件人MTA ------->> 收件人MTA
所以一封邮件从发件人撰写到收件人查看要经历如下过程:
发件人MUA------>> MSA ------->> 发件人MTA ------>> 收件人MTA ------>> MDA ---------->> 收件人mailbox ------>> POP3/IMAP Server -------->> 收件人MUA
这是一般的过程,有时情况会有所不同。例如,有些MTA会自己把邮件存放在mailbox里,而不会把邮件交给MDA来处理。
邮件服务器是如何管理mailbox的
mbox格式
传统上,Unix-like服务器指定一个文本文件存放用户的所有的邮件。这个文本文件是/var/mail/USER或/var/spool/mail/USER或/var/spool/mail/USER或/var/spool/mail/USER。你可以输入下面的命令来查看这个文本文件的具体路径。
echo $MAIL
用户所有的邮件存放在同一个文本文件中。每一封邮件以From字样区别开来,From是每一封邮件的开头,每一封邮件的最后一行总是空白行。接收的新邮件将被添加到文件的末尾。这种传统的格式叫做mbox。你可以使用文本编辑器直接打开这种格式的文件。
maildir格式
另外一种新的格式是maildir。在maildir格式下,/var/mail/USER或/var/spool/mail/USER或/var/spool/mail/USER或/var/spool/mail/USER是一个目录,这个目录下有三个目录:new, cur, tmp。这三个目录下有很多文件,每一个文件都是一封邮件。其中,new目录下的邮件是未读邮件,cur目录下的邮件是已读邮件,tmp目录是在确认邮件到达new目录前的临时存放目录。当用户阅读了new目录下的一封邮件时,这封邮件便会移动到cur目录下。
电子邮件系统的协议
SMTP协议
SMTP协议是MTA之间的通信协议,使用TCP 25号端口。MUA和MSA之间也使用SMTP协议,这时它们使用的是TCP 587号端口。
POP3协议
POP3协议是早期的一种查看邮件的协议。用户需要把邮件从服务器上下载到自己的电脑之后才能查看邮件。POP3协议默认会把已下载的邮件从邮件服务器上删除,但也提供了保留邮件的选项。POP3协议是一种单向协议,这意味着用户不能对邮件服务器做更改。如果用户从不同的设备查看邮件,那么之前已阅读的邮件在新设备上的状态还是显示未读。
IMAP协议
IMAP协议也是一种用于查看邮件的协议,用户不需要下载邮件。与POP3不同的是,IMAP可以对邮件服务器做更改。比如阅读一封邮件后,在另外一设备查看邮件时已阅读邮件的状态会显示已经阅读。用户在删除一封邮件后,在其他设备上也会显示已经删除。我们可以把IMAP协议看成是一种具有同步功能的协议。
并不是所有的用户都需要 POP3/IMAP服务器才能查看邮件。有些用户可以 SSH访问邮件服务器,这时,他们可以使用命令行 MUA读取邮件。这些命令行 MUA,比如 heirloom-mailx, mutt,都不需要 POP3/IMAP服务器,它们可以直接访问邮件。
加密方式:SSL/TLS和STARTTLS
这两种加密方式都是使用SSL/TLS来加密邮件。它们的区别在于SSL/TLS需要另外打开一个端口,STARTTLS不需要另外打开一端口。
IMAP使用143端口,经过SSL/TLS加密的IMAPS协议使用993端口。
POP3使用110端口,经过SSL/TLS加密的POP3S协议使用995端口。
SMTP使用25端口,经过SSL/TLS加密的SMTPS协议使用465端口。
而STARTTLS可以在原有的端口上加密IMAP、POP3和SMTP协议,它们分别仍然使用143、110、25端口。
电子邮件系统中常见的软件
电子邮件系统六个部分组成,分别负责六个不同的任务。但有些软件可以同时充当多个角色,负责多个任务。比如MTA和MSA可以集成在同一个软件。
Sendmail
Sendmail是一个古老的MTA,在上世纪80年代就诞生了。Sendmail在1996年的市场份额高达80%,之后逐渐下降。现在仍然有大量邮件服务器在使用sendmail作为SMTP服务器。
Postfix
Postfix是Unix-like服务器上常见的一个MTA,市场份额大约占32%。它与Sendmail相兼容,但比sendmail更安全,配置更加容易。实际上,它就是为了解决sendmail安全性不足与配置麻烦这两个问题而开发出来的。IBM在早期把它叫做Secure Mailer。Postfix也实现了MSA的功能。另外,Postfix自身也包含了一个简单的MDA,可以实现本地邮件投递的功能。但邮件服务器管理员也可以安装一个功能更加完善的MDA软件,如Dovecot。
Dovecot
Dovecot是一个POP3/IMAP Server,同时也是一个MDA。Dovecot把MDA称为LDA(Local Delivery Agent)。
本地域名
一个MTA可以为不同域名的用户提供接收和发送邮件的功能。这些域名叫做本地域名。邮件服务器的管理员需要让MTA知道哪些域名是本地域名。如果收件人的域名不是本地域名,那么邮件将被转发出去。例如,domain1.com和domain2.com被指定为本地域名,domain3不是本地域名,那么MTA将接收domain1.com和domain2.com的邮件,对于domain3.com用户的邮件,MTA不会保存这封邮件,而是将它转发出去。
邮件转发服务器:open relay 和 smart host
open relay:任何邮件服务器的MTA都可以使用open relay将邮件转发到收件人的MTA。open relay经常被spammer利用,来发送垃圾邮件。Spammer不想把自己的身份暴露给收件人的MTA,所以他们积极寻找并利用open relay来隐藏自己的身份。open relay通常会被gmail,qq邮箱,网易邮箱等邮箱服务商列入黑名单。
smart host则不同,其他邮件服务器的MTA要先经过 SMTP AUTH 验证才能使用smart host将邮件转发给收件人的MTA。
邮件服务器管理员需要让MTA知道是否要启用转发功能。如果启用了转发,那么必须指定哪些主机可以使用转发。很显然我们不希望将自己的邮件服务器变成一个open relay。
电子邮件系统是如何运作的?相关推荐
- LinuxProbe 0x17 DHCP动态管理主机地址、电子邮件系统
动态主机配置协议(DHCP,Dynamic Host Configuration Protocol),该协议用于自动管理局域网内主机的IP地址.子网掩码.网关地址及DNS地址等参数,可以有效地提升IP ...
- extmail电子邮件系统
Extmail电子邮件系统搭建 一.结构图 二.搭建过程 1.安装需要的软甲包 [root@ahao1 ~]# yuminstall httpd mysql mysql-server mys ...
- 6.4 你真的了解电子邮件系统的组成和结构吗?(SMTP、POP3、IMAP、MIME……)
文章目录 0.思维导图 1.电子邮件的信息格式 2.电子邮件系统的组成结构 3.电子邮件协议 (1)SMTP MIME---多用途网络邮件扩充 (2)POP3 IMAP---因特网报文存取协议 (3) ...
- 搭建基于虚拟账号的电子邮件系统
使用postfix,cyrus-sasl,courier-authlib,mysql,dovecot,extmail,extman搭建电子邮件系统,可以使用web方式以虚拟账号注册登录邮箱,并且发送接 ...
- FTP协议、电子邮件系统与Telnet远程控制
一.FTP协议概述 FTP定义 文件传输协议 用于因特网文件传输 FTP特性 使用客户端/服务器模式 使用TCP提供可靠的传输 FTP属于维护状态的协议 FTP使用两条TCP连接完成数据传输 FTP的 ...
- FTP协议、电子邮件系统、Telnet远程控制
一.FTP协议 FTP定义 文件传输协议(File Transfer Protocol) 用于因特网文件传输(RFC 959) FTP特性 使用客户端/服务器模式 使用TCP提供可靠的传输 FTP属于 ...
- 完全揭秘***利用漏洞***电子邮件系统
在不断公布的漏洞通报中,邮件系统的漏洞该算最普遍的一项.***常常利用电子邮件系统的漏洞,结合简单的工具就能达到***目的.电子邮件究竟有哪些潜在的风险?***在邮件上到底都做了哪些手脚?一同走进** ...
- 2022企业电子邮件在哪里找,企业电子邮件系统哪个安全?
随着企业邮箱的普及,网上乱飞的广告逐渐增多,企业电子邮件在哪里找?什么电子邮件系统才算是好用的. 企业电子邮件是什么? 企业电子邮件,是用自定义名字的邮箱,前缀后缀域名都可自定义.企业内每个人都有一个 ...
- vps php mail,TMail v5.2 – PHP多域名临时电子邮件系统
释放双眼,带上耳机,听听看~! 源码简介 TMail是一个一次性电子邮件系统,可以在自己的主机上进行托管. 您只需要几个常见的PHP扩展和IMAP服务就可以使用这个源码. 安装使用相对比较简单. 源码 ...
- 什么是电子邮件系统?电子邮箱的格式是什么?怎样注册163邮箱呢
在工作中,我们用到的电子邮箱是比较多的,如TOM邮箱,平时收发邮件都需要我们会用到邮箱,那你知道什么是电子邮件系统吗?当我们发送邮件时邮箱格式不要忘记,电子邮箱格式是什么?如何注册邮箱呢?一起看看吧! ...
最新文章
- css:hover选择器
- 目标检测的图像特征提取
- 搜索引擎Solr系列(二): Solr6.2.1 从MySql中导入数据
- can协议crc计算_CAN总线的升级版——CAN FD简介
- php accesscontrolalloworigin,设置Access-Control-Allow-Origin实现跨域访问
- linux自学笔记--memcache和varnish缓存服务器
- 【神经网络】给初学者们讲解人工神经网络(ANN)
- treemap怎么保证有序_你对多线程熟悉吗,谈谈线程安全中的原子性,有序性和可见性?...
- keil spi 调试_单片机软件出问题了?有经验的工程师这么调试
- AirPlay 投影到 Mac 看不到选项如何解决?
- VS2013+VAX使用技巧
- 原来win7专业版64位 MBR方式安装win10专业版_x86
- 基于阿里云的一般性系统安全措施介绍
- 小程序汉字拼音的解决思路
- python字典题_Python字典练习题
- 外贸找客户软件:Top Lead Extractor
- ADF11g-041:禁止或允许其它网站添加ADF页面到iframe中
- 【kafka】Flink消费kafka Error sending fetch request
- 有一个人有一百块钱, 打算买一百只鸡, 现在大鸡三块钱一只, 小鸡一块钱三只, 不大不小的鸡两块钱一只. Java编程实现,刚好用一百块钱买一百只鸡.
- 电竞级还带主动降噪,莱仕达X2无线蓝牙耳机实测,品控值得安利
热门文章
- Java设计模式系列之迭代器模式
- property中的strong 、weak、copy 、assign 、retain 、unsafe_unretained 与autoreleasing区别和作用详解...
- CST、PVST、PVST+、rapid-PVST+、MSTP
- GBin1分享:一个漂亮的jQuery页面内容导航插件 - Flexiable Nav
- Oracle PL/SQL基础
- 【目录】数据结构与算法
- vue 组件创建与销毁
- 构建手机apk的过程
- ---perl 模块安装方法
- iphone中input标签会多出一块的解决办法