使用 Amazon SES 和 Exim4 從一個實例上的多個主機發送郵件
假設我有一些實例在 Amazon EC2 中執行:
somehost.example.com
此實例託管其他域的一些應用程序或網站:
www.example.com web.example.org etc.
此主機配置為使用 exim4 與 Amazon SES 互動以發送郵件。在 Amazon SES 中,每個域都被單獨允許作為有效發件人:
www.example.com web.example.org etc.
但是,正如人們所期望的那樣,實例的 FQDN 和執行使用者被用作每封電子郵件的發件人,因此所有電子郵件似乎都來自:
www-data@somehost.example.com
我當然可以將 Amazon SES 配置為允許來自 somehost.example.com 的郵件,並且我可以進一步
'From: "Whoever" <whoever@example.com>'
在應用程序級別為電子郵件添加信封。我想知道的是,(a)這是一個可接受的解決方案,如果不是,(b)我可以探索什麼配置來顯示每個域(例如 example.com)的郵件似乎直接來自“something.example .com”伺服器而不是實際的主機。我假設這涉及創建一個 hostname.example.com DNS 條目並將其指向伺服器,但除此之外,我迷失在如何設置 exim 或應用程序以允許這樣做。
您可以配置 exim 以隱藏外發郵件中的本地郵件名稱。此外,您應該配置您的主 exim 伺服器以使用智能主機,在本例中是 amazon SES 的東西。
假設每個站點都在自己的虛擬伺服器www.example.com ( 192.0.2.1 ) 和web.example.com ( 192.0.2.2 ) 上執行,而您的電子郵件伺服器在另一個虛擬伺服器smtp.example.com ( 192.0 .2.10 )。
要重新配置 exim4,您可以執行:
dpkg-reconfigure exim4-config
在主郵件伺服器 smtp.example.com 上進行如下配置(我只列出了相關的):
- 郵件配置一般類型:smarthost發送的郵件;通過 SMTP 或 fetchmail 接收
- 系統郵件名稱:smtp.example.com
- 轉發郵件的機器:192.0.2.1;192.0.2.2
- 傳出智能主機的 IP 地址或主機名:THE_AMAZON_SES_IP
- 在外發郵件中隱藏本地郵件名稱?是的
- 本地使用者可見域名:example.com
在其他伺服器上像這樣配置 exim,使用 www.example.com 作為範例主機:
- 郵件配置一般類型:smarthost發送的郵件;沒有本地郵件
- 系統郵件名稱:www.example.com
- 接受郵件的其他目的地:LEAVE_EMPTY <–這將導致“啟用在外發郵件中隱藏本地郵件名稱的選項”
- 本地使用者可見域名:www.example.com
- 出局smarthost的IP地址或主機名:192.0.2.10
如果您只有一台伺服器,則忽略第二步。您的主伺服器應該發送隱藏本地伺服器名稱的電子郵件,並將它們發送為來自 example.com。