Я шукав всюди, і я справді борюся з цим. Я думаю, я спробував майже все.
Довідкова інформація
- VPS з CentOS 6.7
- Postfix 2.6.6
- голуб, Amavis, mysql, fail2ban
- Я перевірив у свого постачальника VPS, що вони не блокують жодного порту.
Що я робив
- Видалено акції sendmail
- Я встановив postfix, dovecot, mysql тощо для повного рішення пошти
- Я дозволяю лише Imap, smtp із STARTTLS (порти 143 та 587)
- SSH реєстрація вимкнена, лише за допомогою ключів
- Я можу отримувати пошту (через порт 143)
- Я можу зателефонувати з localhost до обох портів (587, 25), і я отримаю привітання з поштовим індексом
- Спроба підключитися до 587 або 25 (поштовий клієнт або telnet) отримує мені нульову відповідь, тобто час очікування з'єднання
Те, що я спробував
1) Чи відкриті порти? Так, 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) Чи прослуховується постфікс на порту 587? Так. Це слухає лише у localhost? Ні, будь-який господар.
Ось нетто:
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
І ось також postfix / main.cf, про всяк випадок:
# Enable both IPv4 and/or IPv6: ipv4, ipv6, all.
inet_protocols = ipv4
# Enable all network interfaces.
inet_interfaces = all
3) Чи правильно ви змушуєте безпечні з'єднання? Наскільки мені відомо, так, ось ось постфікс / 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) Що про обмеження smtpd? Здається, добре:
# 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) Чи працює навіть Postfix правильно?
Так, вхід на сервер та відправлення тестової пошти з консолі працює та електронна пошта отримується з іншого кінця, тобто:
echo "Test mail from postfix" | mail -s "Test Postfix" user@something.com
6) Що відбувається при підключенні до порту 587?
Мабуть, взагалі нічого. Якщо я спробую зв’язатись із будь-яким випадковим портом, я принаймні щось отримаю. Наприклад, спроба telnet до порту 666 (який не відкритий) не дає відповіді клієнту, але принаймні я отримую щось у 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
Коли tcpdumping порт 587, взагалі нічого не відбувається при спробі передати його на telnet.
Чого я ще пропускаю?
Усе вище вичерпує мої знання про речі, які я все ще можу спробувати. Мені вдалося прибити його до порту 587, будучи чимось заблокованим чимось. Як я вже говорив, мій постачальник VPS підтвердив, що вони взагалі не блокують жодні порти. Я спробував порт 25, і це та сама історія.
Єдине, що я бачу, це те, що я якось заблокував ці порти під час налаштування свого сервера, але я не можу згадати, чи це так, і я не знаю, як це перевірити.
Я дуже вдячний за будь-яку допомогу, яку ви можете мені надати. Насправді я купую пиво тому, хто допомагає мені вирішити це , я вже два дні витрачав на це, і воно починає насправді дратувати.
iptables
вихідний результат наiptables -L -n -v
цілий і нереагуваний? Крім того, враховуючиtcpdupmp
тестування та впевненість вашого постачальника, що я не блокую 25 та 587 вхідних даних , можливо також, що місце, яке ви тестуєте, з блоків 25 та 587 вихідних . Якщо ви опублікували IP-адресу, було б набагато простіше підтвердити або спростувати цю гіпотезу.