郵件系統本來就是乙個資訊密集,併發請求大的系統。看一看主流郵件系統的一些結構對自己以後設計和實現更高效,更穩健的系統有幫助。
這裡記錄了一些postfix的應用結構,在一些併發問題的處理等方面的特性。
***************===我是悲催的分界線*************************====
1.postfix簡介
postfix最初是由wietse venema開發後來由ibm research支援的郵件傳送程式。
2.postfix的結構特點
區別於"單體式應用",postfix是一種「模組化設計」的方式組織應用。應用的各個功能被設計成不同的module,並應駐留在記憶體中的後台程序形式工作。包括完成smtp傳送的smtp daemon,完成日誌記錄功能的log daemon,完成郵件清理的cleanup daemon等等。這些模組由master daemon在啟動時統一載入。
(反思:這樣設計的目的好處在於能夠將不同功能分離,許可權分離,更加安全和更易管理和維護)
3.郵件傳送走向
[img]
3-1如何接收郵件
[img]
從上圖我們可以看到,postfix郵件的**主要有以下2種
(1)接收來自本機系統的郵件(本機使用者或自主程序提交)
(2)來自外部網路的郵件
來自本機的郵件
i.來自本機的郵件會被postdrop程式放到postfix佇列目錄下的maildrop/子目錄
ii.pickup daemon會定期(伺服器配置)喚醒檢查maildrop中是否又待傳送的郵件
iii.送到cleanup daemon進行清洗工作,以後同來自網路的郵件
來自網路的郵件
i.來自網路的郵件通常分為兩種
一。外界寄個postfix所控制網域的郵件(終點),
二。外界寄給postfix的其他網域的郵件,需要**rely
不過不論是哪種情況postfix都會直接將郵件交由cleanup daemon處理。
cleanup daemon是郵件進入佇列前的最後一站,用於新增一些郵件缺失資訊,或者進行一些內容校驗等工作。由此接受功能完成。
3-2 如果遞送郵件(postfix的佇列結構)
[img]
在3-1之後,郵件進入到incoming佇列開始進入遞送流程
postfix是以佇列結點的形式來遞送郵件的,圖中提到的是以下幾種佇列
incoming(收件佇列),active(活動佇列) ,deferred(延遲佇列)
這三種佇列的工作方式
i.incoming queue用來存放新郵件,是郵件佇列的入口
ii.下一站是active queue,這個佇列存放著已經準備被遞送的郵件
iii,如果遞送失敗(網路斷開,或者收件夾滿等),會被移到deferred queue
延遲佇列會每隔一段時間被掃瞄,如果重試時間到,郵件將會被重放到active queue裡(重試時間取決於-1.重試時間是否到達2.重試時間在配置的最大值最小值之間),延遲佇列裡的郵件預設將存放5天,如果5天內郵件被遞送則郵件會被刪除,如果超過5天,在刪除的同時,會被認為郵件不可遞送,有bounce daemon傳送一封彈回通知給發件者。
ps:對於佇列的設計,可以是記憶體佇列,也可以是檔案佇列,那麼postfix的佇列是什麼樣的呢。
postfix的佇列是以檔案形式存在的,queue manager管理了一定數量的的佇列資料夾,這些資料夾就是佇列的存在。每乙個佇列在queue_directory引數中指定儲存路徑。預設為/var/spool/postfix/,那麼我們的幾種佇列就分別是
/var/spool/postfix/incoming/
/var/spool/postfix/deferred/..。等
(反思:為什麼postfix會採用資料夾形式描述佇列,個人認為是為了可靠性,在傳送過程中難免出現掉電,down機,網路異常等情況,用檔案形式儲存郵件可以保證郵件在任何時候都有實體存在,不會丟失)
當然postfix的佇列還有諸如故障佇列,hold佇列等,這裡就不闡述了。
linux 快速搭建郵件系統postfix
由於公司郵件系統準備遷移,一直在準備方案。其中有乙個方案就是自己來搭建postfix。而我就表示任務有點大了。簡單的搭建郵件系統 1.只需要乙個linux系統即可,我的linux伺服器ip是192.168.0.173。如果是自己實驗,配置yum源。然後 3.vi etc postfix main.c...
開源郵件系統
開源郵件系統 1 簡介 我們的開源企業級郵件系統包括伺服器端及web客戶端兩部分。其中伺服器端有postfix sendmail及qmail三種可選軟體,web客戶端有squirrelmail openwebmail及extmail三種可選軟體。我們所選的郵件伺服器及web客戶端,均為目前世界上使用...
winwebmail郵件系統
mail.autumn.info用a記錄解析到郵件伺服器ip 後面的各個客戶端配置的網域名稱都寫這個a記錄的 再把autumn.info用mx記錄解析到mail.autumn.info 這個是當遇到 autumn.info時會解析到mail.autumn.info 測試埠telnet命令也要用mai...