Назад | Перейти на главную страницу

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

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

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

mynetworks = 0.0.0.0/0
mynetworks_style = subnet

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

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

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

Проблема, которая открывает вам глаза, - это

mynetworks = 0.0.0.0/0

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

smtpd_recipient_restrictions = ... permit_mynetworks ...

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

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

Параметры, которые определяют, могут ли люди отправлять почту на ваш сервер, включают mydestination и virtual_mailbox_domains - прочтите документацию Вот или Вот.

Как описано в http://www.postfix.org/postconf.5.html#mynetworks :

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

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

используйте аутентификацию только для своего 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)" s2@myserv.exemple.com < /dev/null
fi
exit 0