ebMail 就是使用者透過浏覽器連到web服務器, 而由 web server 上的程序負責作收信/送信的動作. 使用者直接透過 browser 作讀信/寫信等操作, 信件其實並不存在使用者的計算機上. 因此無論使用者用的是哪一部計算機, 只要可以連上網絡, 都可以使用讀到之前與新收到的信件。 另外一個好處是 WebMail 不容易因為讀取含有病毒的檔案而導致中毒, 更不會發生個人郵件系統中毒後, 寄送大量病毒信件給其它親朋好友的這種慘劇。
一、 軟件概述與下載:
Email能夠成為當今Internet上應用最廣泛的網絡服務,WebMail可謂功不可沒。 在Linux下系統中MTA服務的軟件有許多,常用Sendmail、Qmail、Postfix等軟件,本文使用RHEL 4.0 + Postfix + dovecot + Apache + OpenWebMail制作一個集POP和WebMail等功能的電子郵件系統。下面講述如何把Linux機器配置成一個基於Web的電子郵件系統。這個電子郵件系統可以用於一個小團體或者組織之中。當然如果你家裡有一個互聯網連接(比如ADSL),那麼它也可以用安全的方式遠程檢測你的電子郵件。
Postfix是一個非常優秀的MTA,她素以高效、安全的特點而著稱。Postfix是作者在UNIX上所見過的MTA中在反垃圾郵件(Anti-Spam或Anti-UCE)方面做得最好的一個,甚至有很多公司在Postfix代碼的基礎上進行二次開發而推出反垃圾郵件網關產品。MTA的反垃圾郵件功能,實際上就是在MTA處理過程中對會話進行過濾。這個過濾不但過濾了發往自身的垃圾郵件,而且還防止了自身被惡意利用發送垃圾郵件。Postfix實現了目前所有主要的MTA過濾技術。postfix是Wietse Venema在IBM的GPL協議之下開發的MTA(郵件傳輸代理)軟件。和Sendmail相比Postfix更快、更容易管理、更靈活、更安全,同時還與sendmail保持足夠的兼容性。Sendmail相比Postfix對比見表1。
表1 Sendmail與Postfix的對比
Open Webmail 優點:
良好的使用接口 、 多國語言 (目前共支持超過 30 種語言) 、 多組圖示,多組布景,可以依個人喜好自訂背景、 在線更改密碼 (必需記得原來的密碼)、 與 Outlook 接近的多媒體信件顯示能力 、 多種字集內碼自動轉換、 支援 Html 信件編寫 、拼字檢查 (英文字典字數可能不足)、 支持草稿暫存 、 可動態切換寫信字集內碼、 POP3 外部郵件 、 郵件規則 (可建立過濾規則 ) 、 信件“搬移/復制/刪除/下載”功能、 信箱“ 建立/重整/更名/刪除/下載”功能 、 通訊簿 、 全文檢索 、自動清除垃圾桶 N 天以上郵件。openwebmail缺點:由於openwebmail使用perl腳本語言編寫的,執行速度可能不如PHP。OpenWebmail主頁提供許多格式的軟件,請根據Linux發行版本選擇合適的軟件包。
本文使用rpm格式。
本文設定一台Linux服務器配域名:cao.net,i
p地址:192.168.1. 253,
郵件主機:mail.cao.net。
所有需要安裝的軟件:cyrus-sasl、dovecot、httpd 、perl-Text-Iconv、perl-suidperl、perl-Compress-Zlib、perl-CGI-SpeedyCGI 。其中Postfix、sendmail +cyrus-sasl+dovecot+httpd+perl在安裝系統時一起安裝。
其他軟件需要進行下載: #wget http://openwebmail.com/openwebmail/download/redhat/rpm/release/openwebmail-2.51-1.i386.rpm #wget http://distro.ibiblio.org/pub/linux/distributions/startcom/ML-4.0.4/updates/i386/perl-suidperl-5.8.5-12.1.1.i386.rpm #wget http://mirrors.ircam.fr/pub/dag/packages/perl-Text-Iconv/perl-Text-Iconv-1.4-1.2.el4.rf.i386.rpm #wget http://FTP.belnet.be/packages/dries.ulyssis.org/redhat/el4/en/i386/RPMS.dries/perl-CGI-SpeedyCGI-2.22-1.2.el4.rf.i386.rpm
二、 postfix的安裝與啟動過程:
(1)殺掉所有Sendmail進程 #killall sendmail (停止所有的Sendmaail進程) sendmail: no process killed # rpm -ivh postfix-2.2.5-3.rhel4.i386.rpm
(2)啟動dovecot服務過程:
# service postfix start Starting postfix: [ 確定 ] # service dovecot start 啟動 Dovecot Imap: [ 確定 ] 現在可以使用郵件服務器發送郵件了,但是還不能下載郵件,因為新版redhat Linux中 dovecot代替了imap軟件包,但是還沒有綁定POP3和POP協議,下面修改配置文件: /etc/dovecot.conf, #protocols = imap imap3 protocols = imap imap3 pop3 pop3s auth_passdb = 更改為: auth_passdb = shadow 然後重新啟動dovecot服務: # service dovecot restart 停止 Dovecot Imap: [ 確定 ] 啟動 Dovecot Imap: [ 確定 ]
(3)修改postfix郵件服務器配置文件: #myhostname = host.domain.tld 更改為: myhostname = mail.cao.net #mydomain = domain.tld 更改為: mydomain = cao.net #myorigin = $mydomain 更改為: Myorigin = cao.net #inet_interfaces = all 更改為: Inet_interfaces =all #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mail.$mydomain, www.$mydomain, ftp.$mydomain 更改為: mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mail.$mydomain, www.$mydomain, ftp.$mydomain #mynetworks = host 更改為: mynetworks = host
(4)端口測試: # telnet mail.cao.net 25 (測試25端口) Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 mail.cao.net ESMTP Postfix quit 221 Bye Connection closed by foreign host. # telnet mail.cao.net 110 (測試110端口) Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. +OK dovecot ready. quit +OK Logging out Connection closed by foreign host.
(5)安裝防范病毒軟件 F-Prot Antivirus軟件包安裝和配置過程:
Wegt http://files.f-prot.com/files/linux-x86/fp-linux-ws.rpm 安裝F-Prot Antivirus軟件包前,請先啟動SpamAssassin服務器: Matt Sergeant、Craig Hughes和Justin Mason於發布的SpamAssassin(SA)。目前最新版本是3.0.2,它是較為流行的反垃圾郵件軟件,據SpamAssassin供應商 Deersoft的統計,目前大約有3萬台Unix服務器上使用了SpamAssassin。SpamAssassin利用Perl語言來對郵件內容進行規則匹配,從而達到判斷過濾垃圾郵件的目的。它的判斷方式是基於評分的方式,也就是說如果這封郵件符合某條規則,則給與一定分值;當累計的分值超過了一定限度時,則判定該郵件為垃圾郵件。對Sendmail、Qmail、Postfix和Exim等各種郵件平台都適用。SpamAssassin的安裝過程比較簡單。 # service spamassassin start (啟動SpamAssassin服務器) Starting spamd: [ 確定 ] # rpm -ivh fp-linux-ws.rpm (安裝F-Prot Antivirus軟件包) 升級的F-Prot Antivirus病毒庫的操作: # cd /usr/local/f-prot/tools/ # ./check-updates.pl (升級命令) *************************************** * F-Prot Antivirus Updater * *************************************** Nothing to be done... MailScanner軟件包安裝和配置過程: Wegt http://www.sng.ecs.soton.ac.uk/mailscanner/downloads.shtml # mv MailScanner-4.50.5-1.rpm.tar.gz /tmp/source/ (移動文件到/tmp/source/目錄中) # cd /tmp/source/ (進入source目錄中) # tar -zxvf MailScanner-4.50.5-1.rpm.tar.gz (MailScanner解壓過程) # cd MailScanner-4.50.5-1 (進入MailScanner軟件解壓目錄) # ./install.sh (執行MailScanner軟件的安裝命令) 更改incoming、quarantine兩個目錄相關用戶和組的使用權限: # chown postfix.postfix /var/spool/MailScanner/incoming # chown postfix.postfix /var/spool/MailScanner/quarantine 修改/etc/MailScanner/目錄下的MailScanner.conf文件,修改詳細內容以下: 詳細內容: Run As User = Run As Group = 更改為: Run As User = postfix Run As Group = postfix Incoming Queue Dir = /var/spool/mqueue.in Outgoing Queue Dir = /var/spool/mqueue 更改為: Incoming Queue Dir = /var/spool/postfix/hold Outgoing Queue Dir = /var/spool/postfix/incoming MTA = sendmail 更改為: MTA = postfix Virus Scanners = none 更改為: Virus Scanners = f-prot Always Include SpamAssassin Report = no 更改為: Always Include SpamAssassin Report = yes Use SpamAssassin = no 更改為: Use SpamAssassin = yes Required SpamAssassin Score = 6 更改為: Required SpamAssassin Score = 4 SpamAssassin User State Dir = 更改為: SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin SpamAssassin Install Prefix = 更改為: SpamAssassin Install Prefix = /usr/bin SpamAssassin Local Rules Dir = 更改為: SpamAssassin Local Rules Dir = /etc/MailScanner 修改/etc/postfix/目錄下的header_checks文件,新增加以下一行內容到文件中,詳細內容如下: /^Received:/ HOLD 修改/etc/postfix/目錄下的main.conf文件,詳細內容如下: #header_checks = regeXP:/etc/postfix/header_checks 更改為: header_checks = regexp:/etc/postfix/header_checks 停止Postfix服務器,因為啟動MailScanner服務時會自動啟動Postfix服務器: 啟動MailScanner服務器和設置開機時自動啟動: # service MailScanner start Starting MailScanner daemons: incoming postfix: [ 確定 ] outgoing postfix: [ 確定 ] MailScanner: [ 確定 ] # chkconfig --level 33 MailScanner on
(6)病毒檢測測試: 從網站(http://www.eicar.org/anti_virus_test_file.htm)下載一個測試病毒文件:eicar.com。編寫一封測試郵件(附件中帶上的eicar.com文件)。系統檢測到郵件病毒,見圖1。 圖1 病毒檢測界面 查看maillog日志,請確認日志中是否存在以下相近的信息: 詳細內容: Jan 8 12:11:08 mail MailScanner[9199]: Virus Scanning: F-Prot found virus EICAR_Test_File Jan 8 12:11:08 mail MailScanner[9199]: Virus Scanning: F-Prot found 1 infections Jan 8 12:11:08 mail MailScanner[9199]: Infected message E73EE13C07C.07685 came from Jan 8 12:11:08 mail MailScanner[9199]: Virus Scanning: Found 1 viruses Jan 8 12:11:09 mail MailScanner[9199]: Requeue: A9D6413C085.39DDE to 6414713C089 Jan 8 12:11:09 mail MailScanner[9199]: Uninfected: Delivered 1 messages 如出現以上的日志信息就代表您的F-Prot Antivirus + MailScanner-4.31.6-1架設已經成功啦, (7)如果希望郵件服務器每次啟動都能自動運行,可以用服務設置功能。以root權限運行命令:#redhat-config-services 圖2 郵件服務器自動啟動
打開如圖2所示的窗口,在dovecot服務選項加上勾,然後重新啟動系統,這樣系統會啟動郵件服務。
三、 安裝配置Web郵件服務器
(1)軟件安裝
#rpm -ivh perl-5.8.5-12.1.i386.rpm # rpm -ivh perl-CGI-SpeedyCGI-2.22-1.2.el4.rf.i386.rpm # rpm -ivh perl-Compress-Zlib-1.34-1.2.el4.rf.i386.rpm # rpm -ivh perl-suidperl-5.8.5-12.1.1.i386.rpm # rpm -ivh perl-Text-Iconv-1.4-1.2.el4.rf.i386.rpm # rpm -ivh openwebmail-2.51-1.i386.rpm
(2) 初始化配置文件
運行命令: # /var/www/cgi-bin/openwebmail/openwebmail-tool.pl ――init 根據屏幕提示修改配置文件,見圖3。
圖3 屏幕提示要修改配置文件
(3)修改配置文件
#cd /var/www/cgi-bin/openwebmail/etc/
使用編輯器手工建立 dbm.conf文件,主要包括以下內容: dbm_ext .db dbmopen_ext .dbm dbmopen_haslock no (4)重新初始化配置文件
# /openwebmail-tool.pl –init
系統詢問是否發送站點包括選擇不發送(按“n”按鈕),見圖4。
圖4 重新初試化設定
(5)修改其他文件
把/var/www/cgi-bin/openwebmail/etc/openwebmail.conf 文件中字段: # domainnames auto 更改為: domainnames cao.net #更改為自己定義的域名# default_language en 更改為: default_language zh_CN.GB2312 #更改為簡體中文版介面# 把/var/www/cgi-bin/openwebmail/etc/defaults/openwebmail.conf文件中的字斷:smtpserver 127.0.0.1 更改為: smtpserver 192.168.1.253 #更改smtp服務器的地址# authpop3_server localhost 更改為: authpop3_server 192.168.1.253 #更改pop3服務器的地址# 把/var/www/cgi-bin/openwebmail/etc/defaults/dbm.conf文件中的字斷: dbmopen_ext none 更改為: dbmopen_ext .db dbmopen_haslock no 更改為: dbmopen_haslock yes smtpserver 192.168.1.253 #添加smtp服務器的地址# (6)再次運行openwebmail-tool.pl文件
然後在浏覽器輸入:http://localhost/var/www/cgi-bin/openwebmail/openwebmail.pl即刻進入見圖5。 圖5 openwebmai的登錄界面 至此,Webmail郵件服務器設定就完成了!
四、openwebmail的系統基本設置和管理
(1) 基本工作界面設定
圖5是 中文Openwebmail工作界面。
圖5 中文Openwebmail工作界面
圖5是基本設置選項,它允許你改變許多設定以適合你的郵寄需求。假如你是初次使用Open Webmail,你應當先進入設定控制畫面,而不是直接到收件箱。
首先點擊配置按鈕進行設置選項的單元。包括:個人信息 ,外觀設定 ,讀信相關設定 ,郵件操作設定 ,回信設定 ,郵件過濾設定 ,日程表設定 ,其他設定。見圖6。
圖6 Openwebmail的配置界面
個人信息主要內容見下表。
外觀設定可以讓你改變顏色、格式、大小、圖片和其他的顯示設定。主要內容見見下表。
讀信相關設定相當簡單,改變收信的方法只要確定方塊勾選或是不勾選就可以了。你可以依據你的使用喜好和最適屏幕寬度來設定。 見下表。
郵件操作設定關於郵件的執行行為設定 (例如移動或是復制)。見下表。
回信設定是關於信件回復時的方式 ,見下表。
郵件過濾設定決定如何過濾郵件。見下表。
日程表設定見下表。
其他設定收集一些設定項目,不一定會被歸類在一起的項目。見下表。
(2)Openwebmail的使用非常簡單,在的首頁的“幫助”中有200頁的常見操作信息。中文幫助界面見圖7。
圖7 Openwebmail的幫助中心
如果你無法在幫助中找到您所需要的答案,或是在安裝Open Webmail需要協助,請連到下列網站... Official Open Webmail Site SourceForge.net Webmail Forum FreshMeat.net Open Webmail Forum
(3)openwebmail的日志文件的定期地清理
日志文件都會隨著時間的推移和訪問次數的增加而迅速增長,因此必須對日志文件進行定期清理以免造成磁盤空間的不必要的浪費。同時也加快了網管員查看日志所用的時間,因為打開小文件的速度比打開大文件的速度要快。要使系統重新使用空的日志文件,可以執行操作:修改文件 /etc/logrotate.d/syslog,在文件尾加入以下內容:/var/log/openwebmail.log { postrotate /usr/bin/killall -HUP syslogd endscript}
五、增強Web郵件服務器的安全
(1)Web服務器的安全
由於使用了Apache Web服務器,所以要為其配置SSL庫。這些庫提供了SSL需要的功能。在你查看電子郵件時,需要有一個安全的Web服務器來保護你的密碼,以及所有流到Web服務器的信息。這樣可以避免別有用心的人通過監聽會話來獲取密碼。由於Apache服務器安全不是本文關注重點,所以具體步驟請查看相關文檔。 (2)保護postfix服務器
本文中openwebmail是基於postfix郵件服務器的,所以要保護postfix服務器。
1、 通過阻止IP地址或主機名方式訪問郵件服務器來拒收郵件: 在main.cf配置文件中使用以下行定義網絡地址“ # mynetwork=192.168.1.0/24 表示除非客戶端的ip地址符合$mynetworks參數定義的范圍則接受該客戶端的連接請求,才轉發該郵件。
2.在postfix中添加RBL功能 RBL(Realtime Blackhole List)是實時黑名單。國外有一些機構提供RBL服務,它們把收集到的專發垃圾郵件的IP地址加入他們的黑名單,我們只要在postfix中加入RBL認證功能,就會使我們的郵件服務器在每次收信時都自動到RBL服務器上去查實,如果信件來源於黑名單,則postfix會拒收郵件,從而少受垃圾郵件之苦。通常在mail.cf加入 map_rb1_domains=mail-abuse.org smtp_client_restrictions=reject_map1_rb1 其中第一行設置需要聯系得到的RBL列表的所有主機,接著設置需要進行應用的限制。然後存盤,從新啟動postfix服務器。
3 、通過化裝隱藏內部郵件地址 如果網絡中有發送郵件的中央郵件服務器,它為主機提供許多服務。那麼必須隱藏郵件地址的主機名稱部分。例如在一台名為pc-joe.yourcompany.com服務器上有一個用戶名稱是joe,當joe通過Postfix網關發送郵件時,他的地址顯示為:[email protected]。對外隱藏內部主機名稱是一個很好的安全策略,相關配置文件下列選項:masquerade_domains = $mydomain masquerade_exceptions = root 上面代碼第一行表示:對所有域進行化裝,通過變量$mydomain來完成。這意味[email protected]以後作為[email protected].出現。上面代碼第二行表示:不對root用戶進行化裝。 4.使用header_checks & body_checks 要使用 header_checks 或 body_checks 請在 main.cf手工建立: header_checks = regexp:/etc/postfix/header_checks body_checks = regexp:/etc/postfix/body_checks
5.拒絕找不到 DNS 資源記錄中 MX / A 記錄的主機的郵件這個機制是查尋寄件者的主機地址,再使用這個位置去做 DNS 查尋,一般在垃圾郵件發送者會隨意造一個主機名稱以企圖蒙騙過關,對於這種手法實只要使用一個設定既可。在 main.cf 加上一行:smtpd_sender_restrictions = reject_unknown_sender_domain
(3) 升級openwebmail版本
早期的openwebmail版本存在一些安全隱患,所以要使用2.3以後版本。過程和安裝相同。另外由於openwebmail功能強大包含系統信息也比較多,所以,您必須要了解到這個軟件有可能會產生一些安全上的漏洞的。建議您隨時注意openwebmail 官方網站:http://openwebmail.com/,這裡不定期的會有一些安全技術公告,可以幫助您的web郵件服務器使用更加安全。
六、加速郵件服務器
(1)使用speedcgi來加速
針對Openwebmail速度慢的缺點,可以使用speedcgi來加速。# rpm -ivh perl-CGI-SpeedyCGI-2.22-1.2.el4.rf.i386.rpm
接著執行命令:“speedy_convert”,這個命令會自動設定已安裝的 OpenWebMail 以便讓其以 SpeedyCGI 方式執行。 (2)啟動HTTP資料壓縮傳送
從OpenWebMail 2.10版本開始, 新增支持 HTTP 數據壓縮傳送功能, 對於透過調制解調器聯機或是使用 PDA 上網的使用者來說, 這個功能能夠大幅地降低傳輸網頁數據所需的時間. 要讓這個功能正常動作, 必須先在您的 openwebmail server 上安裝 Compress-Zlib模塊,方法如下: # wget http://openwebmail.com/openwebmail/download/packages/Compress-Zlib-1.33.tar.gz tar -zxvf Compress-Zlib-1.33.tar.gz cd Compress-Zlib-1.33 perl Makefile.PL make ;make install 此時在登錄openwebmail時會出現“HTTP資料壓縮傳送”選項。這樣可以加速郵件服務器運行速度。