利用twig架设WebMail系统

12/3/2006来源:其它邮件服务器软件人气:7072

twig 是 The Web Information Gateway 的缩写,是一套利用 php 开发而成的软件,它可以让你轻松地架设一个网络邮局 (WebMail)。使用者只需透过浏览器,即可完成邮件的收发动作。除此之外,它还整合了新闻群组、通讯簿、行程安排、会议、书签......等功能,是一套多功能的 WebMail 软件。

  1、系统需求:

  TWIG 需要以下的套件:

  • 支持php的网页服务器( 建议使用 Apache )
  • PHP 3.0.11 以上版本

      此外若能配合下列套件,将能发挥 twig 更佳的特性:

  • MySQL 或 pgsql
  • LDAP 服务器
  • IMAP 服务器

      笔者建议以 Apache+PHP+MySQL+IMAP 的组合来架设,至于LDAP服务器可依自行需要再加以搭配。

      笔者所采用的套件如下:

  • RedHat 7.2
  • Apache 1.3.22
  • PHP 4.0.6
  • MySQL 3.23.41
  • twig 2.7.5

      2、下载软件:

      首先请先检查系统中是否已经安装了 Apache+PHP+MySQL+IMAP,你可以透过下列指令检查是否已经安装:

      # rpm -qa | grep -i apache
      # rpm -qa | grep -i php
      # rpm -qa | grep -i mysql
      # rpm -qa | grep -i imap

      若发现有未安装的套件,可利用你的linux安装光盘片来安装。以 RedHat 7.2 为例,我们可以在光盘片的 RedHatRPMS 目录中找到许多的 rpm 套件,并利用下列指令来安装:

      # rmp -ivh

      或者你想升级至较新的版本,可至下列网址下载最新的版本:
  • Apache:http://www.apache.org
  • PHP:http://www.php.net
  • MySQL:http://www.mysql.com

      此外最重要的是要下载 twig,我们可以至 http://twig.screwdriver.net/download.php3 下载最新的 twig 2.7.5版。当然啦!以上所需的软件都可在 LinuxCenter 软件数据库中找到。
  • 3、安装步骤:

      笔者假设你的 Linux 系统中已经安装了 Apache+PHP+MySQL+IMAP,而且 twig 也已经下载至你的家目录中。现在就开始进行安装的动作吧!

      1. 将 twig 从家目录复制到 /usr/local 

      # cp $HOME/twig-2.7.5.tar.gz /usr/local

      2.解压缩档 twig-2.7.5.tar.gz 

      # cd /usr/local
      # tar zxvf twig-2.7.5.tar.gz

      3.执行 twig-install,将 twig 安装至 /var/www/html/ 

      # cd /usr/local/twig-2.7.5
      # ./twig-install /var/www/html/twig

      4. 建立数据库

      # mysqladmin -u root -p create twig
      # cd /usr/local/twig-2.7.5/setup
      # mysql -u root -p twig < twig.table.mysql

      5. 修改参数设定 

      # cd /var/www/html/twig/config
      # vi config.inc.php3
      $config["fromdomain"] = "你的网域名称"; //修改为你这台 twig 主机的网域名称
      $config["language"] = "chinesebig5"; //将语系改成繁体中文
      $config["imap_server"] = "YourImapServerDomain"; //指定你的IMAP服务器位置,若是在同一台机器只要用"localhost"即可
      $config["smtp_server"] = "YourSmtpServerDomain"; //指定你的SMTP服务器位置,若是在同一台机器只要用"localhost"即可
      $config["session_handler"] = "php4session"; //php 4以上系统可将 cookie 改为 session
      $config["login_handler"] = "php4session"; //php 4以上系统可将 cookie 改为 session

      # vi dbconfig.inc.php3

      $dbconfig["sqlusername"]="root"; //修改 mysql 的使用者帐号
      $dbconfig["sqlpassWord"]="你的密码"; //修改 mysql 的使用者密码
      $dbconfig["defaultdb"]="twig"; //修改预设数据库名称
      $dbconfig["sqltype"]="mysql"; //修改使用数据库

     6. 修改 advanced.acl.population 以设定管理者帐号

      # cd /usr/local/twig-2.7.5/setup
      # vi advanced.acl.population

      修改 INSERT INTO twig acl groups VALUES('456744','TWIGAdministrators','管理者帐号'); //将"管理者帐号"改成你的打算用来作管理的帐号

      # mysql -u root -p twig < advanced.acl.population

      7. 网页测试 

      使用浏览器输入网址进行测试(如:http://your.domain.here/twig/test.php3)这里是用来测试 IMAP 与 Database 的,共有三个部份,请一一加以测试是否为 work。

      8.使用twig 

      如果网页测试的部份都没问题了,请使用浏览器输入网址(如:http://your.domain.here/twig/),就可以看到下面的画面了。

    9. 使用者登入

      利用一组系统中已存在的帐号登入,你就可以看到下列的画面。twig 预设会有 主页 | 邮件 | 新闻 | 通讯簿 | 行程 | 会议 | 工作 | 笔记 | 书签 | 模块 | 说明 | 注销 等选项,你可以一一加以点选使用。个人环境的设定可在"模块"选项中进行修改。

      4、管理者接口

      我们已经在第六个步骤中设定了管理者的帐号了,接着我们还必须手动建立一个文件才能使用管理者的接口。请在 features/admin 目录中建立一个叫 users 的目录,并在此目录中建立一个名为 .admin 的文件。例如 michael 是 twig 管理员的帐号,除了必须在第六步骤中将 advanced.acl.population 文件中的管理员修改为 michael,还要在 features/admin/users 目录下建立一个 michael.admin 的文件。

      # cd /var/www/html/twig/features/admin
      # mkdir users
      # cd users
      # touch michael.admin

      接下来让我们用 michael 这个身份登入看看:

      有没有发现在"选项"中已多了一个"系统管理"的项目,点选进去看看吧。在这里你可以针对组别或个人使用者修改相关的设定值,是不是很方便呢?

    5、设定档介绍

      你可以藉由编辑 config 目录下的设定文件来对 TWIG 作设定上的调整:

      config.inc.php3 - 整体环境设定的设定档
      announcements.inc.php3 - 主页中会显示在"公布"字段的文件
      dbconfig.inc.php3 - 数据库的设定文件
      images.inc.php3 - 使用图片的清单
      login.footer.inc.php3 - 登入画面的文件尾设定文件
      login.form.php3 - 登入画面的主体设定文件
      login.header.inc.php3 - 登入画面的文件头设定文件
      mainmenu.inc.php3 - 显示在主页的清单项目
      defaults.inc.php3 - 使用者及程序偏好设定的默认值文件
      header.inc.php3 - 每一页的文件头设定 (本文件位于 features 目录中)
      footer.inc.php3 - 每一页的文件尾设定 (本文件位于 features 目录中)

      上述文件我们已经看过 config.inc.php3 及 dbconfig.inc.php3 这两个文件了,若有其它的需要你也可以藉由修改文件中的选项来改变设定值。接下来我们再来看看其它比较实用的例子。

      比方说你想让使用者登入后看到管理者所规定或宣布的一些事项,你可以编辑 announcements.inc.php3 这个文件,让使用者在主页中的"公布"字段中看到这些讯息。

      如果你觉得登入画面的英文讯息很碍眼,你也可以去修改 login.form.php3 这个文件将登入画面改成中文的画面。

    当然啦!如果你想将预设的 Logo 改成自已网站上的 Logo,你可以将自已作好的 Logo 图片放置于 images 目录底下,并将 images.inc.php3 文件中的「 $img["logo"] = $config["imgdir"] . "twig.gif"; 」这个变量的 "twig.gif" 值改为自已图片的文件名。

      怎么样?不错吧!

      6、TWIG的内部安全机制

      TWIG 提供了两个不同的安全机制:Basic 与 Advanced。这两种机制在安全上有所不同,两者只可择其一,不能共存。你可以藉由修改 config.inc.php3 设定档中的 $config["security"] 变量来改变它们。以下简单介绍这两种机制:

      Basic

      basic 机制与 TWIG 1 时的情况雷同,你可以利用 $disabled[] 来关闭一些使用者的特性项目。

      Advanced

      advanced 机制与 basic 截然不同,它可以使用 access Control List (ACL) 来针对单一使用者或群组作设定特性的激活或关闭。此外,它还需要下列的设定:

  • twig所连结的数据库中必须要有 twig_acls 与 twig_acl_groups 两个资料表
  • 编辑 setup 目录中的 advanced.acl.population 文件,将 换成你真正的 twig 系统管理者
  • 将以上的文件加到你的数据库中

      在 setup 目录中的 advanced.acl.population 文件是用来设定 ACL 数据库的,这项设定可以让 TWIGAdministrators 群组拥有所有的权限,而让 Everyone 群组拥有预设的权限,系统刚安装好时所有的使用者都是属于 Everyone 群组。当你设定好后,你可以试着用管理者的帐号登入,此时你会发现在主页中多了一个系统管理的选项,你可以在此调整你的系统设定。不过要注意的是,advanced 机制除了 $disabled["global_autoaccounts"] 这个变量之外,并不支持任何的 $disabled[] 变量。

      看昏头了吗?不用担心!这些我们之前都已经设定好了。如果你想要使用 advanced 机制,只要将 config.inc.php3 设定档中的 $config["security"] 变量设定为 "advanced" 就好了!

      7、其它安全性的考虑

      以下针对几种安全上的议题简单地作一个介绍。

      1. 首先你必须确定你的设定档不会轻易地遭人存取。除了系统的权限之外,你最好在你的 config 目录底下加一个 .htaccess 檔。为了确保你的设定档是安全的,请试着利用浏览器取存你的 config.inc.php3 文件:
    http:////config/config.inc.php3

      2. 如果你的系统是安全的,你应该会在一个弹出的安全对话窗口后收到一个取存拒绝的讯息。如果没有,请参考网页服务器的文件来设定 .htaccess 文件。

      3. 另一个安全上的顾虑是在 TWIG 与 mail/database 服务器之间的联机问题。一个安全的系统会将它们全部放在同一台服务器上,否则你的密码可能会经由网络上传递出去。此外,关于帐号/密码之间的传递,建议你使用 SSL 加密联机。

      MySQL 在刚安装好时,数据库的使用者并没有设定密码,包括 root 也一样。所以如果希望你的系统能安全地运作,别忘了帮 root 设定一组密码。此外,本文中的范例使用 root 的身份联机是由于教学方便考量,建议在数据库联机部份,尽量使用一般使用者的身份来存取 MySQL。

      到目前的设定应该都没问题了,现在就试着登入 twig,寄封信给你的好朋友吧!