mail server 与 DNS 的关系
Mail server 与合法的主机名
目前已经没有人会使用 IP 来寄信了,我们通常接收到的 email 都是使用『账号@主机名』的方式来处理的, 所以说,你的邮件服务器『就一定要有一个合法注册过的主机名』才可以。
DNS的反解
需要 DNS 的 MX 及 A 标志
MX 代表的是 Mail eXchanger, 当一封邮件要传送出去时,邮件主机会先分析那封信的『目标主机的 DNS 』,先取得 MX 标志 (注意,MX 标志可能会有多部主机喔) 然后以最优先 MX 主机为准将信发送出去
xyz.com.vbird IN MX 10 mail.xyz.com.vbird xyz.com.vbird IN MX 20 mail2.xyz.com.vbird xyz.com.vbird IN A aaa.bbb.ccc.ddd
MX的值越小,优先级越高。当前两个MX无法收下时,才会到A标志下
邮件传输所需要的组件 (MTA, MUA, MDA) 以及相关协议
- 电子邮件传送过程示意图
MUA (Mail User Agent)
就是『邮件使用者代理人』的意思,因为除非你可以直接利用类似 telnet 之类的软件登入邮件服务器来主动发出信件,否则您就得要透过 MUA 来帮你送信到邮件服务器上头去。
MTA (Mail Transfer Agent)
MUA 帮用户传送邮件到邮件主机上,那这部邮件主机如果能够帮用户将这封信寄出去,那他就是一部邮件传送主机 (MTA),这个 MTA 就是『邮件传送代理人』的意思。主要有两个功能:收受信件和转递信件。总之,我们一般提到的 Mail Server 就是 MTA 。严格来说, MTA 其实仅是指 SMTP 这个协议而已
MDA (Mail Delivery Agent)
意思是『邮件递送代理人』。事实上,这个 MDA 是挂在 MTA 底下的一个小程序, 最主要的功能就是:分析由 MTA 所收到的信件表头或内容等数据, 来决定这封邮件的去向。所以说,上面提到的 MTA 的信件转递功能,其实是由 MDA 达成的。MDA还有分析与过滤邮件的功能,如过滤垃圾信件和自动回复。
Mailbox
就是电子邮件信箱。linux系统默认的信箱放在/var/spool/mail/使用者账号中。若 MTA 所收到的信件是本机的使用者,MDA 就会将信件送到该 mailbox 当中去
客户端透过 MRA 收回信件的流程示意图
MRA (Mail Retrieval Agent)
使用者可以透过 MRA 服务器提供的邮政服务协议 (Post Office Protocol, POP) 来收下自己的信件, 也可以透过 IMAP (Internet Message Access Protocol) 协议将自己的信件保留在邮件主机上面, 并进一步建立邮件数据匣等进阶工作
POP3 的收信方式
- MUA 透过 POP3 (Post Office Protocol version 3) 的协议连接到 MRA 的 port 110, 并且输入账号与密码来取得正确的认证与授权
- MRA 确认该用户账号/密码没有问题后,会前往该使用者的 Mailbox (/var/spool/mail/使用者账号) 取得使用者的信件并传送给用户的 MUA 软件上
- 当所有的信件传送完毕后,用户的 mailbox 内的数据将会被删除
邮件常用协议
简单地说,SMTP管‘发’, POP3/IMAP管‘收’
SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。
增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的
IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的