587-Port kann nicht von externem Postfix / Dovercot mit tls verbunden werden

1226
whitebear

Es kann keine Verbindung zum SMTP-Port 567 hergestellt werden

Ich baute Mailserver Postfix + Dovecot.

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

Dies funktioniert und Sie können E-Mails manuell senden.

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

zeigt diesen Fehler

connect: Connection refused connect:errno=61 

Was ich überprüft habe, sind netstat, iptables.

Beide sehen für 587 Einsendungen gut aus.

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  

Gibt es noch andere Punkte, die ich überprüfen sollte?

0

2 Antworten auf die Frage

1
grawity

Denken Sie daran, dass die iptables-Regeln von oben nach unten gelesen werden . Wenn Sie eine Regel hinzufügen, deren Regel -Aam Ende (oder nach der angegebenen Nummer) angehängt wird, wird sie bei Verwendung -Ivorne eingefügt.

Jetzt haben Sie im Wesentlichen:

  1. akzeptiere ICMP, HTTP, SSH, ...
  2. lehne alles ab
  3. akzeptieren Sie SMTP, POP3

Sie müssen also die Regeln "Accept SMTP ..." über die Ablehnungsabfrage verschieben.

Sie können sie löschen und erneut hinzufügen, indem Sie die Position manuell angeben:

 iptables -A INPUT 7 -p tcp ... (oder) iptables -I INPUT 8 -p tcp ... 

(Verwenden Sie iptables -L --linediese Option, um die Regelnummern anzuzeigen.)

Alternativ können Sie die vollständige Liste auf einmal bearbeiten - und die Zeilen einfach vertauschen:

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

Side Notes:

  • In der Zukunft könnte es besser sein, wenn Sie die Regeln mit iptables -Soder sogar iptables-save; Es ist etwas einfacher zu scannen als die stark umformatierte -LAusgabe. (Oder vielleicht auch beides.)

  • Dovecot spricht nur POP / IMAP / LMTP, nicht jedoch SMTP. Ihr SMTP-Server ist Postfix.

  • Bei Verwendung netstatmit der -pOption, sollten Sie den Befehl als root ausführen, sonst wird es nicht wirklich eine der Informationen Prozess angezeigt werden soll .

Danke für deine großartige Erklärung. Ich war mit iptables nicht vertraut. Danke auch für Ihren Rat bezüglich POP / IMAP, netstat. Es ist sehr hilfreich! Mein Problem wurde natürlich gelöst whitebear vor 6 Jahren 0
1
vera

Iptables versuchen nacheinander, Ihre Regeln in der Reihenfolge einzuhalten, in der sie erscheinen. In Ihrem Fall ( wie in Kommentaren erwähnt, geben Sie bitte das Ergebnis der iptables -SBefehle an, da uns keine Informationen iptables -Lwie die entsprechende Schnittstelle fehlen ).

  1. wenn Pakete state RELATED,ESTABLISHEDauf der Schnittstelle übereinstimmen ? Sie werden akzeptiert und es wird keine weitere Übereinstimmung auf diesen Paketen durchgeführt.
  2. sonst, wenn Pakete icmpauf der Schnittstelle übereinstimmen ? Sie werden akzeptiert, und für diese Pakete wird keine weitere Übereinstimmung gefunden.
  3. ansonsten akzeptiert iptables alle Pakete an der Schnittstelle ?
  4. ....

Wenn wir also nicht wissen, an welcher Schnittstelle die Regeln ausgeführt werden, denke ich, dass Ihre einzige REJECT-Regel (in der INPUT-Tabelle) auf der gleichen Schnittstelle übereinstimmt wie Ihre tcp dpt:smtpRegel. Da Ihre REJECT-Regel vor Ihrer Snmp-Regel abgeglichen wird, wird die letzte nie abgeglichen.

BEARBEITEN Sie zu lange, um den Beitrag zu schreiben ...

Wie gesagt, die Bestellung war ein Problem. Ich muss mehr über Iptables lernen. whitebear vor 6 Jahren 0