Это столь безопасно, как Вы хотите, чтобы это было. Это не имеет значения, какой дистрибутив Вы выполняете, если Вы предоставляете корневой доступ через SSH с дрянным паролем, дистрибутив не может помочь Вам. Исправляйте поле обычно и следуйте основным инструкциям по безопасности, и Вы будете в порядке.
Проблема, которая вас открывает, - это
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