作者:kanaka ([email protected])
时间:2002.11
该文由作者kanaka最初发表在linuxsir.com上。
1 一些废话
无论你在哪一个单位,建立一台能够跑mail的服务器都是应该做的事情。我很想在debian上装一台webmail服务器。这是我头一次在GNU平台上安装和配置webmail,在这之前,我没有在其他任何GNU/Linux上面安装过任何webmail服务器。所以肯定有不妥的地方,请弟兄们多指教。另外,我有很多地方还没弄明白,在本文最后我写了一个“遗留问题”列表,请高手一定要教教我啊!呵呵。
我到google上找了一下,发现一个叫twig的软件似乎很受欢迎。也找了一篇教程叫做《利用twig架设WebMail系统》,但是很可惜,与我们在debian的安装配置过程相差甚远——这又一次体现了debian的优越之处,在debian上,似乎安装任何软件都不会让你头疼,超凡的apt是如此的聪明,我们真的要感恩,谢谢那些为了debian而默默付出的朋友们。不过本文还是借鉴了《利用twig架设WebMail系统》,出处是 linuxcenter,作者是MichaelCheng,大家感谢他。
twig这个词很有意思,它本身有柔嫩枝梢的意思,不过在这里它是 The Web Information Gateway 的缩写。twig是基于php3开发的,你可能会说:“我想用php4!”呵呵,你跟我一模一样——我也不想用php3。不过别担心,它当然可以在 php4的解释器里面跑。twig是一个基于浏览器的群件客户端。它的主要目的是提供一个IMAP客户端,不过现在它也提供了新闻群组、通讯簿、行程安排、会议、书签等功能(agenda, news-reader, bookmarks, contact list and other features)。
给初学者的提示是:本文由井号开头的,都是以root身份在debian的控制台里面输入的命令;由mysql>开头的,都是在mysql控制台里输入的命令。
2 我们需要什么
所需软件包:twig。
其他关联包(depends):php4(或者php3),php4-imap(或者php3-imap),php4-mysql(或者php4-pgsql,php3-mysql,php3-pgsql),debconf。
其他所需包(suggested):一个web服务器(我们用Apache),一个数据库服务器(我们用MySQL),一个impa服务器(我们用uw-imapd),一个邮件代理(我们用sendmail)。
要是使用其他发行版,下载和安装这些软件包可真是个麻烦事儿。不过,用debian,轻松的很!呵呵。
3 下载安装所需支持软件
好,下载并安装所需的支持软件(twig我们在后边再下载):
# apt-get install apache php4 php4-gd php4-imap php4-mysql mysql-server mysql-client debconf uw-imapd sendmail
其中,php4-gd是不需要的。这是一个动态图像库,用来画图的。这里我自己装上了,是因为我自己需要罢了,呵呵。注意,
它问你是否在启动计算机的时候就启动MySQL?当然是了!要不然每次手工启动,烦死了。
然后她会根据你选择的这些软件包,自动配置一些参数(debian真是棒极了)。
然后,问你:你想让我运行apacheconfig脚本吗?默认是No。输入Y,回车,让它替我们配置一下。配置完,它会问你:保存到配置文件吗?默认是Yes,回车就行。然后问你:重新启动Apache吗?默认是Yes,回车。
由于我选择了gd库的支持,它还会问是否把extension=gd.so写入php.ini文件(debian真是聪明啊),默认是Yes,回车。
然后她会问你,是否把extension=imap.so写入php.ini文件?默认是Yes,回车就行了。
然后她又问你,是否把extension=mysql.so写入php.ini文件?默认是Yes,回车就行了。你说debian聪明不聪明。
接下来,他问你是否要配置sendmail,输入Y,回车。然后根据你的情况进行设置——不过我全部使用的默认设置。配置完后她问你是否要启动sendmail,是。
4 配置这些支持软件
4.1 Apache配置
4.1.1 让Apache能够显示简体中文
# nano /etc/apache/httpd.conf (我非常喜欢这个叫做nano的编辑器,胜过喜欢vi)
然后在nano里面,找到AddDefaultCharset on这一行,把on该成gb2312。查找的办法很简单,按ctrl+w,输入AddDefault并回车,就找到了。保持nano的运行,先不要退出。
4.1.2 让Apache可以支持php4
找到libphp4.so所在的行(按ctrl+w,输入libphp4.so并回车),然后把这一行的第一个字符“#”去掉。保持nano的运行,先不要退出。
4.1.3 让Apache可以支持php3
找到httpd-php3所在的行(按ctrl+w,输入httpd-php3并回车),把这一行的第一个字符“#”去掉,然后把这一行的httpd-php3里面的这个3去掉(这一步很重要,因为我们没有安装php3,而是用php4来解释php3脚本)。
好,这个httpd.conf改完了。按ctrl+o并回车,存盘。然后按ctrl+x,退出。
4.1.4 重新启动Apache
# apachectl restart
4.1.5 测试Apache
写一个php3脚本,在浏览器里面测试一下:
# nano /var/www/test.php3
然后输入如下内容: <?phpinfo();?>,然后按ctrl+o并回车,存盘。然后按ctrl+x退出。到浏览器里面访问一下这个test.php3,看能否出现php的基本信息。应该没问题了。有问题的话请你到其他地方查阅一下资料。
4.2 配置php4
如果不修改php.ini,那么我们的php脚本将无法显示中文。这个问题我昨天才弄明白,在这之前他困扰了我很久,我改了httpd.conf,左改右改,怎么都不行。昨天才发现在php.ini里面有一行,定义了默认字符集,它把Apache的httpd.conf定义的默认字符集给覆盖了!
编辑/etc/php4/apache/php.ini,找到default_charset="iso-8859-1",把它前面的注释符号";"去掉,并把它改成:default_charset="gb2312":
# nano /etc/php4/apache/php.ini
然后按ctrl+w,输入default_charset并回车,就找到了。改完后,按ctrl+o并回车,存盘。然后按ctrl+x退出。
4.3 配置MySQL
主要是修改root口令。默认情况下,root在访问MySQL时是不需要口令的。这非常危险!为了安全起见,我们需要把口令修改掉。你可以先看看MySQL当前是不是真的没有口令:
# mysqladmin version
这条命令将显示MySQL的一些版本信息。如果这些信息显示了,则说明口令是空的。好,使用下面的命令修改口令:
# mysqladmin password xxxxxxx
其中xxxxxxx当然就是你的新口令了。现在你再运行mysqladmin version,它会报告错误,说连接服务器失败,访问被拒绝。这以后,你需要用下面的命令格式来访问MySQL了:
# mysqladmin -u root -p version
这样,它会问你要口令的。
5 安装和配置twig
上面做了这么多,都是铺垫,呵呵,现在才是言归正传呢,呵呵。
5.1 安装twig
# apt-get install twig
它会弹出一个窗口,好像是说,你需要进行一些配置,不过这个deb包已经用MySQL数据库为你配置好了,而且twig所需的MySQL数据库已经建立了。但是我发现事实并非如此——并没有什么数据库建立。你可以通过下面的办法查看系统数据库:
# mysql -u root -p
mysql> show databases;
我发现只有MySQL自己的两个数据库,一个是mysql,一个是test。为此,我需要自己动手。
5.2 配置twig
5.2.1 先看看twig的文档
# cd /usr/share/doc/twig
# gzip -d INSTALL.gz
# more INSTALL (先看一看这个说明,或许会有用)
# gzip -d Setup-Apache-PHP-IMAP-TWIG-MySQL.txt.gz
# more Setup-Apache-PHP-IMAP-TWIG-MySQL.txt (再看看这个,肯定有用)
5.2.2 修改一下/etc/twig/config.inc.php3
我主要改了下面几项:
$config["fromdomain"] = "xiyuan.net"; (修改成你这台 twig 的域名)
$config["language"] = "chinesegb"; (将默认语言改成简体中文,chinesebig5为繁体中文)
$config["session_handler"] = "php4session"; (php4以上可将cookie改为session)
$config["login_handler"] = "php4session";
$config["imap_port"] = "143/notls"; (加上/notls,以免php不支持tls,无法连接imap)
5.2.3 修改/etc/twig/dbconfig.inc.php3
$dbconfig["sqlusername"]="root"; (修改 mysql 的使用者帐号)
$dbconfig["sqlpassword"]="你的密码"; (修改 mysql 的使用者密码)
5.2.4 为twig建立数据库
# mysql -u root -p mysql
mysql> create database twig; (建立名字为twig的数据库)
mysql> grant all privileges on *.* to root@localhost identified by 'xxxx'; (向MySQL增加新用户权限,xxxx是用户的口令)
mysql> quit
# cd /usr/share/twig/setup
# gzip -d twig.table.mysql.gz
# mysql -u root -p twig
mysql> source /usr/share/twig/setup/twig.table.mysql; (执行SQL脚本,创建表)
mysql> quit
还是在这个目录下面:
# gzip -d advangced.acl.population.gz
# nano advangced.acl.population (这个SQL脚本包含了控制列表)
然后修改第二行,INSERT INTO twig_acl_groups VALUES('456744','TWIGAdministrators','改成你的管理员名字'); 我用的是kanaka,这是我在我的debian上面的普通账号,我可以用这个帐号专门管理这个webmail系统。然后保存退出。
然后把这个advangced.acl.population也导入到数据库里面:
# mysql -u root -p twig < advanced.acl.population (执行SQL脚本,向表中插入控制列表数据)
6 测试twig
现在应该可以登录了。在登录之前,先测试一下。在浏览器里面打开:
http://localhost/twig/test.php3
这里面有IMAP的两项测试和MySQL的一项测试。其中IMAP的第二项测试,你输入一个debian上面的普通用户试一下。我一开始老是遇到下面的错误报告:
Couldn't open stream {localhost:143}INBOX in /var/www/html/twig/lib/mail/php-imap.inc.php3 76
其实问题没出在php-imap.inc.php3上,问题出在/etc/twig/config.inc.php3上,上面我们在5.2.2里面已经作了调整,应该不会出现这个问题了。
7 登录twig
在浏览器里面打开:
http://localhost/twig/index.php3
然后用一个debian的普通用户登录试试。呵呵,棒极了,简体中文的画面。
8 系统管理
在5.2.4里面,我们把kanaka设成了管理员。要想在twig里面使用“系统管理”功能,还必须进行以下设置:
# mkdir /usr/share/twig/features/admin/users
# cd /usr/share/twig/features/admin/users
# touch kanaka.admin
不过我发现,在这个目录下面,你给任何一个普通用户设立一个 username.admin,那么他都会有权限使用“系统管理”功能。看来我们在5.2.4里面设置的管理员可能有更高权限,不过我没弄明白。还请高手指教。
9 遗留问题
弟兄们,你很可能在看我的文章的时候直撇嘴,呵呵,见笑见笑,毕竟是头一次捣鼓IMAP、Sendmail、twig这些玩意儿。
我的问题不少。
9.1 我试着用twig发了一封邮件给本机上的其他账户,可是他们都没收到。没有任何报错信息。
9.2 我试着用twig发了一封邮件给互联网上的[email protected],也没收到。同样没有任何报错信息。
我的网络环境描述:我在公司的防火墙里面。公司有NAT可以供我们上互联网,只要在他们的服务器上注册了我的IP地址,我就可以ping到互联网,否则只能ping通内部。我的debian用的ip地址是注册了的,可以上互联网。
是不是我的sendmail有问题啊!请您赐教,让我成长!对sendmail我不太懂,所以sendmail部分我没写。大家可以来完善这篇文章,帮着写下去,使他成为一篇完整的教程!