LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 7287|回复: 11

在debian上用twig实现web邮件系统(请大家一起来补充这篇文章啊)

[复制链接]
发表于 2002-11-2 17:26:37 | 显示全部楼层 |阅读模式
作者:kanaka (kanaka@yeah.net)
时间:2002.11


在debian上用twig实现web邮件系统(请大家补充)

     该文由作者kanaka最初发表在linuxsir.cn上。

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发了一封邮件给互联网上的kanaka@yeah.net,也没收到。同样没有任何报错信息。

  我的网络环境描述:我在公司的防火墙里面。公司有NAT可以供我们上互联网,只要在他们的服务器上注册了我的IP地址,我就可以ping到互联网,否则只能ping通内部。我的debian用的ip地址是注册了的,可以上互联网。

  是不是我的sendmail有问题啊!请您赐教,让我成长!对sendmail我不太懂,所以sendmail部分我没写。大家可以来完善这篇文章,帮着写下去,使他成为一篇完整的教程!

  谢谢大家!
发表于 2002-11-3 10:07:19 | 显示全部楼层

谢谢kanaka为大家开路!

不知遗留问题解决了没有?
我也想试试,只是最近太忙了.....
发表于 2002-11-3 10:27:44 | 显示全部楼层
好文章,辛苦了。
 楼主| 发表于 2002-11-4 08:16:20 | 显示全部楼层

谢谢大家的鼓励!

可是有没有高手来帮大家完善这篇文章啊!

遗留问题,我还没有解决啊!
 楼主| 发表于 2002-11-4 13:12:06 | 显示全部楼层

难道没有人玩过sendmail?

请不要吝啬嘛!告诉大家怎么配置嘛!你不告诉大家大家怎么知道嘛!
发表于 2002-11-4 13:42:41 | 显示全部楼层
sendmail很不安全,有个朋友曾告诉我,他可以20分钟进入一个sendmail系统,用qmail吧
 楼主| 发表于 2002-11-4 13:53:14 | 显示全部楼层

好!我去找一下Qmail的资料!

谢谢!
发表于 2002-11-4 13:59:36 | 显示全部楼层

我像你因该是sendmail有问题

我以前配置过sendmail,我想红帽子和debian在这方面应该差别不大吧。
可能是你没有把你的地址信息给加上去吧!!
你搜索一下下面的东西,然后试着将*.*.*.*改成你自己的地址看看!!
如果不行我再看看其他的原因!!

O DaemonPortOptions=Port=smtp,Addr=*.*.*.*, Name=MTA
 楼主| 发表于 2002-11-4 15:49:43 | 显示全部楼层

哦?我看看sendmail。

我以前没捣鼓过sendmail和imap,有点懵。
 楼主| 发表于 2002-11-4 16:08:23 | 显示全部楼层

我的sendmail没有问题!

弟兄们!我刚才测试过了,我的sendmail没有问题。

我用php写一个脚本,让它发送一封邮件到我的两个信箱,我都收到了!

我写的脚本是这样的:
名字:sendtest.php
内容:
<?
mail("kanaka@yeah.net,leng@haier.com","来自debian的邮件!","内容空白");
?>

那么,问题出在哪里呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表