Postfix- открытый релей. Как настроить так, чтобы его не было?

Postfix- открытый релей. Как настроить так, чтобы его не было?

Я настроил Postfix, но у меня возникли проблемы с настройкой.

Всякий раз, когда я отправлял электронные письма на сервер, он отклонял их с сообщением «Ретрансляция отклонена», поэтому я изменил следующее main.cf:

mynetworks = 0.0.0.0/0
mynetworks_style = subnet

Теперь я могу отправлять электронную почту, и это работает, но тесты MX показывают, что это открытый ретранслятор (очевидно, непреднамеренно).

Как мне решить эту проблему? Я, конечно, хочу, чтобы любой мог отправлять письма на мой домен, но я не уверен в конфигурации.

Я знаю, что могу изменить mynetworks, но разве это не ограничивает тех, кто МОЖЕТ отправлять электронные письма на сервер?

решение1

Проблема, которая вас открывает, это

mynetworks = 0.0.0.0/0

Потому что где-то ниже вы, вероятно, это перечислили в

smtpd_recipient_restrictions = ... permit_mynetworks ...

Если вам нужно иметь возможность отправлять электронную почту с любого IP-адреса, то вам просто нужно включить пользователя/пароль для отправки электронной почты, обычно это sasl.

решение2

mynetworks должен содержать только доверенных пользователей, которые могут использовать сервер для ретрансляции почты на другие домены - в противном случае, как вы обнаружили, это открытый ретранслятор. Вы можете установить его на 192.168.0.0/16, 10/8 или 172.16.0.0/12, если используете адреса RFC 1918 во внутренней сети.

Настройки, которые контролируют, могут ли люди отправлять почту на ваш сервер, включают mydestination и virtual_mailbox_domains — ознакомьтесь с документацией.здесьилиздесь.

решение3

Как задокументировано вhttp://www.postfix.org/postconf.5.html#mynetworks:

mynetworks (по умолчанию: см. вывод "postconf -d")
Список "доверенных" удаленных SMTP-клиентов, имеющих больше привилегий, чем "чужие".

В частности, «доверенным» SMTP-клиентам разрешено ретранслировать почту через Postfix.
Описание параметра smtpd_recipient_restrictions см. в руководстве postconf(5).

решение4

используйте аутентификацию только для вашего IP: main.cf

smtpd_recipient_restrictions =
    permit_mynetworks
    reject_unauth_destination

используйте файл для хранения вашего ip main.cf:

mynetworks = hash:/etc/postfix/network_table 

Используйте скрипт для обновления вашего IP-адреса в случае его изменения (запустите в cron)

#!/bin/bash
###
## sh /sx_sys/postfix_mynetwork_ip_checker.sh
LOGFILE="/var/log/smtp_relay.log"

curent_ip=$(dig @exemple.com exemple.com | awk '/^;; ANSWER SECTION:$/ { getline ; print $5 }')
#echo $curent_ip

saved_ip=$(</etc/postfix/network_table )
#echo $saved_ip
if [ "$curent_ip OK" != "$saved_ip" && -n "$curent_ip"]; then
echo "$curent_ip OK" > "/etc/postfix/network_table"
postmap /etc/postfix/network_table
echo "$(date) smtp allow for $curent_ip" >> $LOGFILE 2>&1
mail -s "smtp allow for $curent_ip $(date)" [email protected] < /dev/null
fi
exit 0

Связанный контент