На моем сервере запущен iptables, который блокирует доступ ко всем портам, кроме тех, которые я разрешаю. Один из этих портов должен быть SMTP на порту 25, и для этого у меня есть следующее правило:
-A INPUT -p tcp --dport 25 -j ACCEPT
Выход из iptables -L
ниже:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere 127.0.0.0/8 reject-with icmp-port-unreachable
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3
ACCEPT tcp -- anywhere anywhere tcp dpt:imap2
ACCEPT tcp -- anywhere anywhere tcp dpt:ssmtp
ACCEPT tcp -- anywhere anywhere tcp dpt:submission
ACCEPT tcp -- anywhere anywhere tcp dpt:imaps
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3s
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT icmp -- anywhere anywhere
LOG all -- anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Однако когда я пытаюсь сделать telnet <myip> 25
с консоли Windows я получаю эту ошибку:
Connecting To <my ip>...Could not open connection to the host, on port 25:
Connect failed
То же самое с другими открытыми портами (80, 993 и т. Д.) Работает нормально. Значит, это проблема iptables.
Как правильно разрешить доступ к SMTP через порт 25 с помощью iptables?
Поскольку ваши правила ввода начинаются с универсального правила принятия, ни одно из других ваших правил не вступит в силу (поскольку iptables работает на основе первого правила удаления: первое правило в цепочке, которое каким-то образом избавляется от пакета, будет последним обработанным правилом , а ACCEPT
цель диспозиционная). Ваше второе правило также вызывает сомнения (блокируйте весь трафик localhost), но только потому, что для этого обычно нет веских причин. Также необычно специально принимать только новые, связанные или установленные пакеты на порт SSH.
При этом ваши правила правильно принимают SMTP-трафик, поэтому проблема действительно в том, что вы не использовали SMTP. Dovecot не является SMTP-сервером; рассмотрите возможность использования любого из нескольких демонов SMTP, таких как postfix.
Во всяком случае, для вашего правила 127.0.0.0/8 укажите интерфейс ввода, на котором вы ожидаете получать поддельные пакеты localhost, если вас это беспокоит.