讓hmailserver的用戶使用各自的中繼來發(fā)送郵件
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
前些日子與hunrybecky兄說到hmailserver的逐帳號中繼,確實,直接擁有這個功能的郵件服務(wù)器軟件貌似不多,以前在考慮hmailserver部署的一些問題的時候有參考過dbmailserver的官方文檔,所以發(fā)現(xiàn)dbmailserver有這個功能,至于mdaemon倒沒太注意。這個逐帳號中繼也就是說讓沒有郵件用戶使用自己的中繼來發(fā)送,以免所有的帳號使用同一個中繼帳號來發(fā)送,導(dǎo)致這個帳號使用過度而被封掉或被某些會驗證來路的服務(wù)器所阻止。[br][br]另外也能解決一個問題,所有用戶共同使用同一個帳號的時候,如果你不在郵件客戶端中添加回復(fù)地址為自己的地址,對方自動回復(fù)的郵件就會發(fā)往中繼郵箱,因為對方回復(fù)的郵件頭中都找不到發(fā)件人的信息,所以也無法讓hmailserver來根據(jù)頭信息分揀郵件,再一個問題就是發(fā)送失敗的信息再怎么折騰都只能發(fā)送到中繼郵箱,所以之前我只能在自己的郵件客戶端中設(shè)置一個中繼郵箱的帳號,然后手工把退信回復(fù)給所有人。汗,這還只是在用戶不多的情況下,而且很多發(fā)送失敗的郵件都不用通知發(fā)件人,才沒有那么多工作量。如果讓用戶使用各自的中繼來發(fā)送,那么a用戶就使用a用戶自己的中繼郵箱,如果退信或自動回復(fù),會回復(fù)到a用戶自己的中繼郵箱,再讓郵件服務(wù)器pop3抓取回來,ok,完成了所有步驟。[br][br]我以前和現(xiàn)在所說的這些關(guān)于hmailserver的功能或問題,都建立在這樣一個環(huán)境上,在外部有自己的企業(yè)郵箱,在公司局域網(wǎng)建立一個內(nèi)部郵件服務(wù)器,使用的域名與外部企業(yè)郵局的域名一樣,當(dāng)然,這個域名只是虛擬的假的,這樣一個做法只是為了減少同一個局域網(wǎng)的郵件不用到外部繞一圈了再回來,至于如果你有光纖接入或固定ip,或其他的環(huán)境問題,我沒有去考慮,因為目前我就只有這樣一個環(huán)境。好了,下面踏入正題。[br][br]最近一直在思考這個問題,在hmailserver的官方論壇問了一下,老外好干脆,甩了兩個詞,route,rule。趁著這兩天服務(wù)器宕機(jī),將這些所想到的問題都在hmailserver上測試了一下,發(fā)送了幾十封測試郵件,每封都研究一下頭信息,終于把這個問題解決了,解決方法也如老外說的很簡單,路由加規(guī)則,說起來很簡單,但測試這個還是要死不少腦細(xì)胞的。[br][br]經(jīng)過測試我有一個發(fā)現(xiàn),在smtp協(xié)議中設(shè)置的那個中繼才是默認(rèn)管用的中繼,而你路由中設(shè)置的中繼,默認(rèn)好像是不生效的,這個問題還是讓我有點頭暈,畢竟hmailserver的文檔是英文的,我的英文水平讓我無法全盤了解整個系統(tǒng),之前我寫另一篇hmailserver相同域名之間郵件的轉(zhuǎn)發(fā)的時候,又好像生效了,有些糊涂,接下來的日子還是慢慢測試看。我這樣測試過,不管如何設(shè)置路由,默認(rèn)中繼出去的郵件頭都是smtp協(xié)議中設(shè)置的那個中繼帳號,如果把那個帳號取消掉了,郵件就是直接由hmailserver的smtp發(fā)送出去的,但如果你設(shè)置了規(guī)則讓郵件走路由,那路由中繼的優(yōu)先級是高于默認(rèn)的那個中繼的。[br][br]有了這個發(fā)現(xiàn),后來的問題就簡單了,設(shè)置路由,然后添加相應(yīng)的規(guī)則不就解決了?沒那么簡單,添加了一個路由后就卡住了,第二個路由如何添加?域名不允許重復(fù),該如何處理?看了半天文檔,看來看去也看不太明白,就那么一句話“the domain that this route should be applied to. the domain name is case insensitive.”,到底是大小寫不敏感還是可以隨便寫?應(yīng)該是大小寫不敏感,不管了,反正這里隨便寫幾個字母也能保存,然后設(shè)置好中繼帳號,接下來就設(shè)置規(guī)則了,規(guī)則名隨便,criteria這里還是使用了個use and,應(yīng)該使用use or也是可以的,但好像有一次測試的時候失敗了。規(guī)則是這樣的,predefined field選from,search type是equals,value是在路由中添加的那個中繼帳號,意思就是當(dāng)發(fā)件人等于這個郵箱的時候觸發(fā),剛開始給action添加使用路由,測了半天沒成功,也不知道規(guī)則生效沒,后來改了一下,讓action是delete e-mail,這樣簡單一點,只要規(guī)則生效了,那封郵件會自動刪除,是收不到的,這樣直接測試到規(guī)則生效為止,后來終于發(fā)現(xiàn)search type使用等于equals是不行的,改為contains后終于那個郵件收不到了,呃,仔細(xì)看一下郵件頭,都是如from: “=?gb2312?b?uti71ots?=”這樣一個寫法,原來如此,不能搞成等于啊,在這里也順便提一下,郵件頭里有很多東西比較有用,比如規(guī)則里面的自定義字段。[br][br]既然規(guī)則生效,把a(bǔ)ction改成send using route,使用的路由當(dāng)然就是你之前定義的咯,再次測試,終于,郵件發(fā)送成功,查看接收到的郵件頭,發(fā)現(xiàn)里面的信息已經(jīng)變成路由中的中繼帳號了,呼呼,任務(wù)完成,看來添加路由時候的domain欄不輸入域名也是可以的。[br][br]接下來該怎么辦就不用多說了,添加相應(yīng)的路由,添加相應(yīng)的規(guī)則,然后就ok了,麻煩是麻煩了一點,沒有達(dá)到咱所想的和dbmailserver那樣,直接在外部郵箱里設(shè)置一次就可以了,但咱這是免費的不是,手動解決了這個問題還是比較有成就感的,哈哈。 [br]
該文章在 2011/4/9 10:44:28 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |