電子郵件是因特網上最為流行的應用之一。如同郵遞員分發投遞傳統郵件一樣,電子郵件也是異步的,也就是說人們是在方便的時候發送和閱讀郵件的,無須預先與別人協同。與傳統郵件不同的是,電子郵件既迅速,又易於分發,而且成本低廉。另外,現代的電子郵件消息可以包含超鏈接、HTML格式文本、圖像、聲音甚至視頻數據。
首先我們的Mail服務器是建立在LAMP的基礎上的,所以我們先要搭建一下我們的LAMP環境。
我們用到的軟件有: httpd-2.2.9.tar.gz ,mysql-5.0.56.tar.gz ,php-5.2.6.tar.bz2 。
下面我們開始配置環境
1. # tar -zxvf httpd-2.2.9.tar.gz -C /usr/src/
# cd /usr/src/httpd-2.2.9/
# ./configure --prefix=/usr/local/apache2
--enable-so --enable-rewrite --enable-ssl --with-ssl=/usr/lib --enable-auth-digest
--enable-cgi --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot =/usr/local/apache2/htdocs && make && make install(編譯安裝)
# service httpd stop
# chkconfig --level 2345 httpd off
# cd /usr/local/apache2/bin/
# ./apachectl start
# ./apachectl restart
# lsof -i:80
2. 編譯安裝mysql並進行配置
# tar -zxvf mysql-5.0.56.tar.gz -C /usr/src/
# cd /usr/src/mysql-5.0.56/
# useradd -M -s /sbin/nologin mysql # 添加一個mysql的非登陸用戶
# ./configure --prefix=/usr/local/mysql && make && make install # 編譯安裝
# cd support-files
# cp my-medium.cnf /etc/my.cnf #建立配置文件
# cd /usr/local/mysql
# ./mysql_install_db --user=mysql
# chown -R root.mysql /usr/local/mysql/ # 修改所屬組
# chown -R mysql /usr/local/mysql/var/
# cd /usr/local/mysql/bin
# ./mysqld_safe --user=mysql &
# ./mysql # 啟動mysql
3. 安裝PHP軟件,並進行配置。
# tar -jxvf /mnt/Linux-server/LNS-SG5/php-5.2.6.tar.bz2 -C .
# cd php-5.2.6/323
# ./configure --prefix=/usr/local/php5 --enable-mbstring --with- apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/
--with-config-file-path=/usr/local/php5 && make && make install
# cp /usr/src/php/php.ini-dist /usr/local/php5/php.ini
# vim /usr/local/apache2/conf/httpd.conf 添加以下兩行
AddType application/x-httpd-php .php 添加
DirectoryIndex index.php index.html 修改
# cd /usr/local/apache2/bin
# ./apachectl restart # 啟動
至此我們的LAMP環境就搭建完成了。我們開始搭建我們的mail服務器。
4.郵件傳輸代理(MTA) Postfix 2.5.3 使用最新版本2.5.3 數據庫/目錄服務 MySQL 5.0 可選openLDAP或NetScape LDAP,本文以MySQL為藍本,郵件投遞代理(MDA) maildrop 2.0.x 支持過濾和強大功能 Web帳戶管理后台 ExtMan 0.2.5 支持無限域名、無限用戶 POP3 服務器 Courier-IMAP 對於大部分企業而言完全足夠.WebMail 系統 ExtMail 1.1 支持多語言、全部模板化,功能基本齊全 SMTP認證庫 Cyrus SASL 標准的SASL實現庫,可以支持Courier authlib
其他數據認證庫 Courier Authlib 0.60 authlib是maildrop, courier-imap等服務的關鍵部件
日志分析及顯示 mailgraph_ext 在ExtMan中已經包含了. Web 服務器 Apache 2.x OS 自帶 .
我們開始安裝postfix
首先我們需要停掉sendmail,然后安裝這幾個必備的包,可能你的在裝機時已經裝上了。然后通過yum 安裝postfix ,這里我們已經裝過了。執行postconf -m 我們查看一下它是否支持mysql驗證。好了,我們的第一步就算完成了。
5. 接下來我們開始修改postfix的配置文件:
除了圖上的兩處還有
inet_interfaces = all 115行
mynetworks = 192.168.0.0/24, 127.0.0.0/8 262行
然后我們重啟postfix.
6. 配置好postfix 之后我們來安裝authlib,使用authlib登陸驗證.這樣可以不用管后台用戶數據是用什么方式存儲的.比方說MySQL/LDAP
7. 安裝完畢后我們需要修改以下配置文件。
8 . 修改Mysql支持的相關配置文件
# vim /etc/authlib/authmysqlrc
MYSQL_SERVERlocalhost 26行
MYSQL_USERNAMEextmail
MYSQL_PASSWORDextmail
MYSQL_SOCKET/var/lib/mysql/mysql.sock
MYSQL_PORT3306
MYSQL_DATABASEextmail
MYSQL_USER_TABLEmailbox
MYSQL_CRYPT_PWFIELDpassword
MYSQL_UID_FIELDuidnumber
MYSQL_GID_FIELDgidnumber
MYSQL_LOGIN_FIELDusername
MYSQL_HOME_FIELDconcat('/var/mailbox/',homedir)用戶家目錄的絕對路徑
MYSQL_MAILDIR_FIELDconcat('/var/mailbox/',maildir)
重新啟動courier-authlib, 並創建郵箱目錄
# service courier-authlib start
# mkdir /var/mailbox
9. 安裝courier-imap 屏蔽IMAP服務
# yum install courier-imap
ExtMail目前還沒有正式支持IMAP目錄,因此需要屏蔽IMAP,只提供pop3服務。而就目前的使用情況來看,IMAP使用的非常少,絕大部分OutLook/Foxmail用戶都習慣使用POP3而非IMAP。
# vim /usr/lib/courier-imap/etc/imapd
IMAPDSTART=NO
# vim /usr/lib/courier-imap/etc/imapd-ssl
IMAPDSSLSTART=NO
重新啟動courier-imap
# service courier-imap start
10. 安裝maildrop
maildrop是一個使用C++編寫的用來代替本地MDA的帶有過濾功能郵件投遞代理,是courier郵件系統組件之一,我們在此將使用maildrop來代替postfix自帶的MDA。
# yum install maildrop
為了使Postfix支持Maildrop,必須修改/etc/postfix/master.cf文件:
# vim /etc/postfix/master.cf
63 maildrop unix - n n - - pipe
64 flags=DRhu user=vuser argv=maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop}
注意上面一行前面要有2個空格,否則啟動失敗
配置main.cf 由於maildrop不支持一次接收多個收件人,因此必須在main.cf里增加如下參數:
maildrop_destination_recipient_limit = 1
# maildrop -v 測試
檢查安裝結果,請確保有"Courier Authentication Library extension enabled."一句出現:
maildrop RPM包安裝時,會自動創建vuser用戶及vgroup用戶組,專門用於郵件的存 儲, vuser:vgroup的uid/gid都是1000
修改郵箱目錄屬性:
chown vuser.vgroup /var/mailbox -R
11. 安裝cyrus-sasl ========用戶登錄驗證
# yum install cyrus-sasl 官網:wiki.extmail.org
開啟postfix的smtp認證
# vim /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions=permit_sasl_authenticated,reject_unauth_destination
讓postfix支持虛擬用戶
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_transport = maildrop
# local_recipient_maps = (注釋去掉) 209行
編輯smtpd.conf文件, 讓虛擬用戶到mysql數據庫認證
# vim /usr/lib64/sasl2/smtpd.conf
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/spool/authdaemon/socket
修改authdaemon socket目錄權限
如果該目錄權限不正確修改,maildrop及postfix等將無法正確獲取用戶的信息及密碼認證:
# chmod -R 777 /var/spool/authdaemon/
# service saslauthd start
12. 安裝ExtMail和extman ======安裝web界面 MUA
# yum install extsuite-webmail
# cd /var/www/extsuite/extmail
# cp webmail.cf.default webmail.cf
# vim webmail.cf
語言選項,可改作:
SYS_USER_LANG = zh_CN 77行
此處即為您在前文所設置的用戶郵件的存放目錄,可改作:
SYS_MAILDIR_BASE = /var/mailbox/ 127行
SYS_MYSQL_USER = extmail 139+行
SYS_MYSQL_PASS = extmail
SYS_MYSQL_DB = extmail
# chown -R vuser.vgroup /var/www/extsuite/extmail/cgi/ # 修改所屬組和所有者
# yum install extsuite-webman
# vim /var/www/extsuite/extman/webman.cf
此處即為您在前文所設置的用戶郵件的存放目錄,可改作:
12 SYS_MAILDIR_BASE = /var/mailbox
21 SYS_CAPTCHA_ON = 0 //不需要認證碼
# mkdir /tmp/extman
# chown vuser.vgroup /tmp/extman
設置虛擬域和虛擬用戶的配置文件
# cp /var/www/extsuite/extman/docs/mysql_virtual_*.cf /etc/postfix/
# chown -R vuser.vgroup /var/www/extsuite/extman/cgi/
導入mysql數據庫結構及初始化數據
# cd /var/www/extsuite/extman/docs
# mysql -u root -p <extmail.sql
# mysql -u root -p <init.sql
測試authlib認證:
# /usr/sbin/authtest -s login postmaster@extmail.org extmail
Authentication succeeded.
Authenticated: postmaster@extmail.org (uid 1000, gid 1000)
Home Directory: /var/mailbox/extmail.org/postmaster
Maildir: /var/mailbox/extmail.org/postmaster/Maildir/
Quota: (none)
Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0
Cleartext Password: extmail
Options: (none)
這樣表明ExtMan的正確安裝,數據庫也正確導入,courier-authlib能正確連接到mysql數據庫
修改httpd.conf文件
NameVirtualHost *:80
<VirtualHost *:80>
ServerName mail.lx.com
DocumentRoot /var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi/ /var/www/extsuite/extmail/cgi/
Alias /extmail /var/www/extsuite/extmail/html/
ScriptAlias /extman/cgi/ /var/www/extsuite/extman/cgi/
Alias /extman /var/www/extsuite/extman/html/
SuexecUserGroup vuser vgroup
</VirtualHost>
# service httpd restart
13. 訪問及測試 http://mail.lx.com/extman
選擇管理即可登入extman進行后台管理了。默認管理帳號為:root@extmail.org
密碼為:extmail*123*
登錄成功后創建虛擬域和虛擬用戶
使用telnet登錄25和110端口進行測試