Postfix中的地址操作
一、將地址改寫為標準格式
在cleanup進程進行表查詢之前,它***請求trivial-rewrite進程將新
郵件地址改寫成標準的user@fully.qualified.domain格式。改寫的目的是為了減少查詢表中的條目,從而提供查詢的效率。trivial-rewrite進程可以實現以下的地址改寫:
* 將包含源路由信息的地址如@hosta,@hostb:user@site寫成user@site,因為postfix不支持包含源路由信息的地址格式。
* 將形如user%domain的地址改寫成user@domain的形式。該特性可通過allow_percent_hack參數進行控制,其缺省值為yes。
* 將只包含user的地址改寫成user@$myorigin。該特性可通過append_at_myorigin參數進行控制,其缺省值為yes。***不要改動其缺省值,因為大多數的postfix進程更擅長處理地址形如user@$myorigin的郵件。
* 將形如user@host的地址改寫成user@host.$mydomain。該特性可通過append_dot_mydomain參數進行控制,其缺省值為yes。
* 將形如user@site.的地址改寫成 user@site,也即除去了***的點號。
二、 規范地址映射
在cleanup進程將一封新郵件存入incoming郵件隊列之前,cleanup進程
將根據查詢規范表來進行地址改寫,從而使之更具可讀性。主要是替換形如Firstname.Lastname 風格的地址以及清除無效的域。缺省postfix是不進行規范地址改寫的,你可以通過指定canonical_maps參數的值來使其生效。如:
canonical_maps = hash:/etc/postfix/canonical
也可以分別為收件人和發件人地址分別指定不同的改寫規范,這時參數sender_canonical_maps和recipient_canonical_maps的優先級比canonical_maps高。如:
sender_canonical_maps = hash:/etc/postfix/sender_canonical
recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
三、 地址欺騙
就是將形如user@host.domain的地址改寫成user@domain或user@other.domain,
好像是從其他的郵件服務器發出的一樣。缺省該功能是被禁止的,可以用參數masquerade_domains使其生效,如:
masquerade_domains = $mydomain
也可以通過masquerade_exceptions參數對特定的用戶不進行地址欺騙,如:
masquerade_exceptions = root
注意:地址欺騙只對發件人地址有作用。
四、 虛擬地址映射
在運用了規范地址映射和地址欺騙之后,cleanup將使用虛擬表映射將郵件
重定向到所有的收件人。注意,該操作僅僅作用于信頭上的收件人地址。這樣,我們就可以將發送到虛擬域的郵件投遞到真實用戶的郵箱。系統的別名數據庫同樣可以起到相同的作用。缺省該功能是被禁止的,可以用參數virtual_maps使其生效,如:
virtual_maps = hash:/etc/postfix/virtual
五、 Relocated數據庫查詢
Relocated表格提供如何將郵件發送給在系統中沒有帳號的用戶。缺省該功能是被禁止的,可以用參數relocated_maps使其生效,如:
relocated_maps = hash:/etc/postfix/relocated
六、 別名數據庫查詢
當郵件在本地投遞時,local投遞代理進程會在別名數據庫(linux下為
/etc/aliases)中查詢收件人的別名。該操作不會作用于郵件信頭中的地址。可以用alias_maps指定使用的別名數據庫。缺省地,該功能是有效的,如:
alias_maps = hash:/etc/aliases
可以通過alias_database參數控制別名數據庫的路徑,如:
alias_database = hash:/etc/aliases
【編輯推薦】