svn能夠實如今commit提交時,使用hook鉤子功能,向指定的郵箱發送提交註釋comment/log及內容變化的郵件,以方便對之進行監控。
具體的描述就是,
1.當某個帳號提交代碼/文檔時,使用鉤子功能,調用倉庫的hooks目錄下的post-commit文件,其實是執行一個shell文件,所以要求此文件具備執行權限
2.在shell文件中,經過顯式的編碼方式運行mailer.py,根據mailer.conf文件中配置的郵件服務器,from address,to address,reply to等,向指定的郵箱發送帶svn提交時各類信息的郵件。
3.若是採用這種方式配置郵件通知功能,根據上面的描述,你的操做系統中須要有python運行環境,通常來講,版本應該不小於2.4.x
4.以上具體配置可參考官方wiki,連接以下:
https://ctf.open.collab.net/sf/wiki/do/viewPage/projects.svnedge/wiki/CommitMailerOnLinux
我按照官網給出的辦法在一臺linux測試機上配置以後,很快就能夠收到郵件了,一切運行正常,然而,配置到公司內網的svn服務器上後,運行的時候不出任何錯誤提示,但就是收不到郵件。按道理說,linux系統下,執行shell命令沒有任何錯誤提示,說明此命令運行是正確的。但收不到郵件,這是怎麼回事?
因而開始比較兩個操做系統的版本等信息,python的版本等等,發現是不徹底同樣。測試機使用centos 6.4, python 2.6.6版本,而svn服務器則是Redhat kiTangka 5.8,python 2.4.3.難道是由於這些緣由?
至此有些束手無策,甚至一度想若是實在沒有辦法,只能是作數據遷移了。
就在這時,請教了一下公司的運維同事,事情開始峯迴路轉。運維首先是在svn服務器上ping了一下smtp郵件服務器地址,發現ping不通,而測試機則能夠。
那麼須要在svn服務器上配置dns解析,配置以後立刻能夠ping通郵件服務器了,但仍是沒法收到郵件。
運維同事這時又鎮定自若的開始查看svn服務器的sendmail服務是否正確,果真,這臺機器的mail服務沒有啓動,不能發送/接收任何郵件,因而啓動mail服務,而後。。。以前未發出去的郵件,已經像雪片般開始不斷的延遲發送了。
至此所有配置成功!
此次問題的最終解決,給本身帶來最大的經驗教訓就是,在linux系統中,其實在任何系統中都是這樣,若是要用到網絡環境以及某種服務時,好比發送郵件,提供web http服務等,一個很是重要的前提就是,在系統中基礎網絡,dns,ip配置,郵件服務甚至iptables防火牆等這些準備工做已經就緒,再去進行上層的開發或者配置,不要一味懷疑本身的程序或者上層執行有問題。當糾結於那臺服務器能夠正確執行,爲啥這臺就不行呢的時候,要充分考慮兩者運行環境的差別,不然問題得不到很好的解決。
python