作者:readme 概述 Webmail IMP允許用基於Web的方式訪問IMAP/POP3服務器,而且提供了地址簿、LDAP目錄查詢、支持發送和接收附件,還有很多在常用的桌面電子郵件客戶程序中可以找的功能。如果你已經安裝了支持SSL的Apache服務器,就可以通過SSL安全地發送和讀取郵件。在這篇文章中,我們把Webmail IMP配置成使用PostgreSQL並使用IMAP連接。Webmail還可以支持很多其它的數據庫,如果你願意的話,可以使用mysql、Oracle、Sybase以及其它SQL數據庫服務器。當然,你也可以選擇用POP3而不用IMAP。 注意事項 下面所有的命令都是Unix兼容的命令。 源路徑都為“/var/tmp”(當然在實際情況中也可以用其它路徑)。 安裝在RedHat Linux 6.1和6.2下測試通過。 要用“root”用戶進行安裝。 Horde的版本是1.2.0。 Webmail IMP的版本是2.2.0。 PHPLib的版本是7.2b。 軟件包的來源 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 安裝前的准備工作 l 先要安裝Apache服務器 l 安裝PHP4 l 如果想為Webmail IMP加上SQL的支持,還要安裝PostgreSQL或其它數據庫服務器 l 安裝IMAP/POP服務器 l PHPLIB 7.2或更高版本 安裝Webmail IMP所需的PHPLib 為了在Linux服務器上運行Webmail IMP,必須安裝PHPLib(PHP開發者用來開發Web應用程序的工具包)。按照下面的步驟安裝PHPLib: 軟件包 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”目錄刪掉。 編譯 按照下面的步驟,在服務器上安裝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/ 配置並創建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 < pgsql_create.sql // IMP database creation script for postgreSQL // Author:
[email protected] // Date: Aug-29-1998 // Notes: replace "nobody" with yours httpd username // Run using: psql template1 < pgsql_create.sql 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 \\n", $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. } 注意:不要忘了去掉Webma