一个电子邮件地址可以分为二个部份,第一个部份是使用者名称,第二个部份是主机名称。以 john@yahoo.com 为例,yahoo.com 就是主机名称,而 john 为使用者名称。

  假设 Alex 使用的信箱是 alex@gmail.com,则当 Alex 要寄信给 john@yahoo.com 时,会经过下列步骤:

  首先 Alex 从个人计算机中写好一封信,送到他所属的 gmail.com 的主机中。

  gmail.com 会先将信件存在自己的机器上的暂存区。

  gmail.com 会检查信件目的地,并查找 yahoo.com 的 IP 地址。

  接着经由因特网将信件送到 yahoo.com 的主机。

  yahoo.com 的主机收到信后,发现是给自己机器中的使用者,所以将信件存放到使用者的新件匣中。

  当 John 有空时,从家里打开计算机,并主动去 yahoo.com 检查是否有新的信件,当发现有新的信,则下载到自己的计算机中。

  过程如下图所示:


邮件服务器基础知识详细讲解

  如果 alex@gmail.com 要寄信给 john@gmail.com,因为寄信者和收信者使用同一个邮件服务器,所以在上述步骤二中,gmail.com 的主机发现收信者是自己机器的使用者,则会将该信件存放在使用者的新件匣中。

  从寄信到收信的流程中,每一个网络上的组件都扮演着不同的角色

  Mail User Agent (MUA):邮件使用者代理人,这是使用者用来写信、收信的程序。例如,我们常用的 Outlook Exporess、Thunderbird 等。它的作用在于提供使用者一个好用的收发信件接口,并将信传到自己的邮件服务器。

  Mail Transfer Agent (MTA):邮件转送代理人,是一个负责转送信件的服务器。UNIX 中使用的 Sendmail、Postfix 就是 MTA 软件。它的作用在于收到 MTU 寄来的信后,根据信件地址,将信件转送到目的地。在目的地中,也有另一台 MTA 会负责接收信件。有时候信件并不会一次就从使用者的计算机传送到目的地的主机,而是会经由许多 MTA 转送到目的地的主机。这种 MTA 接收非自己的信件,并转送到别台 MTA 的动作就叫作「Relay」。

  Mail Delivery Agent (MDA):邮件递送代理人,负责将要给本地使用者的邮件分配到使用者的信箱中。在 UNIX 中,MDA 通常是 mail 这支程序。

  当我们在寄信时,所使用的是 SMTP (Simple Mail Transfer Protocol) 通讯协议,在一台邮件服务器上,必须要先安装邮件服器软件,以接收 SMTP 协议所寄来的信件。MTA 和 MTA 之间传送信件时也是使用 SMTP 协定。而收信时,使用的是 POP3 (Post Office Protocol) 或是 IMAP (Internet Message Access Protocol) 协定。如下图:

邮件服务器基础知识详细讲解

  一般常用的 SMTP 软件为 UNIX 内附的 Sendmail、Qmail、或 Postfix。而收信时所使用的 POP3 及 IMAP 软件 UNIX 并未内建,因此我们必须自行安装。然而做为一台 Mail Server,我们要设定的是最少要做到可以正常使用 POP3 及 SMTP 来让使用者收发信。另外,我们也可以使用 Web 接口的邮件收发软件,Web 接口的邮件收发软件可以让使用者不必使用 Outlook 等软件即可经由任何操作系统的浏览器轻松收发信件。

  传统上,SMTP 在接受使用者寄信时,并不须经过身份认证,任何人都可以使用你的主机来制造垃圾信。因此 UNIX 内建的 Sendmail 是不接受 SMTP 寄信的。而一般的 ISP 业者大多是以控制联机来源的方式,禁止非允许网域的使用者 RELAY。但如果我们以控制联机来源的方式,便无法在其它非允许的IP地址使用SMTP,这对于想要任何地方都可以发信的人十分不分便。因此,我们必须让使用者透过 UNIX 使用 SMTP 身份认证的功能来寄信,让要使用诸如 Outlook 以 SMTP 寄信的使用者必须先通过本机的身份认证。

  在开始架设邮件服务器之前,您必须先设定好 DNS。由于传送信件时,必须查找目的地主机的 IP。如果您的主机没有合法的 DNS 设定,信件将无法正确送达。另外,您的服务器 IP 也必须设好反解,IP 名称必须和您的主机名称对映,如果反解不正常,有的服务器可能会拒收您所送出的信件。