安裝OpenWebMail

English Version

2015/11/15 - Openwebmail-2.54 在 Fedora 22 已經不能用了。請升級到 3.00_beta4 版本。


這安裝說明是為 OpenWebMail-2.54 的版本而且算很老了。新版本是 OpenWebMail-3.00Beta_4。雖然是 beta,但是很穩定的版本。我建議使用這個版本。

OpenWebMail 的官方網頁是︰http://openwebmail.acatysmoof.com/

在哪裡可以找到如何在 Fedora,Debian,FreeBSD,Slackware 和 Ubuntu 安裝 OpenWebMail 的說明。

蔡由世神父
2015/04/17


OpenWebMail 最新版本是2.53。你在以下網址下載:

http://openwebmail.acatysmoof.com/download/release/openwebmail-2.53.tar.gz


Fedora 16

如果你的 openwebmail 使用 speedycgi,你要升級至 Fedora 16 之前你必須先刪除:

yum remove speedycgi

升級之後就安裝為 Fedora 16 編譯的 新 rpm 包裝:

yum install speedycgi-2.22-4.fc16.i686.rpm

如果你在 openwebmail 也使用 quota 的話,你必須更新因為舊的版本不能使用了:

yum update perl-Quota-1.6.7-1.i386.rpm

你在 可以下載這兩個 rpm 包裝。

蔡由世神父
2011/12/14


openwebmail-2.53 與 fedora 14

Fedora 14 已使用 perl-5.12 而 perl-5.12 不支援 suid 了。問題是 openwebmail 需要 suid root 才能正常運作。 在這種情況下,你需要使用 c-wrappers。

使用 c-wrappers 之前,如果你已經在使用 speedycgi,請你移除然後安裝我建 speedycgi 的新 rpm 檔。如果你想使用 speedycgi (強烈推薦), 請你在下載然後安裝。

更改 /var/www/cgi-bin/openwebmail/openwebmail*.pl 所有檔案的事務咧 (shebang) 至:

#!/usr/bin/speedy

現在回來 c-wrapper: 下載 wrapsuid.pl.

改檔案權限為可執行的:

chmod 777 wrapsuid.pl

執行 wrapsuid.pl:

./wrapsuid.pl /var/www/cgi-bin/openwebmail/openwebmail*.pl
cd /var/www/cgi-bin/openwebmail
chmod 4755 openwebmail*.pl

使用 perl-5.12,openwebmail 的資料庫格式已改變。所以 /var/www/cgi-bin/openwebmail/etc/dbm.conf 需要更改:

cd /var/www/cgi-bin/openwebmail/etc/. 編輯 dbm.conf 如下:

  F13: perl-5.10 F14: perl-5.12
dbm_ext .db .pag
dbmopen_ext .db none
dbmopen_haslock no no

初始化 openwebmail:

cd /var/www/cgi-bin/openwebmail
./openwebmail-tool.pl --init

你也需要重新建立索引符合新的格式:

./openwebmail-tool.pl --alluser --index

請注意,在 perl-5.12 兩個函數 defined(%hash) 和 defined(@array) 已經是不宜用 (deprecated) 函數。但是,openwebmail 很廣泛使用這 兩個函數,所以不要驚訝在你 apache 的 error_log 會有很多提醒訊息。

但是不要擔心,openwebmail 仍然會正常運作。

蔡由世神父
2011/04/01


因為我們使用的 Linux 是 Fedora 8,所以這個安裝程序是針對 Fedora 8。但是其它 RedHat/Fedora 應該都可以使用。


我剛升級至 Fedora 9。以下是我遇到的困難和如何解決這些問題:

  1. 如果你使用 SpeedyCGI,你已經安裝的 SpeedyCGI 在升級至 Fedora 9 之後已經不能用了。要重新編譯從 http://daemoninc.com/SpeedyCGI/download.html 下載的來源程式也有問題。

    要解決這個問題的方法是從 http://koji.fedoraproject.org/koji/buildinfo?buildID=48045 下載 source rpm,然後將這個 source rpm 所提供的 patches 引進到原來的 SpeedyCGI,然後重新編譯。 你在這裡可以下載這個軟體。

    刪除已安裝的 SpeedyCGI,然後安裝新的:

    rpm -e speedycgi
    rpm -Uvh Fedora-9-speedycgi-2.22-1.i386.rpm
    cd /usr/bin
    cp speedy speedy_suidperl
    chmod 4555 speedy_suidperl

    請注意,SpeedyCGI 平常會把它建的檔案放在 /tmp 但是我改設把檔案放在 /var/log/openwebmail/。 所以你必須手動建這個次目錄:

    cd /var/log
    mkdir openwebmail

  2. 如果你使用 openwebmail 的 quota_unixfs.pl,已經安裝的 perl-Quota 也不能用了。我建了新的 rpm,也提供給你 下載。把這個新的包裝就可以了:
    rpm -Uvh perl-Quota-1.6.2-1.i386.rpm

Openwebmail 是用 perl 寫成的。除了 perl 包裝要安裝之外,也需要以下 perl 模組:

perl-CGI
perl-Digest
perl-Digest-MD5
perl-MIME-Base64
perl-libnet
事實上,Fedora 8 的 perl 包裝已經包含了上面所有 perl 模組。

Openwebmail 也需要以下軟體:

perl-suidperl
aspell
perl-Text-Iconv

這三個軟體 Fedora 8 都有。所以如果還沒有安裝的話,在 Fedora 8 的安裝 CD 可以找到或者使用 yum 來安裝。

現在我們要開始安裝 OpenWebMail。我假設 OpenWebMail 軟体放在:

/root/openwebmail-2.53.tar.gz

o 首先,到 apache 的 root directory:

cd    /var/www

o 將 openwebmail-2.53.tar.gz 解開,請注意參數:

tar    -zxvBpf    /root/openwebmail-2.53.tar.gz

o 解開之後會建立以下兩個子目錄:

data
cgi-bin/openwebmail

o 將 data 子目錄下的 openwebmail 子目錄搬到 html/ 下:

mv    data/openwebmail    html/

o 刪除﹝已經是空的﹞子目錄 data:

rmdir    data

o 現在要更改 OpenWebMail 的設定檔案:

編輯 /var/www/cgi-bin/openwebmail/etc/openwebmail.conf,改以下變數:

mailspooldir    /var/mail
== >                 /var/spool/mail
ow_cgidir    /usr/local/www/cgi-bin/openwebmail
== >            /var/www/cgi-bin/openwebmail
ow_htmldir    /usr/local/www/data/openwebmail
== >              /var/www/html/openwebmail

加:  spellcheck   /usr/bin/aspell -a -S -w "-" -d @@@DICTIONARY@@@ -p @@@PDICNAME@@@
           spellcheck_pdicname    .aspell_words

讀信件時,要自動使用信件本身所定義的 charset,加:

default_readwithmsgcharset    yes

如果你的 server 有啟動 quota 的話,你也可以加:

quota_module    quota_unixfs.pl

請注意:如果你要使用 Openwebmail 的 quota 功能,你必須安裝 perl 的 Quota 軟體。你可以下載來源程式的最新版本在:

http://search.cpan.org/~tomzo/

執行以下指令:

cd   /var/www/cgi-bin/openwebmail/etc/
cp   defaults/dbm.conf   .
編輯 dbm.conf,改以下變數:

dbm_ext    .db
dbmopen_ext    none   ==>   .db
dbmopen_haslock    no

執行以下指令:

cd   /var/www/cgi-bin/openwebmail/etc/
cp   defaults/auth_unix.conf   .
編輯 auth_unix.conf

passwdfile_encrypted     /etc/master.passwd
==>                                /etc/shadow
passwdmkdb      /usr/sbin/pwd_mkdb
==>                     none
check_shell     no     ==>     yes

做好了設定,必須執行:

/var/www/cgi-bin/openwebmail/openwebmail-tool.pl --init

這程式會初始 openwebmail 所使用的對應表,也同時偵測「dbm_ext、dbmopen_ext和dbmopen_haslock」的設定是否正確。如不是,程式會列出正確的參數。請按照程式的指示更改參數。

這樣就安裝好了!現在可以連接了:

http://your.domain.edu.tw/cgi-bin/openwebmail/openwebmail.pl

打這樣的網址,我感覺,有一點太長。如果使用者只打:

http://your.domain.edu.tw/openwebmail

那就方便很多。如你想這樣,請執行以下指令:

cd    /var/www/html/openwebmail
rm    -f    index.html
mv    redirect.html    index.html

如果你感覺 openwebmail 的處理有一點慢,我 建議將 suidperl 改用 SpeedyCGI。

o 先下載 SpeedyCGI 的來源程式﹝CGI-SpeedyCGI-2.22.tar.gz﹞:

http://daemoninc.com/SpeedyCGI/download.html

o 解壓、編譯、安裝:

tar xvfz CGI-SpeedyCGI-2.22.tar.gz
cd   CGI-SpeedyCGI-2.2
perl Makefile.PL

出現訊息:Compile mod_speedycgi (default no)?    安 Enter 就可以了。
編輯 speedy/Makefile。在第 150 列﹝DEFINE = -DSPEEDY_PROGRAM…﹞的列尾加   -DIAMSUID

make
make test

如果沒有問題就可以安裝:

make install

或者自己建一個 rpm 檔。要建 rpm 之前,編輯 util/build_rpms

第 80 列:刪掉這列 Serial: $serial
第 81 列:改 Copyright ==> License

make package

Warning! 'rpm' may core dump if you are not root.
Hit enter to continue: <ENTER>
Linux distribution [RedHat]: fedora
Distribution version [package redhat-release is not installed]: 8
RPM Release [1]: <ENTER>

這樣就產生 binaries/fedora-8-speedycgi-2.22-1.i386.rpm。安裝:

rpm -Uvh fedora-8-speedycgi-2.22-1.i386.rpm

o Openwebmail 需要一個 suid root 的 speedy 程式。所以安裝 SpeedyCGI 之後:

cd    /usr/bin
cp   speedy   speedy_suidperl
chmod   4555   speedy_suidperl

當然你要 OpenWebMail 用 speedy_suidperl。現在到 openwebmail 的目錄:

cd   /var/www/cgi-bin/openwebmail

o 要使用 SpeedyCGI 必須將所有的 openwebmail*.pl 檔案的執行程式從:

#!/usr/bin/suidperl -T

改為:

#!/usr/bin/speedy_suidperl

如果你要用手動的方式一個一個改的話就很麻煩。我建議在 /var/www/html/openwebmail 裡寫一個 script﹝檔名為 ch2speedy﹞:

#!/bin/bash
for name in open*.pl; do
   if [ "$name" != "openwebmail-tool.pl" ]
   then
      cp -a $name ${name}.old
      sed -e "s@suidperl -T@speedy_suidperl@" < ${name}.old > ${name}
   fi
done

請參考:http://www.bluelavalamp.net/owmspeedycgi/

將 ch2speedy 可以執行:

chmod   700   ch2speedy

現在執行 ch2speedy:

./ch2speedy

o 測試是否 openwebmail 執行的正常。如果沒有問題就可以把所有 *.old 檔案刪除:

rm -f *.old


蔡由世神父
2002/12/29
更新:2011/12/14