歡迎您光臨本站 註冊首頁

一、安裝軟體系統

1)、安裝MySQL4.0.x

為了與系統的軟體系統區分開,這裡將所有我們手動編譯的伺服器(DAEMON)軟體安裝在/usr/server中。
$ tar -zxvf mysql-4.0.21.tar.gz
$ cd mysql-4.0.21
$ ./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
# chown -R mysql:mysql /usr/server/mysql/db
最後需要設置mysql的root口令
# /usr/server/mysql/bin/mysqld_safe &
# /usr/server/mysql/bin/mysqladmin -uroot password 'your_password_goes_here'
口令設置完成後,暫時關閉mysql服務:
# kill %1


2)、安裝Cyrus-sasl2

因為要查詢MySQL資料庫,所以我們需要在編譯cyrus-sasl2時加上對MySQL的支持,同時我們打開了對plain和login兩種驗證方式的支持:
$ tar -zxvf cyrus-sasl-2.1.19.tar.gz
$ cd cyrus-sasl-1.2.19
$ ./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


3)、安裝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.1.4.tar.gz
$ cd postfix-2.1.4
$ 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
# make install
在執行make install的時候可能會得到如下的提示(如果沒有就不用理會了:p):
/usr/libexec/ld-elf.so.1: Shared object "libmysqlclient.so.12" not found
這是因為我們的mysql不是安裝在默認目錄中的,所以需要告訴postfix應該到哪裡去找libmysqlclient.so.12,使用ldconfig就可以達到這個目的:
# ldconfig -m /usr/server/mysql/lib/mysql
然後再執行make install這裡會出現很多問題,但postfix已經為我們設置好了默認的答案,直接使用這些答案就可以使postfix正常工作了,所以我們只要直接按回車就可以了。

到這裡,支持mysql和sasl認證的postfix就已經安裝成功了。


4)、安裝Courier-imap

$ tar -jxvf courier-imap-3.0.7.tar.bz2
$ cd courier-imap-3.0.7
$ ./configure --prefix=/server/courier-imap --with-authmysql
在執行configure的時候有可能會出現如下的錯誤提示:
configure: error: --with-authmysql specified but no mysqlclient.so
configure: error: /usr/local/bin/bash './configure' failed for authlib
這是因為courier-imap會使用mysql_config來取得一些編譯參數(include、libs、cflags、socket等),但我們是將mysql安裝在非/usr/local中,所以默認的PATH就不起作用,需要我們來使courier-imap能夠搜索到mysql_config:
$ export PATH="$PATH:/usr/server/mysql/bin"
然後再次執行configure腳本:
$ ./configure --prefix=/server/courier-imap --with-authmysql
$ make
# make install


二、配置系統

1)、建立用戶數據表結構

這裡,我們直接使用postfixadmin-2.0.5的表結構,現在我們來解開postfixadmin:
$ tar -zxvf postfixadmin-2.0.5.tgz
$ cd postfixadmin-2.0.5
在postfixadmin-2.0.5.tgz中有一個DATABASE.TXT文件,其中描述了各個表的結構,它的內容如下:
#############################
# Postfix Admin Release 2.x #
#############################
#
# Copyright (c) 2002, 2003, 2004 High5!
# Created by: Mischa Peters
#
# This is the complete database structure for Postfix Admin.
# If you are installing from scratch you can use this file otherwise you
# need to use the TABLE_CHANGES.TXT or TABLE_BACKUP_MX.TXT that comes with Postfix Admin.
#
# There are 2 entries for a database user in the file.
# One you can use for Postfix and one for Postfix Admin.
#
# If you run this file twice (2x) you will get an error on the user creation in MySQL.
# To go around this you can either comment the lines below "USE MySQL" until "USE postfix".
# Or you can remove the users from the database and run it again.
#
# You can create the database from the shell with:
#
# mysql -u root [-p] < DATABASE.TXT

#
# Postfix / MySQL
#
USE mysql;
# Postfix user & password
INSERT INTO user (Host, User, Password) VALUES ('localhost','postfix',password('postfix'));
INSERT INTO db (Host, Db, User, Select_priv) VALUES ('localhost','postfix','postfix','Y');
# Postfix Admin user & password
INSERT INTO user (Host, User, Password) VALUES ('localhost','postfixadmin',password('postfixadmin'));
INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv) VALUES ('localhost', 'postfix', 'postfixadmin', 'Y', 'Y', 'Y', 'Y');
FLUSH PRIVILEGES;
GRANT USAGE ON postfix.* TO postfix@localhost;
GRANT SELECT, INSERT, DELETE, UPDATE ON postfix.* TO postfix@localhost;
GRANT USAGE ON postfix.* TO postfixadmin@localhost;
GRANT SELECT, INSERT, DELETE, UPDATE ON postfix.* TO postfixadmin@localhost;
CREATE DATABASE postfix;
USE postfix;

#
# Table structure for table admin
#
CREATE TABLE admin (
username varchar(255) NOT NULL default '',
password varchar(255) 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 (username),
KEY username (username)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Admins';

#
# Table structure for table alias
#
CREATE TABLE alias (
address varchar(255) NOT NULL default '',
goto text NOT NULL,
domain varchar(255) 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 (address),
KEY address (address)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Aliases';

#
# Table structure for table domain
#
CREATE TABLE domain (
domain varchar(255) NOT NULL default '',
description varchar(255) NOT NULL default '',
aliases int(10) NOT NULL default '-1',
mailboxes int(10) NOT NULL default '-1',
maxquota int(10) NOT NULL default '-1',
transport varchar(255) default NULL,
backupmx tinyint(1) NOT NULL default '0',
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 (domain),
KEY domain (domain)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Domains';

#
# Table structure for table domain_admins
#
CREATE TABLE domain_admins (
username varchar(255) NOT NULL default '',
domain varchar(255) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(1) NOT NULL default '1',
KEY username (username)
) TYPE=MyISAM COMMENT='Postfix Admin - Domain Admins';

#
# Table structure for table log
#
CREATE TABLE log (
timestamp datetime NOT NULL default '0000-00-00 00:00:00',
username varchar(255) NOT NULL default '',
domain varchar(255) NOT NULL default '',
action varchar(255) NOT NULL default '',
data varchar(255) NOT NULL default '',
KEY timestamp (timestamp)
) TYPE=MyISAM COMMENT='Postfix Admin - Log';

#
# Table structure for table mailbox
#
CREATE TABLE mailbox (
username varchar(255) NOT NULL default '',
password varchar(255) NOT NULL default '',
name varchar(255) NOT NULL default '',
maildir varchar(255) NOT NULL default '',
quota int(10) NOT NULL default '-1',
domain varchar(255) 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 (username),
KEY username (username)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Mailboxes';

#
# Table structure for table vacation
#
CREATE TABLE vacation (
email varchar(255) NOT NULL default '',
subject varchar(255) NOT NULL default '',
body text NOT NULL,
cache text NOT NULL,
domain varchar(255) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(1) NOT NULL default '1',
PRIMARY KEY (email),
KEY email (email)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Vacation';

現在將表結構導入到mysql中:
$ /usr/server/mysql/bin/mysql -u root -p < DATABASE.TXT


2)、配置postfix

首先需要更改/etc/postfix/main.cf中的一些基本參數,請按照自己的實際情況修改,本例以域名cnfug.org為例:
myhostname = mail.cnfug.org
mydomain = cnfug.org
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中,每個查詢配置文件的內容分別如下:
(1) /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'

(2) /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'

(3) /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中加入:
smtpd_sasl_auth_enable = yes
smtpd_sasl_application_name = smtpd
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain = cnfug.org
smtpd_recipient_restrictions = reject_unauth_destination

接下來設置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

3)、配置sasl認證

在配置postfix的時候,我們設置了postfix使用的sasl配置文件為smtpd,所以現在我們需要配置sasl讓它知道怎麼從MySQL中讀取認證信息:
# vi /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'即'用戶名@域名'。


4)、配置courier-imap

要讓courier-imap能夠正確的讀取MySQL中的認證信息,就需要配置authmysql的配置文件/usr/server/courier-imap/etc/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/最後的"/"字元不能省略。

接下來配置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


三、啟動服務

1)、MySQL
# /usr/server/mysql/share/mysql/mysql.server start
為了確保postfix以及以後的進程能夠正確的搜索到libmysqlclient,在這裡將mysql的lib設置到ldconfig的搜索路徑中:
# ldconfig -m /usr/server/mysql/lib/mysql

2)、Postfix
# /usr/sbin/postfix start

3)、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

如果你想系統在啟動的時候自動運行以上這些服務,可以直接將上面的這些啟動服務的命令加入到/etc/rc.local中(這裡是以BSD UNIX為例子,如果是非BSD UNIX系統請自行將/etc/rc.local更改為相應系統自啟動文件名)。


四、測試系統

在進行下一步前,我們可以先對後台系統進行一下測試,以確保後台系統已經正常工作。
首先建立一個測試用戶:
$ /usr/server/mysql/bin/mysql -upostfix -p
mysql> use postfix;
mysql> insert into domain(domain,active) values('cnfug.org','1');
mysql> insert into mailbox(username,password,name,maildir,domain,active) values('test@cnfug.org','test','TESTER','cnfug.org/test/Maildir/','cnfug.org','1');
mysql> quit;

測試postfix:
$ echo "hello world" | mail test@cnfug.org

$ ls -al /var/mailbox
drwx------ 3 www www 512 Oct 16 23:15 cnfug.org
$ ls -al /var/mailbox/cnfug.org
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/cnfug.org/test
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/cnfug.org/test/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反回的結果可以看到,一個名為cnfug.org的目錄已經被postfix建立,同時可以看到目錄結構為/var/mailbox/DOMAIN.LTD/USERNAME/Maildir/,這與我們設置的完全相同。

測試SMTP認證:
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.cnfug.org ESMTP Postfix
EHLO cnfug.org
250-mail.cnfug.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
AUTH LOGIN
334 VXNlcm5hbWU6
dGVzdEBjbmZ1Zy5vcmc=
334 UGFzc3dvcmQ6
dGVzdA==
235 Authentication successful
測試中使用的用戶名是test@cnfug.org密碼是test,我們的測試成功了。

測試pop3
$ telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
USER test@cnfug.org
+OK Password required.
PASS test
+OK logged in.
上面的提示表示我們的pop3登錄也成功了 :)。


五、安裝配置Postfixadmin-2.0.5和iGENUS_2.0.2

現在所有的後台服務已經正常工作了,現在我們就開始安裝管理界面和用戶界面。

1)、安裝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中就可以建立該域的郵箱了。


2)、安裝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;


保存修改,現在你就可以登錄到igenus中了。


到這裡,我們的Postfix Powered的郵件系統已經完成 :)

[火星人 ] Postfix集成環境Postfix+MySQL+Cyrus-sasl2+Courier-imap+iGENUS+Postfixadmin已經有554次圍觀

http://coctec.com/docs/linux/show-post-204019.html