在 Slackware 下全部从源代码安装邮件服务器:四、Webmail 和管理端 Tue, Jul 21. 2009
1、系统需求说明
Extman 登录时的验证码需要 libXpm 的支持,统计图表需要 RRDtool 和 Perl 的 GD 模块的支持,Extman 还需要 Perl 的 Unix::Syslog 模块支持,mailgraph_ext 需要 Perl 的 File::Tail 模块支持。可以使用 /home/www/extsuite/extmail/tools/pkg_stats.sh 来查看还缺少什么模块。
2、添加数据库
使用 phpMyAdmin 或者其他的 MySQL 客户端,在 postfix 表中增加如下的表和初始管理员记录:
- SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
- CREATE TABLE IF NOT EXISTS `alias` (
- `address` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `goto` TEXT COLLATE utf8_unicode_ci NOT NULL,
- `domain` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `createdate` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
- `active` TINYINT(1) NOT NULL DEFAULT '1',
- PRIMARY KEY (`address`),
- KEY `address` (`address`)
- ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='ExtMail - Virtual Aliases';
- CREATE TABLE IF NOT EXISTS `alias_domain` (
- `alias_domain` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `target_domain` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
- `modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
- `active` TINYINT(1) NOT NULL DEFAULT '1',
- PRIMARY KEY (`alias_domain`),
- KEY `active` (`active`),
- KEY `target_domain` (`target_domain`)
- ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Postfix Admin - Domain Aliases';
- CREATE TABLE IF NOT EXISTS `domain` (
- `domain` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `description` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `hashdirpath` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `maxalias` INT(10) NOT NULL DEFAULT '0',
- `maxusers` INT(10) NOT NULL DEFAULT '0',
- `maxquota` VARCHAR(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
- `maxnetdiskquota` VARCHAR(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
- `transport` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL,
- `can_signup` TINYINT(1) NOT NULL DEFAULT '0',
- `default_quota` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL,
- `default_netdiskquota` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL,
- `default_expire` VARCHAR(12) COLLATE utf8_unicode_ci DEFAULT NULL,
- `disablesmtpd` SMALLINT(1) DEFAULT NULL,
- `disablesmtp` SMALLINT(1) DEFAULT NULL,
- `disablewebmail` SMALLINT(1) DEFAULT NULL,
- `disablenetdisk` SMALLINT(1) DEFAULT NULL,
- `disableimap` SMALLINT(1) DEFAULT NULL,
- `disablepop3` SMALLINT(1) DEFAULT NULL,
- `createdate` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
- `expiredate` DATE NOT NULL DEFAULT '0000-00-00',
- `active` TINYINT(1) NOT NULL DEFAULT '1',
- PRIMARY KEY (`domain`),
- KEY `domain` (`domain`)
- ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='ExtMail - Virtual Domains';
- CREATE TABLE IF NOT EXISTS `domain_manager` (
- `username` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `domain` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `createdate` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
- `active` TINYINT(1) NOT NULL DEFAULT '1',
- KEY `username` (`username`)
- ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Ext/Webman - Domain Admins';
- CREATE TABLE IF NOT EXISTS `mailbox` (
- `username` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `uid` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `password` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `clearpwd` VARCHAR(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `name` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `mailhost` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `maildir` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `homedir` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `quota` VARCHAR(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
- `netdiskquota` VARCHAR(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
- `domain` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `uidnumber` INT(6) NOT NULL DEFAULT '1000',
- `gidnumber` INT(6) NOT NULL DEFAULT '1000',
- `createdate` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
- `expiredate` DATE NOT NULL DEFAULT '0000-00-00',
- `active` SMALLINT(1) NOT NULL DEFAULT '1',
- `disablepwdchange` SMALLINT(1) DEFAULT NULL,
- `disablesmtpd` SMALLINT(1) DEFAULT NULL,
- `disablesmtp` SMALLINT(1) DEFAULT NULL,
- `disablewebmail` SMALLINT(1) DEFAULT NULL,
- `disablenetdisk` SMALLINT(1) DEFAULT NULL,
- `disableimap` SMALLINT(1) DEFAULT NULL,
- `disablepop3` SMALLINT(1) DEFAULT NULL,
- `question` TEXT COLLATE utf8_unicode_ci NOT NULL,
- `answer` TEXT COLLATE utf8_unicode_ci NOT NULL,
- PRIMARY KEY (`username`),
- KEY `username` (`username`)
- ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='ExtMail - Virtual Mailboxes';
- CREATE TABLE IF NOT EXISTS `manager` (
- `username` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `password` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `type` VARCHAR(64) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'postmaster',
- `uid` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `name` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `question` TEXT COLLATE utf8_unicode_ci NOT NULL,
- `answer` TEXT COLLATE utf8_unicode_ci NOT NULL,
- `disablepwdchange` SMALLINT(1) DEFAULT NULL,
- `createdate` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
- `expiredate` DATE NOT NULL DEFAULT '0000-00-00',
- `active` TINYINT(1) NOT NULL DEFAULT '1',
- PRIMARY KEY (`username`),
- KEY `username` (`username`)
- ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Ext/Webman - Admin Accounts';
- INSERT INTO `manager` (`username`, `password`, `type`, `uid`, `name`, `question`, `answer`, `disablepwdchange`, `createdate`, `expiredate`, `active`) VALUES
- ('postmaster@domain.ltd', '$1$BrT9qxfB$Ha81Mb5YVV6rNKNN5jmtj1', 'admin', 'root', 'Super User', 'my question', 'my answer', 0, '2007-02-14 15:10:04', '2010-11-08', 1);
创建的初始管理员用户名是 postmaster@domain.ltd,初始密码是 extmail*123*,下面会用到。
3、安装 Extman/Extmail
- mkdir /home/www/extsuite
- tar -zxvf extmail-1.1.0.tar.gz -C /home/www/
- tar -zxvf extman-1.0.0.tar.gz -C /home/www/
- ln -s /home/www/extman-1.0.0/ /home/www/extsuite/extman
- ln -s /home/www/extmail-1.1.0/ /home/www/extsuite/extmail
- chown vmail:vmail /home/www/ -R
4、配置 Apache 的虚拟主机
修改 /home/httpd/conf/extra/httpd-vhosts.conf,增加如下指令:
- <VirtualHost *:80>
- ServerAdmin support@domain.ltd
- DocumentRoot "/home/www/extsuite/extmail/html"
- ServerName mail.domain.ltd
- ServerAlias domain.ltd
- ErrorLog "logs/ext-error_log"
- CustomLog "logs/ext-access_log" "common"
- ScriptAlias /extman/cgi/ /home/www/extsuite/extman/cgi/
- Alias /extman/ /home/www/extsuite/extman/html/
- ScriptAlias /extmail/cgi/ /home/www/extsuite/extmail/cgi/
- Alias /extmail/ /home/www/extsuite/extmail/html/
- </VirtualHost>
5、安装 RRDtool
将 rrdtool-1.3.8.tar.gz 解压后,请参阅 doc/rrdbuild.txt 的指令安装 RRDtool 的依赖包和 RRDTool,注意首先执行下面的指令:
- export INSTALL_DIR=/usr/local/rrdtool-1.3.8
- export PKG_CONFIG_PATH=${INSTALL_DIR}/lib/pkgconfig
- export PATH=$INSTALL_DIR/bin:$PATH
否则后面可能提示找不到依赖的库。
最后一步安装 rrdtool-1.3.8 包的时候,在 make install 后,执行:
- make site-perl-instal
- cp /lib/perl/5.10.0/i486-linux-thread-multi/RRDs.pm /usr/lib/perl5/site_perl/5.10.0/i486-linux-thread-multi/
- cp /lib/perl/5.10.0/i486-linux-thread-multi/auto/* /usr/lib/perl5/site_perl/5.10.0/i486-linux-thread-multi/auto/ -R
安装 RRDtool 的 Perl 支持。
6、配置 Extman/Extmail
6.1、extman/webman.cf
编辑 /home/www/extsuite/extman/webman.cf,找到如下行:
- SYS_CONFIG = /var/www/extsuite/extman/
- SYS_LANGDIR = /var/www/extsuite/extman/lang
- SYS_TEMPLDIR = /var/www/extsuite/extman/html
- SYS_MAILDIR_BASE = /home/domains
- # SYS_LANG = en_US
- SYS_GROUPMAIL_SENDER = postmaster@extmail.org
- SYS_MYSQL_USER = webman
- SYS_MYSQL_PASS = webman
- SYS_MYSQL_DB = extmail
- SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
对应修改为如下:
- SYS_CONFIG = /home/www/extsuite/extman/
- SYS_LANGDIR = /home/www/extsuite/extman/lang
- SYS_TEMPLDIR = /home/www/extsuite/extman/html
- SYS_MAILDIR_BASE = /home/mailbox
- SYS_LANG = zh_CN
- SYS_GROUPMAIL_SENDER = postmaster@domain.ltd
- SYS_MYSQL_USER = postfix
- SYS_MYSQL_PASS = postfix_user_password
- SYS_MYSQL_DB = postfix
- SYS_MYSQL_SOCKET = /tmp/mysql.sock
6.2、extmail/webmail.cf
将 /home/www/extsuite/extmail/webmail.cf.default 在同目录复制为 webmail.cf,然后找到如下行:
- SYS_CONFIG = /var/www/extsuite/extmail/
- SYS_LANGDIR = /var/www/extsuite/extmail/lang
- SYS_TEMPLDIR = /var/www/extsuite/extmail/html
- SYS_SPAM_REPORT_TYPE = dspam
- SYS_USER_LANG = en_US
- SYS_MAILDIR_BASE = /home/domains
- SYS_MYSQL_USER = db_user
- SYS_MYSQL_PASS = db_pass
- SYS_MYSQL_DB = extmail
- SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
- SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
- SYS_G_ABOOK_FILE_PATH = /var/www/extsuite/extmail/globabook.cf
对应修改为如下:
- SYS_CONFIG = /home/www/extsuite/extmail/
- SYS_LANGDIR = /home/www/extsuite/extmail/lang
- SYS_TEMPLDIR = /home/www/extsuite/extmail/html
- SYS_SPAM_REPORT_TYPE = spamassassin
- SYS_USER_LANG = zh_CN
- SYS_MAILDIR_BASE = /home/mailbox
- SYS_MYSQL_USER = postfix
- SYS_MYSQL_PASS = 42R854
- SYS_MYSQL_DB = postfix
- SYS_MYSQL_SOCKET = /tmp/mysql.sock
- SYS_AUTHLIB_SOCKET = /home/courier/authlib/var/spool/authdaemon/socket
- SYS_G_ABOOK_FILE_PATH = /home/www/extsuite/extmail/globabook.cf
7、其他配置
修改 /home/www/extsuite/extman/addon/mailgraph_ext/mailgraph-init 和 /home/www/extsuite/extman/addon/mailgraph_ext/qmonitor-init,分别找到:
相应的修改为:
- MAILGRAPH_PL=/home/www/extsuite/extman/addon/mailgraph_ext/mailgraph_ext.pl
- MAILGRAPH_PL=/home/www/extsuite/extman/addon/mailgraph_ext/qmonitor.pl
初始化日志统计图所需要的目录:
- /home/www/extsuite/extman/addon/mailgraph_ext/queue_mkrrd.sh
< 在 Slackware 下全部从源代码安装邮件服务器:三、系统配置 | 在 Slackware 下全部从源代码安装邮件服务器:五、启动并且测试服务 >
