ここ数年、中小企業向けに問題なくメールサーバーを稼働させていました。
会社が成長したので、少し冗長性を追加し、ロードバランサーを前面に配置したフェイルオーバーメールサーバー(haproxy)を追加しました。
すべてが1週間前までうまくいき、スパマーの犠牲になり、すべてをシャットダウンしなければならなくなりました。グーグルをたくさん使って、正しい設定のないロードバランサーが私のポストフィックスをオープンリレーに変換することがわかりました。
私はこれを解決したいし、多くのドキュメントも見つけましたが、率直に言って、私は少し迷っています。他の変更点の中でhaproxy.cfgにsend-proxyを追加する必要があることはわかっていますが、postfixを再度強化するためにpostscreenを追加する方法がわかりません。
誰かが私を案内したり、少なくとも私が見つけられなかったリンクを、これをどのようにして達成することができるかについてのマニュアルやチュートリアルに教えてもらえますか?
私はpostfixの公式ドキュメントで迷子になっていることを認めます。
事前に感謝します
HAProxy usint TProxyを介したSMTP
クライアントのIPアドレスを保持するには、 TProxy を使用する必要があります。 tproxyの検索これは、パブリックIPがhaproxyにヒットしていることを前提としています。
または単にMXを使用してください
別の方法は、NAT 2つのパブリックIPからのポート25で、2つのMXレコードを使用することです。MTAはロードバランシングも処理します。
Tcpモードでhaproxyを実行する必要があります。
frontend smtp_in *:25 (SMTP port)
mode tcp
default_backend smtp_out
backend smtp_out
balance leastconn
server smtp-server-1.domain.com smtp-server-1.domain.com:25
server smtp-server-2.domain.com smtp-server-2.domain.com:25
多分これは誰かを助ける。私はkubernetesクラスター内で実行しているため、haproxyの構成は異なります。しかし、Postfixの設定では、2つのファイルを適宜更新します
master.cf
# Exposed SMTP service (postscreen support is needed to support the proxy protocol [search postscreen_upstream_proxy_protocol in main.cf])
smtp inet n - - - 1 postscreen
smtpd pass - - - - - smtpd
main.cf
# This is required to support the proxy protocol to acquire the correct source ip address from whoever is connecting to this server
# It's really important to get this information because otherwise ALL your connections will come from your internal ip address
# Guess what you allow to send emails, without question? Thats right! You're $mynetworks. Which means because you cannot get the
# correct source ip address, it permits EVERYBODY TO SEND EMAIL THROUGH YOUR SERVER! You basically become an open relay
postscreen_upstream_proxy_protocol = haproxy
postscreen_upstream_proxy_timeout = 5s