Postfix 电子邮件系统精要(1)(5)
Postfixadmin是postfix邮件系统的web管理工具,有了这个工具,管理和维护用户帐号就方便多了。假如不用工具,就需要手动修改数据库,谁愿意这样做?安装postfixadmin比较简单,解压包postfix-2.2.11.tar.gz,然后把它移动到某个目录下,其过程如下:
cd /root tar zxvf postfixadmin- mv postfixadmin- |
现在postfixadmin的目录是/var/www/postfixadmin,为了能够让它按照我们的意愿工作,需要用命令 chown -R vmail:vmail /var/www/postfixadmin 更改属主。这样,postfixadmin的安装就算完成了。接着我们来配置它,这个过程要复杂一点,我在这里分几步进行。
1)修改相关的配置文件。Postfixadmin第一个需要修改配置文件是config.inc.php,但事实上却没有这个文件,不要紧,把config.inc.php.sample搬过来就是了cp config.inc.php.sample config.ini.php),再来看一下目录结构:
[root@mailserv2 postfixadmin]# pwd /mail/www/postfixadmin [root@mailserv2 postfixadmin]ll total 236 drwxr-xr-x 2 vmail vmail 4096 Sep 16 16:06 ADDITIONS drwxr-xr-x 2 vmail vmail 4096 Sep 16 19:31 admin -rw-r--r-- 1 vmail vmail 1195 Sep 16 16:06 BACKUP_MX.TXT -rw-r--r-- 1 vmail vmail 10155 Sep 16 16:06 CHANGELOG.TXT -rw-r----- 1 vmail vmail 4700 Sep 16 16:14 config.inc.php -rw-r--r-- 1 vmail vmail 4694 Sep 16 16:06 config.inc.php.sample -rw-r----- 1 vmail vmail 3774 Sep 16 16:06 create-alias.php -rw-r----- 1 vmail vmail 7379 Sep 16 19:24 create-mailbox.php -rw-r--r-- 1 vmail vmail 4910 Sep 16 16:06 DATABASE_MYSQL.TXT -rw-r--r-- 1 vmail vmail 4955 Sep 16 16:06 DATABASE_PGSQL.TXT -rw-r----- 1 vmail vmail 2497 Sep 16 19:30 delete.php -rw-r----- 1 vmail vmail 1727 Sep 16 16:06 edit-active.php -rw-r----- 1 vmail vmail 3013 Sep 16 16:06 edit-alias.php -rw-r----- 1 vmail vmail 4026 Sep 16 16:06 edit-mailbox.php -rw-r----- 1 vmail vmail 25031 Sep 16 16:06 functions.inc.php drwxr-xr-x 2 vmail vmail 4096 Sep 16 16:06 images -rw-r----- 1 vmail vmail 3994 Sep 16 16:06 index.php -rw-r--r-- 1 vmail vmail 2655 Sep 16 16:06 INSTALL.TXT drwxr-xr-x 2 vmail vmail 4096 Sep 16 16:06 languages -rw-r--r-- 1 vmail vmail 1651 Sep 16 16:06 LANGUAGE.TXT -rw-r--r-- 1 vmail vmail 5375 Sep 16 16:06 LICENSE.TXT -rw-r----- 1 vmail vmail 1743 Sep 16 16:06 login.php -rw-r----- 1 vmail vmail 494 Sep 16 16:06 logout.php -rw-r----- 1 vmail vmail 869 Sep 16 16:06 main.php -rw-r--r-- 1 vmail vmail 981 Sep 16 16:06 motd-admin.txt.orig -rw-r--r-- 1 vmail vmail 262 Sep 16 16:06 motd.txt -rw-r--r-- 1 vmail vmail 262 Sep 16 16:06 motd-users.txt -rw-r----- 1 vmail vmail 4827 Sep 16 16:06 overview.php -rw-r----- 1 vmail vmail 2314 Sep 16 16:06 password.php -rwxr-xr-x 1 vmail vmail 392 Sep 16 16:08 postfix_chmod.sh -rw-r----- 1 vmail vmail 3233 Sep 16 16:06 search.php -rw-r----- 1 vmail vmail 2119 Sep 16 16:06 sendmail.php -rw-r----- 1 vmail vmail 5506 Sep 16 16:06 setup.php -rw-r----- 1 vmail vmail 4204 Sep 16 16:06 stylesheet.css -rw-r--r-- 1 vmail vmail 456 Sep 16 16:06 TABLE_BACKUP_MX.TXT -rw-r--r-- 1 vmail vmail 3737 Sep 16 16:06 TABLE_CHANGES.TXT drwxr-xr-x 2 vmail vmail 4096 Sep 16 16:06 templates -rw-r--r-- 1 vmail vmail 2303 Sep 16 16:06 UPGRADE.TXT drwxr-xr-x 2 vmail vmail 4096 Sep 16 16:06 users -rw-r----- 1 vmail vmail 1949 Sep 16 16:06 variables.inc.php -rw-r----- 1 vmail vmail 1965 Sep 16 16:06 viewlog.php drwxr-xr-x 2 vmail vmail 4096 Sep 16 16:06 VIRTUAL_VACATION |
在上面的目录输出中,我将要处理的文件或目录用了粗字体来标识了,先从config.ini.php动手吧。
[root@mailserv2 postfixadmin]# more config.inc.php
// // Postfix Admin // by Mischa Peters // Copyright (c) 2002 - 2005 High5! // License Info: http://www.postfixadmin.com/?file=LICENSE.TXT // // File: config.inc.php // if (ereg ("config.inc.php", $_SERVER['PHP_SELF'])) { header ("Location: login.php"); exit; } // Postfix Admin Path // Set the location to your Postfix Admin installation here. $CONF['postfix_admin_url'] = ''; $CONF['postfix_admin_path'] = ''; // Language config // Language files are located in './languages'. $CONF['default_language'] = 'cn'; // Database Config // mysql = MySQL 3.23 and 4.0 // mysqli = MySQL 4.1 // pgsql = PostgreSQL $CONF['database_type'] = 'mysql'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfixadmin'; $CONF['database_password'] = 'postfixadmin'; $CONF['database_name'] = 'postfix'; $CONF['database_prefix'] = ''; …………………………省略若干………………………………………. // 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'; …………………………省略若干………………………………………. // Default Domain Values // Specify your default values below. Quota in MB. $CONF['aliases'] = '1000'; $CONF['mailboxes'] = '1000'; $CONF['maxquota'] = '1000'; …………………………省略若干………………………………………. // Quota // When you want to enforce quota for your mailbox users set this to 'YES'. $CONF['quota'] = 'NO'; // You can either use '1024000' or '1048576' $CONF['quota_multiplier'] = '1024000'; …………………………省略若干………………………………………. ?> |
被改动过的内容用红色粗体标记出来了,这些值可根据实际情况作修改。下一个需要修改的文件是create-mailbox.php:
[root@mailserv2 postfixadmin]# more create-mailbox.php
// // Postfix Admin // by Mischa Peters // Copyright (c) 2002 - 2005 High5! // License Info: http://www.postfixadmin.com/?file=LICENSE.TXT ……………………………………省略若干……………………………………. $tQuota = $CONF['maxquota']; system("sudo /usr/sbin/maildirmake.sh $fDomain ".$_POST['fUsername']); if ($fMail == "on") ……………………………………省略若干……………………………………. ?> |
红色字体那行是需要插入的,它的位置在210行,不要把位置放错了,因为文件中有2行是"$tQuota = $CONF['maxquota'];"一定要把它放在第209行的那个"$tQuota = $CONF['maxquota'];"的后面才会有作用。在这里,很有必要解释一下插入这行的作用--在php脚本中执行系统的shell脚本--直接的后果就是创建用户的邮箱目录,这与执行在linux下执行命令行sudo /usr/sbin/maildirmake.sh sery.com sey相当。接下来我们修改文件delete.php:
[root@mailserv2 postfixadmin]# vi delete.php ……………………………………….省略很多………………………………
require ("./variables.inc.php"); require ("./config.inc.php"); require ("./functions.inc.php"); include ("./languages/" . check_language () . ".lang"); $SESSID_USERNAME = check_session(); ……………………………………….省略很多……………………………… $result = db_query ("SELECT * FROM mailbox WHERE username='$fDelete' AND domain='$fDomain'"); $userarray=explode("@",$fDelete); $user=$userarray[0]; $domain=$userarray[1]; system("sudo /usr/sbin/maildirdel.sh $domain $user"); ……………………………………….省略很多……………………………… ?> |
红色字体标示的那4行是需要插入的,位置也是至关重要的,不能弄错。到了这一步,还是没有完成,还需要进目录admin里修改2个同名文件admin/create-mailbox.php和admin/delete.php,修改的方法是一样的,只是插入位置的行号不同如admin/create-mail在200行的位置插入),见下面的截图:
图 5 |
这里有一个疑惑:为什么在不同的目录下有相同的文件呢?这是出于安全方面的原因。Postfixadmin把管理员分成2种:超级邮件系统管理员和一般邮件系统管理员,在admin目录里的是超级管理员的目录,而普通的邮件系统管理员在/mail/www/postfixadmin这个目录。在上述过程中,我们使用了2个shell脚本/usr/sbin/maildirdel.sh及/usr/sbin/maildirmake.sh,这些脚本的内容和作用将在后面安装配置maildrop时一并给出。
(2) 在mysql中创建postfix所需的数据库。
[root@mailserv2 ~] # cd /var/www/postfixadmin |
(3) 测试postfixadmin。先修改apache的配置文件/usr/local/apache/conf/httpd.conf,加入如下内容:
Alias /postfixadmin /var/www/postfixadmin Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all AuthType Basic Options None AllowOverride None Order allow,deny Allow from all AuthName "sery.mail Access" AuthUserFile /usr/local/apache/conf/htpasswd Require valid-user |
保存后重起apache服务(/usr/local/apache/bin/apachectl restart),然后在别的机器的浏览器输入邮件服务器的url如:http://mail.sery.com/postfixadmin
图 6 |
点击链接 setup,如果出现的都是ok,则表明postfixadmin配置正确。
图 7
默认情况下,很有可能没有安装pcrePerl Compatible Regular Expressions)这个软件包。这个包是必须的,如果没有这个包,安装courier-maildrop将不能正常进行,关于pcre的安装,我们把它放到maildrop安装这一部分。
评论暂时关闭