В последние годы у меня без проблем работал почтовый сервер для моего малого бизнеса.
Теперь, когда моя компания выросла, я хотел добавить немного избыточности и добавить аварийный почтовый сервер с балансировщиком нагрузки впереди (haproxy).
Все шло нормально, пока неделю назад мы не стали жертвами спамеров, и мне пришлось все закрыть. Часто используя Google, я обнаружил, что балансировщик нагрузки без правильной конфигурации преобразует мой постфикс в открытое реле.
Я хотел бы решить эту проблему и также нашел много документов, но, честно говоря, я немного потерялся. Я знаю, что мне нужно добавить send-proxy в haproxy.cfg среди других изменений, но я просто не могу понять, как добавить postscreen, чтобы снова укрепить postfix.
Может ли кто-нибудь направить меня или, по крайней мере, дать мне ссылку, которую я не нашел, на руководство или учебник о том, как этого можно достичь?
Допускаю, что теряюсь в официальных документах postfix.
Спасибо заранее
Может быть, это кому-нибудь поможет. Конфигурацию haproxy я делаю иначе, потому что я работаю внутри кластера Kubernetes. Но конфигурация постфикса, вы обновляете два файла соответственно
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
SMTP через HAProxy usint TProxy
Вам нужно будет использовать TProxy чтобы сохранить IP-адрес клиента. поиск tproxy Это предполагает, что публичный IP-адрес попадает в haproxy.
Или просто используйте MX
Другой способ - подключиться к порту 25 NAT с 2 общедоступных IP-адресов и просто использовать 2 записи MX. MTA также будет заниматься балансировкой нагрузки.
Вам нужно будет запустить haproxy в режиме tcp.
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