郵件系統(tǒng)架設(shè)postfix+dovecot+mysql+postfixadmin+roundcube
這篇文章介紹一個(gè)實(shí)現(xiàn)Web收發(fā)的郵件系統(tǒng)方案,利用postfix作為SMTP服務(wù)器,實(shí)現(xiàn)郵件的發(fā)送與接收,使用dovecot作為IMAP服務(wù)器,roundcube作為web MUA(郵件用戶代理),實(shí)現(xiàn)web在線郵件發(fā)送與接收。而postfix的虛擬域名和虛擬用戶則由postfixadmin管理。系統(tǒng)及軟件環(huán)境系統(tǒng):centos-5.8 32位軟件:postfix-2.8.7,dovecot-1.0.7,apache-2.2.22,php-5.2.17,mysql-5.1.58,postfixadmin-2.3.5,roundcubemail-0.7.2注意:本教程并不通用,使用不同的軟件版本可能配置方法不一樣, 請(qǐng)注意。安裝LAMP1、第三方庫添加由于postfixadmin要求php-5.2以上的版本,且我們這里使用yum安裝lamp,默認(rèn)的版本是5.1,所以需要添加第三方的rpm庫安裝php 5.2版本。rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitkavi /etc/yum.repos.d/CentOS-Base.repo加入:[utterramblings]name=Jason’s Utter Ramblings Repobaseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/enabled=1gpgcheck=1gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka2、開始安裝yum -y install httpd mysql mysql-devel mysql-server php php-pecl-Fileinfo php-mcrypt php-devel php-mysql hp-common php-mbstring php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc pcre pcre-devel3、啟動(dòng)服務(wù)service httpd startservice mysqld startmysqladmin -uroot password ’mysql密碼’安裝postfix由于centos自帶的postfix不支持mysql,所以只能選擇編譯安裝。首先刪除自帶的sendmailrpm -e sendmailyum install db4-develgroupadd -g 1001 postfixgroupadd postdropuseradd -M -u 1001 -g postfix -s /sbin/nologin postfixcd /tmpwget http://postfix.energybeam.com/source/official/postfix-2.8.7.tar.gztar xzf postfix-2.8.7.tar.gzcd postfix-2.8.7make -f Makefile.init makefiles ’CCARGS=-DHAS_MYSQL -I/usr/include/mysql’ ’AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm’make && make install簡(jiǎn)單配置一下postfix:vi /etc/postfix/main.cf添加如下代碼:virtual_mailbox_base = /var/mail/vmailvirtual_uid_maps = static:1001virtual_gid_maps = static:10011001分別為postfix用戶和postfix用戶組的id安裝dovecotyum -y install dovecot安裝postfixadmincd /tmpwget http://softlayer.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gztar xzf postfixadmin-2.3.5.tar.gz -C /var/www/htmlmv /var/www/html/postfixadmin-2.3.5 /var/www/html/postfixadmincd /var/www/html/postfixadminmysql -uroot -pmysql > CREATE DATABASE postfix;mysql > CREATE USER ’postfix’@’localhost’ IDENTIFIED BY ’postfix_password’;mysql > GRANT ALL PRIVILEGES ON `postfix` . * TO ’postfix’@’localhost’;postfix_password替換成自己的。修改配置文件:vi config.inc.php找到下面的參數(shù)并作修改:$CONF[’configured’] = true;$CONF[’database_password’] = ’postfix_password’;$CONF[’default_language’] = ’cn’;$CONF[’used_quotas’] = ’YES’;$CONF[’quota’] = ’YES’;postfix_password即上一步設(shè)置的postfix用戶密碼。打開瀏覽器,輸入下面的網(wǎng)址開始安裝:
http://your-domain/postfixadmin/setup.php
postfix與postfixadmin整合vi /etc/postfix/main.cf按如下添加或修改:virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cfvirtual_alias_maps =proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cfvirtual_mailbox_maps =proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
# Additional for quota supportvirtual_create_maildirsize = yesvirtual_mailbox_extended = yesvirtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cfvirtual_mailbox_limit_override = yesvirtual_maildir_limit_message = Sorry, the user’s maildir has overdrawn his diskspace quota, please try again later.virtual_overquota_bounce = yes建立目錄sqlmkdir /etc/postfix/sql以下的幾個(gè)文件注意修改postfix_password。vi /etc/postfix/sql/mysql_virtual_alias_maps.cf內(nèi)容:user = postfixpassword = postfix_passwordhosts = localhostdbname = postfixquery = SELECT goto FROM alias WHERE address=’%s’ AND active = ’1’#expansion_limit = 100vi /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf內(nèi)容:user = postfixpassword = postfix_passwordhosts = localhostdbname = postfixquery = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = ’%d’ and alias.address = CONCAT(’%u’, ’@’, alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active=’1’vi /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf內(nèi)容:# handles catch-all settings of target-domainuser = postfixpassword = postfix_passwordhosts = localhostdbname = postfixquery = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = ’%d’ and alias.address = CONCAT(’@’, alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active=’1’vi /etc/postfix/sql/mysql_virtual_domains_maps.cf內(nèi)容:user = postfixpassword = postfix_passwordhosts = localhostdbname = postfixquery = SELECT domain FROM domain WHERE domain=’%s’ AND active = ’1’#query = SELECT domain FROM domain WHERE domain=’%s’#optional query to use when relaying for backup MX#query = SELECT domain FROM domain WHERE domain=’%s’ AND backupmx = ’0’ AND active = ’1’#expansion_limit = 100vi /etc/postfix/sql/mysql_virtual_mailbox_maps.cf內(nèi)容:user = postfixpassword = postfix_passwordhosts = localhostdbname = postfixquery = SELECT maildir FROM mailbox WHERE username=’%s’ AND active = ’1’#expansion_limit = 100vi /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf內(nèi)容:user = postfixpassword = postfix_passwordhosts = localhostdbname = postfixquery = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = ’%d’ and mailbox.username = CONCAT(’%u’, ’@’, alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active=’1’vi /etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf內(nèi)容:user = postfixpassword = postfix_passwordhosts = localhostdbname = postfixquery = SELECT quota FROM mailbox WHERE username=’%s’ AND active = ’1’dovecot與postfixadmin整合vi /etc/dovecot.conf按如下修改或添加:default_mail_env = maildir:/var/mail/vmail/%u/
auth default {mechanisms plainuserdb sql {# Path for SQL configuration file, see doc/dovecot-sql-example.confargs = /etc/dovecot-mysql.conf}passdb sql {# Path for SQL configuration file, see doc/dovecot-sql-example.confargs = /etc/dovecot-mysql.conf}}
# Valid UID range for users, defaults to 500 and above.first_valid_uid = 1001 # Change this to your postfix UID
## IMAP quotaprotocol imap {mail_plugins = quota imap_quota}
## POP quotaprotocol pop3 {mail_plugins = quota}
## Local Delivery Agentprotocol lda {mail_plugins = quota}
## Dictionary DB proxydict {quota = mysql:/etc/dovecot-dict-quota.conf}
## Default quota valuesplugin {quota = dict:storage=200000 proxy::quota}以下兩個(gè)文件注意修改postfix_password。vi /etc/dovecot-mysql.conf內(nèi)容:connect = host=localhost dbname=postfix user=postfix password=postfix_passworddriver = mysql
# Default password scheme.# depends on your $CONF[’encrypt’] setting:# md5crypt -> MD5-CRYPT# md5 -> PLAIN-MD5# cleartext -> PLAINdefault_pass_scheme = MD5-CRYPT
# Query to retrieve password. user can be used to retrieve username in other# formats also.
password_query = SELECT username AS user,password FROM mailbox WHERE username = ’%u’ AND active=’1’
# Query to retrieve user information.
user_query = SELECT maildir, 1001 AS uid, 1001 AS gid, CONCAT(’dict:storage=’,floor(quota/1000),’ proxy::quota’) as quota FROM mailbox WHERE username = ’%u’ AND active=’1’vi /etc/dovecot-dict-quota.conf內(nèi)容:driver = mysqlconnect = host=localhost dbname=postfix user=postfix password=postfix_passworddefault_pass_scheme = MD5-CRYPTtable = quotaselect_field = currentwhere_field = pathusername_field = username啟動(dòng)服務(wù)postmap /etc/aliases/usr/sbin/postfix startservice dovecot startroundcube安裝cd /tmpwget http://voxel.dl.sourceforge.net/project/roundcubemail/roundcubemail/0.7.2/roundcubemail-0.7.2.tar.gztar xzf roundcubemail-0.7.2.tar.gz -C /var/www/htmlmv /var/www/html/roundcubemail-0.7.2 /var/www/html/webmailmysql -uroot -pmysql> CREATE DATABASE roundcubemail;mysql> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY ’password’;mysql> FLUSH PRIVILEGES;現(xiàn)在你可以瀏覽器打開以下網(wǎng)址安裝:
http://yourdomain/webmail/installer/
詳細(xì)的roundcubemail安裝說明可以參考:http://blog.dvxj.com/pandola/roundcube-install-config.html這樣就實(shí)現(xiàn)了完整的郵件系統(tǒng)功能,沒有實(shí)現(xiàn)的是smtp的認(rèn)證,即無法使用像outlook express客戶端發(fā)送郵件,如有需要,可以搜索sasl方面的教程配置。相關(guān)網(wǎng)站:
http://www.postfix.org/
http://www.dovecot.org/
http://postfixadmin.sourceforge.net/
http://roundcube.net/
相關(guān)文章:
1. SQL Server與Oracle鏈接服務(wù)器應(yīng)用2. MySQL case when使用方法實(shí)例解析3. MySQL索引背后的數(shù)據(jù)結(jié)構(gòu)及算法原理4. SQL Server 數(shù)據(jù)庫的更改默認(rèn)備份目錄的詳細(xì)步驟5. Sql Server 壓縮數(shù)據(jù)庫日志文件的方法6. 解讀Oracle數(shù)據(jù)庫后臺(tái)進(jìn)程的功能7. MySQL 如何設(shè)計(jì)統(tǒng)計(jì)數(shù)據(jù)表8. MySQL OOM(內(nèi)存溢出)的解決思路9. MySQL系列之三 基礎(chǔ)篇10. MySQL 性能、監(jiān)控與災(zāi)難恢復(fù)
