Sendmail 服务器

电子邮件(Electronic Mail)服务是 Internet 最基本也是最重要的服务之一。

电子邮件系统的组成

Linux 系统中的电子邮件系统包括 3 个组件:MUA ( Mail User Agent 邮件用户代理 )、MTA ( Mail Transfer Agent 邮件传送代理 ) 和 MDA ( Mail Delivery Agent 邮件投递代理 )。

  1. MUA

    MUA 是电子邮件系统的客户端程序,主要负责邮件的发送和接收以及邮件书写、阅读等工作。比如:Windows 平台下的 Outlook、Foxmail,Linux 平台下的 mail、elm、pine 和 Evolution 等。

  2. MTA

    MTA 是电子邮件系统的服务器端程序,主要负责邮件的存储和转发。比如:Windows 平台下的 Exchange 和 Linux 平台下的 sendmail、qmail 和 postfix 等。

  3. MDA

    MDA 也称 LDA ( Local Dilivery Agent 本地投递代理 )。MTA 把邮件投递到邮件接收者所在的邮件服务器,MDA 则负责把邮件按照接收者的户名投递到邮箱中。

  4. MUA、MTA 和 MDA 协同工作原理

    发送邮件时,MUA 程序将信件传递给 MTA 程序,MTA 与目的邮件服务器建立连接并发送邮件,MDA 将接收到的邮件投递到相应的邮箱中。

    MTA 程序可以判断邮件发送的地址,如果邮件是寄给局域网或者本机,则直接将邮件转交给 MDA 程序投递,如果邮件是寄给远程系统用户的,MTA 必须能够选择路由并建立连接。

    MTA 程序还必须能够处理发送邮件时产生的问题,并向发信人报告出错信息。

    MTA 程序还支持别名机制,使得用户能够方便地使用别名与其他用户、主机或网络通信。

电子邮件传输过程

  1. 邮件用户在客户机使用 MUA 书写邮件,并将写好的邮件提交到本地 MTA 上的缓冲区。

  2. MTA 每隔一定时间发送一次缓冲区中的邮件队列。MTA 根据邮件的接收者地址,使用 DNS 服务器的 MX(邮件交换器资源记录)解析邮件地址的域名部分,从而决定将邮件投递到哪个目标主机。

  3. 目标主机上的 MTA 收到邮件后,根据邮件信息判断收件人,并使用 MDA 程序将邮件投递到该用户的邮箱。

  4. 收件人使用 MUA 软件登陆邮箱,查阅新邮件。

相关协议

常见的与电子邮件相关的协议有 SMTP、POP3 和 IMAP4。

  1. SMTP(Simple Mail Transfer Protocol)

    SMTP 即简单邮件传输协议,该协议默认工作在 TCP 的 25 端口。SMTP 属于客户机/服务器模型,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

    SMTP 属于 TCP/IP 协议簇,它帮助每台计算机在发信或中转信件时找到下一个目的地,并通过 SMTP 所指定的服务器把电子邮件寄到收件人的服务器上。

  2. POP3(Post Office Protocol 3)

    POP3 即邮局协议的第三个版本,该协议默认工作在 TCP 的 110 端口。POP3 属于客户机/服务器模型,它规定个人计算机连接到 Internet 的邮件服务器和下载电子邮件的方式。

    POP3 是 Internet 电子邮件的第一个离线协议标准,POP3 允许从服务器上把邮件存储到本地主机,同时删除保存在邮件服务器上的邮件。

  3. IMAP4(Internet Message Access Protocol 4)

    IMAP4 即 Internet 信息访问协议的第四个版本,该协议默认工作在 TCP 的 143 端口。IMAP4 属于客户机/服务器模型,是用于从本地服务器上访问电子邮件的协议。用户的电子邮件由服务器负责接收保存,用户可以通过浏览信件头来决定是否要下载此信件。用户也可以在服务器上创建或更改文件夹或者邮箱,删除信件或检索信件的特定部分。

虽然 POP3 和 IMAP4 都用于处理电子邮件的接收,但二者在机制上有所不同。用户访问电子邮件时,IMAP4 需要持续访问邮件服务器,而 POP3 则是将信件保存在服务器上,当用户阅读信件时,所有内容将会被下载到用户的机器上。

邮件中继

邮件服务器在接收到邮件后,会根据邮件的目的地址判断邮件发送至本域还是外部域,然后进行不同的操作。

  1. 本地邮件发送

    当邮件服务器检测到邮件发往本地邮箱时,会直接将邮件投递到指定邮箱。

  2. 邮件中继

    中继是指要求服务器向其他服务器传递邮件的一种请求。

    • 中继

      用户通过服务器将邮件传递到外部域。

    • OPEN RELAY(开放中继)

      不受限制的开放中继,无需经过验证就可以中继邮件到外部域。

    • 第三方中继

      由其他服务器提交而来的发往其他外部域的邮件中继。比如 A 服务器发送给 B 服务器的邮件,由 C 服务器中继转发,则 C 服务器被称为第三方代理。

  3. 邮件认证机制

    邮件认证机制要求用户在发送邮件时,必须提交账号和密码,经过服务器验证该用户合法后才允许发送邮件。

    如果关闭了 OPEN RELAY,那么必须是该组织的成员并通过验证后才可以提交中继请求。

一般服务器的开放中继和第三方中继是要禁止的,但中继不能关闭,否则将无法将邮件发送至外部域。