1.概述
Webmail IMP允許用基于Web的方式訪問IMAP/POP3服務器,而且提供了地址簿、LDAP目錄查詢、支持發送和接收附件,還有很多在常用的桌面電子郵件客戶程序中可以找的功能。如果你已經安裝了支持SSL的Apache服務器,就可以通過SSL安全地發送和讀取郵件。在這篇文章中,我們把Webmail IMP配置成使用PostgreSQL並使用IMAP連接。Webmail還可以支持很多其它的數據庫,如果你願意的話,可以使用MySQL、Oracle、Sybase以及其它SQL數據庫服務器。當然,你也可以選擇用POP3而不用IMAP。
2.注意事項
下面所有的命令都是Unix兼容的命令。
源路徑都爲「/var/tmp」(當然在實際情況中也可以用其它路徑)。
安裝在RedHat Linux 6.1和6.2下測試通過。
要用「root」用戶進行安裝。
Horde的版本是1.2.0。
Webmail IMP的版本是2.2.0。
PHPLib的版本是7.2b。
3.軟件包的來源
Webmail IMP的主頁:http://www.horde.org/imp/
下載:horde-1.2.0-pre11.tar.gz
下載:imp-2.2.0-pre11.tar.gz
PHPLib的主頁:http://phplib.netuse.de/index.php3
下載:phplib-7.2b.tar.gz
4.安裝前的准備工作
* 先要安裝Apache服務器
* 安裝PHP4
* 如果想爲Webmail IMP加上SQL的支持,還要安裝PostgreSQL或其它數據庫服務器
* 安裝IMAP/POP服務器
* PHPLIB 7.2或更高版本
5.安裝Webmail IMP所需的PHPLib
爲了在Linux服務器上運行Webmail IMP,必須安裝PHPLib(PHP開發者用來開發Web應用程序的工具包)。按照下面的步驟安裝PHPLib:
6.軟件包
PHPLib的主頁:http://phplib.netuse.de/index.php3
下載:phplib-7.2b.tar.gz
[root@deep /]# cp phplib-7.2b.tar.gz /home/httpd/
[root@deep /]# cd /home/httpd/
[root@deep httpd]# tar xzpf phplib-7.2b.tar.gz
第一步
轉到Web服務器的DocumentRoot目錄,用下面的命令創建「/home/httpd/php」目錄:
[root@deep /]# cd /home/httpd/
[root@deep httpd]# mkdir php
第二步
先把PHPLib解壓,然後把PHPLib中的文件拷貝到「php」目錄下:
[root@deep /]# cd /home/httpd/phplib-7.2b/php/
[root@deep php]# cp * /home/httpd/php/
[root@deep php]# cd /home/httpd/
[root@deep httpd]# rm -f phplib-7.2b.tar.gz
[root@deep httpd]# rm -rf phplib-7.2b/
注意:當把所有的文件都拷貝到「php」目錄下之後,把tar壓縮包和「phplib-verison」目錄刪掉。
7.編譯
按照下面的步驟,在服務器上安裝Webmail IMP。
第一步
把「horde-1.2.0-pre11.tar.gz」拷貝到Web服務器的DocumentRoot(/home/httpd)目錄下,運行下面的命令:
[root@deep /]# cp horde-version.tar.gz /home/httpd/
[root@deep /]# cd /home/httpd/
[root@deep httpd]# tar xzpf horde-version.tar.gz
[root@deep httpd]# mv horde-version horde
[root@deep httpd]# rm -f horde-version.tar.gz
注意:我們在把「horde-version」改名爲「horde」之後,把horde的壓縮文件刪掉。
第二步
用下面的命令把「imp-2.2.0-pre11.tar.gz」拷貝到新的「horde」目錄(/homte/httpd/horde),解壓並把「imp-version」改名爲「imp」:
[root@deep /]# cp imp-version.tar.gz /home/httpd/horde/
[root@deep /]# cd /home/httpd/horde/
[root@deep horde]# tar xzpf imp-version.tar.gz
[root@deep horde]# mv imp-version imp
[root@deep horde]# rm -f imp-version.tar.gz
注意:「imp」目錄在「horde」目錄下,否則Webmail就不能工作。把「imp-version」目錄改名爲「imp」之後,可以把IMP的壓縮文件刪掉。
第三步
把「horde」目錄及其子目錄和目錄下的所有文件的所有者改爲「root」。
[root@deep /]# chown -R 0.0 /home/httpd/horde/
第四步
用下面的命令把「/home/httpd/horde/phplib/*.ihtml」文件拷貝到新的「php」(/home/httpd/php)目錄下:
[root@deep /]# cp /home/httpd/horde/phplib/*.ihtml /home/httpd/php/
8.配置並創建Webmail IMP的SQL數據庫
我們必須配置數據庫使得Webmail IMP可以和SQL數據庫結合使用。可以用「/home/httpd/horde/imp/config/scripts」目錄下已經寫好的腳本。以PostgreSQL爲例,根據下面的步驟:
第一步
首先,編輯「/home/httpd/horde/imp/config/scripts」目錄下的「pgsql_create.sql」,把默認的httpd的用戶名改爲「www」。
編輯「pgsql_create.sql」文件(vi /home/httpd/horde/imp/config/scripts/pgsql_create.sql),把下面這一行:
GRANT SELECT, INSERT, UPDATE ON imp_pref, imp_addr TO nobody;
改爲:
GRANT SELECT, INSERT, UPDATE ON imp_pref, imp_addr TO www;
第二步
我們必須給予運行Apache的用戶「www」在我們的PostgreSQL數據庫中創建Webmail IMP數據庫的權限。
用PostgreSQL的「createuser」命令在數據庫中設定httpd的用戶名爲「www」:
[root@deep /]# su postgres
[postgres@deep /]$ createuser
Enter name of user to add - www
Enter user's postgres ID or RETURN to use unix user ID: 80 - [Press Enter]
Is user "www" allowed to create databases (y/n) y
Is user "www" a superuser? (y/n) n
createuser: www was successfully added
第三步
一旦httpd用戶「www」被加到PostgreSQL數據庫中,用「postgres」用戶登錄,運行腳本文件「pgsql_create.sql」,自動在PostgreSQL中加入Webmail IMP數據庫。
用下面的命令在PostgreSQL中創建Webmail IMP數據庫:
[root@deep /]# cd /home/httpd/horde/imp/config/scripts/
[root@deep scripts]# su postgres
[postgres@deep scripts]$ psql template1
// IMP database creation script for postgreSQL
// Author: barce@lines.edu
// Date: Aug-29-1998
// Notes: replace "nobody" with yours httpd username
// Run using: psql template1
CREATE DATABASE horde;
CREATEDB
connect horde
connecting to new database: horde
CREATE TABLE imp_pref (
username text,
sig text,
fullname text,
replyto text,
lang varchar(30)
);
CREATE
CREATE TABLE imp_addr (
username text,
address text,
nickname text,
fullname text
);
CREATE
GRANT SELECT, INSERT, UPDATE ON imp_pref, imp_addr TO www;
CHANGE
EOF
第四步
重新啓動PostgreSQL服務器,讓所做的改變生效。
用下面的命令重新啓動PostgreSQL:
[root@deep /]# /etc/rc.d/init.d/postgresql restart
Stopping postgresql service: [ OK ]
Checking postgresql installation: looks good!
Starting postgresql service: postmaster [13474]
第五步
把「/home/httpd/horde/phplib/horde_phplib.inc」拷貝爲「/home/httpd/php/local.inc」:
[root@deep /]# cp /home/httpd/horde/phplib/horde_phplib.inc /home/httpd/php/local.inc
cp: overwrite `/home/httpd/php/local.inc'? y
編輯phplib的配置文件「local.inc」,可以設置phplib的運行情況。
編輯「local.inc」文件(vi /home/httpd/php/local.inc),去掉注釋並修改下面這些行來設置默認的數據庫:
/* To use an SQL database, uncomment and edit the following: */
class HordeDB extends DB_Sql {
var $Host = 'localhost';
var $Database = 'horde';
var $User = 'www';
var $Password = 'some-password';
var $Port = '5432';
function halt($msg) {
printf("Database error (HordeDB): %s
", $msg);
}
}
class HordeCT extends CT_Sql {
var $database_class = 'HordeDB'; // Which database class to use...
var $database_table = 'active_sessions'; // and find our data in this table.
}
注意:不要忘了去掉Webmail IMP所使用的存儲器類型的注釋,而且只能選擇一種存儲器類型。我們選擇SQL爲存儲器。還要設置SQL數據庫的參數「var $User =」、「var $Password =」和「var $Port =」。「var $User =」對應httpd的用戶名(在我們的例子中爲「www」),「var $Password =」對應在PostgreSQL中「www」用戶的口令,「var $Port =」是連接到SQL數據庫的IP端口。
第六步
最後編輯「/home/httpd/php/prepend.php3」文件,設置默認的數據庫類型。
編輯「prepend.php3」文件(vi /home/httpd/php/prepend.php3),改變下面這些行把數據庫類型設置成PostgreSQL:
require($_PHPLIB["libdir"] . "db_mysql.inc");
改爲:
require($_PHPLIB["libdir"] . "db_pgsql.inc");
9.配置PHP4的配置文件「php.ini」
還要設置PHP4的配置文件「/etc/httpd/php.ini」。這些設置是爲了設定PHP4自動裝入哪些模塊(例如:IMAP、 PostgreSQL或其它)。因爲我們用PostgreSQL作爲我們的數據庫而且要用到IMAP,我們必須在「php.ini」中設定。
第一步
編輯「php.ini」文件(vi /etc/httpd/php.ini),在「Dynamic Extensions」這一節進行設置。我們選擇支持IMAP和PostgreSQL:
extension=imap.so ; Added for IMAP support
extension=pgsql.so ; Added for PostgreSql support
extension=mysql.so ; Added for MySql support
extension=ldap.so ; Added for LDAP support
第二步
我們還要告訴「php」當所包含的文件沒有絕對路徑時到哪裏去找這些文件,自動把phplib的「prepend.php3」文件的內容加到每個文件的前面,並且把magic quotes關閉掉。
編輯「php.ini」文件(vi /etc/httpd/php.ini)並且在下面這些行中加上參數:
magic_quotes_gpc = Off
auto_prepend_file = "/home/httpd/php/prepend.php3"
include_path = "/home/httpd/horde:/home/httpd/php"
10.配置Apache使其識別Webmail IMP
一旦Webmail IMP安裝到系統中之後,必須在「httpd.conf」文件中加入下面這些行。
第一步
編輯「httpd.conf」文件(vi /etc/httpd/conf/httpd.conf)在和中加入這些行:
Alias /horde/ "/home/httpd/horde/"
Options None
AllowOverride None
Order allow,deny
Allow from all
Alias /imp/ "/home/httpd/horde/imp/"
Options None
AllowOverride None
Order allow,deny
Allow from all
第二步
重新啓動讓Apache Web服務器讓這些改變生效。
用下面的命令重新啓動:
[root@deep /]# /etc/rc.d/init.d/httpd restart
Shutting down http: [ OK ]
Starting httpd: [ OK ]
11.用浏覽器配置Webmail IMP
用很多方法可以配置Webmail IMP,我們選擇用名爲「setup.php3」的新的安裝引擎。可以用浏覽器配置IMP。
第一步
因爲安全方面的原因,所以最好把它禁止掉,但是可以用下面的命令使其生效。
用下面的命令使「setup.php3」生效:
[root@deep /]# cd /home/httpd/horde/
[root@deep horde]# sh ./install.sh
Your blank configuration files have been created, please go to
the configuration utitlity at :
your install path url/setup.php3
第二步
一旦新的Webmail IMP安裝引擎生效之後,可以用浏覽器通過這個URL:http://my-web-server/horde/setup.php3訪問。現在,你就可以用圖形安裝界面安裝和配置IMP了。
注意:「my-web-server」是你的Apache服務器的地址,「setup.php3」在「/horde」目錄下。
第三步
當使用完Webmail IMP的安裝引擎之後,因爲安全原因必須把它禁止掉。
用下面的命令禁止「setup.php3」:
[root@deep /]# cd /home/httpd/horde/
[root@deep horde]# sh ./secure.sh
I have made your configuration files, and libraries mode 0555
which is read / execute for everyone.
And the setup.php3 is mode 0000 which is no access period.
第四步
現在應該驗證一下Webmail IMP能否正常運行了。可以讓浏覽器訪問這個地址:http://my-web-server/horde/。「my-web-server」是你的Apache服務器的地址。「/horde」是Webmail IMP程序所在的目錄