Centos6
接受域的所有郵件(來自任何地方),將選定收件人的郵件轉發到特定地址,將所有其他郵件轉發到特定主機
我想要做的是設置一個 sendmail 伺服器,它接受來自每個人的郵件到特定域(例如,
example.com
),然後對於定義的收件人列表,將該郵件發送到指定的第三方地址,並將其他所有內容中繼到特定的 IP地址。我試過這個:
[root@splitter mail]# cat relay-domains example.com [root@splitter mail]# cat virtusertable divert.test@example.com new.recipient@example.co.uk
並且大部分域的轉發工作正常 - 它被傳遞到由
example.com
的 MX 指定的主機 - 但異常 (divert.test@example.com
) 被忽略我試過這個:
[root@splitter mail]# cat local-host-names example.com [root@splitter mail]# cat mailertable example.com esmtp:[1.2.3.4] [root@splitter mail]# cat virtusertable divert.test@example.com new.recipient@example.co.uk
然後異常郵件被正確拆分,但任何其他使用者在本地被退回(
User unknown
)。我嘗試將其添加到virtusertable
:@example.com %1@example.com
但是(可能不足為奇)這會導致
rewrite: excessive recursion (max 50), ruleset canonify
錯誤。我更喜歡基於 sendmail 的解決方案,因為我可以快速嘗試這些解決方案。如果我對此沒有任何運氣,我會向其他 MTA 開放。如果有人對如何做到這一點有任何想法,我會非常感激他們。
讓我們試試這個:
# Assuming example.com is in $=w LOCAL_RULE_0 Ruser1 < @ example.com. > $* $@ newuser1 < @somewhere.com. > Ruser2 < @ example.com. > $* $@ newuser2 < @somewhereelse.com. > R$* < @ example.com. > $* $#esmtp $@ [1.2.3.4] $: $1 < @ example.com. > $2
如果你想讓它適用於超過 10 個使用者並且你需要讓它與地圖一起使用,這自然不能很好地擴展,但自 5/2014 以來我已經不再是 Postmaster,我有點生疏了。如果你願意,我可以讓它與外部地圖一起工作。
一如既往地記住,
sendmail.mc
規則的左側與右側用製表符而不是空格分隔,所以不要複製粘貼。還記得重建你的sendmail.cf
事後並使用以下方法進行測試sendmail -bt
:> 3,0 user1@example.com
如果一切正常,重新啟動 sendmail。