卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

Postfix有關(guān)Virtual、Aliases、虛擬表等概念之間的關(guān)系

使用Postfix 的別名、虛擬域、用MySQL 數(shù)據(jù)庫保存用戶信息(Postfix MySQL)等功能的用戶,都會與Postfix 中virtual 、aliases 、transport 、本地投

使用Postfix 的別名、虛擬域、用MySQL 數(shù)據(jù)庫保存用戶信息(Postfix MySQL)等功能的用戶,都會與Postfix 中virtual 、aliases 、transport 、本地投遞、虛擬投遞等相關(guān)打交道。這篇文檔就是關(guān)于這些概念之間的論述。在文章最后,以若干Postfix MySQL配置方案為例,說明這幾個概念在方案中的應(yīng)用。

此文檔是我在學(xué)習(xí)Postfix 中的一個小結(jié),也讓它與時俱進吧:)

當(dāng)我開始試圖了解Postfix MySQL做法時,發(fā)現(xiàn)自己對上述概念(相關(guān)的參數(shù))的關(guān)系發(fā)生了混亂。于是, 我試圖找出其中關(guān)系,并理順?biāo):髞?,我發(fā)現(xiàn)根據(jù)Postfix 的那張大圖(the Big Picture,http://www.postfix.org/big-picture.html),將有助于梳理我們的思路。下面就是按著這樣的想法 來寫的。

注:下面關(guān)于各概念的描述并不完整,主要是從有助于講清它們起作用的位置,以及理解相互關(guān)系的角度出發(fā)。更詳細的說明請參考相關(guān)文檔。

1、首先是virtual 。從左向右看這張圖,首先遇到的是virtual 。virtual 是什 么?virtual 是一張重定向表,用于本地和非本地

接收者或接收域的重定向操作。virtual 的重定向是一個地址到地址的映射(map),它只是應(yīng)用 在郵件的接收者信封地址

(recipient envelope address)部分,沒有涉及到郵件的信息頭和正文部分。這個重定向操作是在smtpd 從網(wǎng)絡(luò)上接收郵件后,由cleanup 程序來完成的。 Postfix的虛擬域支持就是通過它來實現(xiàn)的。

virtual 這張表,可以保存在數(shù)據(jù)庫文件中,如/etc/postfix/virtual.db;也可以保存在數(shù)據(jù)庫服務(wù)器上,如在MySQL 庫的一張表中;還可以保存在NIS 、LDAP 等等。具體的保存方式通過virtual_maps參數(shù)值來告訴Postfix 。

2、然后我們繼續(xù)向右看,接下來的是transport 。在這里我們把transport 看成一張表,Postfix 根據(jù)這 張表來決定哪些郵件由本地投遞代理(local delivery agent)來執(zhí)行,哪些郵件由虛擬投遞代理(virtual delivery agent)來執(zhí)行。至于這張表保存在什么地方,則由transport_maps參數(shù)來指定。

注:這些郵件一般是根據(jù)它們的域進行區(qū)分,從而由不同的投遞代理來處理。另外,我們不用這張表,完全由本地代理來投遞,或是完全由虛擬代理來投遞也都是可以的。

3、接著向右,圖中給出的是本地投遞代理。從圖中可以看出,與本地投遞代理相關(guān)的兩個概念是aliases 和.forward 。 別名(alias)是由本地投遞代理執(zhí)行的一種系統(tǒng)內(nèi)的郵件重定向機制,與virtual 不同,別名是把整個郵件重定向到另外的一個或多個郵箱。aliases 這張表,給出了別名和實際接收者的對應(yīng)關(guān)系。

aliases 表的保存位置,由aliases_maps和aliases_database兩個參數(shù)來指定。這兩個參數(shù)互不相關(guān),都發(fā)揮作用。

aliases_database指定在本地上的別名數(shù)據(jù)庫,是數(shù)據(jù)庫文件形式。aliases_maps除了指定數(shù)據(jù)庫文件外,還可以指定保存在nis 或數(shù)據(jù)庫服務(wù)器上的別名表。

.forward 則是在用戶目錄中的一個文件,也用于重定向郵件。但它和我們這里所討論就沒有關(guān)系了。這只是提一下。

4、雖然圖上沒有標(biāo)出虛擬投遞代理,但從transport 部分描述,我們知道它是和本地投遞代理處于同一級別(位置)的。virtual 機制和本地投 遞代理最終都是把郵件投到系統(tǒng)中一個真實用戶的郵箱,而虛擬投遞代理所投的郵箱的主人(用戶)不是系統(tǒng)真實用戶。虛擬投遞代理不支持aliases 和.forward 。它使用虛擬表(virtual table),這些表包括:

virtual_mailbox_maps,指定保存虛擬用戶郵箱的路徑表在哪里。相關(guān)參數(shù)virtual_mailbox_base,指出郵箱路徑的前綴; virtual_uid_maps,指出保存虛擬用戶郵箱的uid 的表在哪里,這是針對每個虛擬用戶郵箱在系統(tǒng)中的uid 都不一樣的情況。虛擬用戶的郵箱也可以共用一個uid 值。

virtual_gid_maps,這是關(guān)于虛擬用戶郵箱的gid 值。相關(guān)情況與uid 相同。

最后,看幾個Postfix MySQL配置方案,看看這幾個概念在其中是如何被應(yīng)用的。(這些人水平都比我高多了,不敢妄加評論,只是用來驗證一下自己的學(xué)習(xí)心得。)

(1)王興宇的,http://www.cngnu.org/technology/Postfix_I.html

main.cf 配置“virtual_maps = hash:/etc/postfix/virtual,mysql:/etc/postfix/mysql-virtual.cf”,mysql 庫很簡單,主要是username 和FORWARD 段。

從以上可以看出,王先生的方案主要是用virtual 表,向外提供多個虛擬域的郵箱,這些郵件地址最后都轉(zhuǎn)向到本地郵箱上。

(不行,熬不了下去了,以后接著改,睡?。?/p>

相關(guān)配置參數(shù):

相關(guān)配置文件:

,

相關(guān)文檔:

虛擬投遞代理--/usr/share/doc/postfix-1.1.11/README_FILES/VIRTUAL_README

王先生的方案在投向本地郵箱時,使用的是本地投遞代理,而不是虛擬投遞代理。

下面幾個方案都是http://www.postfix.org/docs.html上提到的。

(2)Daniel V.

Pedersen 的,http://www.postfix.org/docs.html或http://kummefryser.dk/HOWTO/mail/postfix_mysql.html

這篇配置在main.cf 中給出了多個映射表,但可以分成三類:

1、virtual_maps,這是virtual 表,保存在mysql 庫的remote_aliases表中,它完成從一個域名(郵箱地址)到另一個域名(郵箱地址)的轉(zhuǎn)換,多域的支持就在這里完成了;

2、transport_maps,對應(yīng)mysql 庫中的transport 表,它指出哪些域的郵件是交給投遞代理(本地、虛擬),還是通過smtp 轉(zhuǎn)發(fā)給下一個中繼主機;

3、virtual_mailbox_maps、virtual_uid_maps、virtual_gid_maps,被虛擬投遞代理使用,指出郵箱的路徑、uid 、gip 值,這些信息都保存在mysql 的aliases 表中。

這個方案中,用virtual 表,完成郵箱地址的轉(zhuǎn)換;用transport 決定郵件的下一步投遞方向(或處理者);用mysql 中的一張表,來為虛擬投遞代理服務(wù)。

(3)Kirby Menzel and Lucas

Peet 的,http://www.postfix.org/docs.html或http://kirb.insanegenius.net/postfix.html

與上相同,在mysql 提供三個表:

Virtual 表,用來提供多域郵箱地址的轉(zhuǎn)換,虛擬域;

Transport 表,提供如何處理郵件投遞:本地代理來做,還是虛擬代理來做;

Users 表,指出與郵件地址相對應(yīng)的郵箱的位置、uid 、gid 。

當(dāng)然這篇配置中表的選項比上一篇豐富多了。但就我們這篇文章所討論的問題來說,是一樣的。

(4)Mischa Peters的,http://www.postfix.org/docs.html或http://high5.net/howto/

這個配置方案中:

transport 表不存在,這一塊已經(jīng)指定由虛擬投遞代理來完成;

mysql 中的mailbox 表,為虛擬投遞代理指出郵箱的位置。至于郵箱的uid 和gid 都固定了,沒在表中列出;

前三個配置方案中的virtual 表這一塊,都是mysql 中提供一個表,在main.cf 中用一個virtual_maps參數(shù)來指示它。但在這個方 案中,virtual_maps參數(shù)被“virtual_alias_maps”參數(shù)取代。在介紹這兩個參數(shù)之前,首先對postfix 的虛擬域的基本概 念和方法做個簡單的介紹,這是為了讓閱讀者在思路上更加順利些。當(dāng)然更詳細參考/etc/postfix/virtual。

postfix 配置虛擬域時,需要告訴postfix 兩個東西:一是虛擬域的域名;二是虛擬域電子郵件地址的映射表,將一個虛擬域的郵件地址名映射到另一個郵件地址。

從/etc/postfix/virtual文件告訴我們,postfix 支持有兩種風(fēng)格(style)的虛擬域。一是 sendmail風(fēng)格,它將虛擬域郵件地址的映射表保存在/etc/postfix/virtual庫中,而虛擬域的域名在main.cf 的$mydestination參數(shù)中指出。王興宇先生的做法就是這樣的,只不過它把郵件地址的映射表保存到了mysql 庫中。二是postfix 風(fēng)格, 將虛擬域的域名以及郵件地址映射表都保存在/etc/postfix/virtual中。每個虛擬域表的組織結(jié)構(gòu)都一樣,先是一行指出虛擬域名,接著是若 干行的郵件地址映射表。 現(xiàn)在開始說說這兩個參數(shù)。virtual_maps是老版本postfix 中的參數(shù)。sendmail 風(fēng)格時,虛擬域名和virtual 表分別 由

$mydestination和$virtual_maps分別指出;postfix 風(fēng)格時,虛擬域名和virtual 表都包含在一起了,由 virtual_maps指出。而新版本postfix 中,虛擬域名和virtual 表被拆分到兩個單獨的文件(庫)中,由兩個參數(shù)分別指 定。$virtual_alias_domains指出虛擬域名,$virtual_alias_maps指出virtual 表。但為了和舊版本兼容,默 認情況下,兩者還都合并到一個文件中,由

$virtual_alias_maps指出。

新版本中使用$virtual_alias_domains和$virtual_alias_maps顯然是方便了對于多虛擬域的支持。舊版中,如果是 sendmail風(fēng)格,虛擬域名要加到$mydestination參數(shù)中,幾個虛擬域時還可以,如果是幾十個上百個,這樣的做法顯然是不行了;如果是 postfix 風(fēng)格,那兩者混合在同一個文件中,那用數(shù)據(jù)庫服務(wù)器來保存這表的話,好象有點問題吧(這樣的做法,我沒試驗過能不能行,所以不能完全確定, 有沒有人這樣做過的?)。講過舊版的不足,那新參數(shù)的優(yōu)點也就不用說了。

講了半天,再回到這個配置方案來,它并沒有用到$virtual_alias_domains,而 mysql_virtual_alias_maps.cf也只用到mysql 中alias 表的“goto”和“address”兩個字段,那看來它是用新 版本的默認方式,用$virtual_alias_maps來指出映射表。(但alias 表中的“domain”字段又是用來做什么的?沒看明白)

在這個方案中,還多了一項“virtual_mailbox_domains =mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf”。首先,我們要明確 virtual_mailbox_domains這個參數(shù)是用在虛擬投遞代理的。它指出了一個域名列表,擁有這些域名的電子郵件才能夠被postfix 的 虛擬投遞代理處理。它也是代替在$mydestination參數(shù)指出一長串的域名。virtual_mailbox_domains參數(shù)所服務(wù)的方向 (問題)應(yīng)該和$virtual_alias_domains一樣。

,

在解讀過本方案后,可以看出和前面三個方案相比,本方案在支持多個虛擬域方面做得更好一些。當(dāng)然方案的好與壞,要看它們所針對的目標(biāo)。

寫著寫著,發(fā)覺自己所寫的應(yīng)該是postfix 中郵件的重定向吧。除了以上提到的,postfix 中的郵件重定向好象還有幾個地方(參數(shù)),比如地址擴展的概念,$mailbox_transport等。

標(biāo)簽: