主選單FreeBSD
PcBSD 0.83Windows程式語言(edit)
|
郵件虛擬戶: 利用 Postfix + MySQL + Courier-IMAP 完成 (外加 postfixadmin)Step 1. 安裝 MySQL# cd /usr/ports/databases/mysql40-server # make install cleanStep 2. 安裝 Apache (不裝 postfixadmin 可省略) # cd /usr/ports/www/apache13 # make install cleanStep 3. 安裝 PHP (不裝 postfixadmin 可省略) # cd /usr/ports/lang/php4 # make install cleanStep 4. 安裝 postfixadmin (不裝 postfixadmin 可省略) # cd /usr/porst/mail/postfixadmin # make install cleanStep 5. 安裝 Postfix # cd /usr/ports/mail/postfix21 # make install cleanStep 6. 安裝 Courier-IMAP # cd /usr/ports/mail/courier-imap/ # make install cleanStep 7. 建立帳號資料庫 (記得先啟動 mysql , /usr/local/share/mysql/mysql.server start)
USE mysql;
INSERT INTO user (Host, User, Password)
VALUES ('localhost','postfix',password('postfix'));
INSERT INTO db (Host, Db, User, Select_priv)
VALUES ('localhost','postfix','postfix','Y');
INSERT INTO user (Host, User, Password)
VALUES ('localhost','postfixadmin',password('postfixadmin'));
#(不裝 postfixadmin 上面這行可省略)
INSERT INTO db (Host, Db, User, Select_priv,
Insert_priv, Update_priv, Delete_priv)
VALUES ('localhost', 'postfix', 'postfixadmin', 'Y', 'Y', 'Y', 'Y');
#(不裝 postfixadmin 上面這行可省略)
FLUSH PRIVILEGES;
GRANT USAGE ON postfix.* TO postfix@localhost;
GRANT SELECT, INSERT, DELETE, UPDATE ON postfix.* TO postfix@localhost;
###不裝 postfixadmin 可省略 start ###
GRANT USAGE ON postfix.* TO postfixadmin@localhost;
GRANT SELECT, INSERT, DELETE, UPDATE ON
postfix.* TO postfixadmin@localhost;
### end ###
CREATE DATABASE postfix;
USE postfix;
###不裝 postfixadmin 可省略 start ###
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';
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';
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';
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';
### end ###
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';
CREATE TABLE domain (
domain varchar(255) NOT NULL default '',
description varchar(255) NOT NULL default '',
aliases int(10) NOT NULL default '0',
mailboxes int(10) NOT NULL default '0',
maxquota int(10) NOT NULL default '0',
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';
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 '0',
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';
我們可以把以上的文字存成文字檔 (ex. DATABASE_MYSQL.txt) 再執行以下命令:# mysql < DATABASE_MYSQL.txtStep 8. 修改 postfix 的 main.cf 加上這幾行 virtual_alias_maps =
mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:1001
virtual_mailbox_base = /usr/local/virtual
virtual_mailbox_domains =
mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 51200000
virtual_mailbox_maps =
mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1001
virtual_transport = virtual
virtual_uid_maps = static:1001
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps =
mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message =
Sorry, the user's maildir has overdrawn his diskspace quota.
virtual_overquota_bounce = yes
Step 9. 建立相關檔案a. /usr/local/etc/postfix/mysql_virtual_alias_maps.cf user = postfix password = postfix hosts = localhost dbname = postfix table = alias select_field = goto where_field = addressb./usr/local/etc/postfix/mysql_virtual_domains_maps.cf user = postfix password = postfix hosts = localhost dbname = postfix table = domain select_field = description where_field = domainc./usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf user = postfix password = postfix hosts = localhost dbname = postfix table = mailbox select_field = maildir where_field = usernamed./usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cf user = postfix password = postfix hosts = localhost dbname = postfix table = mailbox select_field = quota where_field = usernameStep 10. 修改 CourierIMAP 相關設定 a. /usr/local/etc/authlib/authdaemonrc 將 authmodulelist 的設定只留 "authmysql" authmodulelist="authmysql"b. /usr/local/etc/authlib/authmysqlrc 比對底下的設定 MYSQL_CRYPT_PWFIELD password MYSQL_DATABASE postfix MYSQL_GID_FIELD '1001' MYSQL_HOME_FIELD '/usr/local/virtual' MYSQL_LOGIN_FIELD username MYSQL_MAILDIR_FIELD maildir MYSQL_NAME_FIELD name MYSQL_OPT 0 MYSQL_PASSWORD postfix MYSQL_SERVER localhost MYSQL_UID_FIELD '1001' MYSQL_USERNAME postfix MYSQL_USER_TABLE mailbox 修改時請小心,不能有 『space』的出現,僅可使用 tab 鍵, 這點網上有提到,是我心中的痛...Step 11. 建立目錄 # mkdir /usr/local/virtual記得將此目錄的擁有者更改為 uid 1001 及 gid 1001 # chown 1001:1001 /usr/local/virtualStep 12. 啟動服務 #/usr/local/sbin/postfix start #/usr/local/sbin/authdaemond start #/usr/local/libexec/courier-imap/imapd.rc start #/usr/local/libexec/courier-imap/pop3d.rc start一切到此搞定,若有裝 postfixadmin 則可使用 web 的方式建立帳號, 若無則使用 mysql 自行建立 參考網站:http://postfixwiki.org/index.php? title=Virtual_Users_and_Domains_with_Courier-IMAP_and_MySQL 建檔日期:2005 / 7 / 6 |