postfix+sasl+dovecot

一、安裝前的準備工作:


安裝前說明:郵件服務依賴於DNS服務,請事先確信您的DNS服務已經爲郵件應用配置完成。


1、安裝所需的rpm包,這包括以下這些:

httpd, mysql, mysql-server, mysql-devel, openssl-devel, dovecot, perl-DBD-MySQL, tcl, tcl-devel, libart_lgpl, libart_lgpl-devel, libtool-ltdl, libtool-ltdl-devel, expect


2、關閉sendmail,並將它的隨系統自動啓動功能關閉:

# service sendmail stop

# chkconfig sendmail off


3、安裝以下開發所用到的rpm包組:

Development Libraries

Development Tools


方法:

# yum groupinstall "packge_group_name"


二、啓動依賴的服務:


1、啓動mysql數據庫,並給mysql的root用戶設置密碼:

# service mysqld start

# chkconfig mysqld on

# mysqladmin -uroot password 'your_password'


2、啓動saslauthd服務,並將其加入到自動啓動隊列:

# service saslauthd start

# chkconfig saslauthd on


三、安裝配置postfix


# groupadd -g 2525 postfix

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

# groupadd -g 2526 postdrop

# useradd -g postdrop -u 2526 -s /sbin/nologin -M postdrop


# tar zxvf postfix-2.9.3.tar.gz

# cd postfix-2.9.3

# 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'

# make

# make install


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



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


  install_root: [/] /

  tempdir: [/root/postfix-2.9.3] /tmp/postfix

  config_directory: [/etc/postfix] /etc/postfix

  daemon_directory: [/usr/libexec/postfix] 

  command_directory: [/usr/sbin] 

  queue_directory: [/var/spool/postfix]

  sendmail_path: [/usr/sbin/sendmail]

  newaliases_path: [/usr/bin/newaliases]

  mailq_path: [/usr/bin/mailq]

  mail_owner: [postfix]

  setgid_group: [postdrop]   

    html_directory: [no]/var/www/html/postfix 

    manpages: [/usr/local/man]

    readme_directory: [no]


生成別名二進制文件:

#  newaliases


2.進行一些基本配置,測試啓動postfix並進行發信

# vim /etc/postfix/main.cf

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

myhostname = mail.magedu.com

myorigin = magedu.com

mydomain = magedu.com

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

mynetworks = 192.168.1.0/24, 127.0.0.0/8


說明:

myorigin參數用來指明發件人所在的域名,即做發件地址僞裝;

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

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

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

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

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


注意:

1、在postfix的配置文件中,參數行和註釋行是不能處在同一行中的;

2、任何一個參數的值都不需要加引號,否則,引號將會被當作參數值的一部分來使用;

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

4、如果一個參數的值有多個,可以將它們放在不同的行中,只需要在其後的每個行前多置一個空格即可;postfix會把第一個字符爲空格或tab的文本行視爲上一行的延續;



四、爲postfix提供SysV服務腳本/etc/rc.d/init.d/postfix,內容如下(#END 之前):

#!/bin/bash

#

# postfix      Postfix Mail Transfer Agent

#

# chkconfig: 2345 80 30

# description: Postfix is a Mail Transport Agent, which is the program \

#              that moves mail from one machine to another.

# processname: master

# pidfile: /var/spool/postfix/pid/master.pid

# config: /etc/postfix/main.cf

# config: /etc/postfix/master.cf


# Source function library.

. /etc/rc.d/init.d/functions


# Source networking configuration.

. /etc/sysconfig/network


# Check that networking is up.

[ $NETWORKING = "no" ] && exit 3


[ -x /usr/sbin/postfix ] || exit 4

[ -d /etc/postfix ] || exit 5

[ -d /var/spool/postfix ] || exit 6


RETVAL=0

prog="postfix"


start() {

# Start daemons.

echo -n $"Starting postfix: "

        /usr/bin/newaliases >/dev/null 2>&1

/usr/sbin/postfix start 2>/dev/null 1>&2 && success || failure $"$prog start"

RETVAL=$?

[ $RETVAL -eq 0 ] && touch /var/lock/subsys/postfix

        echo

return $RETVAL

}


stop() {

  # Stop daemons.

echo -n $"Shutting down postfix: "

/usr/sbin/postfix stop 2>/dev/null 1>&2 && success || failure $"$prog stop"

RETVAL=$?

[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/postfix

echo

return $RETVAL

}


reload() {

echo -n $"Reloading postfix: "

/usr/sbin/postfix reload 2>/dev/null 1>&2 && success || failure $"$prog reload"

RETVAL=$?

echo

return $RETVAL

}


abort() {

/usr/sbin/postfix abort 2>/dev/null 1>&2 && success || failure $"$prog abort"

return $?

}


flush() {

/usr/sbin/postfix flush 2>/dev/null 1>&2 && success || failure $"$prog flush"

return $?

}


check() {

/usr/sbin/postfix check 2>/dev/null 1>&2 && success || failure $"$prog check"

return $?

}


restart() {

stop

start

}


# See how we were called.

case "$1" in

  start)

start

;;

  stop)

stop

;;

  restart)

stop

start

;;

  reload)

reload

;;

  abort)

abort

;;

  flush)

flush

;;

  check)

check

;;

  status)

  status master

;;

  condrestart)

[ -f /var/lock/subsys/postfix ] && restart || :

;;

  *)

echo $"Usage: $0 {start|stop|restart|reload|abort|flush|check|status|condrestart}"

exit 1

esac


exit $?


# END


爲此腳本賦予執行權限:

# chmod +x /etc/rc.d/init.d/postfix


將postfix服務添加至服務列表:

# chkconfig --add postfix


設置其開機自動啓動:

# chkconfig postfix on


使用此腳本重新啓動服務,以測試其能否正常執行:

# service postfix restart


此時可使用本地用戶測試郵件收發了。


五、爲postfix服務開啓用戶別名支持:


1、在配置文件開啓基於hash的別名文件支持


在main.cf中,找到如下指令,而後啓用它(即移除前面的#號):

#alias_maps = hash:/etc/aliases


2、在/etc/aliases文件中定義新的別名項,其格式通常爲以冒號隔開的兩個字段,前一個字段爲初始目標郵件地址,後一個字段爲實際發往的地址,如:

redhat:magedu

[email protected]:  [email protected]


3、將/etc/aliases轉換爲hash格式:

# postalias  /etc/aliases


4、讓postfix重新載入配置文件,即可進行測試;


六、實現postfix基於客戶端的訪問控制


1、基於客戶端的訪問控制概覽


postfix內置了多種反垃圾郵件的機制,其中就包括“客戶端”發送郵件限制。客戶端判別機制可以設定一系列客戶信息的判別條件:

smtpd_client_restrictions

smtpd_data_restrictions

smtpd_helo_restrictions

smtpd_recipient_restrictions

smtpd_sender_restrictions


上面的每一項參數分別用於檢查SMTP會話過程中的特定階段,即客戶端提供相應信息的階段,如當客戶端發起連接請求時,postfix就可以根據配置文件中定義的smtpd_client_restrictions參數來判別此客戶端IP的訪問權限。相應地,smtpd_helo_restrictions則用於根據用戶的helo信息判別客戶端的訪問能力等等。


如果DATA命令之前的所有內容都被接受,客戶端接着就可以開始傳送郵件內容了。郵件內容通常由兩部分組成,前半部分是標題(header),其可以由header_check過濾,後半部分是郵件正文(body),其可以由check_body過濾。這兩項實現的是郵件“內容檢查”。


postfix的默認配置如下:

smtpd_client_restrictions =

smtpd_data_restrictions =

smtpd_end_of_data_restrictions =

smtpd_etrn_restrictions =

smtpd_helo_restrictions =

smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination

smtpd_sender_restrictions =


這限制了只有mynetworks參數中定義的本地網絡中的客戶端才能通過postfix轉發郵件,其它客戶端則不被允許,從而關閉了開放式中繼(open relay)的功能。


Postfix有多個內置的限制條件,如上面的permit_mynetworks和reject_unauth_destination,但管理員也可以使用訪問表(access map)來自定義限制條件。自定義訪問表的條件通常使用check_client_access, check_helo_access, check_sender_access, check_recipient_access進行,它們後面通常跟上type:mapname格式的訪問表類型和名稱。其中,check_sender_access和check_recipient_access用來檢查客戶端提供的郵件地址,因此,其訪問表中可以使用完整的郵件地址,如[email protected];也可以只使用域名,如magedu.com;還可以只有用戶名的部分,如marion@。


2、實現示例1


這裏以禁止172.16.100.200這臺主機通過工作在172.16.100.1上的postfix服務發送郵件爲例演示說明其實現過程。訪問表使用hash的格式。


(1)首先,編輯/etc/postfix/access文件,以之做爲客戶端檢查的控制文件,在裏面定義如下一行:

172.16.100.200REJECT


(2)將此文件轉換爲hash格式

# postmap /etc/postfix/access


(3)配置postfix使用此文件對客戶端進行檢查

編輯/etc/postfix/main.cf文件,添加如下參數:

smtpd_client_restrictions = check_client_access hash:/etc/postfix/access


(4)讓postfix重新載入配置文件即可進行發信控制的效果測試了。


3、實現示例2


這裏以禁止通過本服務器向microsoft.com域發送郵件爲例演示其實現過程。訪問表使用hash的格式。

(1)首先,建立/etc/postfix/denydstdomains文件(文件名任取),在裏面定義如下一行:

microsoft.comREJECT


(2)將此文件轉換爲hash格式

# postmap /etc/postfix/denydstdomains


(3)配置postfix使用此文件對客戶端進行檢查

編輯/etc/postfix/main.cf文件,添加如下參數:

smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/denydstdomains, permit_mynetworks, reject_unauth_destination


(4)讓postfix重新載入配置文件即可進行發信控制的效果測試了。


4、檢查表格式的說明


hash類的檢查表都使用類似如下的格式:

pattern   action


檢查表文件中,空白行、僅包含空白字符的行和以#開頭的行都會被忽略。以空白字符開頭後跟其它非空白字符的行會被認爲是前一行的延續,是一行的組成部分。


(1)關於pattern

其pattern通常有兩類地址:郵件地址和主機名稱/地址。


郵件地址的pattern格式如下:

user@domain  用於匹配指定郵件地址;

domain.tld   用於匹配以此域名作爲郵件地址中的域名部分的所有郵件地址;

user@ 用於匹配以此作爲郵件地址中的用戶名部分的所有郵件地址;


主機名稱/地址的pattern格式如下:

domain.tld   用於匹配指定域及其子域內的所有主機;

.domain.tld   用於匹配指定域的子域內的所有主機;

net.work.addr.ess

net.work.addr

net.work

net        用於匹配特定的IP地址或網絡內的所有主機;

network/mask  CIDR格式,匹配指定網絡內的所有主機;


(2)關於action


接受類的動作:

OK   接受其pattern匹配的郵件地址或主機名稱/地址;

全部由數字組成的action   隱式表示OK;


拒絕類的動作(部分):

4NN text 

5NN text 

    其中4NN類表示過一會兒重試;5NN類表示嚴重錯誤,將停止重試郵件發送;421和521對於postfix來說有特殊意義,儘量不要自定義這兩個代碼;

REJECT optional text...   拒絕;text爲可選信息;

DEFER optional text...    拒絕;text爲可選信息; 




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


使用以下命令驗正postfix是否支持cyrus風格的sasl認證,如果您的輸出爲以下結果,則是支持的:

# /usr/local/postfix/sbin/postconf  -a

cyrus

dovecot


#vim /etc/postfix/main.cf

添加以下內容:

############################CYRUS-SASL############################

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_sasl_application_name = smtpd

smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!


# vim /usr/lib/sasl2/smtpd.conf

添加如下內容:

pwcheck_method: saslauthd

mech_list: PLAIN LOGIN


讓postfix重新加載配置文件

#/usr/sbin/postfix reload


# telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

220 Welcome to our mail.magedu.com ESMTP,Warning: Version not Available!

ehlo mail.magedu.com

250-mail.magedu.com

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-AUTH PLAIN LOGIN

250-AUTH=PLAIN LOGIN               (請確保您的輸出以類似兩行)

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN




八、安裝Courier authentication library


1、courier簡介


courier-authlib是Courier組件中的認證庫,它是courier組件中一個獨立的子項目,用於爲Courier的其它組件提供認證服務。其認證功能通常包括驗正登錄時的帳號和密碼、獲取一個帳號相關的家目錄或郵件目錄等信息、改變帳號的密碼等。而其認證的實現方式也包括基於PAM通過/etc/passwd和/etc/shadow進行認證,基於GDBM或DB進行認證,基於LDAP/MySQL/PostgreSQL進行認證等。因此,courier-authlib也常用來與courier之外的其它郵件組件(如postfix)整合爲其提供認證服務。


2、安裝


接下來開始編譯安裝

# tar jxvf courier-authlib-0.62.4.tar.bz2

# cd courier-authlib-0.62.4

#./configure \

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

    --sysconfdir=/etc \

    --without-authpam \

    --without-authshadow \

    --without-authvchkpw \

    --without-authpgsql \

    --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-mailuser=postfix \

    --with-mailgroup=postfix \

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

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

# make

# make install


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

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

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


修改/etc/authdaemonrc 文件

authmodulelist="authmysql"

authmodulelistorig="authmysql"

daemons=10


3、配置其通過mysql進行郵件帳號認證


編輯/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

MYSQL_DATABASE  extmail

MYSQL_USER_TABLE  mailbox

MYSQL_CRYPT_PWFIELD  password

MYSQL_UID_FIELD  '2525'

MYSQL_GID_FIELD  '2525'

MYSQL_LOGIN_FIELD  username

MYSQL_HOME_FIELD  concat('/var/mailbox/',homedir)

MYSQL_NAME_FIELD  name

MYSQL_MAILDIR_FIELD  concat('/var/mailbox/',maildir)


4、提供SysV服務腳本


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

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

# chkconfig --add courier-authlib

# chkconfig --level 2345 courier-authlib on


# echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf.d/courier-authlib.conf

# ldconfig -v

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


5、配置postfix和courier-authlib


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

#mkdir –pv /var/mailbox

#chown –R postfix /var/mailbox


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

pwcheck_method: authdaemond

log_level: 3

mech_list:PLAIN LOGIN

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



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


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

########################Virtual Mailbox Settings########################

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

##########################QUOTA Settings########################

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 mailbox and try again later.

virtual_overquota_bounce = yes


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


# tar zxvf  extman-1.1.tar.gz

# cd extman-1.1/docs

# mysql -u root -p < extmail.sql

# mysql -u root -p <init.sql

# cp mysql*  /etc/postfix/


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

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

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


說明:啓用虛擬域以後,需要取消中心域,即註釋掉myhostname, mydestination, mydomain, myorigin幾個指令;當然,你也可以把mydestionation的值改爲你自己需要的。





十、配置dovecot


# vi /etc/dovecot.conf

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

……

auth default {

    mechanisms = plain

    passdb sql {

        args = /etc/dovecot-mysql.conf

    }

    userdb sql {

        args = /etc/dovecot-mysql.conf

    }

    ……


# vim /etc/dovecot-mysql.conf                 

driver = mysql

connect = host=localhost dbname=extmail user=extmail password=extmail

default_pass_scheme = CRYPT

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

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


說明:如果mysql服務器是本地主機,即host=localhost時,如果mysql.sock文件不是默認的/var/lib/mysql/mysql.sock,可以使用host=“sock文件的路徑”來指定新位置;




接下來啓動dovecot服務:


# service dovecot start

# chkconfig dovecot on




十一、安裝Extmail-1.2


說明:如果extmail的放置路徑做了修改,那麼配置文件webmail.cf中的/var/www路徑必須修改爲你所需要的位置。本文使用了默認的/var/www,所以,以下示例中並沒有包含路徑修改的相關內容。


1、安裝

# tar zxvf extmail-1.2.tar.gz

# mkdir -pv /var/www/extsuite

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

# cp /var/www/extsuite/extmail/webmail.cf.default  /var/www/extsuite/extmail/webmail.cf


2、修改主配置文件

#vi /var/www/extsuite/extmail/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


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



3、apache相關配置


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

<VirtualHost *:80>

ServerName mail.magedu.com

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

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

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

SuexecUserGroup postfix postfix

</VirtualHost>


修改 cgi執行文件屬主爲apache運行身份用戶:

# chown -R postfix.postfix /var/www/extsuite/extmail/cgi/


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

# vim /etc/httpd/httpd.conf

User postfix

Group postfix


<VirtualHost *:80>

ServerName mail.magedu.com

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

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

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

</VirtualHost>


4、依賴關係的解決


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

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

# cd Unix-Syslog-0.100

# perl Makefile.PL

# make

# make install


5、啓動apache服務

# service httpd start

# chkconfig httpd on




十二、安裝Extman-1.1


1、安裝及基本配置


# tar zxvf  extman-1.1.tar.gz

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


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

# cp /var/www/extsuite/extman/webman.cf.default  /var/www/extsuite/extman/webman.cf

# vi /var/www/extsuite/extman/webman.cf


SYS_MAILDIR_BASE = /home/domains

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

SYS_MAILDIR_BASE = /var/mailbox


SYS_DEFAULT_UID = 1000

SYS_DEFAULT_GID = 1000

此兩處後面設定的ID號需更改爲前而創建的postfix用戶和postfix組的id號,本文使用的是2525,因此,上述兩項需要修改爲:

SYS_DEFAULT_UID = 2525

SYS_DEFAULT_GID = 2525


SYS_MYSQL_USER = webman

SYS_MYSQL_PASS = webman

修改爲:

SYS_MYSQL_USER = extmail

SYS_MYSQL_PASS = extmail


而後修改cgi目錄的屬主:

# chown -R postfix.postfix /var/www/extsuite/extman/cgi/


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

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

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


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

#mkdir  -pv  /tmp/extman

#chown postfix.postfix  /tmp/extman


修改

SYS_CAPTCHA_ON = 1

SYS_CAPTCHA_ON = 0


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

http://mail.magedu.com


選擇管理即可登入extman進行後臺管理了。默認管理帳號爲:[email protected]  密碼爲:extmail*123*


說明:

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

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



2、配置Mailgraph_ext,使用Extman的圖形日誌:(下面所需的軟件包面要自己下載)


接下來安裝圖形日誌的運行所需要的軟件包Time::HiRes、File::Tail和rrdtool,其中前兩個包您可以去http://search.cpan.org搜索並下載獲得,後一個包您可以到 http://oss.oetiker.ch/rrdtool/pub/?M=D下載獲得; 注意安裝順序不能改換。


安裝Time::HiRes

#tar zxvf Time-HiRes-1.9707.tar.gz

#cd Time-HiRes-1.9707

#perl Makefile.PL

#make

#make test

#make install


安裝File::Tail

#tar zxvf File-Tail-0.99.3.tar.gz

#cd File-Tail-0.99.3

#perl Makefile

#make

#make test

#make install


安裝rrdtool-1.2.23

#tar zxvf rrdtool-1.2.23.tar.gz

#cd rrdtool-1.2.23

#./configure --prefix=/usr/local/rrdtool

#make

#make install


創建必要的符號鏈接(Extman會到這些路徑下找相關的庫文件)

#ln -sv /usr/local/rrdtool/lib/perl/5.8.5/i386-linux-thread-multi/auto/RRDs/RRDs.so   /usr/lib/perl5/5.8.5/i386-linux-thread-multi/

#ln -sv /usr/local/rrdtool/lib/perl/5.8.5/RRDp.pm   /usr/lib/perl5/5.8.5

#ln -sv /usr/local/rrdtool/lib/perl/5.8.5/i386-linux-thread-multi/RRDs.pm   /usr/lib/perl5/5.8.5


複製mailgraph_ext到/usr/local,並啓動之

# cp -r /var/www/extsuite/extman/addon/mailgraph_ext  /usr/local  

# /usr/local/mailgraph_ext/mailgraph-init start 


啓動cmdserver(在後臺顯示系統信息) 

# /var/www/extsuite/extman/daemon/cmdserver --daemon


添加到自動啓動隊列

# echo “/usr/local/mailgraph_ext/mailgraph-init start” >> /etc/rc.d/rc.local

# echo “/var/www/extsuite/extman/daemon/cmdserver -v -d” >> /etc/rc.d/rc.local 


使用方法: 等待大約15分鐘左右,如果郵件系統有一定的流量,即可登陸到extman裏,點“圖形日誌”即可看到圖形化的日誌。具體每天,周,月,年的則點擊相應的圖片進入即可。 


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