我在防火牆後面有一個工作後綴伺服器,配置了灰名單、DKIM、SFP、amavis 和 clamav,並正確配置了 MX、「A」記錄和反向 DNS 條目。我可以傳送和接收郵件到網際網路上的其他網域。該後綴正在使用來自 LetsEncrypt 的網域憑證。郵件伺服器位於防火牆後面的私人子網路(例如 192.168.10.0/24)上。為了實現這一點,我正在為 certbot 的以下連接埠 25,587、465、993 以及 80 和 443 進行連接埠轉送。我還配置了手動靜態帶外 nat,僅解析為郵件伺服器保留的公共 IP 位址。到目前為止一切順利。
我遇到的問題是,該郵件伺服器位於192.168.10.0/24 網路中,並且對於位於TLS 連接埠(即465 和587)的另一個本地子網路(192.168.20.10/24)中的防火牆後面的用戶端,發送郵件不起作用, 25 個作品!如果客戶來自外部,一切都會很好。現在,每次這些內部用戶端嘗試存取郵件伺服器時,它們都會穿過防火牆,在本例中防火牆也是路由器。這些用戶端嘗試解析郵件伺服器(例如 mail.mySimpleMailProject.com),他們發現憑證無效,因為它會對應到錯誤的 IP,即 192.168.10.5,而不是公用 IP。
不過,我可以僅使用連接埠 25 從這些內部用戶端發送郵件,並且可以正常工作。但我的目標是透過內部網路中的安全通道發送郵件。
我讀過一個可能的解決方案,即
配置NAT反射
現在我真的不想做 NAT 反射,NAT 是邪惡的,我不惜一切代價試圖避免它。
我在想以下有沒有辦法告訴 postfix
1)接受來自本地網路的連接
為此,我在 smtpd_recipient_restrictions 中新增了 allowed_mynetworks 條目,即
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_non_fqdn_helo_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_invalid_helo_hostname,
reject_unknown_helo_hostname,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_rbl_client zen.spamhaus.org,
check_policy_service unix:postgrey/socket,
permit
2)當來自內部網路 192.168.20.0/24 的連線代表另一個自簽名憑證時,我可以稍後將其匯入這些客戶端並使他們滿意。
也許這個問題還有其他更好的解決方案。任何提示都將受到高度讚賞。
答案1
解決方案1
您可以擁有內部 DNS,即在內部將 mail.mySimpleMailProject.com 解析為內部位址。
解決方案2
確保從內部網路到從 mail.mySimpleMailProject.com 解析的公共 IP 的連接埠轉送經過 DNAT(連接埠轉送)。