Намагаючись налаштувати поштовий сервер, порти (25, 587) не можуть працювати


9

Я шукав всюди, і я справді борюся з цим. Я думаю, я спробував майже все.

Довідкова інформація

  • 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, і це та сама історія.

Єдине, що я бачу, це те, що я якось заблокував ці порти під час налаштування свого сервера, але я не можу згадати, чи це так, і я не знаю, як це перевірити.

Я дуже вдячний за будь-яку допомогу, яку ви можете мені надати. Насправді я купую пиво тому, хто допомагає мені вирішити це , я вже два дні витрачав на це, і воно починає насправді дратувати.


3
Чи можете ви замінити iptablesвихідний результат на iptables -L -n -vцілий і нереагуваний? Крім того, враховуючи tcpdupmpтестування та впевненість вашого постачальника, що я не блокую 25 та 587 вхідних даних , можливо також, що місце, яке ви тестуєте, з блоків 25 та 587 вихідних . Якщо ви опублікували IP-адресу, було б набагато простіше підтвердити або спростувати цю гіпотезу.
MadHatter

Дякуємо за відповідь. Звичайно, я відредагував своє повідомлення. Хм, я ніколи не замислювався над тим, щоб порти були заблоковані з мого кінця, це гарна ідея. Я спробую це перевірити.
reachergilt

1
@MadHatter, ти був абсолютно правий на заблокованих портах з мого боку. Виявилося (після багатьох дзвінків), що адміністратор VPN моєї компанії вирішив почати блокувати певні порти, 25 та 578 - один із них, а не інші. Це пояснює, чому я ніколи раніше не мав таких проблем і навіть не думав про це. Мій сервер, ймовірно, вже працював нормально останні кілька днів, поки я втрачав розум над цим. Якщо ви хочете, ви можете опублікувати як справжню відповідь, і я прийму його. Крім того, будь ласка, повідомте мені свою інформацію про PayPal (або подібну інформацію), ви дійсно заслуговуєте на велику холодну, бог знає, коли я це зрозумію.
reachergilt

Я написав це, тож ви можете прийняти відповідь, - бо в іншому випадку питання буде навіки навколо, і це погано. Також це може бути корисним для інших у майбутньому. Я мав на увазі те, що я сказав у своїй відповіді про те, що ви вже зробили більшу частину слідчої роботи (більше сил для вас!), Але якщо ви відчуваєте честь надіслати мені одне пиво, ви можете знайти мої контактні дані на моєму особистому веб-сайті, через мій профіль.
MadHatter

Зроблено і дякую ще раз за допомогу, ви, ймовірно, заощадили мені години, якщо не дні марного часу. Я зв’яжусь із вами завтра, вже перевірив ваш веб-сайт.
reachergilt

Відповіді:


4

Reachergilt, ласкаво просимо до SF та дякую за відмінне перше запитання. Ви можете відчути, що ми вас врятували, але чесно - ви вже зробили всі важкі підйоми і представили це дуже систематично. З таким криміналістичним складом, я сподіваюсь, що ти залишишся навколо цих частин на деякий час.

tcpdumpВихід особливо проклинаючи. Це виявляється поза розумним сумнівом, що ваші спроби підключитися навіть не доходять до вашого сервера, що визволює брандмауер сервера, postfixприв'язки та все інше на стороні сервера.

Озброївшись цим вказівником, ви пішли і підтвердили, що ваші вихідні з'єднання заблоковані, тому ваші тести ніколи не потрапляли на ваш сервер. Досить (депресивно) нормально, щоб 25 (і в меншій мірі, 587) були заблоковані вихідними з сучасних мереж, оскільки ботнети, що надсилають спам, використовують їх.

У будь-якому випадку, ви щасливі, що ваш новий поштовий сервер працює як рекламується, і це добре.


3
Так, мій пост робить хороший контрольний список для тих, хто має подібні проблеми. Досить смішно, тому що я думав, що з моїм сервером щось не так, я вчетверо перевіряв все від А до Я, дозволяючи мені тут все документувати.
reachergilt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.