postfix+courier-authlib+msyql+extmail郵件服務

postfix+Courier-authlib+extmail

204924604.png

一、安裝DNS服務:

1、配置本地yum

[root@localhost ~]# vim/etc/yum.repos.d/rhel-debuginfo.repo

205356662.jpg

205407192.jpg

2、使用本地yum安裝DNS軟件包。

編輯好本地yum之後,使用yum安裝DNS服務所需的軟件包。

[root@localhost ~]# yum install bind bind-chrootcaching-nameserver

205543272.jpg

3、編輯DNS的配置文件。

[root@localhost ~]# cd /var/named/chroot/etc/

[root@localhost etc]# cp -pnamed.caching-nameserver.conf named.conf

[root@localhost etc]# vim named.conf

205728127.jpg

205737126.jpg

[root@localhost etc]# vim named.rfc1912.zones

210213347.png

[root@localhost etc]# cd ../var/named/

[root@localhost named]# cp -p localhost.zone a.com.zone

205902111.jpg

至此DNS服務已經配置完成。啓動DNS服務,service named start。讓named服務隨系統啓動,chkconfig named on。

210311606.jpg

因爲該服務器是mail.a.com.域中的郵件交換器,所以要將服務的主機名改爲mail.a.com。修改主機名的方法有兩種,一種是臨時修改,註銷之後再次登錄生效,重啓失效。使用命令:“hostname主機名”另一種是永久修改,需要重啓生效,編輯/etc/sysconfig/network文件,修改“HOSTNAME=主機名”。

[root@localhost named]# vim /etc/sysconfig/network

//HOSTNAME=mail.a.com

註銷後重新登錄,即可生效。


二、安裝extmail前的準備工作

因爲extmail是通過web來進行收發郵件,在線註冊,身份驗證的,所以需要httpd和mysql,openssl一些軟件包。

httpd mysql mysql-server mysql-developenssl-devel dovecot perl-DBD-MySQL tcl tcl-devel libart_lgpl libart_lgpl-devel

libtool-ltdl libtool-ltdl-devel expect

210911198.jpg

210922535.jpg

主要的軟件包是:

dovecot //郵件的接收服務

httpd //利用web來進行收發電子郵件

mysql //mysql客戶端

mysql-server //mysql的服務

其它的就是一些依賴的軟件包,安裝完成後,需要對某些服務進行設置。

①給mysql添加管理員登錄口令,以及對其操作的授權。

[root@mail~]# mysqladmin -u root -p password 'redhat'

mysql>mysql -uroot -p 密碼:redhat

mysql>grant all privileges on *.* to root@'%' identified by 'redhat'; 對網絡上的賬號進行授權

mysql>flush privileges; 刷新數據庫裏面的權限

211328553.png


三、安裝extmail相關軟件

軟件包介紹:

Unix-Syslog-0.100.tar.gz //日誌補丁軟件包

courier-authlib-0.63.1.20111230.tar.bz //結合mysql進行身份驗證

extmail-1.2.tar.gz //實現收發信件

extman-1.1.tar.gz // 實現web註冊

postfix-2.8.2.tar.gz //postfix安裝包,提供smtp服務


因爲使用的是源代碼進行安裝,安裝時需要進行編譯,所以系統要具備基本的開發環境,安裝圓滿了才能夠順利進行。使用:yum grouplist查看系統開發環境所具備的基本組。

211511398.jpg

1、安裝postfix

注意在安裝postfix之前,要先關閉掉系統自帶的sendmail,否則會和postfix的安裝衝突。

servic sendmail stop //關閉sendmail服務

chkconfig sendmail off //不隨系統啓動

① tar -zxvf postfix-2.8.2.tar.gz -C /usr/local/src/

//解壓縮postfix壓縮包到/usr/local/src目錄中

② cd /usr/local/src/postfix-2.8.2

//進入解壓縮後的目錄中

③ groupadd -g 2525 postfix

//添加一個組,組ID:2525

④ useradd -g postfix -u 2525 -s /sbin/nologin -M postfix

//創建一個無登錄權限無家目錄的用戶postfix到組postfix中

⑤ groupadd -g 2526 postdrop

//添加一個組,組ID:2526

⑥ useradd -g postdrop –u 2526 -s /sbin/nologin -M postdrop

//創建一個無登錄權限無家目錄的用戶postdropx到組postdrop中

⑦make makefiles'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL-I/usr/include/sasl -DUSE_TLS ''AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2 -lssl -lcrypto'

//生成postfix的make文件

⑧ make //編譯

⑨ make install //安裝

按照以下的提示輸入相關的路徑([]號中的是缺省值,”]”後的是輸入值,省略的表示採用默認值)


install_root: [/] /

tempdir: [/usr/local/src/postfix-2.6.5] /tmp

config_directory: [/etc/postfix]

command_directory: [/usr/sbin]

daemon_directory:[/usr/libexec/postfix]

data_directory:[/var/lib/postfix]

html_directory: [no]/var/www/postfix_html

mail_owner: [postfix] //系統中要有postfix這個用戶

mailq_path: [/usr/bin/mailq]

manpage_directory: [/usr/local/man]

newaliases_path: [/usr/bin/newaliases]

queue_directory: [/var/spool/postfix]

readme_directory: [no]

sendmail_path:[/usr/sbin/sendmail]

setgid_group: [postdrop] //系統中要有postdrop這個組


⑩ newaliases

//生成別名二進制文件,這個步驟如果忽略,會造成postfix效率極低:

安裝好postfix之後,爲它編寫一個服務控制腳本或者利用rpm包中的postfix中的控制腳本。這裏使用的是rpm包中postfix的服務控制腳本來控制源碼安裝的postfix。

211609982.jpg

211627722.jpg

2、編輯postfix的配置文件。

#vi /etc/postfix/main.cf

修改以下幾項爲您需要的配置

myhostname = mail.a.com

mydomain = a.com

inet_interfaces = all

mydestination = $myhostname,localhost.$mydomain, localhost, $mydomain

mynetworks = 192.168.30.0/24,127.0.0.0/8

myorigin=$mydomain

說明:

myhostname 參數指定運行postfix郵件系統的主機的主機名,默認情況下,其值被設定爲本地機器名;

mydomain 參數指定您的域名,默認情況下,postfix將myhostname的第一部分刪除而作爲mydomain的值;

inet_interfaces 參數指定postfix系統監聽的網絡接口;

mydestination 參數指定postfix接收郵件時收件人的域名,即您的postfix系統要接收到哪個域名的郵件;

mynetworks 參數指定你所在的網絡的網絡地址,postfix系統根據其值來區別用戶是遠程的還是本地的,如果是本地網絡用戶則允許其訪問;

myorigin 參數用來指明發件人所在的域名;

注意:

每修改參數及其值後執行 postfixreload 即可令其生效;但若修改了inet_interfaces,則需重新啓動postfix;


四、爲postfix開啓基於cyrus-sasl的認證功能

1、查看postfix是否支持cyrus-sasl認證。

212012736.jpg

2、產生postfix與sasl結合的文件。

利用sasl與sendmail結合的文件產生sasl與postfix認證的文件

[[email protected]]# cd /usr/lib/sasl2/

[root@mailsasl2]# cp -p Sendmail.conf smtpd.conf

[root@mailsasl2]# service saslauthd start

[root@mailsasl2]# chkconfig saslauthd on

212040970.jpg

啓動saslauthd服務:service saslauthd start

3、修改postfix的配置文件,啓用sasl認證。

#vim /etc/postfix/main.cf

添加如下內容:

broken_sasl_auth_clients = yes //啓用客戶端認證

smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination //對客戶驗證的說明

smtpd_sasl_auth_enable = yes //服務器啓用認證

smtpd_sasl_local_domain = $myhostname //認證的主機

smtpd_sasl_security_options =noanonymous //拒絕非認證登錄

smtpd_banner = Welcome to our$myhostname ESMTP,Warning: Version not Available! //登錄時的提示信息

212321114.jpg

4、重新加載配置文件:service postfix reload

212402302.png


五、安裝Courier authenticationlibrary

1、安裝

①tar -jxvfcourier-authlib-0.63.1.20111230.tar.bz2 -C/usr/local/src/

//解壓縮courier-authlib壓縮包

② cd/usr/local/src/courier-authlib-0.63.1.20111230/

//進入解壓縮後的文件中

③ ./configure \

--prefix=/usr/local/courier-authlib \

--sysconfdir=/etc \

--with-authmysql \

--with-mysql-libs=/usr/lib/mysql \

--with-mysql-includes=/usr/include/mysql \

--with-redhat \

--with-authmysqlrc=/etc/authmysqlrc \

--with-authdaemonrc=/etc/authdaemonrc \

--with-ltdl-lib=/usr/lib \

--with-ltdl-include=/usr/include

//對環境進行配置,紅色參數至關重要,要確保路徑的正確性。

④ make //編譯

⑤ make install //安裝

2、共享庫文件以及頭文件

爲了使其它程序能夠查找到courier-authlib的庫文件和頭文件,需要將它的這些文件共享到系統的庫文件和頭文件中.

①共享庫文件

在/etc/ld.so.conf.d/目錄中創建一個文件:courier-authlib.conf

#touch /etc/ld.so.conf.d/courier-authlib.conf

內容是:courier-authlib的庫文件的路徑:/usr/local/courier-authlib/lib/courier-authlib/

212434828.jpg

②共享頭文件

ln -s/usr/local/courier-authlib/include /usr/include/courier-authlib

//創建一個連接,將courier-authlib的頭文件鏈接到系統的庫文件目錄中

4、修改文件的權限

chmod 755/usr/local/courier-authlib/var/spool/authdaemon

212452685.jpg

5、修改認證模塊文件和mysql結合文件

# cp /etc/authdaemonrc.dist /etc/authdaemonrc

# cp /etc/authmysqlrc.dist /etc/authmysqlrc

① 修改/etc/authdaemonrc文件

212514344.jpg

② 修改/etc/authmysqlrc

編輯/etc/authmysqlrc 爲以下內容,其中2525,2525 爲postfix 用戶的UID和GID。

MYSQL_SERVER localhost

MYSQL_PORT 3306 (指定mysql監聽的端口,這裏使用默認的3306)

MYSQL_USERNAME extmail (這時爲後文要用的數據庫的所有者的用戶名)

MYSQL_PASSWORD extmail (密碼)

MYSQL_SOCKET /var/lib/mysql/mysql.sock (msyql的sock文件路徑)

MYSQL_DATABASE extmail (訪問extmail的數據庫)

MYSQL_USER_TABLE mailbox (存放extmail用戶的表)

MYSQL_CRYPT_PWFIELD password (對passwo字段加密)

MYSQL_UID_FIELD '2525' (extmail用戶文件的用戶ID)

MYSQL_GID_FIELD '2525' (extmail用戶文件的組ID)

MYSQL_LOGIN_FIELD username (登錄時的字段名username)

MYSQL_HOME_FIELD concat('/var/mailbox/',homedir) (用戶的家目錄)

MYSQL_NAME_FIELD name (用戶名字段name)

MYSQL_MAILDIR_FIELD concat('/var/mailbox/',maildir) (用戶郵件目錄)

6、產生courier-authlib的服務控制腳本

# cd/usr/local/src/courier-authlib-0.63.1.20111230/

# cp courier-authlib.sysvinit/etc/init.d/courier-authlib

# chmod 755 /etc/init.d/courier-authlib

# chkconfig --add courier-authlib

# chkconfig --level 2345courier-authlib on

# service courier-authlib start (啓動服務)

212601233.jpg

7、創建extmail用戶的虛擬家目錄

新建虛擬用戶郵箱所在的目錄,並將其權限賦予postfix用戶:

#mkdir -pv /var/mailbox

#chown –R postfix:postfix /var/mailbox

212622688.jpg

8、cyrus-sasl與courier-authlib結合

接下來重新配置SMTP 認證,編輯 /usr/local/lib/sasl2/smtpd.conf ,確保其爲以下內容:

pwcheck_method: authdaemond

log_level: 3

mech_list:PLAIN LOGIN

authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket

212644367.jpg

然後重啓saslauthd服務:service saslauthd restart

212655259.jpg


六、安裝extman及其相關配置

讓postfix支持虛擬域和虛擬用戶

1、編輯/etc/postfix/main.cf,添加如下內容:

########################Virtual MailboxSettings########################

virtual_mailbox_base = /var/mailbox

virtual_mailbox_maps =mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

virtual_mailbox_domains =mysql:/etc/postfix/mysql_virtual_domains_maps.cf

virtual_alias_domains =

virtual_alias_maps =mysql:/etc/postfix/mysql_virtual_alias_maps.cf

virtual_uid_maps = static:2525

virtual_gid_maps = static:2525

virtual_transport = virtual

maildrop_destination_recipient_limit =1

maildrop_destination_concurrency_limit= 1

##########################QUOTASettings########################

message_size_limit = 14336000

virtual_mailbox_limit = 20971520

virtual_create_maildirsize = yes

virtual_mailbox_extended = yes

virtual_mailbox_limit_maps =mysql:/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, please Tidy your mailboxand try again later.

virtual_overquota_bounce = yes

212801673.jpg

2、安裝extman

① tar -zxvf extman-1.1.tar.gz

//解壓縮extman軟件包到當前目錄

② 使用extman源碼目錄下docs目錄中的extmail.sql和init.sql建立數據庫:

# cd extman-1.1/docs

-------------------------------------------------------------------------------------------------------------

# mysql -u root -p <extmail.sql

# mysql -u root -p <init.sql

# mysql -u root -p 進行驗證

212835757.jpg

212848119.jpg

③ 授予用戶extmail訪問extmail數據庫的權限

mysql> GRANT all privileges onextmail.* TO extmail@localhost IDENTIFIED BY 'extmail';

mysql> GRANT all privileges onextmail.* TO [email protected] IDENTIFIED BY 'extmail';

mysql>FLUSH PRIVILEGES; 讓設置的內容生效

cp mysql_virtual_* /etc/postfix/

//將extman-1.0.1/docs目錄中的mysql開頭的文件拷貝到/etc/postfix,設置虛擬域文件

212908974.jpg

service postfix restart

七、配置dovecot

1、在開始我們使用的是yum來安裝dovecot,這裏只需要對其進行配置

# vi /etc/dovecot.conf

要修改的內容如下:

mail_location =maildir:/var/mailbox/%d/%n/Maildir

213007204.jpg

213016587.jpg

auth default {

mechanisms = plain

passdb sql {

args = /etc/dovecot-mysql.conf

}

userdb sql {

args = /etc/dovecot-mysql.conf

}

213037519.jpg

213045491.jpg

2、產生dovecot與mysql結合的文件

首先要修改postf的配置文件:

# vim /etc/postfix/main.cf

213107480.jpg

#vim /etc/dovecot-mysql.conf //產生一個文件,內容如下:

driver = mysql

connect = host=localhost dbname=extmailuser=extmail password=extmail (如mysql源碼安裝,host=/tmp/mysql.sock)

default_pass_scheme = CRYPT

password_query = SELECT username ASuser,password AS password FROM mailbox WHERE username = '%u'

user_query = SELECT maildir, uidnumberAS uid, gidnumber AS gid FROM mailbox WHERE username = '%u'

213133962.jpg

重啓dovecot服務:service dovecot restart 。

213143336.jpg

監控日誌,tail -f /var/log/maillog/ 出現如下信息說明正常:

213152871.jpg


八、安裝Extmail (首先要確保安裝了httpd)

1、安裝

① # tar -zxvf extmail-1.2.tar.gz

//解壓縮到當前目錄

② # mkdir -pv/var/www/extsuite

//創建一個目錄,用來作爲一個web站點

# mv extmail-1.2/var/www/extsuite/extmail

# mv extman-1.1/var/www/extsuite/extman

//將extmail和extman拷貝到新建的站點目錄下,以便通過web訪問。

213224850.jpg

③ 修改extmail目錄下的cgi目錄下文件的屬性

213240864.jpg

④ 修改主配置文件

# cd /var/www/extsuite/extmail/

# cp webmail.cf.default webmail.cf

# vim webmail.cf

部分修改選項的說明:

------------------------------------------------------------------

SYS_MESSAGE_SIZE_LIMIT = 5242880

用戶可以發送的最大郵件


SYS_USER_LANG = en_US

語言選項,可改作:

SYS_USER_LANG = zh_CN

SYS_MAILDIR_BASE = /home/domains

此處即爲您在前文所設置的用戶郵件的存放目錄,可改作:

SYS_MAILDIR_BASE = /var/mailbox

SYS_MYSQL_USER = db_user

SYS_MYSQL_PASS = db_pass

以上兩句句用來設置連接數據庫服務器所使用用戶名、密碼和郵件服務器用到的數據庫,這裏修改爲:

SYS_MYSQL_USER = extmail

SYS_MYSQL_PASS = extmail

213353580.png


SYS_MYSQL_HOST = localhost

指明數據庫服務器主機名,這裏默認即可


SYS_MYSQL_TABLE = mailbox

SYS_MYSQL_ATTR_USERNAME = username

SYS_MYSQL_ATTR_DOMAIN = domain

SYS_MYSQL_ATTR_PASSWD = password

以上用來指定驗正用戶登錄裏所用到的表,以及用戶名、域名和用戶密碼分別對應的表中列的名稱;這裏默認即可


SYS_AUTHLIB_SOCKET =/var/spool/authdaemon/socket

此句用來指明authdaemo socket文件的位置,這裏修改爲:

SYS_AUTHLIB_SOCKET =

usr/local/courier-authlib/var/spool/authdaemon/socket

213417151.jpg

⑤ 重啓相關服務

213430539.jpg


九、配置httpd

由於extmail要進行本地郵件的投遞操作,故必須將運行apache服務器用戶的身份修改爲您的郵件投遞代理的用戶;本例中打開了apache服務器的suexec功能,故使用以下方法來實現虛擬主機運行身份的指定。此例中的MDA爲postfix自帶,因此將指定爲postfix用戶:


如果您沒有打開apache服務器的suexec功能,也可以使用以下方法解決:

# vi /etc/httpd/httpd.conf

User postfix

Group postfix


<VirtualHost *:80>

ServerName mail.a.com

DocumentRoot /var/www/extsuite/extmail/html/

ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi

Alias /extmail /var/www/extsuite/extmail/html

</VirtualHost>


十、安裝extamil日誌補丁

extmail將會用到perl的Unix::syslogd功能,您可以去http://search.cpan.org搜索下載原碼包進行安裝。

① # tar -zxvf Unix-Syslog-0.100.tar.gz

//解壓縮文件

② # cd Unix-Syslog-0.100

# perl Makefile.PL //使用perl工具進行配置

# make //編譯

# make install //安裝


十一、extmail與extman結合

修改配置文件以符合本例的需要:

# cd /var/www/extsuite/extman

# chown -R postfix:postfix cgi/

# cp webman.cf.default webman.cf

# vi webman.cf

修改內容如下:

----------------------------------------------------------------

SYS_MAILDIR_BASE = /home/domains

此處即爲您在前文所設置的用戶郵件的存放目錄,可改作:

SYS_MAILDIR_BASE = /var/mailbox


修改

SYS_CAPTCHA_ON = 1 爲 SYS_CAPTCHA_ON =0


修改

SYS_LANG = en_US 爲 SYS_LANG = zh_CN

③ 通過web訪問extman的目錄

在apache的主配置文件中Extmail的虛擬主機部分,添加如下兩行:

ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi

Alias /extman /var/www/extsuite/extman/html

213533477.png

重啓httpd服務:service httpd restart

④創建其運行時所需的臨時目錄,並修改其相應的權限:

#mkdir -pv /tmp/extman

#chown postfix.postfix /tmp/extman

⑤ 使用虛擬域

在postfix主配置文件中的mydestination選項中,我們指明瞭哪些域是本地的域,但是在extmail中,我們使用了虛擬域,爲了產生衝突,需要禁用到postfix中的mydestination選項,如果不禁用,那在設置郵箱域時,必須和postfix中指明的相同。

213557739.jpg


十二、測試

好了,到此爲止,重新啓動apache服務器後,您的Webmail和Extman已經可以使用了,可以在瀏覽器中輸入指定的虛擬主機的名稱進行訪問,如下:

選擇管理即可登入extman進行後臺管理了。默認管理帳號爲:[email protected] 密碼爲:extmail*123*。首先應該添加一些域名。

214015779.png

214036864.png

214048424.png


說明:

(1) 添加域名後,如果無法自由註冊,請重新編輯該域的屬性,允許自由註冊。

(2) 如果您安裝後無法正常顯示校驗碼,安裝perl-GD模塊會解決這個問題。如果想簡單,您可以到以下地址下載適合您的平臺的rpm包,安裝即可: http://dries.ulyssis.org/rpm/packages/perl-GD/info.html

(3) extman-1.1自帶了圖形化顯示日誌的功能;此功能需要rrdtool的支持,您需要安裝此些模塊纔可能正常顯示圖形日誌。

(4)如果登陸http://ip/extmail後出現:

DBIconnect(‘database=extmail;host=localhost;mysql_socket=/var/lib/mysql/mysql.sock’,'extmail’,…)failed: Access denied for user ‘extmail’@'localhost’ (using password: YES) at/opt/test/htdocs/extsuite/extmail/libs/Ext/Auth/MySQL.pm line 45

檢查webmail.cf中於數據庫連接的設置是否正確,以及authmysqlrc的數據庫設置是否正確即可


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章