Open WebMail <o:p> </o:p>
Open WebMail 的官方網址是 http://openwebmail.org, 這部機器位於美國 Spring Link 骨幹上的機房, 是由熱心的網友 Daniel Pentecost 還有他的公司 Norvasen 與 Pentecost Inc. 所完全免費提供 , 目前並由網友 Thomas Chung 負責整個網站的運行與維護 . 在發展 Open WebMail 的過程中 , 受到許許多多來自世界各地朋友的幫助 , 實在是感動良多 , 真的讓人有一種世界村 , 天涯若比鄰的感覺 ...<o:p></o:p>
至於 http://turtle.ee.ncku.edu.tw/openwebmail 則是程式發展的中心 , 所有最新的程式碼都是在這裡測試完後才開始對外公佈 , 然後複製 (mirror) 到官方站台及各地的 mirror site. <o:p></o:p>
<o:p></o:p>
Open WebMail 安裝需求 <o:p> </o:p>
- 支援 CGI 的 Web server <o:p></o:p>
- Perl 5.005 以上 (需有 suid perl 支援) <o:p></o:p>
- CGI.pm-3.05.tar.gz (必要) <o:p></o:p>
- MIME-Base64-3.01.tar.gz (必要) <o:p></o:p>
- Digest-1.08.tar.gz (必要) <o:p></o:p>
- Digest-MD5-2.33.tar.gz (必要) <o:p></o:p>
- libnet-1.19.tar.gz (必要) <o:p></o:p>
- Text-Iconv-1.2.tar.gz (必要) <o:p></o:p>
- libiconv-1.9.1.tar.gz ( 可選擇 , 多國語言內碼轉換 ) <o:p></o:p>
- CGI-SpeedyCGI-2.22.tar.gz (可選擇, 常駐執行) <o:p></o:p>
- Compress-Zlib-1.33.tar.gz (可選擇, 網頁壓縮) <o:p></o:p>
- ispell-3.1.20.tar.gz (可選擇, 拼字檢查) <o:p></o:p>
- Quota-1.4.10.tar.gz (可選擇, Quota control) <o:p></o:p>
- Authen-PAM-0.14.tar.gz (可選擇, 外掛式認證) <o:p></o:p>
- ImageMagick-5.5.3.tar.gz (可選擇, 縮圖製作) <o:p></o:p>
- tnef-1.2.3.1.tar.gz (可選擇, MS-Tnef 支援) <o:p></o:p>
- antiword-0.35.tar.gz (可選擇, MSWord 檔預覽) <o:p></o:p>
- openssl-0.9.7d.tar.gz (可選擇, POP3 的 SSL 支援, 若系統有 libssl 則不需要) <o:p></o:p>
- Net_SSLeay.pm-1.25.tar.gz (可選擇, POP3 的 SSL 支援) <o:p></o:p>
- IO-Socket-SSL-0.96.tar.gz (可選擇, POP3 的 SSL 支援) <o:p></o:p>
- clamav-0.70.tar.gz (可選擇, 病毒信掃描) <o:p></o:p>
- Mail-SpamAssassin-2.63.tar.gz (可選擇, 垃圾信判讀/學習) <o:p></o:p>
以上的套件, 一般來說是透過 source 安裝, 但如果您用的是 RedHat Linux, 那也有 rpm 可以快速安裝<o:p></o:p>
<o:p></o:p>
安裝套件 (由 source 安裝)<o:p></o:p>
首先請先到 http://turtle.ee.ncku.edu.tw/openwebmail/download/packages/ 下載上述的各個套件<o:p></o:p>
安裝 CGI.pm 套件 <o:p> </o:p>
cd /tmp
tar -zxvf CGI.pm-3.05.tar.gz
cd CGI.pm-3.05
perl Makefile.PL
make
make install<o:p></o:p>
註 : 可能您原本的機器上就已經安裝了 CGI.pm 這個套件 , 不過由於有使用者回報 Open WebMail 如果使用太舊的 CGI.pm 版本 , 會在上傳附件時 , 發生當住的情形 , 所以我們建議您安裝 2.74 以後或是更信的版本 . 檢查 CGI.pm 版本的方式如下 ;<o:p></o:p>
perl -MCGI -e 'print $CGI::VERSION'<o:p></o:p>
安裝 MIME-Base64 套件 <o:p> </o:p>
cd /tmp
tar -zxvf MIME-Base64-3.01.tar.gz
cd MIME-Base64-3.01
perl Makefile.PL
make
make install<o:p></o:p>
註 ; 雖然您的機器可能已經安裝了 MIME-Base64 這個套件 , 還是建議您從 source 重新裝一次 . 這樣做的話 , 可以確定 MIME-Base64 中的 XS 支援有被啟動 , 可以大幅地增加處理 MIME 附件編碼與解碼的速度 <o:p> </o:p>
安裝 libnet 套件 <o:p> </o:p>
cd /tmp
tar -zxvf libnet-1.19.tar.gz
cd libnet-1.19
perl Makefile.PL (ans 'no' if asked to update configuration)
make
make install<o:p></o:p>
安裝 Text-Iconv-1.2 套件 (自 openwebmail 1.80起)<o:p></o:p>
openwemail 自 1.80 版以後開始支援多國的字集轉換功能(如: 中文的簡繁轉換, 日文的 Shif-JIS/ISO-2022-JP/EUC-JP 轉換, 或是各種字集對 Unicode (UTF-8) 的轉換), 這個轉換的動作是透過 Text-Icon 套件來完成的. 而由於 Text-Iconv 事實上只是提供對系統 iconv() 相關函式 的一個 perl 介面, 所有首先要確認系統上是否支援 iconv() 相關函式, 方法如下<o:p></o:p>
man iconv<o:p></o:p>
如果下完命令後沒有出現相關的 manpage 說明文件 , 表示系統可能不支援 iconv() 相關函式 , 不過別擔心 , 我們可以透過安裝 libiconv 這個套件來替系統加上對 iconv() 的支援 <o:p> </o:p>
cd /tmp
tar -zxvf libiconv-1.9.1.tar.gz
cd libiconv-1.9.1
./configure
make
make install<o:p></o:p>
現在再試一次 'man iconv' 確認 libiconv 已經被成功的安裝到系統之中<o:p></o:p>
接下來就可以開始安裝 Text-Iconv 這個套件了<o:p></o:p>
cd /tmp
tar -zxvf Text-Iconv-1.2.tar.gz
cd Text-Iconv-1.2
perl Makefile.PL
註: 如果您用的是 FreeBSD, 或是您剛才用手動安裝 libiconv-1.9.1.tar.gz 這個套件, 請在執行 perl Makefile.PL 之前, 先修改 Makefile.PL 檔案, 將 LIBS 和 INC 這兩行設定如下
'LIBS' => ['-L/usr/local/lib -liconv'], # e.g., '-lm'
'INC' => '-I/usr/local/include', # e.g., '-I/usr/include/other'
make
make test
註: 如果 make test 失敗, 代表您的 OS 不支援 iconv() 這個功能或是 Makefile.PL 中的 LIB, INC 設定有誤. 您可以將 misc/patches/iconv.pl.fake 拷貝到 iconv.pl 這個檔案上, 讓 openwebmail 不透過 iconv 進行字集轉換. 這樣簡/繁轉換 功能會還在, 但是會喪失如 自動轉換 UTF-8 格式信件的功能.
make install<o:p></o:p>
<o:p></o:p>
安裝套件 (由 rpm 安裝)<o:p></o:p>
如果您用的是 RedHat Linux, 那麼您可以透過 rpm 快速安裝, 下載 rpm 的網址在 http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/packages/<o:p></o:p>
- 首先是安裝 CGI, MIME-Base64 和 libnet 這三個套件<o:p></o:p>
wget http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/packages/rh73/perl-CGI-2.752-34.99.6.i386.rpm
rpm -Uvh --force perl-CGI-2.752-34.99.6.i386.rpm
wget http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/packages/rh73/perl-MIME-Base64-2.12-14.i386.rpm
rpm -Uvh --force perl-MIME-Base64-2.12-14.i386.rpm
wget http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/packages/rh73/perl-libnet-1.0901-17.i386.rpm
rpm -Uvh --force perl-libnet-1.0901-17.i386.rpm
註: 您可以透過 rpm -qa | grep -i keyword 的方式來查詢系統上是否已安裝某特定套件
註: 如果想要讓 wget 透過 proxy 去抓資料的話, 請在使用 wget 前先執行下列命令
export http_proxy=http://your_proxy_server:3128 (for bash)
setenv http_proxy http://your_proxy_server:3128 (for csh/tcsh) <o:p></o:p>
- 接著檢查您的系統是否有裝 suidperl 套件
rpm -q -a|grep -i suidperl
如果您的 7.3 系統沒有裝 suidperl 的話, 請
wget http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/packages/rh73/perl-suidperl-5.6.1-34.99.6.i386.rpm
rpm -Uvh --force perl-suidperl-5.6.1-34.99.6.i386.rpm
如果您的 8.x 系統沒有裝 suidperl 的話, 請
wget http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/packages/rh80/perl-suidperl-5.8.0-55.i386.rpm
rpm -Uvh --force perl-suidperl-5.8.0-55.i386.rpm<o:p></o:p>
如果您的 9.x 系統沒有裝 suidperl 的話, 請
wget http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/packages/rh9/perl-suidperl-5.8.0-88.i386.rpm
rpm -Uvh --force perl-suidperl-5.8.0-88.i386.rpm <o:p></o:p>
- 接著是檢查您的系統是否有裝 Texi-Iconv 套件
rpm -q -a|grep -i iconv
如果您的 7.3 系統沒有裝 Text-Iconv 的話, 請
wget http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/packages/rh73/perl-Text-Iconv-1.2-RH73.i386.rpm
rpm -Uvh --force perl-Text-Iconv-1.2-RH73.i386.rpm
如果您的 8.x 系統沒有裝 Text-Iconv 的話, 請
wget http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/packages/rh80/perl-Text-Iconv-1.2-RH80.i386.rpm
rpm -Uvh --force perl-Text-Iconv-1.2-RH80.i386.rpm
如果您的 9.x 系統沒有裝 Text-Iconv 的話, 請
wget http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/packages/rh9/perl-Text-Iconv-1.2-RH80.i386.rpm
rpm -Uvh --force perl-Text-Iconv-1.2-RH80.i386.rpm<o:p></o:p>
安裝 Open WebMail <o:p> </o:p>
在 http://turtle.ee.ncku.edu.tw/openwebmail/download/release/ 下可以下載 Open WebMail 的各個 Release (openwebmail-x.yy.tar.gz), 這是屬於經過測試後, 功能較為穩定的版本. 而在 http://turtle.ee.ncku.edu.tw/openwebmail/download/current/ 下的 openwebmail-current.tar.gz 則是含有最新功能或修正, 但是沒有經過詳細的測試的程式碼. 至於 http://turtle.ee.ncku.edu.tw/openwebmail/download/snapshot/ 是擺放 current 的每日快照版本, 主要是為了方便追蹤每天程式碼變動的 current 的快照版本 <o:p></o:p>
如果您的作業系統是 FreeBSD, 而且您的 apache 是透過 pkg_add 方式安裝 <o:p> </o:p>
恭喜您 , 您的作業環境和 Open WebMail 發展小組是一樣的 , 所以安裝手續非常的簡單 <o:p> </o:p>
- chmod 4555 /usr/bin/suidperl<o:p></o:p>
- cd /usr/local/www
tar -zxvBpf openwebmail-X.XX.tar.gz<o:p></o:p> - /usr/local/www/cgi-bin/openwebmail/openwebmail-tool.pl --init<o:p></o:p>
註: 透過FreeBSD 本身的 PORTS, 可以很方便地安裝 Open WebMail,
cd /usr/ports/mail/openwebmail
make install clean
<o:p></o:p>
如果您的作業系統是 Linux RedHat 7.x/8.x/9.x, 而您想自己從 source 安裝的話 <o:p> </o:p>
- cd /var/www
tar -zxvBpf openwebmail-X.XX.tar.gz
mv data/openwebmail html/
rmdir data<o:p></o:p> - cd /var/www/cgi-bin/openwebmail
修改 etc/auth_unix.conf (由 etc/defaults/auth_unix.conf copy 過來改) <o:p></o:p>- 將 passwdfile_encrypted 設成 /etc/shadow <o:p></o:p>
- 將 passwdmkdb 設成 none <o:p></o:p>
- 修改 etc/openwebmail.conf <o:p></o:p>
- 將 mailspooldir 設成 /var/spool/mail <o:p></o:p>
- 將 ow_htmldir 設成 /var/www/html/openwebmail
將 ow_cgidir 設成 /var/www/cgi-bin/openwebmail <o:p></o:p> - 將 spellcheck 設成 /usr/bin/ispell<o:p></o:p>
- /var/www/cgi-bin/openwebmail/openwebmail-tool.pl --init<o:p></o:p>
- 將下列文字加到 /etc/logrotate.d/syslog 讓系統定期砍掉過去的 log
/var/log/openwebmail.log {
postrotate
/usr/bin/killall -HUP syslogd
endscript
} <o:p></o:p>
註: 如果您的作業系統是Linux RedHat 6.2(CLE 0.9), 請用 /home/httpd 取代上述的 /var/www<o:p></o:p>
註: 如果您的 Linux 是 Redhat, 建議參考由 Emir Litric 所寫的 RedHat-README.txt <o:p></o:p>
如果您的作業系統是 Linux RedHat 7.x/8.x/9.x, 而您想快速安裝的話, <o:p> </o:p>
您可以利用由 Thomas Chung 所準備的 redhat<o:p></o:p>
- 安裝 Open WebMail 的 released rpm,
請到 http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/release/ 找出版本最新的 released rpm
wget http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/release/openwebmail-2.10-1.i386.rpm
rpm -Uvh openwebmail-2.10-1.i386.rpm
如果您想要安裝最新的 current rpm (比 released rpm 新, 但是可能有 bug),
請到 http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/daily-build/ 找出日期最新的 current rpm
wget http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/daily-build/openwebmail-2.10-20031002.i386.rpm
rpm -Uvh openwebmail-2.10-20031002.i386.rpm<o:p></o:p> - /var/www/cgi-bin/openwebmail/openwebmail-tool.pl --init<o:p></o:p>
如果您的作業系統是其他的 Unix, 配合 Apache <o:p> </o:p>
- 首先找到您的 Apache data 和 cgi-bin 目錄的父目錄,
以下我們以 /usr/local/apache/share 作例子,
並假設 openwebmail-x.yy.tar.gz 放在 /tmp<o:p></o:p> - cd /usr/local/apache/share
tar -zxvBpf openwebmail-x.yy.tar.gz
mv data/openwebmail htdocs/
rmdir data<o:p></o:p> - cd /usr/local/apache/share/cgi-bin/openwebmail/
修改 etc/openwebmail.conf <o:p></o:p>- 將 mailspooldir 設成 您系統中的 mail spool, 一般是 /var/mail 或是 /var/spool/mail <o:p></o:p>
- 將 ow_htmldir 設成 /usr/local/apache/share/htdocs
將 ow_cgidir 設成 /usr/local/apache/share/cgi-bin<o:p></o:p>
- 修改 etc/auth_unix.conf (由 etc/defaults/auth_unix.conf copy 過來改) <o:p></o:p>
- 將 passwdfile_encrypted 設成 '/etc/shadow' <o:p></o:p>
- 將 passwdmkdb 設成 'none' <o:p></o:p>
註: 各 Unix 平台改法不見得相同, 請參考 defaults/auth_unix.conf 中的說明, 以便得知確切的改法<o:p></o:p>
- cd /usr/local/apache/share/cgi-bin/openwebmail
修改所有 openwebmail*.pl 的 perl script, 包括
openwebmail.pl, openwebmail-main.pl,
openwebmail-read.pl, openwebmail-viewatt.pl,
openwebmail-send.pl, openwebmail-spell.pl,
openwebmail-prefs.pl, openwebmail-folder.pl,
openwebmail-abook.pl, openwebmail-advsearch.pl,
openwebmail-cal.pl and openwebmail-tool.pl <o:p></o:p>
將 script 中第一行 #!/usr/bin/suidperl 改成 !您的 suidperl 所在的路徑<o:p></o:p>
- 檢查您的 suidperl 程式的 mode, 看看是否是 r-sr-xr-x, 如果不是的話
chmod 4555 /usr/local/bin/suidperl <o:p></o:p> - /usr/local/apache/share/cgi-bin/openwebmail/openwebmail-tool.pl --init <o:p></o:p>
註: 如果您是在 Solaris 上安裝 Open WebMail, 請記得建立 /etc/openwebmail_path.conf 這個檔案.
然後在其中放入您 openwebmail CGI 所在的路徑
如果 openwebmail.pl 位於
/usr/local/apache/share/cgi-bin/openwebmail/openwebmail.pl
那麼 /etc/openwebmail_path.conf 應該如下:
/usr/local/apache/share/cgi-bin/openwebmail
註: 如果您用的是 Apache 2.0 以後的版本, 請在 apache 的設定檔 httpd.conf 中, 將
AddDefaultCharset ISO-8859-1
改成
AddDefaultCharset off<o:p></o:p>
<o:p></o:p>
設定 Open WebMail 系統 <o:p> </o:p>
在 cgi-bin/openwebmail/etc 可以發現有 defaults/openwebmail.conf, openwebmail.conf.help 和 openwebmail.conf 這三個檔, 其中<o:p></o:p>
defaults/openwebmail.conf - 內定的 Open WebMail 設定檔, 包含所有可以設定的選項
openwebmail.conf.help - defaults/openwebmail.conf 所有選項的說明檔
openwebmail.conf - 主要的設定檔, 管理者要設定的選項, 應該都寫在這個檔案裡頭, 而不應該直接去改 defaults/openwebmail.conf<o:p></o:p>
openwebmail.conf 的內容 <o:p> </o:p>
# Open WebMail configuration file
#
# This file contains just the overrides from defaults/openwebmail.conf
# please make all changes to this file.
#
# This file sets options for all domains and all users.
# To set options on per domain basis, please put them in sites.conf/domainname
# To set options on per user basis, please put them in users.conf/username
#
domainnames auto
auth_module auth_unix.pl
mailspooldir /var/mail
ow_cgidir /usr/local/www/cgi-bin/openwebmail
ow_cgiurl /cgi-bin/openwebmail
ow_htmldir /usr/local/www/data/openwebmail
ow_htmlurl /openwebmail
logfile /var/log/openwebmail.log
spellcheck /usr/local/bin/ispell
enable_viruscheck no
enable_spamcheck no
enable_learnspam no
default_language en<o:p></o:p>
smtp<o:p></o:p>
<default_signature></default_signature>
--
Open WebMail Project (http://openwebmail.org)
<o:p></o:p>
以上的內容可能隨著您系統而有所不同 , 不過在您完成前述的安裝後 , 您可以修改以下幾個選項 <o:p> </o:p>
domainnames<o:p></o:p>
一般情況下, openwebmail 應該能正確地判斷出您 server 的 domainname, 進而正確地設定使用者的預設 Email address, 但如果發生 openwebmail 判斷錯誤或是您希望設定成其他的 domainname, 你可以將這個選項由 auto 改成您所要的 domainname, 如 mail.myserver.com.tw<o:p></o:p>
spellcheck<o:p></o:p>
設定拼字檢查程式所在的路徑, 一般而言, 可能是以下其中之一, 您可以用 ls -l filename 方式檢查看看<o:p></o:p>
/usr/bin/apsell
/usr/bin/ispell
/usr/local/bin/aspell
/usr/local/bin/ispell<o:p></o:p>
enable_viruscheck<o:p></o:p>
是否呼叫外部程式進行病毒掃描, 預設是 no, 這個功能需要在系統上先安裝 ClamAV 這套軟體<o:p></o:p>
enable_spamcheck<o:p></o:p>
是否呼叫外部程式進行垃圾信判讀, 預設是 no, 這個功能需要在系統上先安裝 SpamAssassin 這套軟體<o:p></o:p>
enable_learnspam<o:p></o:p>
是否呼叫外部程式進行垃圾信學習, 預設是 no, 通常這個功能與 enable_spamcheck 要互相配合, 因為學習所得到資料庫將會在 spamcheck 進行垃圾信判讀時被參考<o:p></o:p>
default_language<o:p></o:p>
內定的語言, 我們把它由 en(英文) 改成 zh_TW.Big5 (繁體中文)<o:p></o:p>
註: 自 2.0 版 20030416 以後, 已經不需要在 openwebmail.conf 中設定 default_language 這個選項了, openwebmail 會根據使用者所用的瀏覽器設定, 自動選擇適合的內定的語言<o:p></o:p>
default_signature<o:p></o:p>
設定預設的簽名檔 , 設在這裡的值會成為每個新使用者的預設簽名檔 , 不過使用時每個使用者可以依自己的需求 , 設定成其他的內容 <o:p> </o:p>
<o:p></o:p>
初始化 Open WebMail <o:p> </o:p>
在前面的安裝步驟裡頭, 最後一個步驟是 <o:p></o:p>
cd the_direcotry_of_openwebmail_cgi_scripts
./openwebmail-tool.pl --init<o:p></o:p>
這個動作會建立一些 Open WebMail 在執行時會用到的對應表 , 如簡繁轉換 , 陰陽曆轉換等 . 如果這個動作沒有做的話 , 使用者將無法透過 Web 介面使用 Open WebMail <o:p></o:p>
而由於在各種不同作業系統上的 perl 版本的差異 , 其所使用的 dbm 種類也不盡相同 , 有的可能需要特殊的設定後才能使用 , --init 在建立上述對應表之前 , 會測試系統上 perl 的 dbm 種類 , 並且提供一些必要的建議事項 <o:p> </o:p>
- 首先會檢查 etc/dbm.conf 中的 dbm_ext, dbmopen_ext 和 dbmopen_haslock 三個選項的設定是否正確, 如果設定有誤的話, 您會看到如下的畫面
Please change the following 3 options in etc/dbm.conf
from
dbm_ext .db
dbmopen_ext none
dbmopen_haslock no
to
dbm_ext .db
dbmopen_ext %dbm_ext%
dbmopen_haslock yes
管理者可以將 etc/defaults/dbm.conf copy 成 dbm.conf, 然後將正確的 dbm 設定值, 寫到 etc/dbm.conf 中 <o:p></o:p> - 其次是檢查系統上的 dbm 是否內定使用 DB_File.pm 這個模組, 如果是而且有需要的話, 會建議您對 DB_File.pm 作一些必要的修改 (這個修改是由 DB_File.pm 作者所提供的), 您會看到如下畫面
Please modify /usr/libdata/perl/5.00503/mach/DB_File.pm by adding <o:p></o:p>
$arg[3] = 0666 unless defined $arg[3]; <o:p> </o:p>
before the following text (about line 247)<o:p></o:p>
# make recno in Berkeley DB version 2 work like recno in version 1 <o:p> </o:p>
請務必依照以上的建議作修改, 否則您的 Open WebMail 可能會無法完全正常動作, 也請記得在做完修改之後, 別忘了重新執行一次 './openwebmail-tool.pl --init' <o:p></o:p>
<o:p></o:p>
測試 Open WebMail <o:p> </o:p>
在完成上面的步驟後, 您可以連線到
http://your_server_hostname/cgi-bin/openwebmail/openwebmail.pl
並且登入看看是否一切正常<o:p></o:p>
Sendmail.cf 的修改 <o:p> </o:p>
為了安全的考量, 某些系統上的 sendmail.cf 內定只聽在 127.0.0.1 這個 IP, 所以 sendmail 只接受 local 的連線 (即 local 的程式可以送信出去), 但是卻無法接收 remote 端的連線(即無法接受 remote 送來的信件). 如果您的機器發生這樣的情形, 解決步驟如下:<o:p></o:p>