一個電子郵件地址可以分為二個部份,第一個部份是使用者名稱,第二個部份是主機名稱。以 [email protected] 為例,yahoo.com 就是主機名稱,而 john 為使用者名稱。
假設 Alex 使用的信箱是 [email protected],則當 Alex 要寄信給 [email protected] 時,會經過下列步驟:
首先 Alex 從個人計算機中寫好一封信,送到他所屬的 gmail.com 的主機中。
gmail.com 會先將信件存在自己的機器上的暫存區。
gmail.com 會檢查信件目的地,並查找 yahoo.com 的 IP 地址。
接著經由因特網將信件送到 yahoo.com 的主機。
yahoo.com 的主機收到信後,發現是給自己機器中的使用者,所以將信件存放到使用者的新件匣中。
當 John 有空時,從家裡打開計算機,並主動去 yahoo.com 檢查是否有新的信件,當發現有新的信,則下載到自己的計算機中。
過程如下圖所示:
如果 [email protected] 要寄信給 [email protected],因為寄信者和收信者使用同一個郵件服務器,所以在上述步驟二中,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 名稱必須和您的主機名稱對映,如果反解不正常,有的服務器可能會拒收您所送出的信件。