Szukałem wszędzie i naprawdę mam z tym problem. Myślę, że próbowałem prawie wszystkiego.
Podstawowe informacje
- VPS z CentOS 6.7
- Postfiks 2.6.6
- dovecot, amavis, mysql, fail2ban
- Sprawdziłem u mojego dostawcy VPS, że nie blokują żadnych portów.
Rzeczy, które zrobiłem
- Usunięto zapasowy sendmail
- Zainstalowałem postfix, dovecot, mysql itp., Aby uzyskać kompletne rozwiązanie do obsługi poczty
- Zezwalam tylko na imap, smtp z STARTTLS (porty 143 i 587)
- Logowanie SSH wyłączone, tylko z kluczami
- Mogę odbierać maile (przez port 143)
- Mogę telnet z localhost na oba porty (587, 25) i otrzymuję pozdrowienie po postfiksie
- Próba połączenia z 587 lub 25 (klientem poczty lub telnetem) daje mi zerową odpowiedź, tj. Limit czasu połączenia
Rzeczy, których próbowałem
1) Czy porty są otwarte? Tak, 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) Czy postfix nasłuchuje na porcie 587? Tak. Czy nasłuchuje tylko na localhost? Nie, dowolny host.
Oto 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
Oto także postfix / main.cf, na wszelki wypadek:
# Enable both IPv4 and/or IPv6: ipv4, ipv6, all.
inet_protocols = ipv4
# Enable all network interfaces.
inet_interfaces = all
3) Czy poprawnie wymuszasz bezpieczne połączenia? Zgodnie z moją najlepszą wiedzą, tak, oto 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) Co z ograniczeniami smtpd? Wygląda wporządku:
# 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) Czy postfiks w ogóle działa poprawnie?
Tak, logowanie do serwera i wysyłanie wiadomości testowej z konsoli działa, a e-mail jest odbierany na drugim końcu, tj .:
echo "Test mail from postfix" | mail -s "Test Postfix" [email protected]
6) Co dzieje się podczas podłączania do portu 587?
Najwyraźniej nic. Jeśli spróbuję telnet do dowolnego losowego portu, przynajmniej coś dostanę. Na przykład próba telnet do portu 666 (który nie jest otwarty) nie daje odpowiedzi klientowi, ale przynajmniej dostaję coś w 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
Kiedy tcpdumping port 587, absolutnie nic się nie dzieje podczas próby telnet do niego.
Czego wciąż mi brakuje?
Wszystko powyżej wyczerpuje moją wiedzę o rzeczach, które wciąż mogę wypróbować. Udało mi się przybić do mojego portu 587, będąc czymś całkowicie zablokowanym. Jak powiedziałem, mój dostawca VPS potwierdził, że w ogóle nie blokuje żadnych portów. Próbowałem portu 25 i to ta sama historia.
Jedyne, co widzę, to to, że jakoś zablokowałem te porty podczas konfigurowania serwera, ale nie mogę sobie przypomnieć, czy tak jest i nie wiem, jak to przetestować.
Byłbym wdzięczny za każdą pomoc, jaką możesz mi udzielić. W rzeczywistości kupuję piwo dla każdego, kto pomoże mi rozwiązać ten problem , zmarnowałem już dwa dni i zaczyna się to naprawdę denerwować.
iptables
powyższy wynikiptables -L -n -v
całkowitym i nieprzereagowanym? Ponadto, biorąc pod uwagę twojetcpdupmp
testy i zapewnienie twojego dostawcy, że nie blokuję ruchu przychodzącego 25 i 587 , możliwe jest również, że miejsce, w którym testujesz, z wychodzących bloków 25 i 587 . Jeśli podałeś adres IP, o wiele łatwiej byłoby potwierdzić lub odrzucić tę hipotezę.Odpowiedzi:
Reachergilt, witamy w SF i dziękuję za doskonałe pierwsze pytanie. Może ci się wydawać, że cię uratowaliśmy, ale szczerze mówiąc - wykonałeś już wszystkie ciężkie prace i przedstawiłeś je bardzo systematycznie. Przy takim podejściu kryminalistycznym mam nadzieję, że pozostaniesz przy tych częściach jeszcze przez jakiś czas.
Wynik
tcpdump
jest szczególnie potworny. Ponad wszelką wątpliwość dowodzi, że twoje próby połączenia nie docierają nawet do twojego serwera, co uwalnia zaporę ogniową serwera,postfix
powiązania i wszystko inne po stronie serwera.Uzbrojony w ten wskaźnik odszedłeś i potwierdziłeś, że twoje połączenia wychodzące są blokowane, więc twoje testy nigdy nie docierały aż do twojego serwera. Jest dość (przygnębiająco) normalne, że 25 (i w mniejszym stopniu 587) jest blokowane wychodzące z nowoczesnych sieci, ponieważ używają ich botnety wysyłające spam.
W każdym razie cieszysz się, że twój nowy serwer pocztowy działa zgodnie z reklamą, i to dobrze.
źródło