Я искал везде, и я действительно борюсь с этим. Я думаю, что я попробовал почти все.
Справочная информация
- VPS с CentOS 6,7
- Постфикс 2.6.6
- dovecot, amavis, mysql, fail2ban
- Я проверил с моим провайдером VPS, что они не блокируют никакие порты.
Что я сделал
- Удален сток sendmail
- Я установил postfix, dovecot, mysql и т. Д. Для полного почтового решения
- Я разрешаю только imap, smtp с STARTTLS (порты 143 и 587)
- SSH логины отключены, только с ключами
- Я могу получать почту (через порт 143)
- Я могу telnet с localhost на оба порта (587, 25), и я получаю приветствие postfix
- Попытка подключиться к 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? Да. Он слушает только на локальном хосте? Нет, любой хост.
Вот 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
А вот и postfix / main.cf, на всякий случай:
# Enable both IPv4 and/or IPv6: ipv4, ipv6, all.
inet_protocols = ipv4
# Enable all network interfaces.
inet_interfaces = all
3) Правильно ли вы выполняете принудительные соединения? Насколько мне известно, да, вот 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) Как насчет ограничений 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-адрес, было бы намного проще подтвердить или опровергнуть эту гипотезу.Ответы:
Reachergilt, добро пожаловать в SF, и спасибо за отличный первый вопрос. Вы можете чувствовать, что мы вас спасли, но, честно говоря, вы уже проделали всю тяжелую работу и представляли ее очень систематически. С таким судебно-медицинским складом ума, я надеюсь, что вы останетесь в этих местах еще какое-то время.
tcpdump
Выход особенно проклиная. Вне всякого сомнения, это доказывает, что ваши попытки подключиться даже не достигают вашего сервера, что освобождает от ответственности брандмауэр сервера,postfix
привязки и все остальное на стороне сервера.Вооружившись этим указателем, вы ушли и подтвердили, что ваши исходящие соединения были заблокированы, поэтому ваши тесты никогда не доходили до вашего сервера. Это довольно (удручающе) нормально для 25 (и в меньшей степени, 587) быть заблокированными исходящими от современных сетей, потому что ботнеты, рассылающие спам, используют их.
В любом случае, теперь вы счастливы, что ваш новый почтовый сервер работает так, как рекламируется, и это хорошо.
источник