2015-05-09 60 views
0

從一個特定的IP地址的任何傳入的電子郵件,我接受它,但我也想重新寫(信封)收件人如:sendmail規則只爲特定的{client_addr}重寫收件人...如何?

在$ {} client_addr =「12.34.56.78」然後追加「 .custom.local」的結尾:

如:

[email protected]成爲[email protected]

我要早,因爲我能做到這一點,所以正常規則處理繼續進行(特別是mailertable功能)

有誰知道如何做到這一點?

甚至可以在「R」規則左側使用$ {client_addr}宏和(匹配).cf文件中的文字IP地址?

回答

1

這可能保存其他偷看生產力損失了整整一天浪費了我得到這個權利...提防的標籤,如果你複製/粘貼)

SParse1 

# Append .custom.local to all incoming emails from 12.34.56.78 
R$* < $* > $*     $: $1 < $2 taglocal. $&{client_addr} .custom.local > $3  add IP into addresses 
R$* < $* taglocal.12.34.56.78.custom.local > $* $: $1 < $2 custom.local > $3     convert just this 1 IP we want 
R$* < $* taglocal $* > $*    $: $1 < $2 > $4       remove IP we added above 

對於那些希望爆炸自己的大腦 - Parse1是收件人地址(已經過清理的地方,以及早先規則中已經添加的「<」和「>」)被檢查並用於東西。我們所做的是添加任何到達電子郵件地址的IP地址(一個< @ b.com.taglocal.192.168.0.2.custom.local>),然後我們將我們感興趣的一個IP更改爲我們真正想要的,然後我們刪除那些我們不想要的東西。

是的 - 很奇怪 - sendmail不能做簡單普通的「if/then」,所以我們必須用這個愚蠢的想法來糾纏我們的頭。無論誰寫這個.cf/.mc的東西都值得獲得靈活性的天才勳章,然後被愚蠢到可以寫和釋放它的同一個中間人扼殺。