【IT168信息化】前言:開放原始碼項目為中小企業快速搭建運營平臺已經成為普遍的選擇,在降低TCO總擁有成本同時,提供了很高的可訂製擴展性。網際網路各種雲服務目前很大一部分流量來自於LAMP(這是一組開源項目的縮寫:Linux一種開源作業系統,Apache一種開源網際網路伺服器,Mysql一種開源資料庫,Php一種開源跨平臺開發語言)技術支持的應用。本文結合在作者所在公司遠程心電監護雲健康服務平臺的搭建和運維過程所實施的各個開源平臺項目經驗為更多中小企業實施開源項目集成整合提供一定的指引。
本文使用的名詞解釋參考
一、郵件系統
1.1 郵件系統應用情況介紹
▲圖2-1
本方案使用Extmail開源郵件系統作為解決方案核心,在保障安全性方面採用基於SSL數字證書PKI公私密鑰體系建立的安全傳輸協議SMTPS/POP3S/HTTPS,實現郵件客戶端和伺服器通訊加密,有效降低郵件洩密風險。在管理易用性方面通過authlib插件集成windows active directory用戶登錄認證,使用戶郵件密碼和作業系統密碼統一,提高用戶易用性和管理效率。在阻止垃圾郵件方面,在保障郵件到達率前提下充分利用各種過濾插件過濾垃圾郵件及病毒,同時自行開發郵件屏蔽監控插件,保障被屏蔽的正常郵件可以被及時發現解決。
1.2 開源項目介紹
1.2.1 項目介紹
「ExtMail最初以WebMail軟體為主,後逐步完善配套並形成了ExtMail郵件系統,提供完整的SMTP/POP/IMAP/Web和管理支持。」—摘自www.extmail.org。為本方案提供HTTP服務。
Postfix是一個著名的郵件傳輸代理(MTA)軟體,出自IBM Research,是一個功能類似Sendmail,內核完全不同的MTA,基於模塊化,致力於快速、易管理、安全等特性開發。為本方案提供SMTP服務。
Courier項目是一個集成多個組件的郵件解決方案,本方案以Courier-IMAP實現POP3服務,以Courier-Authlib實現用戶身份查詢驗證服務。
Courier-IMAP,IMAP郵件伺服器軟體,來自Courier開源郵件項目,提供IMAP郵件收取服務,同樣可提供POP3服務,除Courier外這個組件也能應用於Postfix、Qmail、Exim等其他支持投遞Maildir的郵件伺服器。為本方案提供POP3服務。
Courier-Authlib,Courier郵件系統的身份驗證庫,獨立軟體包,用於發送接收郵件時的用戶身份驗證。通過集成後端的windows active directory為SMTP/POP3/HTTP三項郵件功能提供身份查詢驗證服務,實現域帳戶統一認證。
1.2.2 橫向對比
郵件系統的核心是MTA(Message Transfer Agent),本郵件系統的MTA基於Postfix,Postfix相比Sendmail和Qmail等其他開源MTA來說性價比更高。其安裝配置簡單靈活,模塊化設計,配置文件少,管理方便;擴展性好,源自sendmail,擴展配置豐富,提供外部對接API/protocol;低消耗高效率,單一隊列,磁碟I/O開銷小,發送效率高。新浪、yahoo使用qmail,網易、搜狐等使用Postfix支撐百萬甚至千萬用戶級別的商業運營也說明Postfix的穩定性足夠高。
應用特性對比參考視圖(http://shearer.org/MTA_Comparison#How_To_Compare_MTAs )--by Dan Shearer
由此表格可以看出Postfix相比其他MTA在文檔及社區支持、示例、安全性、可管理性上有明顯優勢,因此Extmail選擇Postfix作為MTA,為郵件應用系統提供有力支撐。
${PageNumber}
1.3 本地化定製
1.3.1 安全配置
本方案安全配置基於PKI公私密鑰體系,使用OpenSSL工具包裡的CA根證書認證機制,實現自主籤發CA根證書和伺服器端證書以及客戶端證書,未來根據安全性的進一步需求可以升級為第三方可信CA籤發數字證書提供SSL協議加密傳輸的SMTPS/POP3S/HTTPS服務。
首先用OpenSSL工具生成所需CA根證書及密鑰,pop3需要單獨的證書,可用mkpop3dcert生成,然後配置courier-imap、postfix使其支持pop3s和smtps。Web頁面訪問的https需要先拷貝CA根證書到apache證書目錄,並加載ssl模塊,如果想只用https訪問郵件web頁面可通過Redirect跳轉實現。配置完成之後重啟pop3d-ssl、postfix、apache服務。如果客戶端沒有安裝根證書會出現類似如下警告
▲(web頁面提示)
▲(outlook郵件客戶端提示)
1.3.2 集成Windows Active Directory 用戶登錄認證
Windows域增強了企業計算機網絡管理的安全與高效,extmail郵件系統也可以集成域用戶的認證機制,加強郵件系統安全與易用性。集成的關鍵是authlib插件,extmail採用authlib來進行用戶認證,我們可以讓authlib改為查詢windows AD域的帳戶完成認證。要做到這些需要在域上新建一個OU組存放所有郵件帳戶,配置authlib查詢此帳戶組,並分別修改postfix、courier-imap、extmail的配置文件,具體配置請參考網際網路相關項目的說明文檔或聯繫筆者。這裡對域控的安全性結合配置進行特別說明,結合本方案的實際使用情況,一旦主域發生故障需要在5分鐘之內切換到備域登錄,可通過一個ping腳本,取其5次ping結果,如果為零則自動修改authlib配置文件中的LDAP_URI值為備份登錄域IP位址,將此腳本加入crond任務每5分鐘執行一次,腳本裡可再加一條判斷語句,當主域恢復時再自動切換回去。
i=0
pingresult=`ping -c 5 master domain ip |grep transmitted |awk '{print $4}' `
checkhost=`cat /etc/authlib/authldaprc |grep slave domain ip |awk '{print $1}' `
if [ "$pingresult" -eq 0 ]
then
i=$(expr $i + 1)
echo $i > /root/ldapcheck.log
sed -i 's/ master domain ip / slave domain ip /g' /etc/authlib/authldaprc
sleep 2
authdaemond restart
else
if [ $checkhost = LDAP_URI ]
then
sed -i 's/ slave domain ip / master domain ip /g' /etc/authlib/authldaprc
sleep 2
authdaemond restart
fi
fi
1.3.3 群發限制
利用postfix配置規則限制特定用戶(local_sender)發送郵件到特定本地郵件組(local_recipient)的權限。
smtpd_restriction_classes = local_only
local_only = check_sender_access hash:/etc/postfix/local_sender,reject
smtpd_recipient_restrictions =
check_recipient_access hash:/etc/postfix/local_recipient,
smtpd_sender_restrictions =
check_sender_access hash:/etc/postfix/sender
1.3.4 垃圾郵件策略及拒收郵件監控
Postfix 支持很多擴展插件,包括slockd、amavisd-new、clamav、spamassassin、dspam等各種防垃圾、內容過濾、病毒查殺等插件,以slockd為例,slockd是基於SMTP行為識別為核心的反垃圾郵件軟體,它通過加載執行不同的插件在SMTP會話階段判斷屏蔽垃圾郵件,效率較高,但誤報率也高,通過關閉一些默認開啟的插件可有效提高郵件通過率,比如針對國內郵件錯誤率較高的RBL、SPF等,對於那些必須保證通過的郵件,例如重要的合作夥伴等的郵件可通過開啟白名單來控制誤報。
發送失敗的郵件有退信可查看,但有些被錯誤拒絕的郵件沒有郵件提醒,為及時了解被屏蔽郵件的情況,可通過腳本捕捉maillog日誌中的reject語句,將這些信息存放於一個臨時文件並定期將內容發送到管理員郵箱,為及時發現被「錯誤」阻止的郵件提供有效手段。
MAIL_COMMAND=/bin/mail
TOMAIL="管理員mail地址"
TMPMAILBODY=/root/mailreject.tmp
cat /var/log/maillog | grep 'reject' |egrep -v 'rejected: User unknown|NOQUEUE: reject|rejected: not logged in|reject: RCPT from unknown |tac >/root/mailreject.log //tac表示後面幾種排除掉,因為這些都是『正常』錯誤
if [ `cat /root/mailreject.log | wc -l` -gt 0 ]
then
echo -e "-----------------------------alert-log------------------------------" >$TMPMAILBODY
while read line
do
echo "$line" >>$TMPMAILBODY
echo -e "\n------------------------------------------------------------\n" >>$TMPMAILBODY
done </root/mailreject.log
$MAIL_COMMAND -s " REJECT mail Alert" $TOMAIL <$TMPMAILBODY
fi
收到的信息大概如下
1.4 系統應用總結
本方案現管理用戶120人,每天發送接收郵件4000封左右,系統從開始正式運行到現在2年多,除正常升級停機外,至目前為止沒有出現故障。
作者介紹:
·Tony湯文志 目前供職於中衛萊康任系統研發部總監兼IT支持部總監10年無線網際網路軟體研發經驗,曾供職於多家無線網際網路企業包括華友世紀(Nasdq:HRAY),搜狐(Nasdq:SOHU)負責無線網際網路研發工作,參與多個電信級的運營商無線增值平臺的開發。2007年進入遠程健康管理企業中衛萊康負責遠程心電監護平臺的研發和系統支持工作,在遠程健康管理平臺建設過程中應用各種開源項目,積極推動開源項目的推廣使用,倡導中小企業優先應用開源項目搭建支撐平臺。點擊作者微博 博客 郵件
·Frank 趙傑 目前供職於中衛萊康 任it支持經理 參與本文郵件方案和監控方案編寫