Ich habe überall gesucht und ich habe wirklich Probleme mit diesem. Ich glaube, ich habe so ziemlich alles versucht.
Hintergrundinformation
- VPS mit CentOS 6.7
- Postfix 2.6.6
- Taubenschlag, Amavis, MySQL, Fail2Ban
- Ich habe bei meinem VPS-Anbieter überprüft, dass er keine Ports blockiert.
Dinge, die ich getan habe
- Lager sendmail entfernt
- Ich habe Postfix, Dovecot, MySQL usw. für eine vollständige Mail-Lösung installiert
- Ich erlaube nur imap, smtp mit STARTTLS (Ports 143 und 587)
- SSH-Anmeldungen deaktiviert, nur mit Schlüsseln
- Ich kann Mails empfangen (über Port 143)
- Ich kann von localhost zu beiden Ports (587, 25) telneten und erhalte eine Postfix-Begrüßung
- Wenn ich versuche, eine Verbindung zu 587 oder 25 (Mail-Client oder Telnet) herzustellen, erhalte ich keine Antwort, dh kein Verbindungszeitlimit
Dinge, die ich versucht habe
1) Sind die Ports geöffnet? Ja, iptables:
Chain INPUT (policy DROP 11 packets, 1375 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587
25 2579 f2b-dovecot tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 110,995,143,993,587,465,4190
68 7788 f2b-postfix tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 25,465,587
0 0 f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
25 2579 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:143
7 600 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
23464 2662K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
49 2940 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3915
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:143
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587
5 300 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 23235 packets, 2494K bytes)
pkts bytes target prot opt in out source destination
Chain f2b-dovecot (1 references)
pkts bytes target prot opt in out source destination
25 2579 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain f2b-postfix (1 references)
pkts bytes target prot opt in out source destination
68 7788 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain f2b-sshd (1 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
2) Lauscht Postfix Port 587? Ja. Hört es nur auf localhost? Nein, irgendein Gastgeber.
Hier ist netstat:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 7173/master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 917/httpd
tcp 0 0 127.0.0.1:4190 0.0.0.0:* LISTEN 749/dovecot
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 7173/master
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 749/dovecot
tcp 0 0 127.0.0.1:24 0.0.0.0:* LISTEN 749/dovecot
Und hier ist auch die postfix / main.cf, nur für den Fall:
# Enable both IPv4 and/or IPv6: ipv4, ipv6, all.
inet_protocols = ipv4
# Enable all network interfaces.
inet_interfaces = all
3) Erzwingen Sie sichere Verbindungen korrekt? Nach meinem besten Wissen, ja, hier ist die postfix / master.cf:
# Submission, port 587, force TLS connection.
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o content_filter=smtp-amavis:[127.0.0.1]:10026
4) Was ist mit SMTPD-Einschränkungen? Scheint in Ordnung:
# HELO restriction
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_non_fqdn_helo_hostname
reject_invalid_helo_hostname
check_helo_access pcre:/etc/postfix/helo_access.pcre
5) Funktioniert Postfix überhaupt richtig?
Ja, das Anmelden am Server und das Senden von Testmail von der Konsole funktioniert und E-Mail wird am anderen Ende empfangen, dh:
echo "Test mail from postfix" | mail -s "Test Postfix" [email protected]
6) Was passiert beim Anschließen an Port 587?
Anscheinend gar nichts. Wenn ich versuche, an einen zufälligen Port zu telneten, bekomme ich zumindest etwas. Wenn Sie beispielsweise versuchen, Telnet an Port 666 (der nicht geöffnet ist) zu senden, erhalten Sie keine Antwort an den Client, aber zumindest erhalte ich etwas in tcpdump:
15:22:20.305697 IP xxx > xxx.com.mdqs: Flags [S], seq 3195304468, win 8192, options [mss 1352,nop,wscale 8,nop,nop,sackOK], length 0
Beim tcpdumping von Port 587 passiert absolut nichts, wenn versucht wird, eine Telnet-Verbindung herzustellen.
Was fehlt mir noch?
Alles darüber erschöpft mein Wissen über die Dinge, die ich noch versuchen kann. Ich habe es geschafft, es an meinen Port 587 zu nageln, der durch etwas vollständig blockiert ist. Wie gesagt, mein VPS-Anbieter hat bestätigt, dass er überhaupt keine Ports blockiert. Ich habe Port 25 ausprobiert und es ist die gleiche Geschichte.
Das einzige andere, was ich sehen kann, ist, dass ich diese Ports beim Einrichten meines Servers irgendwie blockiert habe, aber ich kann mich nicht erinnern, ob dies der Fall ist, und ich weiß nicht, wie ich das testen soll.
Ich würde mich sehr über jede Hilfe freuen, die Sie mir geben können. Tatsächlich kaufe ich ein Bier für jeden, der mir bei der Lösung hilft . Ich habe bereits zwei Tage damit verschwendet und es wird langsam sehr nervig.
iptables
obige Ausgabe durch die voniptables -L -n -v
, vollständig und unredaktiert ersetzen? Angesichts Ihrertcpdupmp
Tests und der Zusicherung Ihres Anbieters, dass ich 25 und 587 nicht eingehend blockiere , ist es auch möglich, dass der Ort, an dem Sie testen, von Block 25 und 587 ausgehend blockiert wird . Wenn Sie die IP-Adresse angegeben haben, ist es viel einfacher, diese Hypothese zu bestätigen oder abzulehnen.Antworten:
Reachergilt, willkommen bei SF, und vielen Dank für eine hervorragende erste Frage. Sie mögen das Gefühl haben, dass wir Sie gerettet haben, aber ehrlich gesagt - Sie haben bereits das ganze schwere Heben getan und es sehr systematisch präsentiert. Mit einer solchen forensischen Denkweise hoffe ich, dass Sie noch einige Zeit in diesen Bereichen bleiben.
Die
tcpdump
Ausgabe ist besonders schädlich. Es zeigt sich zweifelsfrei, dass Ihre Verbindungsversuche nicht einmal Ihren Server erreichen, wodurch die Firewall des Servers,postfix
die Bindungen und alles andere serverseitig entlastet werden .Mit diesem Zeiger sind Sie weggegangen und haben bestätigt, dass Ihre ausgehenden Verbindungen blockiert wurden, sodass Ihre Tests nie bis zu Ihrem Server gelangten. Es ist ziemlich (deprimierend) normal, dass 25 (und in geringerem Maße 587) von modernen Netzwerken ausgehend blockiert werden, weil Spam-sendende Botnets sie verwenden.
Auf jeden Fall sind Sie jetzt froh, dass Ihr neuer Mailserver wie angekündigt funktioniert, und das ist gut so.
quelle