640 likes | 1.11k Views
Mail Server. Outline. 基本概念 Mail Server 原理 Mail 相關通訊協定 Postfix 簡介 Postfix 的安裝、設定及測試 用戶端如何收信 OpenWebMail 簡介與安裝設定. 收發信件的基本概念. 電子郵件與傳統郵件一樣,如同地址般,需要有一個發信端與收信端 發信流程:信→郵局與郵局間的傳遞→收件人 郵務士的功能由轉送郵件的程式所取代. Mail Server 原理. E-mail 系統的服務程式.
E N D
Outline 基本概念 Mail Server原理 Mail 相關通訊協定 Postfix簡介 Postfix的安裝、設定及測試 用戶端如何收信 OpenWebMail簡介與安裝設定
收發信件的基本概念 電子郵件與傳統郵件一樣,如同地址般,需要有一個發信端與收信端 發信流程:信→郵局與郵局間的傳遞→收件人 郵務士的功能由轉送郵件的程式所取代
E-mail 系統的服務程式 E-mail 系統包括 MUA (Mail User Agent) 與 MTA (Mail Transport Agent) 兩個部份。 MUA 指使用者可用來讀寫信件的程式。Ex: Outlook。 MTA 指系統中負責處理信件收發工作的程式。Ex: sendmail 與 postfix。
MUA(Mail User Agent ) 使用者所使用的閱讀、撰寫、回覆信件的程式。 Linux 的 pine、elm、mutt、kmail 等,及 Windows 中的 outlook等,都是用戶端用來讀寫收發信件的程式。 用戶端是透過 MUA 軟體來跟郵件主機搭上線,但MUA並不負責實際傳遞信件的工作,而是交由MTA處理。 6
MTA ( Mail Transport Agent) 用戶端使用 MUA 將信件寄出時,這封信是透過一台安裝有 MTA 軟體的主機代為處理。Linux 的 postfix 、qmail 及 Windows 的 Exchange 等,都是屬於 MTA(一台 Mail Server)。 當 MTA 收到 MUA 所寄來的 mail 時,會先判斷這封信是否為本地端的 mail,若否,則繼續將此 mail 傳送給另一部這個信件的 MTA 來處理 ; 而當 MTA 將信件轉寄給另一台 MTA 的行為,就叫做 Relay 。
MDA (Mail Deliver Agent) 即郵件投遞代理程式之意。 MTA 收到 MUA 所寄來的信件時,如判斷這封信是屬於本地端的信件,會交給 Local MDA 處理,然後 Local MDA 就把它放置在使用者個人信箱之中 ; 那如果此 mail 是屬於外部的信件,則會透過 smtp MDA 來將 mail 轉寄給另一台 MTA 處理。
SMTP ( Simple Mail Transport Protocol ) 這是在寄信時所使用的協定,像MUA 將信件傳送給MTA,或者MTA 再把信件轉寄給另一台MTA 時,就是使用SMTP 協定。 SMTP 協定所要使用的port 為25,當MTA 發覺此mail 非本地端信件時,即會把信件Relay 給另一台MTA 的25 port,當然這過程是使用SMTP 協定。 11
POP ( Post Office Protocol ) 這是收信時所使用的協定,也就是MUA 把信件從MTA 中取回時所使用的協定。 POP 有所謂的POP2 及POP3,數字代表的是POP 協定的版本,目前以POP3 為主。 POP3 協定是使用110 port,因此當使用者要收信時,MUA 是連接POP Server 的110 port 來將信件收下。
IMAP ( Internet Mail Application Protocol ) 使用POP3與IMAP 不同點是,POP3通常會把郵件下載回自己主機內,這樣就會把伺服器上的Mail Box 清空,因此使用者可以離線閱讀信件。 IMAP 則是把信件都保留在伺服器上,好處是可以利用不同的電腦來存取伺服器上所有新舊的信件 ﹔在做資料夾分類時,所建立的新資料夾是存在於伺服器上,而非個人電腦中。
郵件系統與協定之間的關係 14 14
E-mail寄信/收信過程 寄信人將E-mail寫好上網寄出後,透過SMTP(Simple Mail Transfer Protocol,簡易郵件傳送協定),將E-Mail送到寄信人的郵件主機(Mail Server)。 寄信人的郵件主機(Mail Server)再透過SMTP穿過Internet,將信寄送至收信人的郵件主機(Mail Server)的收信人帳號信箱上。 收信人上網連上郵件主機後,透過POP3(Post Office Protocol Version 3,郵局協定第3版),從郵件主機下載郵件到電腦的E-mail軟體裏或閱讀個人的郵件。
傳送 E-mail 的方式 利用網路來傳送 E-mail 可分為 2 種。 在單一網路中收發 E-mail,例如公司內部。 將 E-mail 傳送到另一台郵件主機,發信與收信分別在不同的郵件主機中進行。
在內部網路中傳送 E-mail 當同一郵件主機中的使用者 cassia 要寄信給 ken 時,郵件伺服程式並不會將信件傳出郵件主機。用這種方式時,郵件主機並不需要有一個已登記的伺服器名稱,因此 cassia 寄給 ken 可以隨意使用下列幾種 E-mail 位址:
E-mail 位址的格式 每個 E-mail 位址的格式,皆是由郵件帳號、主機名稱 (host name) 與網域名稱 (domain name) 組合而成。
傳送 E-mail 到其他郵件主機 當 E-mail 要傳送到另一台郵件主機時,一定要指定收信者的完整 E-mail 位址。 例如 cassia 要寄一封信給lucy@ms1.whatever.net,則郵件伺服程式發現此信是要寄到 ms1.whatever.net 網域,就會詢問名稱伺服器 (name server) 關於此網域的資訊,然後透過 SMTP 協定將信件傳送到遠端的郵件主機:
傳送 E-mail 到其他郵件主機 架設郵件主機時,不可隨便取一個名稱 ,因為上游沒有記錄此郵件主機的位址,則當別人要寄信過來的時候,會因為找不到這台郵件主機而無法順利寄出。
檢查名稱伺服器是否設定正確 想要讓自行架設的郵件主機能正常運作,除了要有正式的網址之外,還必須在名稱伺服器中登記此主機是郵件伺服器,如此其他的郵件主機才能寄信給我們自行架設的郵件伺服器,否則信件可是會被退回的! 因此,必須在名稱伺服器中登記主機為郵件伺服器。
檢查名稱伺服器是否設定正確 查詢郵件伺服器是否有登記
sendmail與postfix CentOS 預設會提供sendmail (http://www.sendmail.org) 以及近期很熱門的 Postfix (http://www.postfix.org)。 sendmail 曾是最為廣泛使用的 mail server 軟體,由於 設定檔太過於難懂,程式漏洞問題導致的主機安全性缺失等問題,新版的 CentOS 已經將預設的 mail server 調整為 postfix 。
Sendmail 的特色: 允許各種不同的emial位址路徑 支援虛擬的domains及users 允許偽裝的使用者及機器 提供自動重試失敗傳送郵件的重傳及其它一些情況
Postfix簡介 由Wietse Zweitze venema 博士於1998年在IBM所開發 。 Postfix的優點: 速度更快 相容性佳 能調節系統 更靈活 安全性 28 28
Postfix相關套件 Postfix : SMTP Server 的主要套件。 dovecot : POP3 Server 的主要套件。
設定檔路徑(一) # rpm -ql postfix /etc/postfix/main.cf Postfix 的主要設定檔。 /etc/postfix/transport 擔任 Mail GW 的主機,可以藉由設定這個檔案,來將信件轉給指定的 MTA。 /etc/init.d/postfix 管理 Postfix 服務的 script。 /sbin/rcpostfix 連結至 /etc/init.d/postfix 的符號連結檔。 /usr/lib/postfix/master 提供 Postfix 服務的 daemon。 /usr/bin/mailq 查詢郵件佇列 (mail queue) 的指令。 /usr/bin/newaliases 建立或更新郵件別名資料庫。
設定檔路徑(二) /usr/sbin/postalias維護 Postfix 別名資料庫。 /usr/sbin/postconf Postfix 的設定工具。可以用來列出 Postfix 的預設參數及實際參數值,也可以直接在命令列上 修改設定參數,並將設定結果寫入 main.cf 中。 /usr/sbin/postfix控管 Postfix 的程式。 /usr/sbin/postmap用來將指定的檔案內容轉換成資料庫格式,並將轉換後的結果寫入資料庫檔案裡。 /usr/sbin/postsuper管理佇列郵件的工具。 /var/spool/postfix處理佇留信件的相關目錄,其所存放的位置,如 hold、incoming、active 及 deferred 等目錄。
Postfix相關指令 # postfix check <=檢查 postfix 相關的檔案、權限等是否正確。 # postfix start <=執行postfix # postfix stop <=關閉 postfix # postfix flush <=強制將正在郵件佇列的郵件寄出 # postfix reload <=重新讀入設定檔/etc/postfix/main.cf #postconf <= 列出目前的設定參數值。 #postconf -d <= 列出預設的設定參數值。 #postconf -e 'alias_maps = hash:/etc/postfix/aliases' 在命令列上編輯設定參數後,直接寫入 main.cf 中。 # chkconfig postfix 35 <=設定開機時啟動 Postfix 服務
設定Postfix # vi /etc/postfix/main.cf (75行)myhostname = mail.ccnet.com 指定 Mail Server 在 Internet 上的主機名稱 (83行) mydomain = ccnet.com myhostname 設定為 mail,那 mydomain 就是 ccnet.com。 (99行-註解拿掉) myorigin = $myhostname (113行,116行加註解 ) inet_interfaces = all 指定郵件主機上,允許接收信件的網路介面位址。all 就表示是所有網路介面都可以接收使用者所寄來的信件,這也是預設值。
設定Postfix Server (二) mynetworks_style = subnet指定 SMTP 所信任的來源端類型,有以下三種:#mynetworks_style = class #mynetworks_style = host mynetworks_style = subnet --- 只要與 MTA 位於同一個子網段的主機,其所寄過來的信件都允許 Relay。 message_size_limit = 10240000 # 設定每封信件大小,不得超過 10 MB。 接著測試再重新啟動: #postfix check # postfix reload 或 #/etc/init.d/postfix restart
設定Postfix Server (三) 啟動之後的檢查 # netstat -anp | grep :25tcp000.0.0.0:250.0.0.0:*LISTEN 11348/master ↑ 這裡如果顯示 127.0.0.1 的話,那表示不能對外提供 smtp 的服務,請特別注意。 #ps –aux |grep master
Client端測試 WindowsC:\>telnet 192.168.1.123 25220 ccnet.com ESMTP Postfix <=ok Linux$telnet 192.168.1.123 25 quit <= 離開
設定可收信的 POP3 Server 確定是否已安裝dovecot#rpm –q qpopper 安裝dovecot #yum install dovecot 修改設定 # vim /etc/dovecot/dovecot.conf(新增在21行)protocols = imap pop3 # vim /etc/dovecot/conf.d/10-ssl.conf ssl = no <=將第 6 行改成no #/etc/init.d/dovecot start #chkconfig dovecot on #netstat -tlnp | grep dovecot <=檢查 port 110/143
Linux用戶端如何寄信 在文字介面上打mail即可收信 #mail user1 <=寄信給user1 Subject: Say Hello <=輸入信件標題This is a test mail for Jack <=從這裡是信的內容 .<= 輸入一點 . 結束Cc:<= 若需要再輸入副本收件人的e-mail
Linux用戶端如何收信 $ mail Heirloom Mail version 12.4 7/29/08. Type ? for help. "/var/spool/mail/wei": 1 message 1 new >N 1 root Sun May 27 22:43 18/530 "test 1" & <= mail 軟體的提示字元,可以輸入 ? 來察看可用指令 讀信:直接按 Enter 或輸入數字後 enter 顯示標題: h 或輸入 h 數字 回覆郵件: 輸入 R 刪除郵件: 輸入 d 或輸入 d10-50 刪除第 10-50 封郵件 儲存郵件到檔案: 輸入 s 數字 檔名 離開 mail:輸入 q 或 x ) 請求協助:輸入 help
Linux mutt #yum install mutt # mutt [-a 附加檔] [-i 內文檔] [-b 秘密副本] [-c 一般副本] [-s 信件標題] email位址 要讓 mail 群組能夠使用 wei 的家目錄$ chmod a+x ~
非固定 IP位址 郵件伺服器 假設你是hinet 用戶,而 hinet 提供的郵件主機為 ms1.hinet.net 可以這樣設定: # vim /etc/postfix/main.cf 加入這行 relayhost = [ms1.hinet.net] /etc/init.d/postfix restart
webmail webmail 可當成是一種 MUA (郵件使用者代理人 )來看待,也就是說可以將他想成與 outlook express 同等級的應用軟體。而我們可以透過 webmail 對 mail server進行電子郵件的存取。
安裝之前 需要www server(Apache)的環境。 DNS server也是必須的。 安裝其他必要的軟體套件,如Text-lconv、postfix or sendmail。 特別注意檔案擺放的路徑位置。
安裝前置套件 首先啟動 smtp server: # service postfix restart //重新啟動postfix # chkconfig postfix on //設定成開機時自動啟動 檢查 smtp server是否啟動(smtp port 25) # telnet localhost 25 # vi /etc/postfix/main.cf soft_bounce = no -> yes inet_interfaces = all
安裝前置套件 下載 Text-Iconv http://openwebmail.org/openwebmail/download/packages/ 下載 Text-Iconv-1.2.tar.gz套件 接著下載 Openwebmail http://openwebmail.org/openwebmail/download/current/ 下載 webmail-current.tar.gz (此為2.53版)
安裝前置套件 你也可以使用 wget 指令而不透過瀏覽器下載 #wget http://openwebmail.org/openwebmail/download/release/openwebmail-2.53.tar.gz 及 # wget http://openwebmail.org/openwebmail/download/packages/Text-Iconv-1.2.tar.gz
安裝前置套件 解壓縮Text-Iconv # tar xvf Text-Iconv-1.2.tar.gz 這邊請大家注意檔案的路徑,否則很容易搞混,建議都放在 root 底下。
安裝前置套件 進到 Text-Iconv-1.2 的目錄下# perl Makefile.PL(注意大小寫) 依序執行以下三個指令進行安裝 # make # make test # make install
安裝 Openwebmail 安裝 Openwebmail # tar xvfz openwebmail-2.53.tar.gz 將 Openwebmail 配合 apache 的位置擺放 # mv ./data/openwebmail /var/www/htdocs# mv ./cgi-bin/openwebmail /var/www/cgi-bin