FREEBSD5.4的系统安装与服务器配置手册下篇

来源:岁月联盟 编辑:zhu 时间:2008-01-19
FREEBSD5.4的系统安装与服务器配置手册下篇内容简介:【FreeBSD教程】4.1安装CVSUP 可以通过网络直接安装cvsup,当然前提是配置好网络环境 #pkg_add -r cvsup-without-gui #cd /usr/share/excemples/cvsup #ee standard-supfile 将*host =后面的替换   【FreeBSD教程】4.1安装CVSUP

  可以通过网络直接安装cvsup,当然前提是配置好网络环境
  #pkg_add -r cvsup-without-gui
  #cd /usr/share/excemples/cvsup
  #ee standard-supfile
  将*host =后面的替换成cvsup3.freebsdchina.org
  #ee ports-supfile
  将*host =后面的替换成cvsup3.freebsdchina.org
  重新启动计算机
  #reboot

  4.2升级原代码

  #cd /usr/share/examples/cvsup/
  #cvsup -g -L2 standard-supfile
  生级PORTS树
  #cvsup -g -L2 ports-supfile
  还有一些CVSUP的安装方法,附录中收集了一些,但笔者懒人一个,没有去验证,希望读者能给予验证,并告诉笔者,关于CVSUP的具体设置,可以参考手册,或者大全,讲的还是比较具体的

  4.3编译内核

  4.3.1重新编译核心的意义

  核心 (kernel) 顾名思义是整个操作系统的核心,系统一开机即加载核心,它控制了整个系统的运作,包含和硬件沟通、系统资源配置、内存治理、档案系统治理等等。传统上,我们将所有支持的硬件、档案系统等全部放到核心中,每次有新增的硬件或功能都必须重新编译核心,并重新启动计算机。但随着支持的功能越来越多,系统核心变得越来越肥大,而重新开机以加载新加入的功能也不符合现代操作系统的需求。

  目前 FreeBSD 许多可以独立出来的功能都能做成所谓的核心模块 (kernel module),当系统有需要使用该模块时,才将它加载核心中。这么做的好处就是可以让我们更快加入硬件驱动程序,更方便地加入我们想要的功能。所有可以独立出来的模块都可以编译放入核心中,然而,使用动态加载的方式和直接编入核心中各有优缺,直接编入核心中可以减少加载的时间,而动态加载可以让我们在不需要用到该功能时立即从系统中移除其所占用的资源。以 DVD 所使用的档案系统格式为例,我们平常可能很少用到 DVD,所以并未将它加入核心中。但当需要时,我们可以 kldload 这支程序来动态加载该模块,使用完毕后,也可以立即使用 kldunload 将它从核心中移除,在使用上方便许多。

  我们刚安装完 FreeBSD 时,所使用的核心是一般性的核心,称之为 GENERIC kernel。为了要支持常见的软硬件,因此 GENERIC 核心中可能包含了许多我们用不到的驱动程序,也可能不支持一些非凡的硬件。例如,单单网络卡驱动程序就有数十种被加入 GERERIC 核心中,其实我们只需要使用其中一种。在硬件方面,核心中包含了太多的东西不仅会占去内存的空间,不同程序间也有可能造成冲突。

  在软件方面,假如要启动 FreeBSD 的防火墙功能,或是使用 ADSL 联机 (4.4 以前的版本),都需要重新将支持这些功能的参数加到核心中。另外,假如要改变系统的效率,你必须修改核心中的参数,例如增加同时上线的人数、或最大同时开启的档案数等。当然,有的功能在 FreeBSD 中可以经由 sysctl 这个指令来修改,而毋需修改核心,但大部份的功能是一定要修改核心的。过于肥大的核心,开机需要的时间较长,所以我们可以将不必要的设定移除,以加速开机速度。

  除此之外,我们常看到 FreeBSD 总部发布安全性漏洞修补程序,在完成原始码的修补之后,大多数的修补都必须重新编译核心。所以我们还是要来了解一下如何为自己量身订做一个新的核心。

  请放心,编译核心并不难,其实只有几个步骤,只要依下列的方法去做,相信您对于系统核心将有更深入的了解。

这里使用编译的方式安装Perl,可以从http://www.perl.com获得perl的最新版本,名字为stable.tar.gz

  #tar -zxvf stable.tar.gz
  # cd perl-5.8.7/
  按默认的方式安装Perl
  #sh Configure –de
  这里会出现很多提示,直接按回车就可以了!
  #make
  这里花费的时间较长,可要有点耐心(不过别向我一样机子死了还在那里傻傻的等待,后来发现是电源风扇坏了导致死机!怎一个郁闷了得啊!希望您不会碰到我这样的问题)
  #make test
  #make install
  #reboot
  登陆系统后运行perl –v查看Perl版本信息
  #perl –v
  

5.2安装MySQL4.0.x

为了与系统的软件系统区分开,这里将所有我们手动编译软件安装在/usr/server中。

#tar -zxvf mysql-4.0.26.tar.gz
  #cd mysql-4.0.26
  #./configure
  --prefix=/usr/server/mysql
  --localstatedir=/usr/server/mysql/db
  --with-unix-socket-path=/tmp/mysql.sock
  --with-mysqld-user=mysql
  --with-charset=gb2312
  --with-extra-charsets=all
  # make
  # make install
  接下来安装mysql数据库
  # scripts/mysql_install_db
  # pw groupadd mysql
  # pw useradd mysql -g mysql
  # chown -R mysql:mysql /usr/server/mysql/db
  最后需要设置mysql的root口令
  # /usr/server/mysql/bin/mysqld_safe &
  # /usr/server/mysql/bin/mysqladmin -uroot password '密码'
  检查密码修改是否正确
  #/usr/server/mysql/bin/mysql -u root –p
  输入密码
  提示符为假如有mysql>则表示登陆成功
  在此输入,回车继续
  mysql>show databases;
  在下兔可以看到MYSQL中的两个数据库

  输入
  mysql>quit;
  回车退出
  此时您的MSYQL安装完毕
  口令设置完成后,暂时关闭mysql服务:
  # kill %1

5.3安装Cyrus-sasl2

因为要查询MySQL数据库,所以我们需要在编译cyrus-sasl2时加上对MySQL的支持,同时我们打开了对plain和login两种验证方式的支持:

  $ tar -zxvf cyrus-sasl-2.1.21.tar.gz
  $ cd cyrus-sasl-2.1.21
  $ ./configure --disable-anon -enable-plain --enable-login --enable-sql --with-mysql=/usr/server/mysql --with-mysql-includes=/usr/server/mysql/include/mysql --with-mysql-libs=/usr/server/mysql/lib/mysql
  $ make
  # make install
  按照sasl的安装说明,需要建立一个symblink:
  # ln -s /usr/local/lib/sasl2 /usr/lib/sasl2

5.4安装Postfix2.1.x

首先,按照postfix的安装说明,建立postfix、postdrop组和postfix用户:

  # pw groupadd postfix
  # pw groupadd postdrop
  # pw useradd postfix -g postfix -G postdrop

用户和组建立好后,我们就可以开始编译Postfix了:

  $ tar -zxvf postfix-2.2.5.tar.gz
  $ cd postfix-2.2.5
  $ make tidy
  $ make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/server/mysql/include/mysql -DUSE_SASL_AUTH -I/usr/local/include/sasl' 'AUXLIBS=-L/usr/server/mysql/lib/mysql -lmysqlclient -lm -lz -L/usr
/local/lib -lsasl2'
  $ make

因为我们的mysql不是安装在默认目录中的,所以需要告诉postfix应该到哪里去找libmysqlclient.so.12,使用ldconfig就可以达到这个目的:

  # ldconfig -m /usr/server/mysql/lib/mysql
  # make install

执行make install这里会出现很多问题,但postfix已经为我们设置好了默认的答案,直接使用这些答案就可以使postfix正常工作了,所以我们只要直接按回车就可以了。

到这里,支持mysql和sasl认证的postfix就已经安装成功了。

5.5安装Courier-imap

这里要进入普通用户身份才可以安装

  $ tar -jxvf courier-imap-3.0.7.tar.bz2
  $ cd courier-imap-3.0.7

因为courier-imap会使用mysql_config来取得一些编译参数(include、libs、cflags、socket等),但我们是将mysql安装在非/usr/server中,所以默认的PATH就不起作用,需要我们来使courier-imap能够搜索到mysql_config

  $ export PATH="$PATH:/usr/server/mysql/bin"
  $ ./configure --prefix=/usr/server/courier-imap --with-authmysql --enable-unicode
  $ make

此时进入ROOT身份执行make install

  # make install

5.6建立用户数据表结构

这里,我们直接使用postfixadmin-2.2.5的表结构,现在我们来解开postfixadmin:

$ tar -zxvf ?postfixadmin-2[1].1.0.tgz
  $ cd postfixadmin-2.1.0/

将表结构导入到mysql前需要启动MYSQL:

$/usr/server/mysql/bin/mysqld_safe &
  $ /usr/server/mysql/bin/mysql -u root -p < DATABASE_MYSQL.TXT

5.7配置postfix

首先需要更改/etc/postfix/main.cf中的一些基本参数,请按照自己的实际情况修改,本例以域名mgpc.com.cn为例:

#ee /etc/postfix/main.cf
  myhostname = mail.mgpc.com.cn
  mydomain = mgpc.com.cn
  myorigin = $mydomain
  mydestination = $myhostname, localhost.$mydomain, localhost  (这里没有使用$mydomain是因为我们将使用virtualhost)
  inet_interfaces = all

在设置好以上基本参数后就需要设置支持virtualhost了,在本例中我们将所有的邮件全部存放在/var/mailbox中,同时因为iGENUS要在用户邮箱目录(Maildir)中建立文件和存放信息,所以就要求web服务器的用户要对用户邮箱目录有写的权限,所以我们在这里就将用户邮箱的uid和gid设置成web服务器的uid和gid以确保iGENUS正常工作,本例中web服务器的uid和gid都为80。在/etc/postfix/main.cf中加入:

virtual_mailbox_domains = mysql:/etc/postfix/mysql/mysql_mailbox_domains.cf
  virtual_mailbox_base = /var/mailbox/
  virtual_mailbox_maps = mysql:/etc/postfix/mysql/mysql_mailbox_maps.cf
  virtual_minimum_uid = 80
  virtual_uid_maps = static:80
  virtual_gid_maps = static:80
  virtual_alias_maps = mysql:/etc/postfix/mysql/mysql_alias_maps.cf

虚拟域名支持的配置比较简单,根据字意就可以看明白,不过有一点需要注重,/var/mailbox/最后的"/"字符不能省略。

在设置好虚拟域名的基本参数后,就需要设置每个MySQL查询配置文件了,我们将所有的MySQL查询配置文件统一存放在/etc/postfix/mysql中,每个查询配置文件的内容分别如下:

在/etc/postfix/建立mysql目录
  #mkdir /etc/postfix/mysql
  #ee /etc/postfix/mysql/mysql_mailbox_domains.cf
  加入
  user = postfix
  password = postfix
  dbname = postfix

table = domain
  select_field = domain
  where_field = domain
  additional_conditions = and active='1'

加入
  #ee /etc/postfix/mysql/mysql_mailbox_maps.cf
  user = postfix
  password = postfix
  dbname = postfix

table = mailbox
  select_field = maildir
  where_field = username
  additional_conditions = and active='1'

加入
  #ee /etc/postfix/mysql/mysql_alias_maps.cf
  user = postfix
  password = postfix
  dbname = postfix

table = alias
  select_field = goto
  where_field = address
  additional_conditions = and active='1'

接下来开启sasl认证(为了与旧的MUA兼容所以加入broken_sasl_auth_clients的支持),在/etc/postfix/main.cf中加入:
  #ee /etc/postfix/main.cf
  smtpd_sasl_auth_enable = yes
  smtpd_sasl_application_name = smtpd
  broken_sasl_auth_clients = yes
  smtpd_sasl_local_domain = mgpc.com.cn
  smtpd_recipient_restrictions= permit_sasl_authenticated permit_auth_destination reject

接下来设置alias_maps,在/etc/postfix/main.cf中加入:
  alias_maps = hash:/etc/postfix/aliases
  现在用postalias生成aliases.db
  # cd /etc/postfix
  # postalias aliases

最后就是建立/var/mailbox目录:
  # mkdir /var/mailbox
  # chown -R www:www /var/mailbox

5.8配置sasl认证

在配置postfix的时候,我们设置了postfix使用的sasl配置文件为smtpd,所以现在我们需要配置sasl让它知道怎么从MySQL中读取认证信息:

# ee /usr/local/lib/sasl2/smtpd.conf在其中加入
  pwcheck_method: auxprop
  mech_list: plain login
  auxprop_plugin: sql
  sql_engine: mysql
  sql_hostnames: localhost
  sql_user: postfix
  sql_passwd: postfix
  sql_database: postfix
  sql_select: SELECT password FROM mailbox WHERE username='%u@%r' and domain='%r' and active='1'

上面的选项中根本字意就可以了解它的意思,其中sql_select中的%u表示是用户名,%r表示是realm,通常为用户的域名(假如用户名中没有包含域名,则默认为服务器的域名),因为postfixadmin生成的用户名是user@domain.ltd的形式,而非标准的user形式,所以我们需要设置WHERE语句为username='%u$%r'即'用户名@域名'。

5.9配置courier-imap

要让courier-imap能够正确的读取MySQL中的认证信息,就需要配置authmysql的配置文件/usr/server/courier-imap/etc/authmysqlrc,本例中其内容如下:

# cd /usr/server/courier-imap/etc/
  # cp /usr/server/courier-imap/etc/authmysqlrc.dist /usr/server/courier-imap/etc/authmysqlrc
  # ee authmysqlrc
  MYSQL_SERVER localhost
  MYSQL_SOCKET /tmp/mysql.sock
  MYSQL_USERNAME postfix
  MYSQL_PASSWORD postfix
  MYSQL_DATABASE postfix
  MYSQL_USER_TABLE mailbox
  MYSQL_LOGIN_FIELD username
  MYSQL_CLEAR_PWFIELD password
  MYSQL_UID_FIELD '80'
  MYSQL_GID_FIELD '80'
  MYSQL_HOME_FIELD '/var/mailbox/'
  MYSQL_MAILDIR_FIELD maildir
  MYSQL_NAME_FIELD name
  MYSQL_QUOTA_FIELD quota
  MYSQL_WHERE_CLAUSE active='1'
  同postfix中的配置一样,/var/mailbox/最后的"/"字符不能省略。

注释掉MYSQL_CRYPT_PWFIELD

接下来配置authdaemonrc:
  # cp /usr/server/courier-imap/etc/authdaemonrc.dist /usr/server/courier-imap/etc/authdaemonrc

因为我们这里只使用了authmysql模块,所以我们可以把其它验证模块去掉,编辑authdaemonrc文件,将其中的:

authmodulelist="authcustom authcram authuserdb authmysql authpam"

改成:

authmodulelist="authmysql"

最后就是配置pop3d和imapd了,这里我们直接使用其默认设置:

# cp /usr/server/courier-imap/etc/pop3d.dist /usr/server/courier-imap/etc/pop3d
  # cp /usr/server/courier-imap/etc/pop3d-ssl.dist /usr/server/courier-imap/etc/pop3d-ssl
  # cp /usr/server/courier-imap/etc/imapd.dist /usr/server/courier-imap/etc/imapd
  # cp /usr/server/courier-imap/etc/imapd-ssl.dist /usr/server/courier-imap/etc/imapd-ssl

5.10测试系统

按以下步骤启动服务

启动MySQL

# /usr/server/mysql/share/mysql/mysql.server start

为了确保postfix以及以后的进程能够正确的搜索到libmysqlclient,在这里将mysql的lib设置到ldconfig的搜索路径中:
  # ldconfig -m /usr/server/mysql/lib/mysql

启动Postfix
  # /usr/sbin/postfix start

启动Courier-imap
  # /usr/server/courier-imap/libexec/authlib/authdaemond start
  # /usr/server/courier-imap/libexec/pop3d.rc start
  # /usr/server/courier-imap/libexec/imapd.rc start

首先建立一个测试用户:
  $ /usr/server/mysql/bin/mysql -upostfix -p
  mysql> use postfix;
  mysql> insert into domain(domain,active) values('mgpc.com.cn','1');
  mysql> insert into mailbox(username,password,name,maildir,domain,active) values('daifubing@mgpc.com.cn','123456','TESTER','mgpc.com.cn/daifubing/Maildir/','mgpc.com.cn','1');
  mysql> quit;

测试postfix:
  $ echo "hello world" | mail daifubing@mgpc.com.cn

$ ls -al /var/mailbox
  drwx------ 3 www www 512 Oct 16 23:15 mgpc.com.cn
  $ ls -al /var/mailbox/mgpc.com.cn
  drwx------ 3 www www 512 Oct 16 23:15 .
  drwxr-xr-x 7 www www 512 Oct 16 23:24 ..
  drwx------ 3 www www 512 Oct 16 23:15 test
  $ ls -al /var/mailbox/mgpc.com.cn/daifubing
  drwx------ 3 www www 512 Oct 16 23:15 .
  drwx------ 3 www www 512 Oct 16 23:15 ..
  drwx------ 5 www www 512 Oct 16 23:15 Maildir
  $ ls -al /var/mailbox/mgpc.com.cn/daifubing/Maildir
  drwx------ 5 www www 512 Oct 16 23:15 .
  drwx------ 3 www www 512 Oct 16 23:15 ..
  drwx------ 2 www www 512 Oct 16 23:15 cur
  drwx------ 2 www www 512 Oct 16 23:18 new
  drwx------ 2 www www 512 Oct 16 23:18 tmp

上面ls反回的结果可以看到,一个名为mgpc.com.cn的目录已经被postfix建立,同时可以看到目录结构为/var/mailbox/DOMAIN.LTD/USERNAME/Maildir/,这与我们设置的完全相同。

测试SMTP认证:
  $ telnet localhost 25
  Trying 127.0.0.1...
  Connected to localhost.
  Escape character is '^]'.
  220 mail.mgpc.com.cn ESMTP Postfix
  EHLO mgpc.com.cn
  250-mail.mgpc.com.cn
  250-PIPELINING
  250-SIZE 10240000
  250-VRFY
  250-ETRN
  250-AUTH LOGIN PLAIN
  250-AUTH=LOGIN PLAIN
  250 8BITMIME
  AUTH LOGIN
  334 VXNlcm5hbWU6
  输入用户名的Base64位编码
  334 UGFzc3dvcmQ6
  输入密码的Base64位编码
  235 Authentication successful
  测试中使用的用户名是daifubing@mgpc.com.cn密码是123456,我们的测试成功了。

测试pop3
  $ telnet localhost 110
  Trying 127.0.0.1...
  Connected to localhost.
  Escape character is '^]'.
   OK Hello there.
  USER daifubing@mgpc.com.cn
   OK Password required.
  PASS 123456
   OK logged in.
  上面的提示表示我们的pop3登录也成功了。

5.11安装Apache

下载源代码包
  www#cd /usr/home/peng/src
  www#tar –zvxf httpd-2.0.47.tar.gz
  www#cd httpd-2.0.47
  www#./configure --prefix=/usr/local/apache --enable-so
  www#make
  www#make install

5.12安装PHP

下载源代码包
  www#tar –zxvf php-4.4.0.tar.gz
  www#cd php-4.4.0
  www#./configure --with-mysql=/usr/server/mysql --with-apxs2=/usr/local/apache/bin/apxs
--enable-track-vars --enable-force-cgi-redirect --enable-pic --enable-inline-optimiation
--enable-memory-limit --enable-bcmath --enable-shmop --enable-versioning --enable-calendar
--enable-dbx --enable-dio --enable-mcal --with-config-file-path=/usr/local/apache/conf?
  www#make
  www#make install
  www#cp php.ini-dist /usr/local/apache/conf/php.ini

  #ee /usr/local/apache/conf/httpd.conf
  更改httpd.conf中的user和group为www

找到DocumentRoot将路径改为/usr/local/www/
  加入

  AddType application/x-httpd-php .php
  AddType application/x-httpd-php .php3
  AddType application/x-httpd-php .phtml
  AddType application/x-httpd-php-source .phps

  更改igenus的权限为
  #chown -R www:www igenus
  更改mailbox权限为www?
  #chown -R www:www / var/mailbox

5.13安装postfixadmin-2.0.5

  postfixadmin可以在http://high5.net/postfixadmin处得到,下载后是一个名为postfixadmin-2.0.5.tgz的文件
  $ tar -zxvf postfixadmin-2.0.5.tgz
  $ mv postfixadmin-2.0.5 postfixadmin
  $ cd postfixadmin
  为了让postfixadmin正常工作,需要进行一些小的设置,将postfixadmin目录中的config.inc.php.sample复制为config.inc.php,然后编辑其中的参数:
  $ cp config.inc.php.sample config.inc.php
  $ vi config.inc.php
  本例中的配置如下:
  // Language config
  // Language files are located in './languages'.
  $CONF['default_language'] = 'cn';

  // Database Config
  // 'database_type' is for future reference.
  $CONF['database_type'] = 'mysql';
  $CONF['database_host'] = 'localhost';
  $CONF['database_user'] = 'postfixadmin';
  $CONF['database_password'] = 'postfixadmin';
  $CONF['database_name'] = 'postfix';

  $CONF['encrypt'] = 'cleartext';

  // Mailboxes
  // If you want to store the mailboxes per domain set this to 'YES'.
  // Example: /usr/local/virtual/domain.tld/username@domain.tld
  $CONF['domain_path'] = 'YES';
  // If you don't want to have the domain in your mailbox set this to 'NO'.
  // Example: /usr/local/virtual/domain.tld/username
  $CONF['domain_in_mailbox'] = 'NO';

  // Quota
  // When you want to enforce quota for your mailbox users set this to 'YES'.
  $CONF['quota'] = 'YES';
  $CONF['quota_multiplier'] = '1048576';

为了兼容性,所以我们在这里使用明文口令方式($CONF['encrypt']='cleartext';),邮箱的存储格式使用domain.ltd/username的形式,所以设置:
  $CONF['domain_path'] = 'YES';
  $CONF['domain_in_mailbox'] = 'NO';

按照上面的设置,在postfixadmin建立新的虚拟用户的时候,其maildir的格式为domain.ltd/username,但iGENUS是在domain.ltd/username/Maildir中进行操作,所以我们需要对postfixadmin做一点小的修改以使其与iGENUS兼容。

首先修改postfixadmin目录中的create-mailbox.php,找到该文件中的:

  if ($CONF['domain_path'] == "YES")
  {
  if ($CONF['domain_in_mailbox'] == "YES")
  {
  $maildir = $fDomain . "/" . $fUsername . "/";
  }
  else
  {
  $maildir = $fDomain . "/" . $_POST['fUsername'] . "/";
  }
  }
  else
  {
  $maildir = $fUsername . "/";
  }

  在其后面增加:
  // Compat for iGENUS
  $maildir .= "Maildir/";
  同时修改postfixadmin/admin目录中的create-mailbox.php,找到该文件中的:
  if ($CONF['domain_path'] == "YES")
  {
  if ($CONF['domain_in_mailbox'] == "YES")
  {
  $maildir = $fDomain . "/" . $fUsername . "/";
  }
  else
  {
  $maildir = $fDomain . "/" . $_POST['fUsername'] . "/";
  }
  }
  else
  {
  $maildir = $fUsername . "/";
  }

在其后面增加:
  // Compat for iGENUS
  $maildir .= "Maildir/";

到这里我们的postfixadmin就修改基本完成,另外,在这里我们使用了postfixadmin的中文语言包($CONF['default_language'] = 'cn';),由于这个语言包是在postfixadmin2.0.4的基础上制作的,所以在2.0.5中使用需要做一个小的修改,以使其能够正确的显示中文编码:
  $ vi languages/cn.lang
  找到该文件最前面的如下行:
  $PALANG['YES'] = '是';
  在该行前面加入:
  $PALANG['charset'] = 'gb2312';

保存退出,到此,postfixadmin的修改就已经全部完成,现在可以将postfixadmin这个目录复制或上传到你的web目录中了,然后打开浏览器,进入postfixadmin的治理界面http://www.yourdomain.com/postfixadmin/admin/index.php,这里就可以新建域名和治理员了(注重,通过应该先建域名,再建立治理员)。然后用新建立的治理员登录到http://www.yourdomain.com/postfixadmin/index.php中就可以建立该域的邮箱了。

5.14安装iGENUS_2.0.2

从www.igenus.org处得到igenus_2.0.2_20040901_release.tgz,将其解开:
  $ tar -zxvf igenus_2.0.2_20040901_release.tgz
  $ cd igenus

由于igenus使用了自己的表结构,所以要在postfix的基础上使用igenus的所有功能,还需要进行比较大的修改,这里我们就不再讨论,本文中我们就向大家介绍如何使用户能够登录到igenus中,并且正常的发邮件和收邮件,其它功能就不再介绍。

首先需要修改igenus的配置文件,让其它知道如何与MySQL连接:

$ cd config
  $ vi config_inc.php
  根据你的实际情况修改以下内容(配置中的中文为笔者说明):
  $CFG_BASEPATH = "/htdocs/mail/igenus";   //iGENUS的绝对路径

// Mysql
  $CFG_MYSQL_HOST = 'localhost';
  $CFG_MYSQL_USER = 'postfixadmin';      //因为用户需要在igenus中更改密码等,所以需要使用对数据库具有写权限的postfixadmin用户,而非拥有只读权限的postfix用户
  $CFG_MYSQL_PASS = 'postfix';
  $CFG_MYSQL_DB = 'postfix';

// Temp directory for maildir listing,mail body decodeing etc.
  $CFG_TEMP = $CFG_BASEPATH."/temp";     //这里我们将igenus的临时目录设置为igenus安装目录下的temp目录

现在需要建立temp文件夹,并使其可被web服务器的用户读写: 
  $ mkdir igenus/temp
  $ chmod 777 igenus/temp

同时要使igenus使用Postfixadmin的表结构,我们需要修改igenus目录中的login.php文件,以使用户能够正常登录。
  $ vi login.php
  修改其中的:
  $query = "SELECT * FROM vpopmail WHERE pw_name='$Post_name' and pw_domain='$Post_domain'";
  为:
  $query = "SELECT * FROM mailbox WHERE username='$Post_name@$Post_domain' and active='1'";
  将:
  $home = $data['pw_dir'];
  $Post_passwd2 = $data['pw_passwd'];
  $pw_id = $data['pw_id'];
  $pw_shell = $data['pw_shell'];
  $pw_gecos = $data['pw_gecos'];
  $pw_gid = $data['pw_gid'];
  $pw_domain = strtolower($data['pw_domain']);
  $pw_name = strtolower($data['pw_name']);
  修改为:
  $home = "/var/mail/" . $data['maildir'] . "../";
  $Post_passwd2 = $data['password'];
  $pw_shell = $data['quota'];
  $pw_gecos = $data['name'];
  $pw_domain = strtolower($data['domain']);
  $pw_name = strtolower($data['username']);
  其中$home = "/var/mail/" . $data['maildir'] . "../";是告诉iGENUS邮件存储的路径,"/var/mail/"为我们的邮件存放目录,同时因为iGENUS进行读写邮件时会在$home变量后面加上字符串"Maildir/",但我们的MySQL数据表mailbox中的maildir字段中已经包含"Maildir/",所以为了让iGENUS得到正确的路径,我们在最后加上了字符串"../"

修改:
  if ($pw_gid & 0x04){
  PutLogs($pw_id, 'login', "no priv to login","$Post_name@$Post_domain", $sql);
  ErrorExit(-2); // 用户无权登录
  }

if ($home !="" && ($Post_passwd2 == crypt($Post_passwd,$Post_passwd2))){
  为:
  if ($pw_gid & 0x04){
  PutLogs($pw_id, 'login', "no priv to login","$Post_name@$Post_domain", $sql);
  ErrorExit(-2); // 用户无权登录
  }

if ($home !="" && ($Post_passwd2 == $Post_passwd)){

注释或者删除:
  $_SESSION['G_ID'] = $pw_id;

在提示的地方将mysql_fetch_object()改成@mysql_fetch_object()即可

1、也就是在mailbox.php的253和274行
  2、在add2addr.php的94和109行(通讯录)
  3、在pubaddr.php的第65和85行(通讯录中的公共)
  4、在address.php的第59和73行(通讯录中的个人)
  5、在personal.php的第82行(系统设置的个人资料)
  6、在card.php的第162/179行(名片夹)
  7、在stow.php的第119/138行(收藏夹)
  8、在message.php的第106/126行(内部通知)

在以下的PHP文件中将$OUT['EMAIL']= "$SG_USERNAME@$SG_DOMAIN";更改成:$OUT['EMAIL']=$SG_USERNAME";
  mailbox.php、logo.php、file.php、forword.php、list.php、message.php、reply.php、scheduler.php、send.php、sendagain.php、sendmail.php里面的setfrom行、sendok.php、writeagain.php、personal.php 、
  设置网络硬盘路径
  可以修改igenus/config下的config_inc.php中的$CFG_NETDISK_PATH = "/home/netdisk";
  #mkdir /home/netdisk
  #chmod –R www:www? /home/netdisk
  请改成你这节的路径比如:$CFG_NETDISK_PATH = " /var/netdisk";前提是你必须有这个目录

5.15安装phpmyadmin

#tar –zxvf phpmyadmin2.0.6.tar.gz
  #mv phpmyadmin2.0.6.tar.gz /usr/local/www/

5.16导入IGENUS的数据表

编辑igenus下的docs目录里的iGENUS.sql文件,删除
  # --------------------------------------------------------
  #
  # Table structure for table `address`
  #
  CREATE TABLE `address` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `pw_id` int(5) NOT NULL default '0',
  `name` varchar(64) NOT NULL default '',
  `email` varchar(128) NOT NULL default '',
  UNIQUE KEY `id` (`id`),
  KEY `pw_id` (`pw_id`)
  ) TYPE=MyISAM PACK_KEYS=1 ;

# --------------------------------------------------------
  #
  # Table structure for table `vpopmail`
  #
  CREATE TABLE `vpopmail` (
  `pw_id` int(5) unsigned NOT NULL auto_increment,
  `pw_name` varchar(32) NOT NULL default '',
  `pw_domain` varchar(64) NOT NULL default '',
  `pw_passwd` varchar(40) NOT NULL default '',
  `pw_uid` int(11) default NULL,
  `pw_gid` int(11) default NULL,
  `pw_gecos` varchar(48) default NULL,
  `pw_dir` varchar(255) default NULL,
  `pw_shell` varchar(20) default NULL,
  `createtime` timestamp(14) NOT NULL,
  PRIMARY KEY? (`pw_id`),
  KEY `pw_name` (`pw_name`,`pw_domain`)
  ) TYPE=MyISAM PACK_KEYS=1 ;

打开浏览器输入http://你的IP地址/phpmyadmin/登陆后,选择postfix>sql>浏览(找到iGENUS.sql)>执行
  

5.17设置自动启动

#ee /etc/rc.local
  加入
  /usr/server/mysql/share/mysql/mysql.server start
  ldconfig -m /usr/server/mysql/lib/mysql
  /usr/sbin/postfix start
  /usr/server/courier-imap/libexec/authlib/authdaemond start
  /usr/server/courier-imap/libexec/pop3d.rc start
  /usr/server/courier-imap/libexec/imapd.rc start
  /usr/local/apache/bin/apachectl start
  重新启动计算机
  #reboot

5.18治理邮箱和登陆WEB邮箱
  


  

在浏览器中输入http://你的IP地址或域名/postfixadmin/admin/

在这里您可以进行开设邮箱等操作
  在浏览器中输入http://你的IP地址或域名/igenus/
  出现下图
  

登陆后如下图所示:
  

图片内容