發布者認證信息(營業執照和身份證)未完善,請登錄后完善信息登錄
Postfix设置发件人地址,邮件地址改写(header)-亿华网

久久天天躁狠狠躁夜夜,国精品无码一区二区三区左线,色综合网天天综合色中文,国产suv精品一区二区883,午夜精品一区二区三区的区别

首頁 » 資訊 » 編程開發 » LINUX > Postfix設置發件人地址,郵件地址改寫(header)

Postfix設置發件人地址,郵件地址改寫(header)

  發布時間 : 2017-05-25 10:38:11 177
內容提要
由于工作需要,需要改寫用戶郵件header頭地址與郵件路由地址。整理筆錄改寫郵件地址是postfix的核心,在收到郵件后就會進行相應
由于(yu)工作需(xu)要(yao),需(xu)要(yao)改寫(xie)用戶(hu)郵件(jian)header頭地(di)址(zhi)與郵件(jian)路由地(di)址(zhi)。整理筆(bi)錄(lu)
改寫郵(you)(you)件(jian)地(di)址是postfix的核心,在收(shou)到郵(you)(you)件(jian)后就會(hui)進行(xing)相應地(di)址修改,地(di)址補(bu)充等(deng)工作,其流程(cheng)如下(xia):以下(xia)來自postfix官網說明
Postfix address rewriting overview
 

 

trivial-
rewrite(8)

(std form)

 

trivial-
rewrite(8)

(resolve)

 

^
|

|
v

 

^
|

|
v

 

smtpd(8)

>-

cleanup(8)

->

incoming

->

active

->

qmgr(8)

-<

smtp(8)

qmqpd(8)

lmtp(8)

pickup(8)

local(8)

 

^
|

 

^
|

|
v

 
 

bounces
forwarding
notices

 

deferRED

     
 
 
由于工作只需要修改郵件header地址,著重只測試了canonical_maps,smtp_generic_maps,header_checke部分(fen)修改郵件頭地址(zhi)的方法
1.用(yong)header_checker檢查頭文件,用(yong)正則匹配替換發件人地址From
如將user01@test.com發(fa)件地址替換成user01@ct.com
Vim main.cf
添加如下開(kai)啟頭檢查,使(shi)用的是pcre方式。
header_checks = pcre:/etc/postfix/my_header_checks
建立(li)my_header_checks文(wen)件
/^From:(.*)[<]([\w\.\-]+)\@test\.com[>]/i     REPLACeFrom:$1<$2@ct.com>
記得每次修改完my_header_checks文(wen)件要重新加載postfix否則(ze)出現正(zheng)則(ze)是(shi)對(dui)的,而匹配出的地址格式顯(xian)示是(shi)錯誤(wu)的
Service postfix reload
以上(shang)方(fang)法只配(pei)置了From:部(bu)分,而To:部(bu)分如何寫正(zheng)則(ze),真(zhen)的不好寫。
 
2.第二(er)種方法(fa)則(ze)是(shi)postfix的smtp_generic_maps參數設(she)置。類似于sendmail的地址(zhi)偽裝功能,可以(yi)將本地網(wang)域的郵件地址(zhi)改寫成(cheng)internet上合法的郵件域名地址(zhi)。smtp_generic_maps
只作用于外發的(de)(de)需(xu)要SMTP的(de)(de)郵件,本地域的(de)(de)內郵件收發,地址是不會修改的(de)(de)。smtp_generic_maps
如將user01@domain.local轉換改寫成user01@domain.com郵件網關(guan)網域地址
文件設置如(ru)下
配置(zhi)postfix添加
Vim main.cf
smtp_generic_maps = hash:/etc/postfix/my_generic_maps
 
vim my_generic_maps
user01@domain.local   user01@domain.com
@localdomain.local     @hisisp.example
 
建立文件后需要postmap生產hash數據文件
postmap /etc/postfix/my_generic_maps
service postfix reload
 
該參數會修改掉郵件header的路由、From:、To:相關郵件地址信息
它作用范圍,只會修改掉需要發送出去到別臺郵件服務器的郵件地址相關信息,local郵件不影響。
 
3.還可以使用郵件地址規范改寫參數canonical_maps實現郵件地址改寫:
Canonical_maps的作用區域local與smtp所有郵件,可以用來規范郵件地址,
Firstname.Lastname 風格的地址以及清除無效的域。
缺省postfix是不進行規范地址改寫的,你可以通過指定canonical_maps參數的值來使其生效。如: 
canonical_maps = hash:/etc/postfix/canonical 
 
Vim canonical
wyjos@test.com     jos.wang@test.com
@testmail.com @test.com
 
地址改寫可以基于單個郵件地址,也可以基于整個域設定。
也可以分別為收件人和發件人地址分別指定不同的改寫規范,這時參數sender_canonical_maps和recipient_canonical_maps的優先級比canonical_maps高。如: 
sender_canonical_maps = hash:/etc/postfix/sender_canonical  
recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
 
注意:基于以上測試時我發現,用webmail發送的郵件,對方收到的郵件顯示地址為改寫后的地址(改寫成功),但我用OUTLOOK2007發送的郵件對方收到的郵件顯示地址并沒有被改寫。查看header頭文件路由Delivered-To:路由信息已被修改但是From:與To:部分的地址沒有被改。,
查閱postfix 官網有提到如下注意,而網上與postfix指南都沒有這個說明,導致這個問題折騰了我很久。
NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".
郵件地址改寫作用范圍是受local_header_rewrite_clients 設定控制的。默認只是改寫
local_header_rewrite_clients (default: permit_inet_inte-ces)
permit_inet_inte-ces只作用于
append the domain name in $myorigin or $mydomain when the client IP address matches $inet_inte-ces. This is enabled by default.
我們可以自定義可以郵件地址改寫的作用范圍:

local_header_rewrite_clients = permit_mynetworks,

    permit_sasl_authenticated permit_tls_clientcerts

 &nbsp; check_address_map hash:/etc/postfix/pop-before-smtp 

我想任何符合canonical表的郵件無論誰發送的都改寫,只需在main.cf添加上,就可以了。
local_header_rewrite_clients = static:all
layui

微信掃(sao)碼關(guan)注 億(yi)華(hua)聯眾(zhong) 公(gong)眾(zhong)號

頭條推薦