在 Slackware 下全部从源代码安装邮件服务器:四、Webmail 和管理端
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 表中增加如下的表和初始管理员记录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | 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
1 2 3 4 5 6 | 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,增加如下指令:
1 2 3 4 5 6 7 8 9 10 11 12 | <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,注意首先执行下面的指令:
1 2 3 | 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 后,执行:
1 2 3 | 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,找到如下行:
1 2 3 4 5 6 7 8 9 10 | 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 |
对应修改为如下:
1 2 3 4 5 6 7 8 9 10 | 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,然后找到如下行:
1 2 3 4 5 6 7 8 9 10 11 12 | 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 |
对应修改为如下:
1 2 3 4 5 6 7 8 9 10 11 12 | 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,分别找到:
1 2 |
相应的修改为:
1 2 | MAILGRAPH_PL=/home/www/extsuite/extman/addon/mailgraph_ext/mailgraph_ext.pl MAILGRAPH_PL=/home/www/extsuite/extman/addon/mailgraph_ext/qmonitor.pl |
初始化日志统计图所需要的目录:
1 | /home/www/extsuite/extman/addon/mailgraph_ext/queue_mkrrd.sh |