Linux Webmail IMPµÄ°²×°ºÍÅäÖÃ
³ö´¦£ºÊÕ¼¯ÕûÀí¡¡ ×÷ÕߣºÇë×÷ÕßÁªÏµ ʱ¼ä£º2006-8-30 23:04:00
¡¡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/
¡¡¡¡µÚËIJ½
¡¡¡¡ÓÃÏÂÃæµÄÃüÁî°Ñ¡°/home/httpd/horde/phplib/*.ihtml¡±Îļþ¿½±´µ½Ðµġ°php¡±£¨/home/httpd/php£©Ä¿Â¼Ï£º
[root@deep /]# cp /home/httpd/horde/phplib/*.ihtml /home/httpd/php/
8.ÅäÖò¢´´½¨Webmail IMPµÄSQLÊý¾Ý¿â
¡¡¡¡ÎÒÃDZØÐëÅäÖÃÊý¾Ý¿âʹµÃ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;
¡¡¡¡µÚ¶þ²½
¡¡¡¡ÎÒÃDZØÐë¸øÓèÔËÐÐ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: barce@lines.edu
// 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
¡¡¡¡µÚËIJ½
¡¡¡¡ÖØÐÂÆô¶¯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£¬ÎÒÃDZØÐëÔÚ¡°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£©ÔÚ<IfModule mod_alias.c>ºÍ</IfModule>ÖмÓÈëÕâЩÐУº
Alias /horde/ "/home/httpd/horde/"
<Directory "/home/httpd/horde">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /imp/ "/home/httpd/horde/imp/"
<Directory "/home/httpd/horde/imp">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
¡¡¡¡µÚ¶þ²½
¡¡¡¡ÖØÐÂÆô¶¯ÈÃ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.
¡¡¡¡µÚËIJ½
¡¡¡¡ÏÖÔÚÓ¦¸ÃÑéÖ¤Ò»ÏÂWebmail IMPÄÜ·ñÕý³£ÔËÐÐÁË¡£¿ÉÒÔÈÃä¯ÀÀÆ÷·ÃÎÊÕâ¸öµØÖ·£ºhttp://my-web-server/horde/¡£¡°my-web-server¡±ÊÇÄãµÄApache·þÎñÆ÷µÄµØÖ·¡£¡°/horde¡±ÊÇWebmail IMP³ÌÐòËùÔÚµÄĿ¼