У меня есть веб-сайт, на котором нужно отправлять электронную почту для подтверждения заказов и оповещения подписанных пользователей об определенных событиях. я делаю не необходимо отправлять электронную почту через сервер по любой другой причине, поэтому я хотел бы запретить кому-либо за пределами localhost даже подключаться к порту 25 для SMTP. Я пробовал сделать это так:
sudo iptables -A INPUT -p tcp -s 0.0.0.0 --dport 25 -j DROP
но я все еще могу использовать telnet для порта 25 и набирать команды SMTP с другого компьютера. Что я делаю не так? Кроме того, есть ли лучший способ достичь того, чего я хочу? Чтобы уточнить: мне нужна машина, которая может отправлять электронные письма (через SMTP), но только те, которые исходят из сценариев, запущенных на машине. И любая конфигурация должна «пережить» перезагрузку.
Я использую Postfix на Ubuntu (Hardy).
Я думаю, что лучшее решение, если вы не хотите получать электронные письма извне, - это точно сказать postfix в master.cf
замена файла:
smtp inet n - n - - smtpd
которая обычно является первой строкой без комментариев, но ваш опыт может варьироваться в зависимости от того, изменен ли постфикс, который у вас есть, вашим поставщиком:
127.0.0.1:smtp inet n - n - - smtpd
Я считаю, что ты не хочешь -s 0.0.0.0
пункт. Вы запрещаете доступ только с адреса 0.0.0.0.
Вероятно, вам понадобится что-то вроде:
sudo iptables -A INPUT -p tcp -s 127.0.0.0/8 --dport 25 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 25 -j DROP
Это примет любое входящее соединение от localhost (т.е. из диапазона loopback - 127.0.0.1-127.255.255.255) и отбросит все остальные.