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