| 導購 | 订阅 | 在线投稿
分享
 
 
 

ExtMail Solution HOWTO for Linux

來源:互聯網網民  2008-05-31 00:03:54  評論

版權聲明:本文版權歸作者所有,如其他個人、第三方網站或媒體報刊等需轉載全文或節選,爲支持我們的工作,請務必注明如下信息: 作者信息:hzqbbc 文章原始出處:http://www.extmail.org/docs/extmail_solution_linux/ 項目首頁:http://www.extmail.org 如果因此而給您帶來麻煩,請您原諒,謝謝合作。

變更說明0.18 2006-09-04:修正一處輸入錯誤,一處不明確的地方 0.17 2006-08-30:修正缺漏receive_override_options的bug 0.16 2006-08-28:修正maildrop配置錯誤,感謝風雲! 0.15 2006-08-17:增加MySQL/httpd開機自啓動的支持 關于此文版本:0.18 作者:He zhiqiang 項目主頁:http://www.extmail.org 個人主頁:http://www.hzqbbc.com 最後更新:2006-09-04 本文檔以2005-07-25的早期文檔爲藍本,以RPM系統爲基礎。所涉及軟件全部是OpenSource軟件,版權以GPL爲主,作爲企業應用沒有任何版權/法律問題。

基于RPM系統具有方便、快捷,易快速複制和重現的優點。如果用戶希望獲得這些RPM包的源碼包,可以與作者聯系。

編寫本文的初衷,是給那些希望快速架設郵件系統而不想過多了解複雜的系統知識的網管/用戶,爲了使軟件之間的結合更緊密,部分軟件的配置及測試方面進行了增強改進,因此本文的一些操作步驟作者不能保證在其他場合能完全適用,敬請注意。

本文假定讀者是在CentOS 4.x或 RedHat EnterPRise Linux 4.x平台上安裝,並具有一定的Unix平台 / Linux平台系統經驗,懂得rpm基本命令及常規的系統操作,如文件的刪除,目錄創建,改名,和vi編輯器的基本使用等。

文檔目錄ExtMail Solution概述 硬件配置 操作系統安裝 下載ExtMail Solution軟件包 MTA-Postfix配置 配置Courier-Authlib 安裝maildrop 配置Apache 安裝Webmail-ExtMail 安裝管理後台-ExtMan 配置圖形化日志系統-mailgraph_ext 測試基本系統 配置Cyrus-SASL 安裝Courier-IMAP 內容/病毒過濾 准備工作ClamAVAmavisd-new配置Postfix測試反垃圾郵件-Spam Locker 准備工作配置/測試與Postfix結合最終測試 附加信息 增加FCGI支持編譯Courier-IMAP結束語 已知Bugs TODO列表 ExtMail Solution 結構ExtMail Solution 是一個基于優秀開源軟件的電子郵件系統解決方案,核心部件包括了Postfix, Amavisd-new, ClamAV, ExtMail 和ExtMan, Courier系列軟件。是一個功能相對比較齊全的免費電子郵件系統。以下是其主要的特性列表: 支持SMTP/POP3/HTTP協議 支持SMTP認證及ESMTP 可支持大容量郵箱(大于1GB) 高速Web界面訪問郵箱 完整的Web管理後台 在線服務端病毒過濾 內建內容過濾 SMTP行爲識別垃圾郵件 支持大量反垃圾郵件技術 圖形化郵件日志分析 支持別名/多域/域管理員等 支持網絡磁盤/POP3郵件 支持讀/寫HTML格式郵件 支持定制模板及多語言

整個郵件解決方案由如下軟件組成:

功能模塊

內容

備注

操作系統(OS)

CentOS 4.3

CentOS和RHEL是一樣的,而且升級免費

郵件傳輸代理(MTA)

Postfix 2.3snapshot

使用2.3 snapshot,雖然不是最新但是對一般人而言足夠用了

數據庫/目錄服務

MySQL 4.1

可選openLDAP或NetScape LDAP,本文以MySQL爲藍本

郵件投遞代理(MDA)

maildrop 2.0.x

支持過濾和強大功能

Web帳戶管理後台

ExtMan 0.16-pre1

支持無限域名、無限用戶

POP3 服務器

Courier-IMAP

只使用pop3部分,對于大部分企業而言完全足夠

WebMail 系統

ExtMail 0.24-pre8

支持多語言、全部模板化,功能基本齊全

防病毒軟件(Anti-Virus)

ClamAV 0.88

最熱門的開源殺毒軟件

SMTP階段反垃圾郵件工具

Spam Locker 0.083

基于SMTP行爲識別的Antispam軟件,大量可選插件

內容過濾器

Amavisd-new 2.40

Content-Filter軟件,支持與clamav/sa的挂接

內容級別的反垃圾郵件工具

SpamAssassin

著名的SA,可以支持大量規則,但速度慢

SMTP認證庫

Cyrus SASL 2.1x

標准的SASL實現庫,可以支持Courier authlib

其他數據認證庫

Courier Authlib 0.57

authlib是maildrop, courier-imap等服務的關鍵部件

日志分析及顯示

mailgraph_ext

在ExtMan中已經包含了

Web 服務器

Apache 2.0.x

CentOS 自帶

硬件配置要流暢地運行郵件系統,建議的硬件配置如下:

物理內存:256M+ 推薦512M 交換區:2倍物理內存大小 CPU:PIII 1G+ 推薦P4 主板:推薦Intel原裝 網卡:100M/1000M 推薦3Com/Intel 操作系統安裝本文檔支持RedHat Enterprise 4.x 及CentOS 4.x版本。要注意的是安裝系統時,只安裝如下的組件: Web Server

要注意必須選中httpd-suexec軟件包,否則下文的配置將失效 MYSQL數據庫

注意必須選中mysql-server, libdbi-dbd-mysql, perl-DBD-mysql等模塊,否則extmail將無法連接mysql VIM編輯器

強烈建議安裝vim-enhanced軟件包,它支持main.cf彩色高亮語法分析 其余的Xwindows, 打印,KDE/Gnore, 服務器配置工具,網絡工具,開發包等全部都不要選上。安裝完畢進入操作系統後,建議禁止root直接登陸,並增加一個非root帳戶,例如叫sysadmin。這樣要以root權限操作的話,必須先以sysadmin身份登陸再su到root執行。方法:

CentOS4.3安裝步驟圖解以下將以詳細的圖解來介紹如何安裝CentOS4.3

ExtMail Solution HOWTO for Linux

CentOS啓動光盤的啓動畫面,直接回車即可。

ExtMail Solution HOWTO for Linux

系統提示「是否需要校驗CD媒質」,請選擇「Skip」。

ExtMail Solution HOWTO for Linux

選擇「English」作爲安裝界面的語言。

ExtMail Solution HOWTO for Linux

安裝類型請務必選擇「Custom」,以便之後詳細選擇要裝的軟件包。

ExtMail Solution HOWTO for Linux

磁盤分區設置請選擇「Manually partition with disk Druid」(手工分區)。

ExtMail Solution HOWTO for Linux

如圖,我們將/,/usr,/var,/var/spool/postfix等單獨分成一個分區,注意:如果磁盤大小允許,請將/var/spool/vscan目

錄也單獨成一個分區,該目錄主要存放被過濾的臨時郵件。

ExtMail Solution HOWTO for Linux

配置網卡及子網掩碼,記得點選「Activate boot」。

ExtMail Solution HOWTO for Linux

配置網關及DNS,請將離你的服務器最近DNS服務器IP地址填入「Primary DNS」。

ExtMail Solution HOWTO for Linux

防火牆配置時,打開防火牆(選Enable FireWall),並放行常規的服務(服務列表全選),最重要的是記得打開SELinux(選Active)

ExtMail Solution HOWTO for Linux

時區選「上海」。

ExtMail Solution HOWTO for Linux

輸入root帳戶密碼,建議使用較長的密碼,並混雜數字與字母及特殊字符。

ExtMail Solution HOWTO for Linux

進入軟件組的選擇對話界面後,我們只選擇Editors組。

ExtMail Solution HOWTO for Linux

其次選擇是Web Server及FTP Server組。

ExtMail Solution HOWTO for Linux

再次選擇MySQL DataBase組,並點擊右邊的Details

在Details對話框裏,確保libdbi-dbd-mysql,mysql-server,perl-DBD-MySQL等模塊都被選中。extmail依賴這些軟件包。

ExtMail Solution HOWTO for Linux

最後,確認一下所做的選擇。其他沒有被提到的軟件模塊/組全部都去掉。總共軟件大小有814MB左右。

點Next後,安裝系統提示必須要准備好CentOS的第1,2,3張光盤。

ExtMail Solution HOWTO for Linux

系統進行初始化,磁盤分區等。

系統安裝到後面時,需要換安裝盤。請將盤2及盤3按提示放入光驅。

ExtMail Solution HOWTO for Linux

安裝完畢後,出現祝賀完成的界面,點Reboot重新啓動。

如無意外,系統進入登陸提示符界面。至此,CentOS4.3的安裝就結束了。

以root身份登進系統後,增加一個非root帳戶,名稱爲sysadmin,密碼按您的需求設置一個即可。接下來我們要禁止root直接登陸,編輯/etc/ssh/sshd_config 修改以下配置爲: PermitRootLogin no

然後重新啓動sshd:

/etc/init.d/sshd restart

這樣禁止了root直接登陸。

配置SELinux

自從RHEL4/CentOS4以後,系統默認打開了SELinux支持,簡單說SELinux就是一個強制性的安全機制,但是它也帶來了不少麻煩,爲了避免編寫煩瑣的policy規則,本文檔將屏蔽掉SELinux對MySQL及httpd的保護。方法如下:

setsebool httpd_disable_trans=1setsebool mysqld_disable_trans=1

操作完畢後,重新啓動mysql及apache,並將如下命令加入/etc/rc.d/rc.local以便服務器啓動後能自動生效:

/usr/sbin/setsebool httpd_disable_trans=1/usr/sbin/setsebool mysqld_disable_trans=1/etc/init.d/mysqld restart/etc/init.d/httpd restart

下載ExtMail Solution軟件包基本假定整個系統的安裝全過程都要求以root身份執行,如果機器沒有訪問外部網絡的能力,則事先下載好ExtMail Solution軟件包,並用ftp以sysadmin帳戶的身份,上載到服務器。

下載軟件包我們統一將軟件包下載到/root目錄裏。 su - rootcd /rootwget http://www.extmail.org/source/ExtMail-Solution-Linux-0.1.tar.gz

校驗下載的文件必須校驗確認過沒損壞才能使用。命令如下:

wget http://www.extmail.org/source/md5sum.es_linux-0.1cat md5sum.es_linux-0.1md5sum ExtMail-Solution-Linux-0.1.tar.gz

一個可能的結果:

# cat md5sum.es_linux-0.1168eced41c0cac0ed9f981e791f3783b ExtMail-Solution-Linux-0.1.tar.gz# md5sum ExtMail-Solution-Linux-0.1.tar.gz168eced41c0cac0ed9f981e791f3783b ExtMail-Solution-Linux-0.1.tar.gz

由于軟件包不斷的變更,所以上述結果和您的結果可能不一致,請以下載的md5sum爲准

解壓目前最新的ExtMail-Solution軟件包版本號爲0.1,軟件包文件名爲:ExtMail-Solution-Linux-0.1.tar.gz,下載回來後,在/root目錄解開:

tar xfz ExtMail-Solution-Linux-0.1.tar.gz

此外,我們假設本次安裝默認域是extmail.org,主機名爲:mail.extmail.org,ExtMail Solution的文件目錄是/root/ExtMail-Solution-Linux-0.1/

重要步驟:

我們進入/root/ExtMail-Solution-Linux-0.1/目錄,該目錄下包括如下文件/目錄: conf/docs/RPMS/src/README

其中RPMS目錄是本文的重點,裏面包含了所需要的全部rpm包,src目錄則是存放webmail, anti-spam等相關軟件的源碼,而README則是說明文件,docs目錄則是本文檔相關的html及圖片。

下文所涉及的操作,絕大部分都是發生在/root/ExtMail-Solution-Linux-0.1目錄裏,請確保當前目錄爲:/root/ExtMail-Solution-Linux-0.1

配置Postfix MTA刪除沖突軟件,sendmail,需要執行: rpm -e --nodeps sendmail

mysql有關軟件:

CentOS4.x/ RedHat EL4.x 都自帶mysql-server,請用戶自行安裝好,包括mysql-client和devel等包

安裝postfix

rpm -ivh --nodeps RPMS/postfix-2.3.20050716-1hzq.i386.rpm

配置postfix

簡化postfix配置: postconf -n /etc/postfix/main2.cfmv /etc/postfix/main.cf /etc/postfix/main.cf.oldmv /etc/postfix/main2.cf /etc/postfix/main.cf

再編輯main.cf:

vi /etc/postfix/main.cf

增加如下內容: # hostnamemynetworks = 127.0.0.1myhostname = mail.extmail.orgmydestination = $mynetworks $myhostname# bannermail_name = Postfix - by extmail.orgsmtpd_banner = $myhostname ESMTP $mail_name# response immediatelysmtpd_error_sleep_time = 0sunknown_local_recipient_reject_code = 450# extmail config herevirtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cfvirtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cfvirtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cfvirtual_transport = maildrop:

編輯mysql_virtual_alias_maps.cf

vi /etc/postfix/mysql_virtual_alias_maps.cf

內容如下: user = extmailpassWord = extmailhosts = localhostdbname = extmailtable = aliasselect_field = gotowhere_field = address

編輯mysql_virtual_domains_maps.cf

vi /etc/postfix/mysql_virtual_domains_maps.cf

內容如下: user = extmailpassword = extmailhosts = localhostdbname = extmailtable = domainselect_field = descriptionwhere_field = domain#additional_conditions = and backupmx ='0' and active ='1'

編輯mysql_virtual_mailbox_maps.cf

vi /etc/postfix/mysql_virtual_mailbox_maps.cf

內容如下: user = extmailpassword = extmailhosts = localhostdbname = extmailtable = mailboxselect_field = maildirwhere_field = username#additional_conditions = and active = '1'

配置Courier-Authlib安裝Courier-Authlib運行如下命令安裝相關軟件包

rpm -ivh RPMS/libtool-libs-1.5.6-4.EL4.1.c4.3.i386.rpmrpm -ivh RPMS/courier-authlib-0.57-1hzq.i386.rpmrpm -ivh RPMS/courier-authlib-devel-0.57-1hzq.i386.rpmrpm -ivh RPMS/courier-authlib-mysql-0.57-1hzq.i386.rpm

編輯/etc/authlib/authmysqlrc文件,並將其內容清空,然後增加如下內容:

MYSQL_SERVER localhostMYSQL_USERNAME extmailMYSQL_PASSWORD extmailMYSQL_SOCKET /var/lib/mysql/mysql.sockMYSQL_PORT 3306MYSQL_OPT 0MYSQL_DATABASE extmailMYSQL_USER_TABLE mailboxMYSQL_CRYPT_PWFIELD passwordMYSQL_UID_FIELD uidnumberMYSQL_GID_FIELD gidnumberMYSQL_LOGIN_FIELD usernameMYSQL_HOME_FIELD homedirMYSQL_NAME_FIELD nameMYSQL_MAILDIR_FIELD maildirMYSQL_QUOTA_FIELD quotaMYSQL_SELECT_CLAUSE SELECT username,password,"",uidnumber,gidnumber,\ CONCAT('/home/domains/',homedir), \ CONCAT('/home/domains/',maildir), \ quota, \ name \ FROM mailbox \ WHERE username = '$(local_part)@$(domain)'

存盤退出後啓動courier-authlib:

/etc/init.d/courier-authlib start

如一切正常,命令行將返回如下信息:

Starting Courier authentication services: authdaemond

修改authdaemon socket目錄權限

如果該目錄權限不正確修改,maildrop及postfix等將無法正確獲取用戶的信息及密碼認證: chmod 755 /var/spool/authdaemon/

安裝Maildrop注意事項:

如果您需要重新編譯maildrop軟件包,首先必須獲得其源碼rpm包,其次必須先裝好courier-authlib及其devel軟件包,否則編譯maildrop之後將無法打開authlib支持。

安裝maildrop

rpm -ivh RPMS/maildrop-2.0.1-1hzq.i386.rpmrpm -ivh RPMS/maildrop-man-2.0.1-1hzq.i386.rpm

配置master.cf

爲了使Postfix支持Maildrop,必須修改/etc/postfix/master.cf文件,注釋掉原來的maildrop的配置內容,並改爲: maildrop unix - n n - - pipe #flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient} flags=DRhu user=vuser argv=maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop}

配置main.cf

由于maildrop不支持一次接收多個收件人,因此必須在main.cf裏增加如下參數:

maildrop_destination_recipient_limit = 1

最後重新啓動postfix即可

配置Apache編輯httpd.conf: vi /etc/httpd/conf/httpd.conf

在730行左右,屏蔽掉AddDefaultCharset: #AddDefaultCharset UTF-8

使apache開機默認啓動:

chkconfig --level 3 httpd on

虛擬主機設置編輯/etc/httpd/conf/httpd.conf文件,在最後一行加上:

NameVirtualHost *:80Include conf/vhost_*.conf

編輯/etc/httpd/conf/vhost_extmail.conf,裏面定義虛擬主機的相關內容,包括主目錄,以及ExtMail和ExtMan的相關配置,Suexec的設置等。 # VirtualHost for ExtMail SolutionServerName mail.extmail.orgDocumentRoot /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/# Suexec configSuexecUserGroup vuser vgroup

重新啓動apache: /etc/init.d/httpd restart

注意:此時重新啓動apache會産生以下警告信息,可不必理會

Starting httpd: Warning: DocumentRoot [/var/www/extsuite/extmail/html/] does not exist

安裝ExtMail建立/var/www/extsuite並複制源碼到該目錄,相關命令: mkdir /var/www/extsuitecp -r src/extmail-0.24-pre8 /var/www/extsuite/extmailcd /var/www/extsuite/extmailcp webmail.cf.default webmail.cfcd $OLDPWD

注意:上面命令行中最後一個cd $OLDPWD是返回原始路徑(即ExtMail Solution軟件包根目錄)

編輯webmail.cf

用vi打開/var/www/extsuite/extmail/webmail.cf,並按2次ESC鍵以確保進入命令模式,然後輸入:

:1, $ s#/var/www/cgi-bin#/var/www/extsuite#g

上述命令的作用是將默認路徑從/var/www/cgi-bin下換到/var/www/extsuite下,處理完畢後,修改webmail.cf裏的其他參數,主要變動的內容見下:

SYS_USER_LANG = zh_CNSYS_USER_CHARSET = gb2312SYS_MFILTER_ON = 1SYS_NETDISK_ON = 1SYS_MYSQL_USER = extmailSYS_MYSQL_PASS = extmailSYS_MYSQL_DB = extmailSYS_G_ABOOK_TYPE = fileSYS_G_ABOOK_FILE_CHARSET = gb2312

其中SYS_MFILTER_ON及SYS_NETDISK_ON 設置爲1是爲了打開網絡磁盤和過濾器。全局地址本默認爲ldap格式,現在也改爲文本格式,並將地址本的轉換編碼改爲GB2312

更新cgi目錄權限

由于SuEXEC的需要,必須將extmail的cgi目錄修改成vuser:vgroup權限:

chown -R vuser:vgroup /var/www/extsuite/extmail/cgi/

安裝ExtMan - web後台在ExtMail-Solution軟件包根目錄下執行:

cp -r src/extman-0.16-pre1 /var/www/extsuite/extman/

配置webman.cf

用vi編輯/var/www/extsuite/extman/webman.cf,並連按2次ESC,確保進入命令模式,然後輸入如下命令: :1, $ s#/var/www/cgi-bin#/var/www/extsuite#g

處理完畢後修改SYS_CHARSET及SYS_LANG參數爲:

SYS_CHARSET = gb2312SYS_LANG = zh_CN

其他參數基本上可以使用默認值。

更新cgi目錄權限

由于SuEXEC的需要,必須將extman的cgi目錄修改成vuser:vgroup權限:

chown -R vuser:vgroup /var/www/extsuite/extman/cgi/

確認MySQL狀態

在執行mysql操作前,必須確認它已被正確安裝並啓動,可以用rpm命令查詢mysql server的安裝情況,用ps ax的辦法查看進程列表是否有mysqld進程:

rpm -aq|grep -i mysql-server

正常情況下應該可以看到mysql-server被安裝:

mysql-server-4.1.12-3.RHEL4.1

如果沒有,則表示沒有安裝好mysql-server,可以從本軟件包RPMS目錄裏安裝,也可以找安裝光盤安裝:

rpm -ivh RPMS/mysql-server-4.1.12-3.RHEL4.1.i386.rpm

安裝完畢後必須初始化mysql,然後重新啓動

/usr/bin/mysql_install_db/etc/init.d/mysqld start

正常情況下將啓動成功:

Starting MySQL: [ OK ]

然後用ps命令來檢查mysqld是否正確運行:

ps ax|grep mysqld

正常情況下應出現如下的結果:

433 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/etc/my.cnf --pid-file=/var/run/mysqld/mysqld.pid

466 pts/0 Sl 0:00 /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking --socket=/var/lib/mysql/mysql.sock

如果mysql沒正確啓動,請檢查/var/log/mysqld.log裏面的出錯提示,進行處理:

tail /var/log/mysqld.log

數據庫初始化

執行以下命令導入mysql數據庫結構及初始化數據,注意必須逐行輸入以下命令,root密碼默認爲空,不可直接用鼠標複制兩行命令直接輸入,否則會報錯!

mysql -u root -p

鏈接基本庫到Extmail

由于ExtMan的體系與ExtMail比較類似,因此ExtMan需要使用ExtMail中幾個基礎perl 模塊,在extman的源碼包裏,包含了一個叫buildlink.sh 的小腳本,該腳本完成了這些鏈接的工作,使用方法: cd /var/www/extsuite/extman/libs/Ext./buildlink.sh build /var/www/extsuite/extmail/libs/Extmkdir /tmp/extmanchown -R vuser:vgroup /tmp/extmancd $OLDPWD

操作完畢後,需要建立剛才導入mysql的test@extmail.org帳戶的Maildir,請輸入如下命令:

cd /var/www/extsuite/extman/tools./maildirmake.pl /home/domains/extmail.org/test/Maildirchown -R vuser:vgroup /home/domains/extmail.orgcd $OLDPWD

注意事項:

上面命令行中最後一個cd $OLDPWD是返回原始路徑(即ExtMail Solution軟件包根目錄)

由于RedHat發行版中包含了一個叫tmpwatch的工具,該工具會定期掃描/tmp/下的文件,如果這些文件很久都沒被使用,將被刪除,因此如果後台長期不使用,/tmp/extman目錄有可能被tmpwatch刪除,所以要麽定期登陸後台,要麽修改 webman.cf將臨時目錄修改到另一個地方。此處暫以/tmp/extman默認值爲例。

測試authlib

在命令行下執行:

/usr/sbin/authtest -s login test@extmail.org test

結果如下:

Authentication succeeded. Authenticated: test@extmail.org (uid 1000, gid 1000) Home Directory: /home/domains/extmail.org/test Maildir: /home/domains/extmail.org/test/Maildir/ Quota: 5242880Encrypted Password: {crypt}uywiuN.XggXXcCleartext Password: test Options: (none)

這樣表明ExtMan的正確安裝,數據庫也正確導入,courier-authlib能正確連接到mysql數據庫

最後訪問http://mail.extmail.org/extmail/,如無意外,將看到webmail的登陸頁,不過此時還沒有加正式的用戶,所以不能登陸,包括test@extmail.org也不行。必須要登陸到http://mail.extmail.org/extman/ 裏增加一個新帳戶才能登陸。

ExtMan的默認超級管理員帳戶是root@extmail.org,密碼是extmail,登陸成功後,建議將密碼修改,以確保安全。

配置Mailgraph_ext自ExtMan 0.14-pre2 開始,系統集成了Mailgraph_ext插件,該插件使extman具備圖形化顯示郵件日志的能力。mailgraph_ext融合了mailgraph和queuegraph兩個軟件包,除增加了更多的日志分析及圖形顯示能力外,還重寫了web模塊,集成到ExtMan後台裏,這樣郵件日志將只能給經過授權的用戶查看,提高了安全性。

mailgraph_ext及Extman都需要安裝rrdtool工具

必需的軟件包

- Perl 5.6+ (建議5.8以上)- rrdtool 及rrdtool的perl包,地址: http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/- File::Tail (還需要Time::HiRes模塊)

RHEL/CentOS一般自帶了perl-Time-HiRes(1.5x)所以以下的rpm安裝也許會報錯(提示沖突),可以不必理會。如果想安裝本文所帶的新版Time-HiRes模塊,可以用如下命令刪除系統自帶的包:

rpm -e perl-Time-HiRes --nodeps

安裝依賴包/RRDtool

rpm -ivh RPMS/rrdtool-1.2.12-1hzq.i386.rpm RPMS/perl-rrdtool-1.2.12-1hzq.i386.rpmrpm -ivh RPMS/perl-Time-HiRes-1.72-1hzq.i386.rpmrpm -ivh RPMS/perl-File-Tail-0.99.3-1hzq.i386.rpm

複制mailgraph_ext

執行以下命令:

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

注意事項:

本文使用qmonitor來搜集隊列數據,而不是使用crontab來定時提取,這與官方網站上的文檔有差異。使用qmonitor的好處是它實時的監視隊列目錄的變化,顯示的結果更加精確。

啓動進程

啓動mailgraph_ext及qmonitor:

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

加入自啓動

爲了一開機就能自動執行上述進程,將上述命令加到rc.local 裏面: echo "/usr/local/mailgraph_ext/mailgraph-init start" /etc/rc.d/rc.localecho "/usr/local/mailgraph_ext/qmonitor-init start" /etc/rc.d/rc.local

使用方法等待大約15分鍾左右,如果郵件系統有一定的流量,即可登陸到extman裏,點「圖形日志」即可看到圖形化的日志。具體每天,周,月,年的則點擊相應的圖片進入即可。 配置Cyrus-SASL 認證RHEL4/CentOS4的cyrus-sasl默認沒有打開authdaemon的支持,爲了使用集中認證的authlib,必須打開這個支持。爲此我們必須刪除系統的cyrus-sasl軟件包,替換成打開了authdaemon支持的sasl軟件包。首先要刪除系統老的cyrus-sasl:

rpm -e --nodeps cyrus-sasl

然後安裝新的支持authdaemon的軟件包

rpm -ivh RPMS/cyrus-sasl-2.1.19-5.EL4.i386.rpm

Postfix的SMTP認證需要透過Cyrus-SASL,連接到authdaemon獲取認證信息,編輯/etc/postfix/main.cf,增加如下內容:

# smtpd related configsmtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_non_fqdn_hostname,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unauth_destination,reject_unauth_pipelining,reject_invalid_hostname,# SMTP AUTH config herebroken_sasl_auth_clients = yessmtpd_sasl_auth_enable = yessmtpd_sasl_local_domain = $myhostnamesmtpd_sasl_security_options = noanonymous

其次用vi編輯/usr/lib/sasl2/smtpd.conf,確保其內容爲:

pwcheck_method: authdaemondlog_level: 3mech_list: PLAIN LOGINauthdaemond_path:/var/spool/authdaemon/socket

存盤退出後,重新啓動postfix:

/etc/init.d/postfix restart

測試SMTP認證

通過以下命令獲得test@extmail.org的用戶名及密碼的BASE64編碼:

perl -e 'use MIME::Base64; print encode_base64("test\@extmail.org")'dGVzdEBleHRtYWlsLm9yZw==perl -e 'use MIME::Base64; print encode_base64("test")'dGVzdA==

然後本機測試,其過程如下(藍色的文字是我們輸入/發送到Postfix的)

telnet localhost 25Trying 127.0.0.1...Connected to localhost.localdomain (127.0.0.1).Escape character is '^]'.220 mail.extmail.org ESMTP Postfix - by extmail.orgehlo demo.domain.tld250-mail.extmail.org250-PIPELINING250-SIZE 10240000250-VRFY250-ETRN250-AUTH LOGIN PLAIN250-AUTH=LOGIN PLAIN250-ENHANCEDSTATUSCODES250-8BITMIME250 DSNauth login334 VXNlcm5hbWU6dGVzdEBleHRtYWlsLm9yZw==334 UGFzc3dvcmQ6dGVzdA==235 2.0.0 Authentication successfulquit221 2.0.0 Bye

最後出現235 Authentication Successful 表明認證成功了。

安裝Courier-IMAP用以下命令安裝courier-imap的rpm包,默認的courier-authlib及courier-imap都會增加系統自啓動設置,因此下一次服務器啓動將自動啓動相應的authlib及POP3服務

rpm -ivh RPMS/courier-imap-4.1.0-1hzq.i386.rpm

配置courier-imap

由于Courier-imap的IMAP目錄是按UTF-7編碼的,ExtMail目前還沒有正式支持IMAP目錄,因此需要屏蔽IMAP,只提供pop3服務。而就目前的使用情況來看,IMAP使用的非常少,絕大部分Outlook/Foxmail用戶都習慣使用POP3而非IMAP。

vi /usr/lib/courier-imap/etc/imapd

將如下這行配置:

IMAPDSTART=YES

替換成爲:

IMAPDSTART=NO

vi /usr/lib/courier-imap/etc/imapd-ssl

再將如下配置:

IMAPDSSLSTART=YES

替換成爲:

IMAPDSSLSTART=NO

然後重新啓動courier-imap:

/etc/init.d/courier-imap start

測試POP3

請按如下步驟輸入pop3命令測試其是否正常工作,注意藍色的信息是我們輸入到POP3服務器的

telnet localhost 110Trying 127.0.0.1...Connected to localhost.localdomain (127.0.0.1).Escape character is '^]'.+OK Hello there.user test@extmail.org+OK Password required.pass test+OK logged in.list+OK POP3 clients that break here, they violate STD53..quit+OK Bye-bye.Connection closed by foreign host.

反病毒/內容過濾配置反病毒及內容過濾器是依賴Amavisd-new軟件包,它是一個多功能的過濾器,能與殺毒軟件及內容過濾軟件(如SpamAssassin)結合,通用性較強。

安裝依賴的Perl包首先我們要確保系統自帶的perl-Net-DNS軟件包被刪除幹淨,因爲該包的版本較低(0.48),有已知的bug,所以必須替換成本文檔提供的新版(0.5x),輸入如下命令:

rpm -e --nodeps perl-Net-DNS

Amavisd-new 及SpamAssassin需要依賴大量的第三方perl軟件包,下列要安裝的部分RPM在上述的操作中已經安裝了,爲了給出較明確的依賴關系,我們依然將這些包的名稱列出,如果安裝時提示有安裝包已安裝過,或者提示沖突,請不必驚慌。請安裝如下的RPM軟件包:

rpm -ivh RPMS/perl-Digest-SHA1-2.07-5.i386.rpmrpm -ivh RPMS/perl-Digest-HMAC-1.01-1hzq.i386.rpmrpm -ivh RPMS/perl-Net-IP-1.24-1hzq.i386.rpmrpm --nodeps -ivh RPMS/perl-Net-DNS-0.57-1hzq.i386.rpmrpm -ivh RPMS/perl-Time-HiRes-1.72-1hzq.i386.rpmrpm -ivh RPMS/perl-HTML-Tagset-3.03-30.noarch.rpmrpm -ivh RPMS/perl-HTML-Parser-3.35-6.i386.rpm rpm -ivh RPMS/spamassassin-3.0.5-3.el4.i386.rpmrpm -ivh RPMS/perl-IO-stringy-2.110-1hzq.i386.rpmrpm -ivh RPMS/perl-IO-Multiplex-1.08-1hzq.i386.rpmrpm -ivh RPMS/perl-Net_SSLeay.pm-1.30-1hzq.i386.rpmrpm -ivh RPMS/perl-IO-Socket-SSL-0.97-1hzq.i386.rpmrpm -ivh RPMS/perl-Net-Server-0.93-1hzq.i386.rpmrpm -ivh RPMS/perl-Unix-Syslog-0.100-1hzq.i386.rpmrpm -ivh RPMS/perl-TimeDate-1.16-1hzq.i386.rpmrpm -ivh RPMS/perl-MailTools-1.67-1hzq.i386.rpmrpm -ivh --force RPMS/perl-MIME-Base64-3.05-1hzq.i386.rpmrpm -ivh RPMS/perl-Convert-BinHex-1.119-1hzq.i386.rpmrpm -ivh RPMS/perl-MIME-tools-5.418-1hzq.i386.rpmrpm -ivh RPMS/perl-BerkeleyDB-0.26-1hzq.i386.rpmrpm -ivh RPMS/perl-Convert-TNEF-0.17-1hzq.i386.rpmrpm -ivh RPMS/perl-Convert-UUlib-1.051-1hzq.i386.rpmrpm -ivh RPMS/perl-Compress-Zlib-1.41-1hzq.i386.rpmrpm -ivh RPMS/perl-Archive-Zip-1.16-1hzq.i386.rpmrpm -ivh RPMS/perl-IO-Zlib-1.04-1hzq.i386.rpmrpm -ivh RPMS/perl-Archive-Tar-1.26-1hzq.i386.rpmrpm -ivh RPMS/arc-5.21o-1hzq.i386.rpmrpm -ivh RPMS/zoo-2.10-9hzq.i386.rpmrpm -ivh RPMS/unarj-2.65-49hzq.i386.rpmexport LANG=Crpm -ivh RPMS/amavisd-new-2.4.0-1hzq.i386.rpmchown amavis.amavis /var/spool/vscan/db/chkconfig --add amavisd

修改amavisd.conf修改的主要參數如下,請逐一對照後修改:

$max_servers = 10;$sa_spam_subject_tag = '[SPAM] ';$mydomain = 'mail.extmail.org';$myhostname = 'mail.extmail.org';@local_domains_maps = qw(.);$sa_tag2_level_deflt = 5.0;$sa_kill_level_deflt = 5.0;

注意事項:

上述$mydomain參數與$myhostname參數相同,主要是爲了方便之後的病毒/垃圾彙報郵件發給系統管理員時,能投遞到本地的別名裏,再轉交到虛擬域的特定用戶。

增加如下參數(默認amavisd.conf沒有):

$sa_spam_modifies_subj = 0; # don't modify subject$remove_existing_x_scanned_headers= 1; # remove existing headers$remove_existing_spam_headers = 1;

配置SpamAssassinAmavisd-new 通過Mail::SpamAssassin 模塊來調用SA的功能,因此這裏配置SA和常規配置SA軟件有些區別,主要集中在修改local.cf文件上。

編輯/etc/mail/spamassassin/local.cf文件

vi /etc/mail/spamassassin/local.cf

將其內容修改爲:

report_safe 1use_bayes 0auto_learn 0bayes_auto_expire 1skip_rbl_checks 1use_razor2 0use_dcc 0use_pyzor 0dns_available no

增加Chinese_rules.cf支持

Chinese_rules.cf是教育科研網的反垃圾郵件小組對大量垃圾郵件和正常郵件進行分析後得出的一個關鍵字/分數規則集,用于處理中文(簡體)垃圾郵件還是比較有效的。這裏我們通過如下命令增加到系統:

wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf

由于該規則每周更新一次,爲了達到最好效果,最好在crontab裏增加自動更新的內容,輸入:

/usr/bin/crontab -e

然後輸入如下的內容:

0 0 1 * * wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf; /etc/init.d/amavisd restart

存盤退出即可。最後運行以下調試命令以確認amavisd沒有錯誤:

/usr/sbin/amavisd debug

如果沒有異常提示或報錯退出則表示一切都正常,按ctrl+c終止,然後正常啓動,若提示pid不存在等錯誤,不必理會,只要最後啓動成功即可:

/etc/init.d/amavisd start

安裝ClamAV執行如下命令: rpm -ivh RPMS/clamav-db-0.88.3-1hzq.i386.rpmrpm -ivh RPMS/clamav-0.88.3-1hzq.i386.rpmrpm -ivh RPMS/clamd-0.88.3-1hzq.i386.rpm

編輯/etc/clamd.conf文件,去掉 'LocalSocket /var/run/clamav/clamd.sock'的注釋,並注釋掉 'TCPSocket 3310',我們將使用unix socket而不是TCP,兩者不可並存。修改完畢後,保存,變動內容見下:

# Path to a local socket file the daemon will listen on.# Default: disabledLocalSocket /var/run/clamav/clamd.sock#TCPSocket 3310

將clamav加到amavis運行組裏,並調整目錄權限,否則clamav將無法掃描amavisd-new産生的臨時文件

gpasswd -a clamav amavisusermod -G amavis clamavchown amavis.amavis /var/spool/vscanchmod 750 /var/spool/vscanchown amavis.amavis /var/spool/vscan/tmpchmod 750 /var/spool/vscan/tmp

默認的/var/spool/vscan 目錄屬性是:

rwx------ amavis.root

對于clamav用戶而言,則無任何權限訪問該目錄,因此maillog裏amavisd-new會提示:

May 19 08:38:53 as3 amavis[1752]: (01752-01) ask_av (ClamAV-clamd) FAILED - unexpected result: /var/spool/vscan/tmp/amavis-20050519T083853-01752/parts: access denied. ERROR\n

May 19 08:38:53 as3 amavis[1752]: (01752-01) WARN: all primary virus scanners failed, considering backups

啓動ClamAV及freshclam

/etc/rc.d/init.d/clamd startfreshclam --daemon

將freshclam增加到自啓動

輸入如下命令,即可使freshclam一開機就實現自啓動

echo "/usr/bin/freshclam --daemon" /etc/rc.d/rc.local

配置Amavisd與Clamav結合爲了使Amavisd-new能與clamav結合,需要修改/etc/amavisd.conf文件,打開clamav的支持代碼,編輯/etc/amavisd.conf文件,大概在300行左右,去掉clamav的支持代碼注釋,並將socket路徑改爲/var/run/clamav/clamd.sock,如下: ['ClamAV-clamd', \%26amp;ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"], qr/\bOK$/, qr/\bFOUND$/, qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],

在110行左右,修改投遞/攔截的方法:

$final_virus_destiny = D_DISCARD;$final_banned_destiny = D_BOUNCE;$final_spam_destiny = D_PASS;$final_bad_header_destiny = D_PASS;

注意上述4個設置中,對spam(垃圾郵件)默認會直接反彈(BOUNCE),現在修改爲繼續投遞(PASS)但在信頭中增加相關X-Spam-Status信息等。這樣可以很方便的在extmail中設置將被標記爲垃圾郵件的mail投遞到「垃圾郵件箱」中,便于用戶翻查。

增加郵件別名編輯/etc/postfix/aliases,增加如下信息,注意:默認的aliases數據庫裏已有一條virusalert的別名,所以請刪除,再輸入下面的別名記錄,並確保所有記錄都是唯一的: virusalert: rootspam.police: rootpostfix: test@extmail.org

保存並執行newaliases命令生成新的別名數據庫,這樣所有的重新啓動amavisd: /etc/rc.d/init.d/amavisd restart

配置Postfix 集成amavisd-newvi /etc/postfix/master.cf

增加如下內容: 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o receive_override_options=

編輯/etc/postfix/main.cf

# Content-Filtercontent_filter = smtp:[127.0.0.1]:10024receive_override_options = no_address_mappings

注意:receive_override_options 這裏必須增加,禁止地址展開/影射,否則如果遇到別名的時候會引起冗余郵件的産生。

保存後/etc/init.d/postfix restart

測試Clamav然後輸入如下命令: 每輸入一行後等待1秒左右: telnet localhost 25Trying 127.0.0.1...Connected to localhost.localdomain (127.0.0.1).Escape character is '^]'.220 mail.extmail.org ESMTP Postfix - by extmail.orgmail from:250 2.1.0 Okrcpt to:250 2.1.5 Okdata354 End data with .X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*.250 2.0.0 Ok: queued as BC24E85260quit221 2.0.0 ByeConnection closed by foreign host.

在郵件日志裏,應該有相應的信息出現:

May 19 10:11:44 as3 amavis[2770]: (02770-01) Blocked INFECTED (Eicar-Test-Signature), - , quarantine: virus-20050519-101144-02770-01, Message-ID: , Hits: -

如果看到類似這樣的日志,表明Clamav+Amavisd-new工作正常。

Spam Locker配置與安裝安裝需求支持Linux / BSD或Solaris,HP-UX等操作系統Perl 5.6+,建議Perl 5.8.0以上Net::DNSPOSIXFcntlDigest::MD5Digest::SHA1Digest::HMACNet::IP

解包軟件cp -r src/slockd-0.083 /usr/local/slockd

安裝相關Perl模塊由于slockd是以smtp特征檢測爲主的軟件,因此很大程度依賴dns庫,必須安裝Net::DNS庫才能正常工作。除此外還有諸如HMAC,MD5及SHA1, Net-IP等模塊。

執行以下命令安裝需要的模塊,注意:這些模塊在上文安裝Amavisd-new時已經安裝過,這裏重複是爲了強調slockd依賴這些軟件包

rpm -ivh RPMS/perl-Digest-SHA1-2.07-5.i386.rpmrpm -ivh RPMS/perl-Digest-HMAC-1.01-1hzq.i386.rpmrpm -ivh RPMS/perl-Net-IP-1.24-1hzq.i386.rpmrpm -ivh --nodeps RPMS/perl-Net-DNS-0.57-1hzq.i386.rpm

配置resolv.conf請確認/etc/resolv.conf裏的dns服務器是離你的郵件服務器最近,速度最快的dns server,slockd很依賴dns的好壞,因此給系統配置一個快速的dns能大幅度提高處理速度。以下給出一個配置僅供參考:

nameserver 202.96.128.68

上述dns服務器是廣東電信的DNS服務器,對于非廣東朋友,請改爲離你最近的dns 服務器ip

如果可能的話,請配置一個簡單的bind9,成爲本地的dns cache server,可以獲得最高性能。這裏略過這一步驟,但您必須確保dns的配置是正確並且可靠的,否則slockd將不能工作!

啓動/測試執行:

/usr/local/slockd/slockd-init start

此時slockd將啓動,並進入非daemon方式的監聽模式,接受來自10030端口的請求,命令行下將顯示如下調試信息:

Starting spam locker daemon: slockdstarting child 2908starting child 290908-01 12:34:40 [2908]: Loading APF::Plugin::localctrl08-01 12:34:40 [2909]: Loading APF::Plugin::localctrl08-01 12:34:40 [2908]: Loading APF::Plugin::anvil08-01 12:34:40 [2908]: Loading APF::Plugin::fqdn08-01 12:34:40 [2909]: Loading APF::Plugin::anvil08-01 12:34:40 [2908]: Loading APF::Plugin::dnsbl08-01 12:34:40 [2909]: Loading APF::Plugin::fqdn08-01 12:34:40 [2909]: Loading APF::Plugin::dnsbl08-01 12:34:40 [2908]: Loading APF::Plugin::hostname08-01 12:34:40 [2909]: Loading APF::Plugin::hostname

打開另一個ssh/終端窗口,進入/usr/local/slockd/tools 目錄,輸入:

perl policy_sig -h localhost -p 10030 --helo FOOBAR \--ip 192.168.0.1 --from test@foo.com --to test@bar.com

此時,程序應該返回如下錯誤信息:

action=504 : rejected, see http://bl.extmail.org/cgi/why?fqdn

這表示slockd初步的正常工作了。

後台方式運行slockd調試正確後,必須將slockd配置成後台服務進程(Daemon Process)。vi /usr/local/slockd/config/main.cf 將如下兩個配置的注釋去掉: # uncomment the following line if you need to daemonizesetsid 1## logginglog_file /var/log/slockd.log

然後在運行slockd的命令行窗口按ctrl+c,關閉剛才運行的slockd。或者在另一個命令行窗口輸入如下命令以殺死slockd進程:

killall slockd

然後執行:

/usr/local/slockd/slockd-init start

自啓動輸入如下的命令,將slockd啓動加入到系統裏,這樣下一次服務器重新啓動,就可以自動執行slockd了。

echo "/usr/local/slockd/slockd-init start" /etc/rc.d/rc.local

配置Postfixslockd調試正常後,必須配置postfix以使其打開對slockd的支持,編輯/etc/postfix/main.cf,將 check_policy_service inet:127.0.0.1:10030 這一行記錄增加到smtpd_recipient_restrictions 裏,例如:

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname, check_policy_service inet:127.0.0.1:10030

最後,重新啓動postfix以使配置生效

/etc/init.d/postfix restart

注意事項:

上述配置是將slockd的查詢放到最後,這也是進一步提高資源利用律的辦法,因爲有部分功能postfix已實現了,所以就先由postfix檢測,如果檢測不到再由slockd完成。

最終測試現在通過簡單的email收發來確認系統是否正常。

發送測試郵件

輸入以下命令,通過telnet方式給test@extmail.org發送一封測試信件

telnet localhost 25Trying 127.0.0.1...Connected to localhost.localdomain (127.0.0.1).Escape character is '^]'.220 mail.extmail.org ESMTP Postfix - by extmail.orghelo demo.extmail.org250 mail.extmail.orgmail from:250 2.1.0 Okrcpt to:250 2.1.5 Okdata354 End data with .Subject: Hello WorldHello World!.250 2.0.0 Ok: queued as 3E47685269quit221 2.0.0 ByeConnection closed by foreign host.

此時通過另一個命令行窗口,觀察maillog,命令爲:

tail -f /var/log/maillog

將看到如下信息:

Aug 1 12:51:06 centos postfix/qmgr[3017]: 041718526B: from=, size=833, nrcpt=1 (queue active)

Aug 1 12:51:06 centos postfix/smtpd[3032]: disconnect from centos[127.0.0.1]

Aug 1 12:51:06 centos amavis[2890]: (02890-01) Passed CLEAN, [127.0.0.1] - , Message-ID: , mail_id: N8nxpoRn4Hlq, Hits: 0.107, 11561 ms

Aug 1 12:51:06 centos postfix/smtp[3043]: 3E47685269: to=, relay=127.0.0.1[127.0.0.1], delay=27, dsn=2.6.0, status=sent (250 2.6.0 Ok, id=02890-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 041718526B)

Aug 1 12:51:06 centos postfix/qmgr[3017]: 3E47685269: removed

Aug 1 12:51:06 centos postfix/pipe[3035]: 041718526B: to=, relay=maildrop, delay=0, dsn=2.0.0, status=sent (delivered via maildrop service)

Aug 1 12:51:06 centos postfix/qmgr[3017]: 041718526B: removed

上述日志表示郵件經過了amavisd-new的掃描,並且已經通過maildrop投遞到用戶的maildir了。至此,整個ExtMail Solution 的安裝配置已經基本告一段落。對于需要進行高級調整的朋友,請留意本文附錄的備注。備注的內容將不斷更新,敬請留意。

補充配置以下是補充的ExtMail Solution有關文檔,主要是爲希望進一步了解mail系統運行,並提高extmail效能的朋友准備,對于初學者而言,建議要先打好基礎再進行測試。

增加FCGI支持爲extmail增加FCGI的支持,主要是爲了獲得優異的web效能,克服CGI不能應付大量訪問及低效率的缺陷。根據我們的測試,CGI模式下的頁面效率只有FCGI下的1/10~1/100,因此建議有條件的用戶還是使用FCGI。日後ExtMail Solution的web CGI程序將全部都支持FCGI。

安裝mod_fastcgi

mod_fastcgi 是針對Apache Web服務器的FCGI支持模塊,下載地址: http://www.fastcgi.com/dist/mod_fastcgi-2.4.2.tar.gz

編譯指令:

wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.2.tar.gztar xfz mod_fastcgi-2.4.2.tar.gzcd mod_fastcgi-2.4.2cp Makefile.AP2 Makefilemake top_dir=/etc/httpd install

安裝perl-FCGI

除了Apache需要FCGI的支持外,extmail也需要相應的perl-FCGI模塊。用以下命令安裝:

rpm -ivh RPMS/perl-FCGI-0.67-2hzq.i386.rpm

接下來將配置Apache,將如下的信息增加到/etc/httpd/conf/vhost_extmail.conf的虛擬主機配置之後:

LoadModule fastcgi_module modules/mod_fastcgi.soFastCgiExternalServer /usr/bin/dispatch.fcgi -host 127.0.0.1:8888

同時,去掉如下行:

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

改爲:

Alias /extmail/cgi/ /usr/bin/dispatch.fcgi/SetHandler fastcgi-script

然後編輯/var/www/extsuite/extmail/dispatch-init文件,修改如下:

BASE=/var/www/extsuite/extmail

最後啓動fastcgi server:

/var/www/extsuite/extmail/dispatch-init start

如果沒有意外將啓動10個dispatch.fcgi守護進程,可以通過以下命令將啓動命令加到rc.local中,實現自啓動:

echo "/var/www/extsuite/extmail/dispatch-init start" /etc/rc.d/rc.local

編譯Courier-IMAP SRPM包需要自己重新編譯Courier-IMAP的朋友,可以通過如下方式完成。

下載軟件包

wget http://jaist.dl.sourceforge.net/sourceforge/courier/courier-imap-4.1.0.tar.bz2

制作RPM包

由于courier-imap需要非root帳戶進行編譯,因此必須su到sysadmin這個非root用戶,然後輸入如下指令:

mkdir $HOME/rpmmkdir $HOME/rpm/SOURCESmkdir $HOME/rpm/SPECSmkdir $HOME/rpm/BUILDmkdir $HOME/rpm/SRPMSmkdir $HOME/rpm/RPMSmkdir $HOME/rpm/RPMS/i386echo "%_topdir $HOME/rpm" $HOME/.rpmmacros

解開courier-imap-4.1.0.tar.bz2,取出courier-imap.spec文件,複制到$HOME/rpm/SPECS裏,然後再複制courier-imap-4.1.0.tar.bz2到$HOME/rpm/SOURCE裏

注意事項:

此版本的courier-imap需要openldap等相關包,所以編譯前務必安裝好openldap-devel等包

rpmbuild --ba $HOME/rpm/SPECS/courier-imap.spec

編譯完畢,在$HOME/rpm/RPMS/i386/下就有所有編譯成功的rpm包了!

結束語通過此文檔,讀者應該能夠較容易地架設一個功能較齊全的電子郵件系統。當使用一段時間後,用戶將發現這個系統還有很多比較粗糙的地方,不盡人意。日後,本文檔將繼續保持更新,逐步將一些高級的設置方法公布出來,爭取ExtMail Solution更加完整,力求完美。

已知Bugs整個ExtMail Solution盡力將Opensource軟件的優點發揮到極至,但免不了還是有bug。以下是幾個已知的問題:

WebMail

刪除/新增郵件時左幀數字不會變更 不能處理少量違反RFC的郵件 在某些版本Apache下偶爾出現會話失效問題 還不支持IMAP創建的中文子目錄 Amavisd-new

退信模板還是英文的 産生的彙報信息不夠友好 Postfix

本版本還不支持退信模板定制 版本不是最新版 Spam Locker

錯誤識別一些配置異常的mail服務器 與內容過濾器結合不夠緊密 hostname模塊易造成較多誤傷 TODO 列表支持SMTP 及 POP3/IMAP的TLS/SSL加密 HTTP及SMTP/POP3等CA證書的配置 更精細的Anti-Spam策略及關鍵字過濾 系統安全配置(基于iptables) BSD平台的ExtMail Solution文檔

 
特别声明:以上内容(如有图片或视频亦包括在内)为网络用户发布,本站仅提供信息存储服务。
 
版權聲明:本文版權歸作者所有,如其他個人、第三方網站或媒體報刊等需轉載全文或節選,爲支持我們的工作,請務必注明如下信息: 作者信息:hzqbbc 文章原始出處:http://www.extmail.org/docs/extmail_solution_linux/ 項目首頁:http://www.extmail.org 如果因此而給您帶來麻煩,請您原諒,謝謝合作。 變更說明0.18 2006-09-04:修正一處輸入錯誤,一處不明確的地方 0.17 2006-08-30:修正缺漏receive_override_options的bug 0.16 2006-08-28:修正maildrop配置錯誤,感謝風雲! 0.15 2006-08-17:增加MySQL/httpd開機自啓動的支持 關于此文版  本:0.18 作  者:He zhiqiang 項目主頁:http://www.extmail.org 個人主頁:http://www.hzqbbc.com 最後更新:2006-09-04 本文檔以2005-07-25的早期文檔爲藍本,以RPM系統爲基礎。所涉及軟件全部是OpenSource軟件,版權以GPL爲主,作爲企業應用沒有任何版權/法律問題。 基于RPM系統具有方便、快捷,易快速複制和重現的優點。如果用戶希望獲得這些RPM包的源碼包,可以與作者聯系。 編寫本文的初衷,是給那些希望快速架設郵件系統而不想過多了解複雜的系統知識的網管/用戶,爲了使軟件之間的結合更緊密,部分軟件的配置及測試方面進行了增強改進,因此本文的一些操作步驟作者不能保證在其他場合能完全適用,敬請注意。 本文假定讀者是在CentOS 4.x或 RedHat EnterPRise Linux 4.x平台上安裝,並具有一定的Unix平台 / Linux平台系統經驗,懂得rpm基本命令及常規的系統操作,如文件的刪除,目錄創建,改名,和vi編輯器的基本使用等。 文檔目錄ExtMail Solution概述 硬件配置 操作系統安裝 下載ExtMail Solution軟件包 MTA-Postfix配置 配置Courier-Authlib 安裝maildrop 配置Apache 安裝Webmail-ExtMail 安裝管理後台-ExtMan 配置圖形化日志系統-mailgraph_ext 測試基本系統 配置Cyrus-SASL 安裝Courier-IMAP 內容/病毒過濾 准備工作ClamAVAmavisd-new配置Postfix測試反垃圾郵件-Spam Locker 准備工作配置/測試與Postfix結合最終測試 附加信息 增加FCGI支持編譯Courier-IMAP結束語 已知Bugs TODO列表 ExtMail Solution 結構ExtMail Solution 是一個基于優秀開源軟件的電子郵件系統解決方案,核心部件包括了Postfix, Amavisd-new, ClamAV, ExtMail 和ExtMan, Courier系列軟件。是一個功能相對比較齊全的免費電子郵件系統。以下是其主要的特性列表: 支持SMTP/POP3/HTTP協議 支持SMTP認證及ESMTP 可支持大容量郵箱(大于1GB) 高速Web界面訪問郵箱 完整的Web管理後台 在線服務端病毒過濾 內建內容過濾 SMTP行爲識別垃圾郵件 支持大量反垃圾郵件技術 圖形化郵件日志分析 支持別名/多域/域管理員等 支持網絡磁盤/POP3郵件 支持讀/寫HTML格式郵件 支持定制模板及多語言 整個郵件解決方案由如下軟件組成: 功能模塊 內容 備注 操作系統(OS) CentOS 4.3 CentOS和RHEL是一樣的,而且升級免費 郵件傳輸代理(MTA) Postfix 2.3snapshot 使用2.3 snapshot,雖然不是最新但是對一般人而言足夠用了 數據庫/目錄服務 MySQL 4.1 可選openLDAP或NetScape LDAP,本文以MySQL爲藍本 郵件投遞代理(MDA) maildrop 2.0.x 支持過濾和強大功能 Web帳戶管理後台 ExtMan 0.16-pre1 支持無限域名、無限用戶 POP3 服務器 Courier-IMAP 只使用pop3部分,對于大部分企業而言完全足夠 WebMail 系統 ExtMail 0.24-pre8 支持多語言、全部模板化,功能基本齊全 防病毒軟件(Anti-Virus) ClamAV 0.88 最熱門的開源殺毒軟件 SMTP階段反垃圾郵件工具 Spam Locker 0.083 基于SMTP行爲識別的Antispam軟件,大量可選插件 內容過濾器 Amavisd-new 2.40 Content-Filter軟件,支持與clamav/sa的挂接 內容級別的反垃圾郵件工具 SpamAssassin 著名的SA,可以支持大量規則,但速度慢 SMTP認證庫 Cyrus SASL 2.1x 標准的SASL實現庫,可以支持Courier authlib 其他數據認證庫 Courier Authlib 0.57 authlib是maildrop, courier-imap等服務的關鍵部件 日志分析及顯示 mailgraph_ext 在ExtMan中已經包含了 Web 服務器 Apache 2.0.x CentOS 自帶 硬件配置要流暢地運行郵件系統,建議的硬件配置如下: 物理內存:256M+ 推薦512M 交換區:2倍物理內存大小 CPU:PIII 1G+ 推薦P4 主板:推薦Intel原裝 網卡:100M/1000M 推薦3Com/Intel 操作系統安裝本文檔支持RedHat Enterprise 4.x 及CentOS 4.x版本。要注意的是安裝系統時,只安裝如下的組件: Web Server 要注意必須選中httpd-suexec軟件包,否則下文的配置將失效 MYSQL數據庫 注意必須選中mysql-server, libdbi-dbd-mysql, perl-DBD-mysql等模塊,否則extmail將無法連接mysql VIM編輯器 強烈建議安裝vim-enhanced軟件包,它支持main.cf彩色高亮語法分析 其余的Xwindows, 打印,KDE/Gnore, 服務器配置工具,網絡工具,開發包等全部都不要選上。安裝完畢進入操作系統後,建議禁止root直接登陸,並增加一個非root帳戶,例如叫sysadmin。這樣要以root權限操作的話,必須先以sysadmin身份登陸再su到root執行。方法: CentOS4.3安裝步驟圖解以下將以詳細的圖解來介紹如何安裝CentOS4.3 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601351337.gif[/img][/url] CentOS啓動光盤的啓動畫面,直接回車即可。 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601368505.gif[/img][/url] 系統提示「是否需要校驗CD媒質」,請選擇「Skip」。 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601368638.gif[/img][/url] 選擇「English」作爲安裝界面的語言。 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601368898.gif[/img][/url] 安裝類型請務必選擇「Custom」,以便之後詳細選擇要裝的軟件包。 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601372024.gif[/img][/url] 磁盤分區設置請選擇「Manually partition with disk Druid」(手工分區)。 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601372215.gif[/img][/url] 如圖,我們將/,/usr,/var,/var/spool/postfix等單獨分成一個分區,注意:如果磁盤大小允許,請將/var/spool/vscan目 錄也單獨成一個分區,該目錄主要存放被過濾的臨時郵件。 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601372497.gif[/img][/url] 配置網卡及子網掩碼,記得點選「Activate boot」。 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601372737.gif[/img][/url] 配置網關及DNS,請將離你的服務器最近DNS服務器IP地址填入「Primary DNS」。 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601373006.gif[/img][/url] 防火牆配置時,打開防火牆(選Enable FireWall),並放行常規的服務(服務列表全選),最重要的是記得打開SELinux(選Active) [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601373267.gif[/img][/url] 時區選「上海」。 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601373745.gif[/img][/url] 輸入root帳戶密碼,建議使用較長的密碼,並混雜數字與字母及特殊字符。 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601373908.gif[/img][/url] 進入軟件組的選擇對話界面後,我們只選擇Editors組。 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601374195.gif[/img][/url] 其次選擇是Web Server及FTP Server組。 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601374486.gif[/img][/url] 再次選擇MySQL DataBase組,並點擊右邊的Details 在Details對話框裏,確保libdbi-dbd-mysql,mysql-server,perl-DBD-MySQL等模塊都被選中。extmail依賴這些軟件包。 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601377675.gif[/img][/url] 最後,確認一下所做的選擇。其他沒有被提到的軟件模塊/組全部都去掉。總共軟件大小有814MB左右。 點Next後,安裝系統提示必須要准備好CentOS的第1,2,3張光盤。 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601378556.gif[/img][/url] 系統進行初始化,磁盤分區等。 系統安裝到後面時,需要換安裝盤。請將盤2及盤3按提示放入光驅。 [url=/bbs/detail_1734654.html][img]http://image.wangchao.net.cn/it/1323601381824.gif[/img][/url] 安裝完畢後,出現祝賀完成的界面,點Reboot重新啓動。 如無意外,系統進入登陸提示符界面。至此,CentOS4.3的安裝就結束了。 以root身份登進系統後,增加一個非root帳戶,名稱爲sysadmin,密碼按您的需求設置一個即可。接下來我們要禁止root直接登陸,編輯/etc/ssh/sshd_config 修改以下配置爲: PermitRootLogin no 然後重新啓動sshd: /etc/init.d/sshd restart 這樣禁止了root直接登陸。 配置SELinux 自從RHEL4/CentOS4以後,系統默認打開了SELinux支持,簡單說SELinux就是一個強制性的安全機制,但是它也帶來了不少麻煩,爲了避免編寫煩瑣的policy規則,本文檔將屏蔽掉SELinux對MySQL及httpd的保護。方法如下: setsebool httpd_disable_trans=1setsebool mysqld_disable_trans=1 操作完畢後,重新啓動mysql及apache,並將如下命令加入/etc/rc.d/rc.local以便服務器啓動後能自動生效: /usr/sbin/setsebool httpd_disable_trans=1/usr/sbin/setsebool mysqld_disable_trans=1/etc/init.d/mysqld restart/etc/init.d/httpd restart 下載ExtMail Solution軟件包基本假定整個系統的安裝全過程都要求以root身份執行,如果機器沒有訪問外部網絡的能力,則事先下載好ExtMail Solution軟件包,並用ftp以sysadmin帳戶的身份,上載到服務器。 下載軟件包我們統一將軟件包下載到/root目錄裏。 su - rootcd /rootwget http://www.extmail.org/source/ExtMail-Solution-Linux-0.1.tar.gz 校驗下載的文件必須校驗確認過沒損壞才能使用。命令如下: wget http://www.extmail.org/source/md5sum.es_linux-0.1cat md5sum.es_linux-0.1md5sum ExtMail-Solution-Linux-0.1.tar.gz 一個可能的結果: # cat md5sum.es_linux-0.1168eced41c0cac0ed9f981e791f3783b ExtMail-Solution-Linux-0.1.tar.gz# md5sum ExtMail-Solution-Linux-0.1.tar.gz168eced41c0cac0ed9f981e791f3783b ExtMail-Solution-Linux-0.1.tar.gz 由于軟件包不斷的變更,所以上述結果和您的結果可能不一致,請以下載的md5sum爲准 解壓目前最新的ExtMail-Solution軟件包版本號爲0.1,軟件包文件名爲:ExtMail-Solution-Linux-0.1.tar.gz,下載回來後,在/root目錄解開: tar xfz ExtMail-Solution-Linux-0.1.tar.gz 此外,我們假設本次安裝默認域是extmail.org,主機名爲:mail.extmail.org,ExtMail Solution的文件目錄是/root/ExtMail-Solution-Linux-0.1/ 重要步驟: 我們進入/root/ExtMail-Solution-Linux-0.1/目錄,該目錄下包括如下文件/目錄: conf/docs/RPMS/src/README 其中RPMS目錄是本文的重點,裏面包含了所需要的全部rpm包,src目錄則是存放webmail, anti-spam等相關軟件的源碼,而README則是說明文件,docs目錄則是本文檔相關的html及圖片。 下文所涉及的操作,絕大部分都是發生在/root/ExtMail-Solution-Linux-0.1目錄裏,請確保當前目錄爲:/root/ExtMail-Solution-Linux-0.1 配置Postfix MTA刪除沖突軟件,sendmail,需要執行: rpm -e --nodeps sendmail mysql有關軟件: CentOS4.x/ RedHat EL4.x 都自帶mysql-server,請用戶自行安裝好,包括mysql-client和devel等包 安裝postfix rpm -ivh --nodeps RPMS/postfix-2.3.20050716-1hzq.i386.rpm 配置postfix 簡化postfix配置: postconf -n /etc/postfix/main2.cfmv /etc/postfix/main.cf /etc/postfix/main.cf.oldmv /etc/postfix/main2.cf /etc/postfix/main.cf 再編輯main.cf: vi /etc/postfix/main.cf 增加如下內容: # hostnamemynetworks = 127.0.0.1myhostname = mail.extmail.orgmydestination = $mynetworks $myhostname# bannermail_name = Postfix - by extmail.orgsmtpd_banner = $myhostname ESMTP $mail_name# response immediatelysmtpd_error_sleep_time = 0sunknown_local_recipient_reject_code = 450# extmail config herevirtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cfvirtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cfvirtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cfvirtual_transport = maildrop: 編輯mysql_virtual_alias_maps.cf vi /etc/postfix/mysql_virtual_alias_maps.cf 內容如下: user = extmailpassWord = extmailhosts = localhostdbname = extmailtable = aliasselect_field = gotowhere_field = address 編輯mysql_virtual_domains_maps.cf vi /etc/postfix/mysql_virtual_domains_maps.cf 內容如下: user = extmailpassword = extmailhosts = localhostdbname = extmailtable = domainselect_field = descriptionwhere_field = domain#additional_conditions = and backupmx ='0' and active ='1' 編輯mysql_virtual_mailbox_maps.cf vi /etc/postfix/mysql_virtual_mailbox_maps.cf 內容如下: user = extmailpassword = extmailhosts = localhostdbname = extmailtable = mailboxselect_field = maildirwhere_field = username#additional_conditions = and active = '1' 配置Courier-Authlib安裝Courier-Authlib運行如下命令安裝相關軟件包 rpm -ivh RPMS/libtool-libs-1.5.6-4.EL4.1.c4.3.i386.rpmrpm -ivh RPMS/courier-authlib-0.57-1hzq.i386.rpmrpm -ivh RPMS/courier-authlib-devel-0.57-1hzq.i386.rpmrpm -ivh RPMS/courier-authlib-mysql-0.57-1hzq.i386.rpm 編輯/etc/authlib/authmysqlrc文件,並將其內容清空,然後增加如下內容: MYSQL_SERVER localhostMYSQL_USERNAME extmailMYSQL_PASSWORD extmailMYSQL_SOCKET /var/lib/mysql/mysql.sockMYSQL_PORT 3306MYSQL_OPT 0MYSQL_DATABASE extmailMYSQL_USER_TABLE mailboxMYSQL_CRYPT_PWFIELD passwordMYSQL_UID_FIELD uidnumberMYSQL_GID_FIELD gidnumberMYSQL_LOGIN_FIELD usernameMYSQL_HOME_FIELD homedirMYSQL_NAME_FIELD nameMYSQL_MAILDIR_FIELD maildirMYSQL_QUOTA_FIELD quotaMYSQL_SELECT_CLAUSE SELECT username,password,"",uidnumber,gidnumber,\ CONCAT('/home/domains/',homedir), \ CONCAT('/home/domains/',maildir), \ quota, \ name \ FROM mailbox \ WHERE username = '$(local_part)@$(domain)' 存盤退出後啓動courier-authlib: /etc/init.d/courier-authlib start 如一切正常,命令行將返回如下信息: Starting Courier authentication services: authdaemond 修改authdaemon socket目錄權限 如果該目錄權限不正確修改,maildrop及postfix等將無法正確獲取用戶的信息及密碼認證: chmod 755 /var/spool/authdaemon/ 安裝Maildrop注意事項: 如果您需要重新編譯maildrop軟件包,首先必須獲得其源碼rpm包,其次必須先裝好courier-authlib及其devel軟件包,否則編譯maildrop之後將無法打開authlib支持。 安裝maildrop rpm -ivh RPMS/maildrop-2.0.1-1hzq.i386.rpmrpm -ivh RPMS/maildrop-man-2.0.1-1hzq.i386.rpm 配置master.cf 爲了使Postfix支持Maildrop,必須修改/etc/postfix/master.cf文件,注釋掉原來的maildrop的配置內容,並改爲: maildrop unix - n n - - pipe #flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient} flags=DRhu user=vuser argv=maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop} 配置main.cf 由于maildrop不支持一次接收多個收件人,因此必須在main.cf裏增加如下參數: maildrop_destination_recipient_limit = 1 最後重新啓動postfix即可 配置Apache編輯httpd.conf: vi /etc/httpd/conf/httpd.conf 在730行左右,屏蔽掉AddDefaultCharset: #AddDefaultCharset UTF-8 使apache開機默認啓動: chkconfig --level 3 httpd on 虛擬主機設置編輯/etc/httpd/conf/httpd.conf文件,在最後一行加上: NameVirtualHost *:80Include conf/vhost_*.conf 編輯/etc/httpd/conf/vhost_extmail.conf,裏面定義虛擬主機的相關內容,包括主目錄,以及ExtMail和ExtMan的相關配置,Suexec的設置等。 # VirtualHost for ExtMail SolutionServerName mail.extmail.orgDocumentRoot /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/# Suexec configSuexecUserGroup vuser vgroup 重新啓動apache: /etc/init.d/httpd restart 注意:此時重新啓動apache會産生以下警告信息,可不必理會 Starting httpd: Warning: DocumentRoot [/var/www/extsuite/extmail/html/] does not exist 安裝ExtMail建立/var/www/extsuite並複制源碼到該目錄,相關命令: mkdir /var/www/extsuitecp -r src/extmail-0.24-pre8 /var/www/extsuite/extmailcd /var/www/extsuite/extmailcp webmail.cf.default webmail.cfcd $OLDPWD 注意:上面命令行中最後一個cd $OLDPWD是返回原始路徑(即ExtMail Solution軟件包根目錄) 編輯webmail.cf 用vi打開/var/www/extsuite/extmail/webmail.cf,並按2次ESC鍵以確保進入命令模式,然後輸入: :1, $ s#/var/www/cgi-bin#/var/www/extsuite#g 上述命令的作用是將默認路徑從/var/www/cgi-bin下換到/var/www/extsuite下,處理完畢後,修改webmail.cf裏的其他參數,主要變動的內容見下: SYS_USER_LANG = zh_CNSYS_USER_CHARSET = gb2312SYS_MFILTER_ON = 1SYS_NETDISK_ON = 1SYS_MYSQL_USER = extmailSYS_MYSQL_PASS = extmailSYS_MYSQL_DB = extmailSYS_G_ABOOK_TYPE = fileSYS_G_ABOOK_FILE_CHARSET = gb2312 其中SYS_MFILTER_ON及SYS_NETDISK_ON 設置爲1是爲了打開網絡磁盤和過濾器。全局地址本默認爲ldap格式,現在也改爲文本格式,並將地址本的轉換編碼改爲GB2312 更新cgi目錄權限 由于SuEXEC的需要,必須將extmail的cgi目錄修改成vuser:vgroup權限: chown -R vuser:vgroup /var/www/extsuite/extmail/cgi/ 安裝ExtMan - web後台在ExtMail-Solution軟件包根目錄下執行: cp -r src/extman-0.16-pre1 /var/www/extsuite/extman/ 配置webman.cf 用vi編輯/var/www/extsuite/extman/webman.cf,並連按2次ESC,確保進入命令模式,然後輸入如下命令: :1, $ s#/var/www/cgi-bin#/var/www/extsuite#g 處理完畢後修改SYS_CHARSET及SYS_LANG參數爲: SYS_CHARSET = gb2312SYS_LANG = zh_CN 其他參數基本上可以使用默認值。 更新cgi目錄權限 由于SuEXEC的需要,必須將extman的cgi目錄修改成vuser:vgroup權限: chown -R vuser:vgroup /var/www/extsuite/extman/cgi/ 確認MySQL狀態 在執行mysql操作前,必須確認它已被正確安裝並啓動,可以用rpm命令查詢mysql server的安裝情況,用ps ax的辦法查看進程列表是否有mysqld進程: rpm -aq|grep -i mysql-server 正常情況下應該可以看到mysql-server被安裝: mysql-server-4.1.12-3.RHEL4.1 如果沒有,則表示沒有安裝好mysql-server,可以從本軟件包RPMS目錄裏安裝,也可以找安裝光盤安裝: rpm -ivh RPMS/mysql-server-4.1.12-3.RHEL4.1.i386.rpm 安裝完畢後必須初始化mysql,然後重新啓動 /usr/bin/mysql_install_db/etc/init.d/mysqld start 正常情況下將啓動成功: Starting MySQL: [ OK ] 然後用ps命令來檢查mysqld是否正確運行: ps ax|grep mysqld 正常情況下應出現如下的結果: 433 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/etc/my.cnf --pid-file=/var/run/mysqld/mysqld.pid 466 pts/0 Sl 0:00 /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking --socket=/var/lib/mysql/mysql.sock 如果mysql沒正確啓動,請檢查/var/log/mysqld.log裏面的出錯提示,進行處理: tail /var/log/mysqld.log 數據庫初始化 執行以下命令導入mysql數據庫結構及初始化數據,注意必須逐行輸入以下命令,root密碼默認爲空,不可直接用鼠標複制兩行命令直接輸入,否則會報錯! mysql -u root -p 鏈接基本庫到Extmail 由于ExtMan的體系與ExtMail比較類似,因此ExtMan需要使用ExtMail中幾個基礎perl 模塊,在extman的源碼包裏,包含了一個叫buildlink.sh 的小腳本,該腳本完成了這些鏈接的工作,使用方法: cd /var/www/extsuite/extman/libs/Ext./buildlink.sh build /var/www/extsuite/extmail/libs/Extmkdir /tmp/extmanchown -R vuser:vgroup /tmp/extmancd $OLDPWD 操作完畢後,需要建立剛才導入mysql的test@extmail.org帳戶的Maildir,請輸入如下命令: cd /var/www/extsuite/extman/tools./maildirmake.pl /home/domains/extmail.org/test/Maildirchown -R vuser:vgroup /home/domains/extmail.orgcd $OLDPWD 注意事項: 上面命令行中最後一個cd $OLDPWD是返回原始路徑(即ExtMail Solution軟件包根目錄) 由于RedHat發行版中包含了一個叫tmpwatch的工具,該工具會定期掃描/tmp/下的文件,如果這些文件很久都沒被使用,將被刪除,因此如果後台長期不使用,/tmp/extman目錄有可能被tmpwatch刪除,所以要麽定期登陸後台,要麽修改 webman.cf將臨時目錄修改到另一個地方。此處暫以/tmp/extman默認值爲例。 測試authlib 在命令行下執行: /usr/sbin/authtest -s login test@extmail.org test 結果如下: Authentication succeeded. Authenticated: test@extmail.org (uid 1000, gid 1000) Home Directory: /home/domains/extmail.org/test Maildir: /home/domains/extmail.org/test/Maildir/ Quota: 5242880Encrypted Password: {crypt}uywiuN.XggXXcCleartext Password: test Options: (none) 這樣表明ExtMan的正確安裝,數據庫也正確導入,courier-authlib能正確連接到mysql數據庫 最後訪問http://mail.extmail.org/extmail/,如無意外,將看到webmail的登陸頁,不過此時還沒有加正式的用戶,所以不能登陸,包括test@extmail.org也不行。必須要登陸到http://mail.extmail.org/extman/ 裏增加一個新帳戶才能登陸。 ExtMan的默認超級管理員帳戶是root@extmail.org,密碼是extmail,登陸成功後,建議將密碼修改,以確保安全。 配置Mailgraph_ext自ExtMan 0.14-pre2 開始,系統集成了Mailgraph_ext插件,該插件使extman具備圖形化顯示郵件日志的能力。mailgraph_ext融合了mailgraph和queuegraph兩個軟件包,除增加了更多的日志分析及圖形顯示能力外,還重寫了web模塊,集成到ExtMan後台裏,這樣郵件日志將只能給經過授權的用戶查看,提高了安全性。 mailgraph_ext及Extman都需要安裝rrdtool工具 必需的軟件包 - Perl 5.6+ (建議5.8以上)- rrdtool 及rrdtool的perl包,地址: http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/- File::Tail (還需要Time::HiRes模塊) RHEL/CentOS一般自帶了perl-Time-HiRes(1.5x)所以以下的rpm安裝也許會報錯(提示沖突),可以不必理會。如果想安裝本文所帶的新版Time-HiRes模塊,可以用如下命令刪除系統自帶的包: rpm -e perl-Time-HiRes --nodeps 安裝依賴包/RRDtool rpm -ivh RPMS/rrdtool-1.2.12-1hzq.i386.rpm RPMS/perl-rrdtool-1.2.12-1hzq.i386.rpmrpm -ivh RPMS/perl-Time-HiRes-1.72-1hzq.i386.rpmrpm -ivh RPMS/perl-File-Tail-0.99.3-1hzq.i386.rpm 複制mailgraph_ext 執行以下命令: cp -r /var/www/extsuite/extman/addon/mailgraph_ext/ /usr/local/mailgraph_ext/ 注意事項: 本文使用qmonitor來搜集隊列數據,而不是使用crontab來定時提取,這與官方網站上的文檔有差異。使用qmonitor的好處是它實時的監視隊列目錄的變化,顯示的結果更加精確。 啓動進程 啓動mailgraph_ext及qmonitor: /usr/local/mailgraph_ext/mailgraph-init start/usr/local/mailgraph_ext/qmonitor-init start 加入自啓動 爲了一開機就能自動執行上述進程,將上述命令加到rc.local 裏面: echo "/usr/local/mailgraph_ext/mailgraph-init start" /etc/rc.d/rc.localecho "/usr/local/mailgraph_ext/qmonitor-init start" /etc/rc.d/rc.local 使用方法等待大約15分鍾左右,如果郵件系統有一定的流量,即可登陸到extman裏,點「圖形日志」即可看到圖形化的日志。具體每天,周,月,年的則點擊相應的圖片進入即可。 配置Cyrus-SASL 認證RHEL4/CentOS4的cyrus-sasl默認沒有打開authdaemon的支持,爲了使用集中認證的authlib,必須打開這個支持。爲此我們必須刪除系統的cyrus-sasl軟件包,替換成打開了authdaemon支持的sasl軟件包。首先要刪除系統老的cyrus-sasl: rpm -e --nodeps cyrus-sasl 然後安裝新的支持authdaemon的軟件包 rpm -ivh RPMS/cyrus-sasl-2.1.19-5.EL4.i386.rpm Postfix的SMTP認證需要透過Cyrus-SASL,連接到authdaemon獲取認證信息,編輯/etc/postfix/main.cf,增加如下內容: # smtpd related configsmtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname,# SMTP AUTH config herebroken_sasl_auth_clients = yessmtpd_sasl_auth_enable = yessmtpd_sasl_local_domain = $myhostnamesmtpd_sasl_security_options = noanonymous 其次用vi編輯/usr/lib/sasl2/smtpd.conf,確保其內容爲: pwcheck_method: authdaemondlog_level: 3mech_list: PLAIN LOGINauthdaemond_path:/var/spool/authdaemon/socket 存盤退出後,重新啓動postfix: /etc/init.d/postfix restart 測試SMTP認證 通過以下命令獲得test@extmail.org的用戶名及密碼的BASE64編碼: perl -e 'use MIME::Base64; print encode_base64("test\@extmail.org")'dGVzdEBleHRtYWlsLm9yZw==perl -e 'use MIME::Base64; print encode_base64("test")'dGVzdA== 然後本機測試,其過程如下(藍色的文字是我們輸入/發送到Postfix的) telnet localhost 25Trying 127.0.0.1...Connected to localhost.localdomain (127.0.0.1).Escape character is '^]'.220 mail.extmail.org ESMTP Postfix - by extmail.orgehlo demo.domain.tld250-mail.extmail.org250-PIPELINING250-SIZE 10240000250-VRFY250-ETRN250-AUTH LOGIN PLAIN250-AUTH=LOGIN PLAIN250-ENHANCEDSTATUSCODES250-8BITMIME250 DSNauth login334 VXNlcm5hbWU6dGVzdEBleHRtYWlsLm9yZw==334 UGFzc3dvcmQ6dGVzdA==235 2.0.0 Authentication successfulquit221 2.0.0 Bye 最後出現235 Authentication Successful 表明認證成功了。 安裝Courier-IMAP用以下命令安裝courier-imap的rpm包,默認的courier-authlib及courier-imap都會增加系統自啓動設置,因此下一次服務器啓動將自動啓動相應的authlib及POP3服務 rpm -ivh RPMS/courier-imap-4.1.0-1hzq.i386.rpm 配置courier-imap 由于Courier-imap的IMAP目錄是按UTF-7編碼的,ExtMail目前還沒有正式支持IMAP目錄,因此需要屏蔽IMAP,只提供pop3服務。而就目前的使用情況來看,IMAP使用的非常少,絕大部分Outlook/Foxmail用戶都習慣使用POP3而非IMAP。 vi /usr/lib/courier-imap/etc/imapd 將如下這行配置: IMAPDSTART=YES 替換成爲: IMAPDSTART=NO vi /usr/lib/courier-imap/etc/imapd-ssl 再將如下配置: IMAPDSSLSTART=YES 替換成爲: IMAPDSSLSTART=NO 然後重新啓動courier-imap: /etc/init.d/courier-imap start 測試POP3 請按如下步驟輸入pop3命令測試其是否正常工作,注意藍色的信息是我們輸入到POP3服務器的 telnet localhost 110Trying 127.0.0.1...Connected to localhost.localdomain (127.0.0.1).Escape character is '^]'.+OK Hello there.user test@extmail.org+OK Password required.pass test+OK logged in.list+OK POP3 clients that break here, they violate STD53..quit+OK Bye-bye.Connection closed by foreign host. 反病毒/內容過濾配置反病毒及內容過濾器是依賴Amavisd-new軟件包,它是一個多功能的過濾器,能與殺毒軟件及內容過濾軟件(如SpamAssassin)結合,通用性較強。 安裝依賴的Perl包首先我們要確保系統自帶的perl-Net-DNS軟件包被刪除幹淨,因爲該包的版本較低(0.48),有已知的bug,所以必須替換成本文檔提供的新版(0.5x),輸入如下命令: rpm -e --nodeps perl-Net-DNS Amavisd-new 及SpamAssassin需要依賴大量的第三方perl軟件包,下列要安裝的部分RPM在上述的操作中已經安裝了,爲了給出較明確的依賴關系,我們依然將這些包的名稱列出,如果安裝時提示有安裝包已安裝過,或者提示沖突,請不必驚慌。請安裝如下的RPM軟件包: rpm -ivh RPMS/perl-Digest-SHA1-2.07-5.i386.rpmrpm -ivh RPMS/perl-Digest-HMAC-1.01-1hzq.i386.rpmrpm -ivh RPMS/perl-Net-IP-1.24-1hzq.i386.rpmrpm --nodeps -ivh RPMS/perl-Net-DNS-0.57-1hzq.i386.rpmrpm -ivh RPMS/perl-Time-HiRes-1.72-1hzq.i386.rpmrpm -ivh RPMS/perl-HTML-Tagset-3.03-30.noarch.rpmrpm -ivh RPMS/perl-HTML-Parser-3.35-6.i386.rpm rpm -ivh RPMS/spamassassin-3.0.5-3.el4.i386.rpmrpm -ivh RPMS/perl-IO-stringy-2.110-1hzq.i386.rpmrpm -ivh RPMS/perl-IO-Multiplex-1.08-1hzq.i386.rpmrpm -ivh RPMS/perl-Net_SSLeay.pm-1.30-1hzq.i386.rpmrpm -ivh RPMS/perl-IO-Socket-SSL-0.97-1hzq.i386.rpmrpm -ivh RPMS/perl-Net-Server-0.93-1hzq.i386.rpmrpm -ivh RPMS/perl-Unix-Syslog-0.100-1hzq.i386.rpmrpm -ivh RPMS/perl-TimeDate-1.16-1hzq.i386.rpmrpm -ivh RPMS/perl-MailTools-1.67-1hzq.i386.rpmrpm -ivh --force RPMS/perl-MIME-Base64-3.05-1hzq.i386.rpmrpm -ivh RPMS/perl-Convert-BinHex-1.119-1hzq.i386.rpmrpm -ivh RPMS/perl-MIME-tools-5.418-1hzq.i386.rpmrpm -ivh RPMS/perl-BerkeleyDB-0.26-1hzq.i386.rpmrpm -ivh RPMS/perl-Convert-TNEF-0.17-1hzq.i386.rpmrpm -ivh RPMS/perl-Convert-UUlib-1.051-1hzq.i386.rpmrpm -ivh RPMS/perl-Compress-Zlib-1.41-1hzq.i386.rpmrpm -ivh RPMS/perl-Archive-Zip-1.16-1hzq.i386.rpmrpm -ivh RPMS/perl-IO-Zlib-1.04-1hzq.i386.rpmrpm -ivh RPMS/perl-Archive-Tar-1.26-1hzq.i386.rpmrpm -ivh RPMS/arc-5.21o-1hzq.i386.rpmrpm -ivh RPMS/zoo-2.10-9hzq.i386.rpmrpm -ivh RPMS/unarj-2.65-49hzq.i386.rpmexport LANG=Crpm -ivh RPMS/amavisd-new-2.4.0-1hzq.i386.rpmchown amavis.amavis /var/spool/vscan/db/chkconfig --add amavisd 修改amavisd.conf修改的主要參數如下,請逐一對照後修改: $max_servers = 10;$sa_spam_subject_tag = '[SPAM] ';$mydomain = 'mail.extmail.org';$myhostname = 'mail.extmail.org';@local_domains_maps = qw(.);$sa_tag2_level_deflt = 5.0;$sa_kill_level_deflt = 5.0; 注意事項: 上述$mydomain參數與$myhostname參數相同,主要是爲了方便之後的病毒/垃圾彙報郵件發給系統管理員時,能投遞到本地的別名裏,再轉交到虛擬域的特定用戶。 增加如下參數(默認amavisd.conf沒有): $sa_spam_modifies_subj = 0; # don't modify subject$remove_existing_x_scanned_headers= 1; # remove existing headers$remove_existing_spam_headers = 1; 配置SpamAssassinAmavisd-new 通過Mail::SpamAssassin 模塊來調用SA的功能,因此這裏配置SA和常規配置SA軟件有些區別,主要集中在修改local.cf文件上。 編輯/etc/mail/spamassassin/local.cf文件 vi /etc/mail/spamassassin/local.cf 將其內容修改爲: report_safe 1use_bayes 0auto_learn 0bayes_auto_expire 1skip_rbl_checks 1use_razor2 0use_dcc 0use_pyzor 0dns_available no 增加Chinese_rules.cf支持 Chinese_rules.cf是教育科研網的反垃圾郵件小組對大量垃圾郵件和正常郵件進行分析後得出的一個關鍵字/分數規則集,用于處理中文(簡體)垃圾郵件還是比較有效的。這裏我們通過如下命令增加到系統: wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf 由于該規則每周更新一次,爲了達到最好效果,最好在crontab裏增加自動更新的內容,輸入: /usr/bin/crontab -e 然後輸入如下的內容: 0 0 1 * * wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf; /etc/init.d/amavisd restart 存盤退出即可。最後運行以下調試命令以確認amavisd沒有錯誤: /usr/sbin/amavisd debug 如果沒有異常提示或報錯退出則表示一切都正常,按ctrl+c終止,然後正常啓動,若提示pid不存在等錯誤,不必理會,只要最後啓動成功即可: /etc/init.d/amavisd start 安裝ClamAV執行如下命令: rpm -ivh RPMS/clamav-db-0.88.3-1hzq.i386.rpmrpm -ivh RPMS/clamav-0.88.3-1hzq.i386.rpmrpm -ivh RPMS/clamd-0.88.3-1hzq.i386.rpm 編輯/etc/clamd.conf文件,去掉 'LocalSocket /var/run/clamav/clamd.sock'的注釋,並注釋掉 'TCPSocket 3310',我們將使用unix socket而不是TCP,兩者不可並存。修改完畢後,保存,變動內容見下: # Path to a local socket file the daemon will listen on.# Default: disabledLocalSocket /var/run/clamav/clamd.sock#TCPSocket 3310 將clamav加到amavis運行組裏,並調整目錄權限,否則clamav將無法掃描amavisd-new産生的臨時文件 gpasswd -a clamav amavisusermod -G amavis clamavchown amavis.amavis /var/spool/vscanchmod 750 /var/spool/vscanchown amavis.amavis /var/spool/vscan/tmpchmod 750 /var/spool/vscan/tmp 默認的/var/spool/vscan 目錄屬性是: rwx------ amavis.root 對于clamav用戶而言,則無任何權限訪問該目錄,因此maillog裏amavisd-new會提示: May 19 08:38:53 as3 amavis[1752]: (01752-01) ask_av (ClamAV-clamd) FAILED - unexpected result: /var/spool/vscan/tmp/amavis-20050519T083853-01752/parts: access denied. ERROR\n May 19 08:38:53 as3 amavis[1752]: (01752-01) WARN: all primary virus scanners failed, considering backups 啓動ClamAV及freshclam /etc/rc.d/init.d/clamd startfreshclam --daemon 將freshclam增加到自啓動 輸入如下命令,即可使freshclam一開機就實現自啓動 echo "/usr/bin/freshclam --daemon" /etc/rc.d/rc.local 配置Amavisd與Clamav結合爲了使Amavisd-new能與clamav結合,需要修改/etc/amavisd.conf文件,打開clamav的支持代碼,編輯/etc/amavisd.conf文件,大概在300行左右,去掉clamav的支持代碼注釋,並將socket路徑改爲/var/run/clamav/clamd.sock,如下: ['ClamAV-clamd', \%26amp;ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"], qr/\bOK$/, qr/\bFOUND$/, qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], 在110行左右,修改投遞/攔截的方法: $final_virus_destiny = D_DISCARD;$final_banned_destiny = D_BOUNCE;$final_spam_destiny = D_PASS;$final_bad_header_destiny = D_PASS; 注意上述4個設置中,對spam(垃圾郵件)默認會直接反彈(BOUNCE),現在修改爲繼續投遞(PASS)但在信頭中增加相關X-Spam-Status信息等。這樣可以很方便的在extmail中設置將被標記爲垃圾郵件的mail投遞到「垃圾郵件箱」中,便于用戶翻查。 增加郵件別名編輯/etc/postfix/aliases,增加如下信息,注意:默認的aliases數據庫裏已有一條virusalert的別名,所以請刪除,再輸入下面的別名記錄,並確保所有記錄都是唯一的: virusalert: rootspam.police: rootpostfix: test@extmail.org 保存並執行newaliases命令生成新的別名數據庫,這樣所有的重新啓動amavisd: /etc/rc.d/init.d/amavisd restart 配置Postfix 集成amavisd-newvi /etc/postfix/master.cf 增加如下內容: 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o receive_override_options= 編輯/etc/postfix/main.cf # Content-Filtercontent_filter = smtp:[127.0.0.1]:10024receive_override_options = no_address_mappings 注意:receive_override_options 這裏必須增加,禁止地址展開/影射,否則如果遇到別名的時候會引起冗余郵件的産生。 保存後/etc/init.d/postfix restart 測試Clamav然後輸入如下命令: 每輸入一行後等待1秒左右: telnet localhost 25Trying 127.0.0.1...Connected to localhost.localdomain (127.0.0.1).Escape character is '^]'.220 mail.extmail.org ESMTP Postfix - by extmail.orgmail from:250 2.1.0 Okrcpt to:250 2.1.5 Okdata354 End data with .X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*.250 2.0.0 Ok: queued as BC24E85260quit221 2.0.0 ByeConnection closed by foreign host. 在郵件日志裏,應該有相應的信息出現: May 19 10:11:44 as3 amavis[2770]: (02770-01) Blocked INFECTED (Eicar-Test-Signature), - , quarantine: virus-20050519-101144-02770-01, Message-ID: , Hits: - 如果看到類似這樣的日志,表明Clamav+Amavisd-new工作正常。 Spam Locker配置與安裝安裝需求支持Linux / BSD或Solaris,HP-UX等操作系統Perl 5.6+,建議Perl 5.8.0以上Net::DNSPOSIXFcntlDigest::MD5Digest::SHA1Digest::HMACNet::IP 解包軟件cp -r src/slockd-0.083 /usr/local/slockd 安裝相關Perl模塊由于slockd是以smtp特征檢測爲主的軟件,因此很大程度依賴dns庫,必須安裝Net::DNS庫才能正常工作。除此外還有諸如HMAC,MD5及SHA1, Net-IP等模塊。 執行以下命令安裝需要的模塊,注意:這些模塊在上文安裝Amavisd-new時已經安裝過,這裏重複是爲了強調slockd依賴這些軟件包 rpm -ivh RPMS/perl-Digest-SHA1-2.07-5.i386.rpmrpm -ivh RPMS/perl-Digest-HMAC-1.01-1hzq.i386.rpmrpm -ivh RPMS/perl-Net-IP-1.24-1hzq.i386.rpmrpm -ivh --nodeps RPMS/perl-Net-DNS-0.57-1hzq.i386.rpm 配置resolv.conf請確認/etc/resolv.conf裏的dns服務器是離你的郵件服務器最近,速度最快的dns server,slockd很依賴dns的好壞,因此給系統配置一個快速的dns能大幅度提高處理速度。以下給出一個配置僅供參考: nameserver 202.96.128.68 上述dns服務器是廣東電信的DNS服務器,對于非廣東朋友,請改爲離你最近的dns 服務器ip 如果可能的話,請配置一個簡單的bind9,成爲本地的dns cache server,可以獲得最高性能。這裏略過這一步驟,但您必須確保dns的配置是正確並且可靠的,否則slockd將不能工作! 啓動/測試執行: /usr/local/slockd/slockd-init start 此時slockd將啓動,並進入非daemon方式的監聽模式,接受來自10030端口的請求,命令行下將顯示如下調試信息: Starting spam locker daemon: slockdstarting child 2908starting child 290908-01 12:34:40 [2908]: Loading APF::Plugin::localctrl08-01 12:34:40 [2909]: Loading APF::Plugin::localctrl08-01 12:34:40 [2908]: Loading APF::Plugin::anvil08-01 12:34:40 [2908]: Loading APF::Plugin::fqdn08-01 12:34:40 [2909]: Loading APF::Plugin::anvil08-01 12:34:40 [2908]: Loading APF::Plugin::dnsbl08-01 12:34:40 [2909]: Loading APF::Plugin::fqdn08-01 12:34:40 [2909]: Loading APF::Plugin::dnsbl08-01 12:34:40 [2908]: Loading APF::Plugin::hostname08-01 12:34:40 [2909]: Loading APF::Plugin::hostname 打開另一個ssh/終端窗口,進入/usr/local/slockd/tools 目錄,輸入: perl policy_sig -h localhost -p 10030 --helo FOOBAR \--ip 192.168.0.1 --from test@foo.com --to test@bar.com 此時,程序應該返回如下錯誤信息: action=504 : rejected, see http://bl.extmail.org/cgi/why?fqdn 這表示slockd初步的正常工作了。 後台方式運行slockd調試正確後,必須將slockd配置成後台服務進程(Daemon Process)。vi /usr/local/slockd/config/main.cf 將如下兩個配置的注釋去掉: # uncomment the following line if you need to daemonizesetsid 1## logginglog_file /var/log/slockd.log 然後在運行slockd的命令行窗口按ctrl+c,關閉剛才運行的slockd。或者在另一個命令行窗口輸入如下命令以殺死slockd進程: killall slockd 然後執行: /usr/local/slockd/slockd-init start 自啓動輸入如下的命令,將slockd啓動加入到系統裏,這樣下一次服務器重新啓動,就可以自動執行slockd了。 echo "/usr/local/slockd/slockd-init start" /etc/rc.d/rc.local 配置Postfixslockd調試正常後,必須配置postfix以使其打開對slockd的支持,編輯/etc/postfix/main.cf,將 check_policy_service inet:127.0.0.1:10030 這一行記錄增加到smtpd_recipient_restrictions 裏,例如: smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname, check_policy_service inet:127.0.0.1:10030 最後,重新啓動postfix以使配置生效 /etc/init.d/postfix restart 注意事項: 上述配置是將slockd的查詢放到最後,這也是進一步提高資源利用律的辦法,因爲有部分功能postfix已實現了,所以就先由postfix檢測,如果檢測不到再由slockd完成。 最終測試現在通過簡單的email收發來確認系統是否正常。 發送測試郵件 輸入以下命令,通過telnet方式給test@extmail.org發送一封測試信件 telnet localhost 25Trying 127.0.0.1...Connected to localhost.localdomain (127.0.0.1).Escape character is '^]'.220 mail.extmail.org ESMTP Postfix - by extmail.orghelo demo.extmail.org250 mail.extmail.orgmail from:250 2.1.0 Okrcpt to:250 2.1.5 Okdata354 End data with .Subject: Hello WorldHello World!.250 2.0.0 Ok: queued as 3E47685269quit221 2.0.0 ByeConnection closed by foreign host. 此時通過另一個命令行窗口,觀察maillog,命令爲: tail -f /var/log/maillog 將看到如下信息: Aug 1 12:51:06 centos postfix/qmgr[3017]: 041718526B: from=, size=833, nrcpt=1 (queue active) Aug 1 12:51:06 centos postfix/smtpd[3032]: disconnect from centos[127.0.0.1] Aug 1 12:51:06 centos amavis[2890]: (02890-01) Passed CLEAN, [127.0.0.1] - , Message-ID: , mail_id: N8nxpoRn4Hlq, Hits: 0.107, 11561 ms Aug 1 12:51:06 centos postfix/smtp[3043]: 3E47685269: to=, relay=127.0.0.1[127.0.0.1], delay=27, dsn=2.6.0, status=sent (250 2.6.0 Ok, id=02890-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 041718526B) Aug 1 12:51:06 centos postfix/qmgr[3017]: 3E47685269: removed Aug 1 12:51:06 centos postfix/pipe[3035]: 041718526B: to=, relay=maildrop, delay=0, dsn=2.0.0, status=sent (delivered via maildrop service) Aug 1 12:51:06 centos postfix/qmgr[3017]: 041718526B: removed 上述日志表示郵件經過了amavisd-new的掃描,並且已經通過maildrop投遞到用戶的maildir了。至此,整個ExtMail Solution 的安裝配置已經基本告一段落。對于需要進行高級調整的朋友,請留意本文附錄的備注。備注的內容將不斷更新,敬請留意。 補充配置以下是補充的ExtMail Solution有關文檔,主要是爲希望進一步了解mail系統運行,並提高extmail效能的朋友准備,對于初學者而言,建議要先打好基礎再進行測試。 增加FCGI支持爲extmail增加FCGI的支持,主要是爲了獲得優異的web效能,克服CGI不能應付大量訪問及低效率的缺陷。根據我們的測試,CGI模式下的頁面效率只有FCGI下的1/10~1/100,因此建議有條件的用戶還是使用FCGI。日後ExtMail Solution的web CGI程序將全部都支持FCGI。 安裝mod_fastcgi mod_fastcgi 是針對Apache Web服務器的FCGI支持模塊,下載地址: http://www.fastcgi.com/dist/mod_fastcgi-2.4.2.tar.gz 編譯指令: wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.2.tar.gztar xfz mod_fastcgi-2.4.2.tar.gzcd mod_fastcgi-2.4.2cp Makefile.AP2 Makefilemake top_dir=/etc/httpd install 安裝perl-FCGI 除了Apache需要FCGI的支持外,extmail也需要相應的perl-FCGI模塊。用以下命令安裝: rpm -ivh RPMS/perl-FCGI-0.67-2hzq.i386.rpm 接下來將配置Apache,將如下的信息增加到/etc/httpd/conf/vhost_extmail.conf的虛擬主機配置之後: LoadModule fastcgi_module modules/mod_fastcgi.soFastCgiExternalServer /usr/bin/dispatch.fcgi -host 127.0.0.1:8888 同時,去掉如下行: ScriptAlias /extmail/cgi/ /var/www/extsuite/extmail/cgi/ 改爲: Alias /extmail/cgi/ /usr/bin/dispatch.fcgi/SetHandler fastcgi-script 然後編輯/var/www/extsuite/extmail/dispatch-init文件,修改如下: BASE=/var/www/extsuite/extmail 最後啓動fastcgi server: /var/www/extsuite/extmail/dispatch-init start 如果沒有意外將啓動10個dispatch.fcgi守護進程,可以通過以下命令將啓動命令加到rc.local中,實現自啓動: echo "/var/www/extsuite/extmail/dispatch-init start" /etc/rc.d/rc.local 編譯Courier-IMAP SRPM包需要自己重新編譯Courier-IMAP的朋友,可以通過如下方式完成。 下載軟件包 wget http://jaist.dl.sourceforge.net/sourceforge/courier/courier-imap-4.1.0.tar.bz2 制作RPM包 由于courier-imap需要非root帳戶進行編譯,因此必須su到sysadmin這個非root用戶,然後輸入如下指令: mkdir $HOME/rpmmkdir $HOME/rpm/SOURCESmkdir $HOME/rpm/SPECSmkdir $HOME/rpm/BUILDmkdir $HOME/rpm/SRPMSmkdir $HOME/rpm/RPMSmkdir $HOME/rpm/RPMS/i386echo "%_topdir $HOME/rpm" $HOME/.rpmmacros 解開courier-imap-4.1.0.tar.bz2,取出courier-imap.spec文件,複制到$HOME/rpm/SPECS裏,然後再複制courier-imap-4.1.0.tar.bz2到$HOME/rpm/SOURCE裏 注意事項: 此版本的courier-imap需要openldap等相關包,所以編譯前務必安裝好openldap-devel等包 rpmbuild --ba $HOME/rpm/SPECS/courier-imap.spec 編譯完畢,在$HOME/rpm/RPMS/i386/下就有所有編譯成功的rpm包了! 結束語通過此文檔,讀者應該能夠較容易地架設一個功能較齊全的電子郵件系統。當使用一段時間後,用戶將發現這個系統還有很多比較粗糙的地方,不盡人意。日後,本文檔將繼續保持更新,逐步將一些高級的設置方法公布出來,爭取ExtMail Solution更加完整,力求完美。 已知Bugs整個ExtMail Solution盡力將Opensource軟件的優點發揮到極至,但免不了還是有bug。以下是幾個已知的問題: WebMail 刪除/新增郵件時左幀數字不會變更 不能處理少量違反RFC的郵件 在某些版本Apache下偶爾出現會話失效問題 還不支持IMAP創建的中文子目錄 Amavisd-new 退信模板還是英文的 産生的彙報信息不夠友好 Postfix 本版本還不支持退信模板定制 版本不是最新版 Spam Locker 錯誤識別一些配置異常的mail服務器 與內容過濾器結合不夠緊密 hostname模塊易造成較多誤傷 TODO 列表支持SMTP 及 POP3/IMAP的TLS/SSL加密 HTTP及SMTP/POP3等CA證書的配置 更精細的Anti-Spam策略及關鍵字過濾 系統安全配置(基于iptables) BSD平台的ExtMail Solution文檔
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有