?? 電子郵件概述.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0048)http://www.linuxforum.net/books/jy/G.929104025.A -->
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY><PRE>發信人: albin (阿樂斌), 信區: LINUX
標 題: LINUX選修課講義:電子郵件概述
發信站: 碧海青天 (Fri Jun 11 21:28:45 1999), 轉信
版權聲明:
本文內容為大連理工大學LINUX選修課講義,歡迎大家轉載,但禁止使用本材料進行
任何商業性或贏利性活動。轉載時請保留本版權聲明。
作者:何斌武,hbwork@dlut.edu.cn,大連理工大學網絡中心,April 1999.
URL: ftp://ftp.dlut.edu.cn/pub/PEOPLE/albin/
------------------------------------------------------------------------------
感謝我的導師錢飛教授(http://come.or.jp/~fei/)多年來對大工校園網建設的無私幫
助及對我的熱心指導,在他的幫助下,大工校園網建設取得了一定的成績,我也從他那學
到了很多,不僅是專業方面的知識,更多的是如何待人,如何作人。
--------------------------------------------------------------------------------
電子郵件管理
電子郵件是系統管理中最復雜的一項任務,但也是最為重要的一項任務,因為用戶使用
較多,作何一個改動都會對所有用戶帶來影響。同時大多數用戶認為電子郵件是UNIX中最有
價值的服務,尤其是在與Internet相連的系統上,電子郵件更為重要。
本文主要介紹如下內容:電子郵件是如何工作的,電子郵件相關術語,從何處得到更多
的信息,最后給出配置sendmail的實例。
本文不介紹過于復雜的郵件配置如多協議MAIL HUB(將郵件從Internet上轉發給UUCP或
DecNET)等。
一、電子郵件概述
1. Email環境的關鍵 -- sendmail
說明:
本部分內容摘自我的導師錢飛教授大規模計算機網絡主要服務之管理方法中之電子郵件
環境的生成方法。
用戶在實際利用Email時, 所要用到的命令一般為mail命令,或一些其他專用命 令.這些
直接與用戶有關的,用于收發Mail的命令,或程序一般統稱為MUA(Mail User Agent).通
常,MUA的使用程序有恨多.例如,MH,MNEWS,ELM等等.
相對于此,將來自MUA的信件轉發給指定的用戶的程序一般被稱之為 MTA (Mail
Transfer Agent). 在UNIX系統上,最著名的MTA既是sendamil程序.sendmail是美國 加
州大學勃克利分校以Allman先生為中心的研究組所開發研制的優秀無償軟件.
sendmail(/usr/lib/sendmail)從各種MUA程序接收信件后, 按照自身的控制格 式文件
(/etc/sendmail.cf)中所描述的規則向外界轉發信件. 因此,Email環境的成 敗將取決
于sendmail.cf的設定是否合適.
MUA MTA
+---------------+
| /bin/mail |--->|
+---------------+ |
+---------------+ s +----------------------+
| /usr/ucb/mail |--->e ---->| /var/spool/mail/$usr |
+---------------+ n +----------------------
+---------------+ d +----------------------+
| MH |--->m ---->| /usr/bin/uux |
+---------------+ a +----------------------+
+---------------+ i +----------------------+
| mnews |--->l ---->| workstation |
+---------------+ | smtp +----------------------+
+---------------+ |
| elm |--->|
+---------------+
(圖1. Email系統的基本結構)
圖1中給出了Email系統的基本結構圖. Email系統看上去非常簡單,實際上卻非 常復雜.
首先,用戶需要利用mail等MUA程序編輯并發出信件. mail命令將為用戶所編輯 的信件
追加一些相應的信息(mail head,稱之為信件頭),然后將該信件轉交給sendm ail程序處
理.sendmail對信件頭進行解析,調查該信件之轉發方法及信件接收地址.
如果信件接收地址為本地計算機之用戶地址,則將該信件追加到/var/spool/ma il目錄
下之相應用戶(與用戶名同名)文件中. 如果件接收地址為UUCP線路之另一側 之用戶地
址,則起動/usr/bin/uux經由UUCP轉發信件. 如果線路為TCP/IP線路,則利 用SMTP協議
與sendmail進行通信轉發信件.
2. Email環境的設計
在設計Email環境時,一般應遵循以下規則.
(1)Email服務器的集中
在多機網絡環境中應注意Email環境的統一配置,同一組織內的Email服務器不宜 過多.
否則,將增加管理負荷.
(2)共享信件緩沖池時,需要考慮資源競爭問題
在小規模網絡中,為了實現Email之共享環境, 管理人員一般利用NFS將各臺UNIX 工作站
之信件緩沖池(/var/spool/mail)mount到Email服務器上.這時,需要注意 的是,信件系
統是一種典型的分布處理環境, 對于共享文件如果文件自瑣(lock) 問題處理不夠得當,
有時將會引起重大事故(輕則丟失信件,重則損壞整個硬盤系 統).
(3)統一信件代碼
在傳統的UUCP中繼網絡上,網絡上各個主要Email中繼站上一般采用"7位通"(7位 代碼)
之傳遞方式. 因此,要透過廣域網傳遞多字節文字(中日文等)信件時,必須 進行適當的
代碼轉換.在日本,網絡上的省缺規定為7位JIS代碼. 這就是說,用戶 利用MUA發送信件
時,必須將信件文本轉換成JIS代碼文本,或利用專用JIS代碼視 窗,或編輯器來直接編輯
JIS碼文件.
近年來,隨著廣域網技術之發展,sendmail(V8)等MTA之改進,在點對點(point to point)
之TCP/IP線路上已經可以實現直接"8位通"之信件傳遞. 筆者在日常工作 中也常常與中
國國內網友直接交換GB代碼信件.但是,需要注意的是,在一些站點 上,由于MTA版本過于
陳舊, 經由這些站點轉發的8位碼會被自動過濾成7位碼(丟 掉高位碼),造成亂碼.因此,
這時,有必要確認接收側之MTA版本.可以相信在不遠 的將來,廣域網上之工作站都將陸
續切換成新的MTA(sendmail V8以上).
(4)不斷更新sendmail版本
sendmail作為無償軟件尚在不斷地進行著本本更新,以排除安全性問題.眾所周 知,利用
sendmail所存在著的一些漏洞來進行網絡非法侵入的hacking活動仍很盛行. 為了保護
您的系統避免外侵,建議各個網絡管理者跟蹤sendmail之版本,盡可能地采 用最新版.目
前的最新版本為sendmail.8.9.3.tar.gz.
(5)確定自己的郵件地址表現
各入網單位必須采用INTERNIC所指定的正式域名. 然后根據自己所在域來確定 郵件地
址形式.
(6)確定線路類型
電子郵件系統的虛擬配信線路大致有以下4種.
a.機內直接配信
本地郵件傳送方式.本地計算機內的用戶向本地其他用戶傳遞信件.
b.UUCP線路配信
經由UUCP線路向其他計算機上的用戶傳遞信件.
c.SMTP配信
利用SMTP協議經由TCP/IP線路向其他計算機上的用戶傳遞信件.
d.域名服務器下SMTP配信
發送信件時用域名服務器來查尋收方地址,利用域名服務器所提示的MX記錄 來確定
接收側地址, 然后用SMTP(或ESMTP)協議經由TCP/IP線路向其他計算 機上的用戶傳
遞信件.
二、電子郵件系統相關術語
電子郵件是從MUA(Mail User Agent)如mailx/Netscape Mail/Eudora開始的,在寫
完信件之后MUA把信件轉發給郵件路由如sendmail, 郵件路由然后將信息發送給MTA(Mail
Trasfer Agent);然后此信件通過多個主機或網絡到達最終的投遞代理,由投遞代理將
郵件信息追加到接收者的郵箱文件中。
MUA:郵件閱讀或發送程序,如SVR4 mailx,elm, pine, 在郵件系統中用戶只于MUA
打交道,MUA將郵件系統的復雜性與用戶隔離開。
Mail Router: 程序,從用戶處接收郵件并決定其目的地址以及如何到達目的地。
比如根據接收者的地址不同,電子郵件可能通過TCP/IP網絡發送,或者通過
UUCP或FAX發送。郵件路由使用接收者地址及其內部的配置信息來選擇一個最
好的MTA,然后將郵信件轉給此MTA。
MTA(Mail Transport agent): 一個專用程序,其作用類似于郵局,用于在兩個機器
之間發送郵件。通常,一個機器上只有一個MTA。sendmail程序就是一個MTA,此
外還有其他MTA,如MMDF,Smail 3.x, qmail以及zmailer等。
MTA能夠理解特定網絡的EMAIL協議并通過網絡傳輸信件,如UUCP可通過UUCP連接
發送信件,但無法處理SMTP信件。
Delivery Agent(投遞代理):sendmail自己并不完成最終的郵件發送,它要調作其他
的程序來完成最后的投遞服務。在SVR4系統中一般是/bin/mail.
實際情況是MTA,MUA以及Mail Router之間的區別往往比較模糊,如sendmail是一個
主要的Mail Router, 但同時又可以作為MTA,因為sendmail含有SMTP功能,可以在TCP/IP
網絡上傳送郵件,而在郵件接收端同樣也是由sendmail來完成最終郵件發送之前的準備工
作;此外一些MUA自帶一定的郵件路由功能,如Netscape Mail可以進行SMTP對話, 因此可
以實現對SMTP電子郵件的發送。
1、不同的MUA
mail: 用戶郵件目錄 /var/spool/mail/$USER, 變量: $MAIL
用戶轉發文件 $HOME/.forward
elm: 菜單驅動
pine: 字符界面的全屏幕操作MUA,應用較為廣泛,功能較elm強大。
Netscape Mail
Microsoft Outlook Express
2. 背景資料及其它相關資源
RFC 821 STMP
RFC 822 EMAIL格式規范
RFC 1425 ESMTP
RFC 1123 對主機的要求及對前面的RFC的一些修改
sendmail文檔
SIOG: Sendmail Installation and Operation Guide
建議仔細閱讀,重要指南
Sendmail: An Internet Mail Router
Mail System and Address in 4.2BSD
以上文檔sendmail源代碼包中自帶,由sendmail作者Eric Allmen編寫。
Sendmail, Second Edition, O'Reilly
By Bryan Costales with Eric Allman
UNIX Unleashed, System Administrator Edition,
Chapter 24: Mail Administratin
http://www.sendmail.org/
Sendmail FAQ
3. Internet的郵件協議
為了解sendmail所完成的不同工作,需要了解一些Internet協議,協議是軟件及硬件
進行通訊時所要遵守的標準.
一般來說協議是分層的,上一層協議使用底層協議作為基礎,如ip協議不需要進行
端到端的連接即可以進行數據傳送,而smtp或其他高層協議則要進行端到端的連接,
tcp建立在ip層之上,向telnet及smtp等提供面向連接的服務.總的來說,TCP/IP提供
Internet上的基本網絡服務,ftp/smtp各種應用層協議則是建立在TCP/IP基礎上的.分
層帶來的好處是諸如smtp/ftp高層應用程序無需處理數據包的傳輸與其他主機的連接
等底層任務,它們只需使用TCP/IP所提供的相應服務.
smtp定義如何在Internet上交換email信息,對于smtp來說,只要兩端的程序(smtp
Server)能夠正常完成SMTP功能,就可以進行郵件交換,而不論服務器的軟硬件環境是否
相同.
sendmail完成smtp任務示例:
[hbwork@helius mirror]$ /usr/sbin/sendmail -v hbwork@dlut.edu.cn <
../.pinerc
hbwork@dlut.edu.cn... Connecting to gingko.dlut.edu.cn. via esmtp...
220 gingko.dlut.edu.cn ESMTP Sendmail 8.9.3/8.9.3; Thu, 10 Jun 1999
10:34:48 +09
00 (CDT)
>>> EHLO helius.dlut.edu.cn
250-gingko.dlut.edu.cn Hello helius.dlut.edu.cn [202.118.66.81], pleased
to meet
you
250-EXPN
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -