Не удается подключиться к порту 587 из внешнего postfix / dovercot, используя tls

499
whitebear

Не удается подключиться к SMTP-порту 567

Я построил почтовый сервер postfix + dovecot.

openssl s_client -starttls smtp -crlf -connect localhost:587

Это работает, и вы можете отправлять электронную почту вручную.

openssl s_client -starttls smtp -crlf -connect smtp.example.com:587

показывает эту ошибку

connect: Connection refused connect:errno=61 

То, что я проверил, это netstat, iptables.

Оба выглядят хорошо для подачи 587.

netstat -anutp

Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -  tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN -  tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN -  tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN -  tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -  tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN -  tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -  tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN -  tcp 0 0 127.0.0.1:58592 127.0.0.1:587 ESTABLISHED 2793/openssl  tcp 0 388 133.242.184.252:22 210.149.252.243:46415 ESTABLISHED -  tcp 0 0 127.0.0.1:587 127.0.0.1:58592 ESTABLISHED -  tcp6 0 0 :::22 :::* LISTEN -  udp 0 0 133.242.184.252:123 0.0.0.0:* -  udp 0 0 127.0.0.1:123 0.0.0.0:* -  udp 0 0 0.0.0.0:123 0.0.0.0:* -  udp6 0 0 :::123 :::* -  

iptables -L

Chain INPUT (policy ACCEPT) target prot opt source destination  ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere  ACCEPT all -- anywhere anywhere  ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:https ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:3000 REJECT all -- anywhere anywhere reject-with icmp-host-prohibited ACCEPT tcp -- anywhere anywhere tcp dpt:submission ACCEPT tcp -- anywhere anywhere tcp dpt:pop3 ACCEPT tcp -- anywhere anywhere tcp dpt:smtp  Chain FORWARD (policy ACCEPT) target prot opt source destination  REJECT all -- anywhere anywhere reject-with icmp-host-prohibited  Chain OUTPUT (policy ACCEPT) target prot opt source destination  

Есть ли другие моменты, которые я должен проверить ???

0

2 ответа на вопрос

1
grawity

Помните, что правила iptables читаются сверху вниз. Когда вы добавляете правило, -Aк которому оно добавляется в конце (или после заданного номера), при использовании -Iоно вставляется впереди.

Теперь у вас есть:

  1. принимать ICMP, HTTP, SSH, ...
  2. отклонять все
  3. принять SMTP, POP3

Поэтому вам нужно переместить правила «принять SMTP ...» выше общего отклонения.

Вы можете удалить их и повторно добавить, указав позицию вручную:

 iptables -A ВХОД 7 -p tcp ... (или) iptables -I INPUT 8 -p tcp ... 

(Используйте iptables -L --lineдля просмотра номеров правил.)

В качестве альтернативы, отредактируйте полный список сразу - и просто поменяйте местами строки:

iptables-save > rules.txt nano rules.txt iptables-restore < rules.txt 

Примечания стороны:

  • В будущем, возможно, будет лучше, если вы разместите правила, используя iptables -Sили даже iptables-save; это немного легче сканировать, чем сильно переформатированный -Lвывод. (Или, может быть, оба.)

  • Dovecot говорит только по POP / IMAP / LMTP, но не по SMTP. Ваш SMTP-сервер - это Postfix.

  • При использовании netstatс этой -pопцией вы должны запустить команду как root, иначе она не будет отображать какую-либо информацию о процессе.

Спасибо за ваше великолепное объяснение. Я не был знаком с iptables. Также спасибо за ваши советы о POP / IMAP, netstat. Это довольно полезно! Моя проблема была, конечно, решена whitebear 6 лет назад 0
1
vera

Iptables последовательно пытается соответствовать вашим правилам в порядке их появления. В вашем случае ( как сказано в комментариях, пожалуйста, предоставьте результат iptables -Sкоманд, так как нам не хватает информации, iptables -Lкак, например, соответствующий интерфейс )

  1. если пакеты совпадают state RELATED,ESTABLISHEDна интерфейсе ? они приняты, и с этими пакетами больше нет совпадений;
  2. иначе, если пакеты совпадают icmpна интерфейсе ? они приняты, и сопоставление с этими пакетами больше не выполняется;
  3. иначе iptables принимает все пакеты на интерфейсе ?
  4. ....

Поэтому, учитывая, что мы не знаем, для какого интерфейса выполняются правила, я думаю, что ваше единственное правило REJECT (в таблице INPUT) сопоставляется на том же интерфейсе, что и ваше tcp dpt:smtpправило. Поскольку ваше правило REJECT сопоставляется до правила snmp, последнее никогда не сопоставляется.

РЕДАКТИРОВАТЬ слишком долго, чтобы написать сообщение ...

Спасибо, как вы упомянули, порядок был проблемой. Мне нужно больше узнать о iptables. whitebear 6 лет назад 0

Похожие вопросы