580 likes | 804 Views
臺灣學術網路竹苗區域網路中心 89年網際網路教育訓練及 推廣研習課程 電子郵件系統 ( E-mail) 的 規劃與建置. 交 通 大 學 計 算 機 與網路中 心 陳 昌 盛. 課程概要. E-mail 系統管理 入門簡介 E-mail Server 規劃與建置 sendmail, pop3/imap E-mail 系統測試與 偵錯 Anti-SPAM & Anti-virus mail 問題處理與追蹤 . HCRC’2000 網路系統訓練課程 – Unix Mail Server 的規劃與建置.
E N D
臺灣學術網路竹苗區域網路中心 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
圖 1. 電子郵件接收系統運作圖 網際網路 SMTP-server SMTP server (1) (1b) (1c) 硬碟 POP3/IMAP server (2) • MSIE , Netscape 瀏覽程式
圖 2 外送電子郵件系統運作示意圖 Internet 網際網路 SMTP server (2) • 電子郵件傳送 server SMTP-server (1) • MSIE, Netscape 等 瀏覽程式
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 • postmaster@your-organization e.g. postmaster@nctu.edu.tw, abuse@nctu.edu.tw, hostmaster@nctu.edu.tw webadmin@nctu.edu.tw
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) • 加強系統安全管理
Mail 的接收- 直接傳送模式 Internet incoming • Local SMTP Server Fig.3 Direct Internet mail delivery
Mail 的接收- 間接傳送模式 Internet 區網中心 • Mail Relay Fig.4 Indirect Internet Mail Delivery • Local SMTP Server
Mail 的接收- 混成傳送模式 Internet 區網中心 • Mail Relay Fig.5 Hybrid Internet Mail Delivery
Mail 的接收- 轉送模式 Campus Mail Forwarding server Acer.cis89@nctu.edu.tw Internet Honda.cm90@nctu.edu.tw Fig.6 Mail aliasing/forwarding Grade-90 Mail Server Grade-89 Mail Server
Mail 的寄送- 直接傳送模式 Internet outgoing • Local SMTP Server Fig.7 Direct Internet mail delivery
Mail 的寄送- 間接傳送模式 Internet 區網中心 • Mail Relay Fig.8 Indirect Internet Mail Delivery • 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: cschen@cc.nctu.edu.tw 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/mailertable cc.nctu.edu.tw smtp:ccms.nctu.edu.tw csie.nctu.edu.tw smtp:smtp.csie.nctu.edu.tw cis.nctu.edu.tw smtp: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/forwaring Honda.cis89@nctu.edu.tw cisco.cm90@nctu.edu.tw • 用戶端 ($home/.forward) • 特殊退信 • 故意不接收退信
2.6 特殊處理(續) • 故意不接受回信的實例 • morris@admail.acer.net • 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)dnl FEATURE(`local_procmail',`/usr/bin/procmail')dnl FEATURE(use_cw_file)dnl FEATURE(`mailertable', `hash /etc/mail/mailertable')dnl FEATURE(accept_unqualified_senders)dnl FEATURE(access_db, hash /etc/mail/access)dnl FEATURE(`blacklist_recipients')dnl FEATURE(masquerade_envelope)dnl FEATURE(dnsbl)dnl MASQUERADE_AS(cc.NCTU.edu.tw)dnl EXPOSED_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/UBE ms.new.net.tw REJECT ts30.hinet.net DISCARD dialup.seed.net.tw DISCARD cqsam@saturn.seed.net.tw 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.conf pop3 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=<zacker@ms25.hinet.net>, size=6553, class=0, pri=36553, nrcpts=1, msgid=<000001bed2a2$3aff0900$150c708c@308-3.ce.ntu.edu.tw>, proto=ESMTP, relay=root@dns2.ce.ntu.edu.tw [140.112.13.211] Jul 20 19:30:35 ccserv6 sendmail[1628]: TAA01628: from=<pcyu@alab.ee.nctu.edu.tw>, size=1272, class=0, pri=31272, nrcpts=1, msgid=<002f01bed2a2$3c59b700$0a41808c@PC_010.hsm.cmc.edu.tw>, bodytype=8BITMIME, proto=ESMTP, relay=pcyu@alab05.ee.nctu.edu.tw [140.113.218.5] Jul 20 19:30:36 ccserv6 sendmail[1629]: TAA01628: to=<pearl@cc.nctu.edu.tw>, delay=00:00:01, xdelay=00:00:01, mailer=local, stat=Sent Jul 20 19:30:37 ccserv6 sendmail[1625]: TAA01624: to=<u8533086@cc.Nctu.EDU.TW>, 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]: u8414801@a-121.RAS.NCTU.edu.tw: -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.1Anti 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, 搭配掃毒軟體, 進行病毒掃描偵測任務