2017-07-21 387 views
1

我正在運行一堆Debian/Ubuntu服務器,其中一個核心主服務器與所有其他Web服務器連接。但是,現在,當我們的核心服務器發送一封電子郵件時(如通過我們的管理Web GUI發送電子郵件的人),第一個「Received:」標題列出了我們要避免的主服務器的地址。如何通過其他服務器發送SMTP電子郵件?

所以我的計劃是設置一種方式發送電子郵件通過服務器,它應該真的來自。因此,當我們通過www.backend.com上的軟件發送電子郵件時,我希望標題反映www.frontend.com。我嘗試查找Ubuntu的SMTP代理,但沒有發現太多,除了尋找稱爲MTA的東西。

我玩過nullmailer和msmtp,但我似乎無法按我期待的方式工作,例如,請在www.backend.com上爲此帳戶設置SMTP憑據,以指向www.frontend.com並讓前端服務器連接到我們的電子郵件提供商。我正在嘗試做什麼?


編輯 TL; DR

我一直在試圖建立SMTP中繼服務器,但我無法連接到我的後綴SMTP服務器遠程。如何在Debian Ubuntu上設置簡單的電子郵件中繼服務器?不知道這是甚至正確的詞,因爲似乎有數百篇文章解釋如何,但我不能得到一個單一的工作

回答

1

你的MTA是後綴,你想要使用它兩次;作爲INTRANET主機和邊緣中繼。因此,第一步是而不是刪除收到的標頭,但要確保繼電器被允許併發生,將在標頭中添加「前端」中繼。一旦中繼功能正常,繼電器可以移除或替換標題行。

中繼

在繼電器(FRONTEND) docs#relay_from

mynetworks = 127.0.0.0/8 IP_OF_BACKEND/32 ...others? 

在發送者(BACKEND) relayhost

relayhost = [www.frontend.com] 

過濾繼電器

對於簡單˚F ilters,header_checks就足夠了。

header_checks = pcre:/etc/postfix/header_checks 

(PCRE - 確保後綴-PCRE支持安裝,或按照下一環節的POSIX正則表達式調試)

它通常最好是消毒頭,而不是將其刪除,所以例如該文件的內容消毒是here,但它應該匹配,只能重寫從backend而不是所有主機.*收到的標頭。

所以檢查實際接收的頭後要更換,並決定哪些部分(S)保持爲正則表達式組,您的替代可能是這樣簡單的東西:

/^Received: from www.backend.com.*id\s(\w+).*/ 
    REPLACE Received: from [127.0.0.1] (localhost [127.0.0.1]) with SMTP id $1 

取出的接收的頭基本上是相同,但可以使用IGNORE操作而不是REPLACE,並且需要更簡單的正則表達式,因爲沒有替代標頭可以生成。但是,在添加Milters等以滿足以後的要求時,刪除標題更有可能導致問題。

+1

使用它兩次!哇,甚至沒有跨過我的腦海。我將這個想法放到測試中,並在有結果時回來 –

+0

看起來好像我的主要問題是首先在前端設置了後綴服務器。我遵循https://help.ubuntu.com/lts/serverguide/postfix.html,但在telnet附近,我沒有看到「250-STARTTLS」或「250-AUTH LOGIN PLAIN」行 –

+0

You'您可能需要使用sysytemctl重新啓動它,查看日誌,檢查netstat -an並檢查是否有任何答案違反了它生成的配置行。如果日誌未指向特定問題,則使用diff與默認配置從您的其他機器可能有助於限制您需要查看哪些線路。 – lossleader

相關問題