Я установил 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