臺灣學術網路竹苗區域網路中心 89年網際網路教育訓練及 推廣研習課程...
DESCRIPTION
臺灣學術網路竹苗區域網路中心 89年網際網路教育訓練及 推廣研習課程 電子郵件系統 ( E-mail) 的 規劃與建置. 交 通 大 學 計 算 機 與網路中 心 陳 昌 盛. 課程概要. E-mail 系統管理 入門簡介 E-mail Server 規劃與建置 sendmail, pop3/imap E-mail 系統測試與 偵錯 Anti-SPAM & Anti-virus mail 問題處理與追蹤. HCRC’2000 網路系統訓練課程 – Unix Mail Server 的規劃與建置. - PowerPoint PPT PresentationTRANSCRIPT
臺灣學術網路竹苗區域網路中心 89 年網際網路教育訓練及
推廣研習課程
電子郵件系統 (E-mail) 的規劃與建置
交 通 大 學 計 算 機 與網路中 心陳 昌 盛
課程概要
• E-mail 系統管理入門簡介
• E-mail Server 規劃與建置- sendmail, pop3/imap
• E-mail 系統測試與偵錯• Anti-SPAM & Anti-virus mail• 問題處理與追蹤
HCRC’2000 網路系統訓練課程 – Unix Mail Server 的規劃與建置
0.1 從何處取得 E-mail 系統的相關資訊 ?
• 關於 sendmail 的網站– http://www.sendmail.org/
• the O’Reilly DNS bible ‘sendmail’
• Newsgroups:– comp.mail.sendmail, comp.mail.imap,comp.mail.pop3,…
• 關於 Qpopper 的網站– http://eudora.qualcomm.com/freeware/qpop_faq.html
• 關於 IMAP 的網站– http://www.imap.org
1. E-mail 系統管理 入門• E-mail: Electronic Mail 電子郵件• E-mail Server:
– SMTP server, POP3/IMAP server• SMTP - Simple Mail Transfer Protocol
– 用於 server 之間 , 電子郵件的交換• 單純做 E-mail 的接收處理
– POP3 - Post Office Protocol version 3– IMAP - Internet Mail Access Protocol
• Web-based Mail 系統– WWW+SMTP+IMAP
• Anti-SPAM & Anti-virus Mail
SMTPserver
瀏覽程式
SMTP-server
圖 1. 電子郵件接收系統運作圖
(2)
硬碟POP3/IMAP server
(1)
(1b)(1c)
•MSIE , Netscape
網際網路
瀏覽程式
SMTP-server
圖 2 外送電子郵件系統運作示意圖
(1)
(2) •電子郵件傳送 server
•MSIE, Netscape 等
SMTPserver
Internet網際網路
web-mail 系統簡介• 常見的 web-mail 系統
– 國外 , Yahoo, Hotmail– 國內 , Kimo, Yam, PcHome,…
• Web-mail 系統套裝軟體 – Unix 部分
• IMP project, http://www.horde.org/imp– Microsoft 產品
• Exchange+IIS+…
標準連絡用 e-mail addres
SPAM Mail & DNS • SPAM Mail <=> UCE/UBE ( 不請自來 )
• UCE = Unsolicited Commercial E-mail• UBE = Unsolicited Bulk E-Mail
• UCE/UBE 散佈途徑– 名單收錄
• www homepage, USENET news articles• account password files on individual servers• 其他不當途徑 ( program bug, 招募會員活動 , …)
– 找尋管理較鬆散的 mail relay • Domain Zone scanning ( DNS)• URL scanning (web pages )
2. Mail server 規劃需求• Reliability
• Load sharing/balancing
• Scalability
• Mail Delivery Issues
2.1 E-mail 系統規劃原則• 出入的 Mail 分流• E-mail, 收 / 送系統分開
– 增加系統彈性– 提昇系統整體使用效能
• 兩段式 , 的 e-mail 收送系統– 使用 mail relay/forwarder
• 有效提昇頻寬利用• 提昇系統的穩定度 (availability/reliability)• 加強系統安全管理
Internet
•Local SMTP Server
Mail 的接收 - 直接傳送模式
Fig.3 Direct Internet mail delivery
incoming
Internet
區網中心
Mail 的接收 - 間接傳送模式
Fig.4 Indirect Internet Mail Delivery•Mail Relay
•Local SMTP Server
Internet
區網中心
Mail 的接收 - 混成傳送模式
Fig.5 Hybrid Internet Mail Delivery
•Mail Relay
Internet
Grade-90 Mail Server
Mail 的接收 - 轉送模式
Fig.6 Mail aliasing/forwarding
Grade-89 Mail Server
Campus Mail Forwarding server
Internet
•Local SMTP Server
Mail 的寄送 - 直接傳送模式
Fig.7 Direct Internet mail delivery
outgoing
Internet
區網中心
Mail 的寄送 - 間接傳送模式
Fig.8 Indirect Internet Mail Delivery•Mail Relay
•Local SMTP Server
2.2 出入的 Mail 分流• 分開不同機器
– SMTP Server (outgoing)
– POP3/IMAP Server ( incoming )
• 同一機器 , 但 incoming 與 outgoing 經由不同 process
– /usr/lib/sendmail –bd # incoming jobs– /usr/lib/sendmail -q30m # outgoing jobs
2.3 Incoming Mail 系統的規劃 • 使用 Mail Relay
– DNS 上 的相關配合設定
; e-mail 最終目的地 ==> E-mail: [email protected]
cc.nctu.edu.tw. IN MX 10 mgate.nctu.edu.tw.
; mail relay ==> 宜善加利用 , 可作為“備援與轉接”之用cc.nctu.edu.tw. IN MX 20 m-relay.nctu.edu.tw.
;
2.4 Outgoing Mail 系統的規劃• 使用 Mail Forwarder
– 善用 smart-relay 與 mailertable
• 以 sendmail 8.10 為例 ,– Local mail 常見部分 , 透過 mailertable 指定傳送– 其他 , 則轉往 smart relay 後續處理
2.4.1Mailertable 的設定範例• Sendmail 8.10.x 的 /etc/mail/mailertablecc.nctu.edu.tw smtp:ccms.nctu.edu.tw
csie.nctu.edu.tw smtp:smtp.csie.nctu.edu.tw
cis.nctu.edu.twsmtp:mail.cis.nctu.edu.tw
; without MX RR lookup
math.nctu.edu.tw smtp:[math.nctu.edu.tw]
2.4.2 Smart Relay 的設定• Sendmail 8.10.x 的 /etc/mail/sendmail.cf# 將 mail 轉交給底下的 forwarder 處理# 當 m-fwd 這個系統蓮步上時 , 會改連向 m-relay
DS m-fwd.nctu.edu.tw:m-relay.nctu.edu.tw
2.5 Mail Delivery
• Normal Spool Directory /var/spool/mail/chen…/var/spool/mail/hsiao
• Hash Spool Directory/var/spool/mail/c/chen…/var/spool/mail/h/hsiao
2.5 Mail Delivery ( 續 )
• Local Delivery Agent– mail.local– procmail
• Hash Delivery Programs– procmail (delivery agent)– qpopper ( daemon; extracting)
2.6 特殊處理• 轉送信件 (Mail forwarding)
– 系統端 Aliasing/[email protected]
– 用戶端 ($home/.forward)
• 特殊退信– 故意不接收退信
2.6 特殊處理 ( 續 )
• 故意不接受回信的實例– [email protected]
• Sendmail 的處理範例– /etc/mail/mailertable
admail.acer.net local: null-user
– /etc/mail/aliases#null-user: /dev/null
3. E-mail 系統的規劃與建置• SMTP server
– 幾乎個 Unix 系統都 有內建– 最新正式版本 Sendmail 8.10.1
• 常見 pop3/IMAP server– qpopper 2.53 ( 通常必須另行安裝 )– Imap 4.7, ( 通常必須另外安裝 )
3.1 Sendmail 8.10.x 的安裝 (1)• 取得原始程式
– http://www.sendmail.org– ftp://ftp.sendmail.org
• 解開壓縮檔 , 並還原程式原始檔– gzip –d sendmail.10.1.tar.gz– tar xvf sendmail.10.1.tar
• 製作及編輯 ‘自訂組態檔’– cd $src/sendmail-8.10.1/devtools/Site– vi site.config.m4 ( 也可以不設 )
Sendmail 8.10.x 的安裝 (2)
• 開始編譯– cd $src;
– sh ./Build –c
• 安裝– cd $src;
– sh ./Build install
Sendmail 8.10.x 設定檔的製作• 製作設定控制檔 ( 參見後列範例 )
– cd $src/cf/cf; cp generic-MyOS.mc MySite.mc
– vi MySite.mc
• 製作主要設定檔 ( 參見後列範例 )
– cd $src/cf/domain; cp generic.m4 MyDomain.m4
– vi MyDomain.m4
• 產生設定控制檔– cd $src/cf/cf; m4 ../m4/cf.m4 MySite.mc > MySite.cf
– cp MySite.cf /etc/mail/sendmail.cf
MySite.mc 控制設定檔範例
• $src/cf/cf/cc.Nctu.edu.tw.mc 設定檔
divert(0)dnl
VERSIONID(`$Id: nctucc-solaris2.mc,v 8.11 1999/02/07 07:26:03 gshapiro Exp $')
OSTYPE(solaris2)dnl
DOMAIN(cc.NCTU.edu.tw)dnl
MAILER(local)dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
MyDomain.m4 (1)
divert(0)
VERSIONID(`$Id: cc.NCTU.edu.tw.m4,v 8.15 1999/04/04 00:51:09 ca Exp $')
define(`confMAILER_NAME',`NCTUCC6-Mailer-Daemon')dnl
define(`confDOMAIN_NAME',`cc.Nctu.edu.tw')dnl
define(`SMART_HOST', `M-Fwd.NCTU.edu.tw:M-relay.NCTU.edu.tw')dnl
define(`confMAX_MESSAGE_SIZE',`10000000')dnl
define(`confFORWARD_PATH',`/home2/mailforward/$u')dnl
define(`confMAX_MIME_HEADER_LENGTH', `256/128')dnl
define(`confMAX_HEADERS_LENGTH', `32768')dnl
define(`confPRIVACY_FLAGS',`noexpn novrfy')dnl
define(`confMAX_HOP',`17')dnl
MyDomain.m4 (2)• 續上頁define(`confMCI_CACHE_SIZE',`3')dnl
undefine(`confTO_IDENT')dnl
define(`confTO_QUEUERETURN',`2d')dnl
undefine(`confTO_QUEUEWARN')dnl
define(`confMAX_DAEMON_CHILDREN',`20')dnl
define(`confCONNECTION_RATE_THROTTLE',`2')dnl
define(`confDEF_CHAR_SET',`iso-8859-1')dnl
define(`confMAX_RCPTS_PER_MESSAGE',`20')dnl
define(`confPROCMAIL_MAILER_MAX',`10000000')dnl
MyDomain.m4 (3)
• 續上頁FEATURE(redirect)dnlFEATURE(`local_procmail',`/usr/bin/procmail')dnlFEATURE(use_cw_file)dnlFEATURE(`mailertable', `hash /etc/mail/mailertable')dnlFEATURE(accept_unqualified_senders)dnlFEATURE(access_db, hash /etc/mail/access)dnlFEATURE(`blacklist_recipients')dnlFEATURE(masquerade_envelope)dnlFEATURE(dnsbl)dnlMASQUERADE_AS(cc.NCTU.edu.tw)dnlEXPOSED_USER(`root')dnl
Sendmail 8.10.x 的設定• /etc/mail 子目錄
– /etc/sendmail.cf 的設定 (text file)
• 關於 anti-relaying 的設定– /etc/mail/relay-domains (text file)– /etc/mail/access (database)
/etc/mail/access 的設定• Sendmail Anti-SPAM 設定
(ccserv6.cc.nctu.edu.tw 上的設定範例 )cc.nctu.edu.tw relay# UCE/UBEms.new.net.tw REJECTts30.hinet.net DISCARDdialup.seed.net.tw [email protected] DISCARD
• 使用指令 makemap hash access < /etc/mail/access
3.2 POP3 server 的安裝• 取得 qpopper 3.0-betaX 的程式• 解壓縮 , 再展開還原
– gzip -d qpopper3*tar.gz– tar xvf qpopper3*.tar
• 編譯及安裝 ( 或直接取得執行檔 )– cd $src– ./configure– make– make install
POP3 server 的安裝 ( 續 )
• 自訂的 mkconfig script#! /bin/sh# remober to remove the "-O2" flag on the script 'configure'# Or, the AFS library will malfunction./configure --enable-debugging --enable-servermode --enable-specialauth
• 安裝完成後 , 必須修改的系統設定– 編輯 /etc/services
pop3 110/tcp # Post Office
– 編輯 /etc/inetd.confpop3 stream tcp nowait root /usr/local/lib/qpopper qpopper -s
3.3 IMAP 與 POP3 簡單比較• POP3
– 僅支援離線 (off-line) 閱讀• 所有 e-mail 完全下載
– 較為普及 ( 因發展較早 , 系統叫簡單 )– 系統安全性較差 ( 取信密碼是明碼 )
• IMAP– 可涵蓋 POP3 所有離線功能– 系統普及度較差 ( 因發展較晚 , 系統較複雜 )– 系統安全性較佳 ( 支援多種密碼 )
• DES, MD5, Kerborose
IMAP 與 POP3 簡單比較( 續 )
• IMAP ( 續 )
– 可支援在線 (on-line) 閱讀• 標題與本文 , 兩段式閱讀• 網路信件夾的觀念 (在不同系統間搬動 )
– 可同時支援多個不同的 server 帳號• 支援網路漫遊 (roaming) 取信服務
• Web-mail 基本上 , 主要以 IMAP 類似的系統為主
4. E-mail 系統測試與偵錯
• 系統記錄檔– 參考 /etc/syslog.conf 的設定
• SMTP server 的測試– 以 sendmail 8.10.1 為例
• POP3 server 的測試– 以 安裝 qpopper 3.0bXX 為例
SMTP server 的簡易測試% telnet ns1.nctu.edu.tw 25
Trying...
Connected to ns1.nctu.edu.tw.
Escape character is '^]'.
220 ns1.nctu.edu.tw ESMTP Sendmail 8.10.0/8.10.0; Sun, 4 Jun 2000 10:38:33 +0800 (CST)
Quit
221 Nctu.EDU.TW closing connection
Connection closed by foreign host.
SMTP server 的簡易測試 (2)
• SMTP server 並沒有跑起來% ping ccserv.cc.nctu.edu.tw
ccserv.cc.nctu.edu.tw is alive
% telnet ccserv.cc.nctu.edu.tw smtp
Trying 140.113.4.1...
telnet: Unable to connect to remote host: Connection refused
%
Pop3 server 的簡易測試% telnet ns1.nctu.edu.tw 110
Trying...
Connected to ns1.nctu.edu.tw.
Escape character is '^]'.
+OK POP3 ns1 v7.59 server ready
quit
+OK Sayonara
Connection closed by foreign host.
Pop3 server 的簡易測試 (2)
• POP3 server 沒有跑起來% ping ccserv.cc.nctu.edu.tw
ccserv.cc.nctu.edu.tw is alive
% telnet ccserv.cc.nctu.edu.tw pop3
Trying 140.113.4.1...
telnet: Unable to connect to remote host: Connection refused
%
Sendmail 的系統記錄檔Jul 20 19:30:24 ccserv6 sendmail[1591]: tcpwrappers (unknown, 210.209.58.9) rejection
Jul 20 19:30:24 ccserv6 sendmail[1591]: NOQUEUE: Null connection from [210.209.58.9]
Jul 20 19:30:31 ccserv6 sendmail[1624]: TAA01624: from=<[email protected]>,
size=6553, class=0, pri=36553, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, [email protected] [140.112.13.211]
Jul 20 19:30:35 ccserv6 sendmail[1628]: TAA01628: from=<[email protected]>, size=1272, class=0, pri=31272, nrcpts=1, msgid=<002f01bed2a2$3c59b700$0a41808c@PC_010.hsm.cmc.edu.tw>, bodytype=8BITMIME, proto=ESMTP, [email protected] [140.113.218.5]
Jul 20 19:30:36 ccserv6 sendmail[1629]: TAA01628: to=<[email protected]>, delay=00:00:01, xdelay=00:00:01, mailer=local, stat=Sent
Jul 20 19:30:37 ccserv6 sendmail[1625]: TAA01624: to=<[email protected]>,
delay=00:00:06, xdelay=00:00:05, mailer=local, stat=Sent
#
POP3 server 系統記錄檔Jul 20 19:31:29 ccserv4 popper[6306]: Stats: inet 0 0 0 0
Jul 20 19:31:50 ccserv4 popper[6307]: Stats: u8612540 22 565900 0 0
Jul 20 19:31:51 ccserv4 popper[6308]: Stats: u8414801 0 0 3 9043
Jul 20 19:32:26 ccserv4 popper[6313]: Stats: wangcc 4 76748 0 0
Jul 20 19:32:35 ccserv4 popper[6314]: [email protected]: -ERR POP EOF received
Jul 20 19:32:35 ccserv4 popper[6314]: Stats: u8414801 0 0 3 9043
Jul 20 19:32:36 ccserv4 popper[6315]: (v2.53) Unable to get canonical name of client, err = 0
Jul 20 19:32:47 ccserv4 popper[6317]: Stats: u8724508 0 0 0 0
5. Anti-SPAM & Anti-virus Mail
• SPAM Mail 防治• Mail Server 端 , 進行掃毒
– Cf. 用戶端掃毒 ( 安裝 anti-virus 軟體 )
• Mail Server 進行 SPAM-mail 防治– Cf. 用戶端 , anti-spam mail ( 使用過濾程式 )
5.1 Anti SPAM Mail & DNS ACL
• SMTP server upgrade/patch– 限定 mail relaying 對象
• DNS 設 ACL – 可相當程度阻擋不特定的 relay 嘗試
• 系統管理人員介入 – 聯絡相關系統的管理人員– rbl 建立 (Real-time Block List )
5.2 Mail Server 端掃毒
• Sendmail 與電腦病毒防治– 配合 procmail , 掃描信件的 header
• 可局部對付 iloveyou 之類的 script 型態的 worm/virus
• procmail 是 delivery agent, 可適度進行 filtering
• 使用 queuing mode, 搭配掃毒軟體 , 進行病毒掃描偵測任務
•用戶 PC
•Mail Server
sendmail procmail
Mailspool
Internet Internet
POP3/IMAPserver
Netscape/MS-IE
用戶 Mail存放區
掃毒軟體
Fig.3 Anti-SPAM & Anti-virus Mail 流程示意 ( 一 )
•用戶 PC
•Mail Server
sendmail
掃毒軟體
Mailspool
Internet Internet
POP3/IMAPserver
Netscape/MS-IE
用戶 Mail存放區
掃毒軟體
Mail暫存區
Fig.4 Anti-SPAM & Anti-virus Mail 流程示意 (二 )
6. 問題處理與追蹤• Security 問題回報及反應
– 向相關單位報備及追蹤問題– 向相關 CERT 報備及追蹤問題
• 各單位聯絡 e-mail address (Internet 慣例 )– postmaster@your-domain-zone
– abuse@your-organization,security@your-organization• 例如 , [email protected], [email protected]
• 案例剖析 (Case Study)
6.1 Case Study
• 前幾年有 BBS/Mail, 戲稱要暗殺美國總統柯林頓– 未即時處理 , 引起軒然大波 .– 後來美國轉到外交單位轉回國內教育部處理
• [email protected] 轉到 德國某公司 – 本地公司設定錯誤– 回報到該公司 , 該國的 CERT, 以及 TWNIC
• 網路攻擊的中途站 (1999.08)– TANet 竹苗區網某校的 DNS server 被入侵– 參考 http://dnsrd.nctu.edu.tw
6.2.1 DNS & Mail - 烏龍事件• 前幾年 , 有德國 X公司反應 , 持續不斷接收到 , 許多應該是寄往台灣 Y公司的 e-mail, 卻一直被轉往該公司 . 因為收信的帳號不存在 , 系統於是一直產生 , user 不在的退信 , 持續往系統管理信箱塞 , 信件越累積越多 , 導致 server performance 大受影響 . 由於該公司並無台灣分公司 , 也找不出合理的解釋 , 於是開始擔心有台灣的競爭對手 , 想癱瘓他們網路的正常運作 , 接下來只好採取正式的防衛行動 , 透過正式的 CERT 向相關單位反應 , ...
• 成因– 舊版 BIND/named 有 bug– 系統管理人員觀念不夠清楚– 系統管理人員輸入資料時 , IP address 打錯
6.2.1 DNS & Mail - 烏龍事件( 續 )
• 示意範例 – 底下 IP address 與 domain name 都是隨意假定– 這個 server 上的 BIND/named 有 bug
$origin xyz.com.tw.Xyz.com.tw. IN MX 10 mail.xyz.com.tw.Xyz.com.tw. IN MX 10 mail.ABC.net.tw. ; 錯誤
Mail.xyz.com.tw.In A 192.168.123.45mail.ABC.net.tw.IN A 139.75.6.78 ; 設定錯誤;mail.ABC.net.tw. IN A 139.175.6.78 ;台灣;mserver.ZYX.de IN A 139.75.6.78 ;德國
6.2.2 竹苗區網 DNS server 入侵事件• 某校在區網的網域 , 登錄有兩個 DNS server
– 不過 , 從一開始 , 就只有建立一個 server• 該 server-A 有 security hole, 被外來者闖入
– 入侵者 , 持續透過該 server-A, 嘗試入侵國外網站– 網域上層 , 持續收到國外不同地方轉來的抱怨與求助 e-mail
• 電話通知該校管理者處理 . – 後來轉維護廠家工程師 .– 將近一週 , 仍無改善 .– 區網接手 , 協助處理 .
• 設 tcp_wrapper, 擋掉不明來源的連線 .
6.3 相關系統管理
• 結論– 各單位 , 最好設立兩段式 Mail 組合系統 – 重要 server 勤作 security patch– DNS 設 ACL, 限制 zone transfer– 委外廠商維護能力 , 意願與合約