TA 運作的基本說明
如上圖所示, 當 user1@hostA 寄一封信件給 user2@hostC 時, sendmail 會負責將信件由 hostA 傳送到 hostC, 然後由 hostC 上面的 DA 將信件送到 user 的信箱中
接下來我們看看 UA, TA, DA 實際上是如合運作的, 如下圖所示
1.hostA 上的 user1 用 mail reader(UA) 寫了一封信, 寄給 user2@hostC
2.這封信立刻交由 sendmail(TA) 送往 hsotC
3.hostA 上的 sendmail 與 hostC 上的 sendmail 透過 SMTP (simple mail transfer protocol)交談, 轉送彼此的信件
4.當信件無法立刻送往 hostC 時, sendmail 將信件暫存到系統的 Mail Queue (/vap/spool/mqueue/), 等過一段時間再送
5.hostC 上的 sendmail 收到信件後, 首先判斷這封信件的目的地是否為 hostC, 如果不是則 sendmail 再往其它的 host 送, 如果這封信件的目的地是 hostC, 將其交由 local deliver (/usr/libexec/mail.local) 處理
6.local deliver (DA) 將信件寫入系統信箱目錄(/var/mail/)中的 user2 這個檔案
7.hostC 上的 user2 用 mail reader(UA) 讀取系統信箱, 然後信件被存到使用者個人信箱中
sendmail 的權限設定
sendmail 有時會由一般使用者來執行, 但是它卻需要寫入一些系統的目錄(如 /var/mail/, /var/spool/mqueue/), 所以 sendmail 的權限是 owner:root, group:bin, mode:4555(-r-sr-xr-x), 也就是 setuid root, 這樣的設定讓 sendmail 每次執行都能有 root 的權限.
使用別名 (/etc/aliases)
在 /etc/aliases 這個檔案中定義了在一部機器中的別名, 看看這個例子
user1@hostA 寄一封信件給 user2@hostB, 當 hostB 上的 sendmail 收到這封信時, 它檢查 /etc/alias.db 這個檔案的內容, 發現 user2 是 user3@hostC 的別名, hostB 會將收信人改成 user3@hostC, 並且將信件送往 hostC.
ps: 當我們在對 /etc/aliases 做了任何修改之後, 要執行 newaliases 這個命令, 這些修改才會寫到 /etc/alias.db, 被 sendmail 所參考
使用信件轉送 .forward
前述的 /etc/aliases.db 會讓信件產生轉送的動作, 不過那是屬於系統的, 每個使用者如果想要控制自己的信件轉送, 可以在自己的目錄下建立 .forward 這個檔案, 這個檔案的內容是一個 email address, 代表使用者收到的信件要轉到那個 email address 去, 看看這個例子
user1@hostA 寄一封信件給 user2@hostB, 當 hostB 上的 sendmail 收到這封信時, 它檢查 user2 目錄中的 .forward 這個檔案的內容, 發現 user2 的信件要轉給 user3@hostC 這個 email address, 因此 hostB 會將收信人改成 user3@hostC, 並且將信件送往 hostC.
DNS 上的 MX 記錄
MX 是 mail exchanger 的簡稱, 當一部機器 hostC 在 DNS 有如下的 MX 記錄時,
hostC IN MX 50 hostB.ee.ncku.edu.tw
hostC IN MX 100 hostD.ee.ncku.edu.tw
代表的意義是 hostB 和 hostD 是 hostC 的 mail exchanger, 且 hostB 的優先權比 hostD 高
參考下面這個例子
hostA 在有信件送往 hostC 時, 會先到 DNS server 查詢 hostC 的 MX 記錄, 找到最高優先權的 mail exchanger, 也就是 hostB, 因此雖然收信人是 user2@hostC, hostA 還是會將信件送往 hostB.
hostB 在收到這封信件後, 發收收信地址主機是 hostC 而不是自己, 它會將信件再轉往 hostC. 在這個例子中, hostB 接受 hostA轉來, 但目的地卻是 hostC 的信件, 並將之送往 hostC, 我們稱 hostB 這個動作叫 Relay.
ps: 當 hostA 找到 hostB 和 hostD 這兩個 mail exchanger 時, 它會先嘗試透過優先權較高 (數值較小) 的 host B傳送信件, 當 hostB 當掉時, hostA 會改透過 host D 去送信, 但是當 hostD 要這封信送往 hostC 時, 一樣會到 DNS 查詢 hostC 的 MX 記錄, 把信件轉往比自己優先權高的 hostB.此時若是 hostB 仍然是當掉的, 那麼信件會被放在 hostD 的 mail queue 中, 等待時間再送往 host B. 換句話說, 無論有幾個 MX, 其中數值最小的那個 exchanger 是必經之地, 所有的信件一定要通過這個 exchnager 才會到達目的地
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |