LINUX.ORG.RU

В Debian сломался SMTP, как диагностировать

 , ,


0

1

Какое-то обновление за последние полгода принесло сломанный SMTP или что-то с ним связанное. Не могу отправить письма с любого моего ящика (гмейл, яндекс, мэйл) на любой другой ящик, в т. ч. не мой, с разных клиентов (mutt, mu4e, thunderbird, betterbird, claws mail) с разных провайдеров (РТК, Мегафон, МТС). Ошибка везде про таймаут соединения. На тундерприце

Sending of the message failed.
The message could not be sent because connecting to Outgoing server (SMTP) smtp.gmail.com failed. The server may be unavailable or is refusing SMTP connections. Please verify that your Outgoing server (SMTP) settings are correct and try again.

На MSMTP

мар 26 08:12:23 host=smtp.gmail.com tls=on auth=on user=user@gmail.com from=user@gmail.com recipients=anotheruser@mail.ru mailsize=16012952 smtpstatus=250 smtpmsg='250 2.0.0 OK  1773648743 2adb3069b0e04-5a15636fc22sm3276467e87.85 - gsmtp' exitcode=EX_OK

мар 26 09:36:37 host=yandex.ru tls=on auth=on user=user@yandex.ru from=user@yandex.ru recipients=anotheruser@gmail.com errormsg='cannot connect to yandex.ru, port 465: Connection timed out' exitcode=EX_TEMPFAIL

Домены пингуются:

ping smtp.yandex.ru
PING smtp.yandex.ru (77.88.21.158) 56(84) bytes of data.
64 bytes from mail-smtp.stable.qloud-b.yandex.net (77.88.21.158): icmp_seq=1 ttl=57 time=50.9 ms
64 bytes from mail-smtp.stable.qloud-b.yandex.net (77.88.21.158): icmp_seq=2 ttl=57 time=50.6 ms
64 bytes from mail-smtp.stable.qloud-b.yandex.net (77.88.21.158): icmp_seq=3 ttl=57 time=52.9 ms
64 bytes from mail-smtp.stable.qloud-b.yandex.net (77.88.21.158): icmp_seq=4 ttl=57 time=50.6 ms
^C
--- smtp.yandex.ru ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3294ms
rtt min/avg/max/mdev = 50.565/51.259/52.920/0.969 ms

ping smtp.gmail.com
PING smtp.gmail.com (142.251.127.109) 56(84) bytes of data.
64 bytes from lcfrai-in-f109.1e100.net (142.251.127.109): icmp_seq=1 ttl=108 time=85.6 ms
64 bytes from lcfrai-in-f109.1e100.net (142.251.127.109): icmp_seq=2 ttl=108 time=97.8 ms
64 bytes from lcfrai-in-f109.1e100.net (142.251.127.109): icmp_seq=3 ttl=108 time=87.7 ms
64 bytes from lcfrai-in-f109.1e100.net (142.251.127.109): icmp_seq=4 ttl=108 time=87.6 ms
^C
--- smtp.gmail.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 85.555/89.671/97.831/4.788 ms

При этом после перезагрузки какое-то время все отправляется, но потом внезапно перестает. По логу MSMTP это видно. Как диагностировать проблему? В journalctl ничего по ошибкам, связанным с отправкой и программами нет. Фаерволл дефолтный ufw, разрешена отправка всего. Пробовал отключать.

Остальной интернет работает штатно. Соединения устанавливаютс, пакеты летают в обе стороны. Через браузер, естественно, все работает. Сертификаты последние из реп:

ii  ca-certificates                               20250419 


Последнее исправление: Xld (всего исправлений: 2)

сейчас pop3/smtp/imap надо отдельно включать в настройках почты на сайте почтового сервиса(yandex/mail.ru), емнип.

ну и

host=yandex.ru

должно быть (smtp|mail).yandex.ru, не? просто сам yandex.ru редиректит в dzen.ru.
вообщем луркай настройки почты в passport.yandex.ru или в их тп.

etwrq ★★★★★
()
Ответ на: комментарий от etwrq

В настройках все ок. Я же написал, что после перезапуска ОС все отправляется какое-то время. Перестает позже. Настройки при этом не меняются и не менялись с момента установки Дебиана 13 после выхода в релиз. В настройках всех постовых ящиков imap/smtp разрешен, там тоже ничего не менялось. imap ходит штатно, проблем не возникает с ним, только smtp дает жару.

Xld
() автор топика
Ответ на: комментарий от Xld

Проверяй настройки сети / dhcp / КВН / MTU / качество провода.

По рабочим моментам использую mutt для рассылки различных писем пользователям, все работает.

ОС Debian.

kostik87 ★★★★★
()
Ответ на: комментарий от Xld

Ты можешь вообще проверить отправку через подключение средствами telnet к SMTP серверу yandex / gmail или openssl s_client и дальнейшим вводом команд SMTP протокола.

Пароль как правило там передаётся в base64.

Скорее всего, на твоей системе либо проблемы с сетевым соединением, либо ты в процессе работы что-то запускаешь, возможно DNS не то отдаёт или не отдаёт в некоторые моменты.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87
  1. Сети разные, остальные соединения на них работает. Пробовал также раздавать с мобильника на ноут.
  2. DHCP тоже везде работает.
  3. Стандартное.
  4. Это в основном Wi-Fi. На уровне сетей я не знаю, что может блокировать. Выглядит, что ОС это единая и общая точка отказа во всех случаях, поэтому грешу на Дебиан.
Xld
() автор топика
Последнее исправление: Xld (всего исправлений: 1)
Ответ на: комментарий от kostik87

Все работает, если напрямую проверять:

nc -vz smtp.gmail.com 465
Connection to smtp.gmail.com (108.177.14.109) 465 port [tcp/submissions] succeeded!

openssl s_client -connect smtp.gmail.com:465
EHLO test.com
250-smtp.gmail.com at your service, [SOME IP]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
Xld
() автор топика
Последнее исправление: Xld (всего исправлений: 1)
Ответ на: комментарий от Xld

Тогда почему с мобильника все отправляется по тем же каналам,

Разный SSL fingerprint?

а на компе работает при перезапуске?

Смена IP, разрыв TCP соединнений...

Попробуй проверить через openssl на мобильнике (termux) и ПК с одинаковыми версиями библиотек, наборами шифров и пр.
См. Кто-то живет к криокамере? (комментарий)

MirandaUser2 ★★
()
Ответ на: комментарий от Xld

Ок, греши дальше.

Как проверить без потенциального использования библиотек с реализацией протокола SMTP / SMTPS я тебе написал - пробуй, проверяй.

Очень маловероятно то, что ты пишешь. Скорее всего, проблема в настройках DNS / КВН / параметров авторизации подключения к почтовым серверам / MTU.

kostik87 ★★★★★
()
Ответ на: комментарий от Xld

Так ты полностью пройди, именно отправку, с авторизацией, заполнением темы письма, тела письма, получателя и собственно отправкой.

Только команды подготовь в текстовом файле, иначе набирая руками можешь по таймауту не успеть. Для копирования и вставки с telnet (smtp) или openssl s_client (smtps) сессию подключения.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от Xld

У тебя в логах:

cannot connect to yandex.ru, port 465: Connection timed out

Ты проверял подключение к yandex.ru:465? Зачем ты проверяешь подключение к smtp.gmail.com:465, если про него такого лога нет?

И зачем ты шлёшь что-то на yandex.ru:465 когда это не адрес почтового сервера?

firkax ★★★★★
()
Ответ на: комментарий от MirandaUser2

На линуксе понятно, как посмотреть трафик. На IOS как получить эти данные для сравнения?

Xld
() автор топика
Ответ на: комментарий от Xld

На линуксе понятно, как посмотреть трафик. На IOS как получить эти данные для сравнения?

завернуть трафик через хост, где wireshark/tshark.
Но если у тебя openssl s_client успешно отрабатывает, то его трафик и сравнивать с почтоклиентом или MSMTP, который не может подключится.

MirandaUser2 ★★
()
Ответ на: комментарий от firkax

В первом посте написал, что эта ситуация с любого почтовика. Вот проверка на яндекс:

Connection to smtp.yandex.ru (77.88.21.158) 465 port [tcp/submissions] succeeded!

На яндекс:465 я ничего не шлю, это так в логе описывает ситуацию MSMTP. Адрес в конфиге, ессесно, smtp.yandex.ru:

grep host .msmtprc 
host           smtp.gmail.com
host           smtp.yandex.ru

В тундерптице аналогично.

Xld
() автор топика
Ответ на: комментарий от Xld

Ты уверен что это он «так описывает» а не на самом деле пытается подключиться к yandex.ru:465? Запусти tcpdump -n tcp and port 465 и посмотри куда он пытается подключиться.

Для gmail там правильный smtp хост указан, так что думаю что он и правда подключается не туда.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)

Я бы попробовал порт 587+STARTTLS, чтобы понять, застревает на TLS или раньше.

Но в первую очередь: на логах гмыла не вижу номера порта; уж не ломишься ли ты на 25?

В логах яндеха вижу неверный хостнейм.

Ну хз, хз.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от firkax

Перезагрузился, отправил письмо - ушло. В tcpdump пусто, настройки на скрине. ЧЯДНТ?

sudo tcpdump -n tcp and port 465
[sudo] password for user: 
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on wlp1s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes

https://i.postimg.cc/mgZzzhSL/Screenshot-From-2026-03-26-11-25-04.png

Xld
() автор топика
Ответ на: комментарий от thesis

Я не знаю, почему MSMTP так логи пишет. Буду через тундерптицу тестить.

Текущие настройки - https://i.postimg.cc/CKFNKFRC/Screenshot-From-2026-03-26-11-29-11.png

Поменял на STARTTLS, 587 - таймаут. При этом

nc -4 -vz smtp.gmail.com 587
Connection to smtp.gmail.com (108.177.14.108) 587 port [tcp/submission] succeeded!
Xld
() автор топика
Последнее исправление: Xld (всего исправлений: 2)
Ответ на: комментарий от Dimez

Потому что msmtp используется в notmuch, который я использую иногда в emacs.

Xld
() автор топика
Ответ на: комментарий от Xld

tcpdump запустил до отправки письма?

Попробуй так:

tcpdump -i any -n tcp and (port 465 or port 587 or port 25)

а то возможно он не тот интерфейс слушает и возможно не тот порт используется при успешной отправке.

И ещё, отдельно, имеет смысл просниффить днс (udp and port 53). Отправка на yandex.ru может получаться если от тебя MX-запись спрятали. У меня например провайдер MX-запросы, по крайней мере раньше, вообще блокировал.

update: хотя нет, ты не через mx шлёшь же а напрямую домен указал

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 3)
Ответ на: комментарий от firkax

Точно, сам не догаладся, что интерфейс не тот

12:03:48.012557 wlps1n0 Out IP 192.168.2.218.49412 > 77.88.21.158.465: Flags [S], seq 201934658, win 64860, options [mss 1380,sackOK,TS val 3533618894 ecr 0,nop,wscale 10], len
gth 0                                                                                                                                                                         
12:03:48.062101 wlps1n0 In  IP 77.88.21.158.465 > 192.168.2.218.49412: Flags [S.], seq 2328695527, ack 201934659, win 43338, options [mss 1410,sackOK,TS val 2856338812 ecr 3533
618894,nop,wscale 8], length 0                                                                                                                                                
12:03:48.062150 wlps1n0 Out IP 192.168.2.218.49412 > 77.88.21.158.465: Flags [.], ack 1, win 64, options [nop,nop,TS val 3533618943 ecr 2856338812], length 0                   
12:03:48.062859 wlps1n0 Out IP 192.168.2.218.49412 > 77.88.21.158.465: Flags [P.], seq 1:2390, ack 1, win 64, options [nop,nop,TS val 3533618944 ecr 2856338812], length 2389   
12:03:48.112617 wlps1n0 In  IP 77.88.21.158.465 > 192.168.2.218.49412: Flags [.], ack 2390, win 160, options [nop,nop,TS val 2856338863 ecr 3533618944], length 0               
12:03:48.115217 wlps1n0 In  IP 77.88.21.158.465 > 192.168.2.218.49412: Flags [.], seq 1:1209, ack 2390, win 166, options [nop,nop,TS val 2856338865 ecr 3533618944], length 1208
12:03:48.115253 wlps1n0 Out IP 192.168.2.218.49412 > 77.88.21.158.465: Flags [.], ack 1209, win 66, options [nop,nop,TS val 3533618996 ecr 2856338865], length 0
12:03:48.115483 wlps1n0 In  IP 77.88.21.158.465 > 192.168.2.218.49412: Flags [P.], seq 1209:2417, ack 2390, win 166, options [nop,nop,TS val 2856338865 ecr 3533618944], length 
1208
12:03:48.115513 wlps1n0 Out IP 192.168.2.218.49412 > 77.88.21.158.465: Flags [.], ack 2417, win 65, options [nop,nop,TS val 3533618996 ecr 2856338865], length 0
12:03:48.116445 wlps1n0 In  IP 77.88.21.158.465 > 192.168.2.218.49412: Flags [.], seq 2417:3625, ack 2390, win 166, options [nop,nop,TS val 2856338865 ecr 3533618944], length 1
208
12:03:48.116474 wlps1n0 Out IP 192.168.2.218.49412 > 77.88.21.158.465: Flags [.], ack 3625, win 66, options [nop,nop,TS val 3533618997 ecr 2856338865], length 0
12:03:48.116743 wlps1n0 In  IP 77.88.21.158.465 > 192.168.2.218.49412: Flags [P.], seq 3625:4558, ack 2390, win 166, options [nop,nop,TS val 2856338865 ecr 3533618944], length 
933
12:03:48.116772 wlps1n0 Out IP 192.168.2.218.49412 > 77.88.21.158.465: Flags [.], ack 4558, win 66, options [nop,nop,TS val 3533618998 ecr 2856338865], length 0
12:03:50.118366 wlps1n0 Out IP 192.168.2.218.49412 > 77.88.21.158.465: Flags [P.], seq 2390:2470, ack 4558, win 66, options [nop,nop,TS val 3533620999 ecr 2856338865], length 8
0
12:03:50.170229 wlps1n0 In  IP 77.88.21.158.465 > 192.168.2.218.49412: Flags [P.], seq 4558:5036, ack 2470, win 166, options [nop,nop,TS val 2856340920 ecr 3533620999], length 
478
12:03:50.170274 wlps1n0 Out IP 192.168.2.218.49412 > 77.88.21.158.465: Flags [.], ack 5036, win 66, options [nop,nop,TS val 3533621051 ecr 2856340920], length 0
12:03:50.219077 wlps1n0 In  IP 77.88.21.158.465 > 192.168.2.218.49412: Flags [P.], seq 5036:5146, ack 2470, win 166, options [nop,nop,TS val 2856340969 ecr 3533621051], length 
110
12:03:50.219124 wlps1n0 Out IP 192.168.2.218.49412 > 77.88.21.158.465: Flags [.], ack 5146, win 66, options [nop,nop,TS val 3533621100 ecr 2856340969], length 0
12:03:50.220830 wlps1n0 Out IP 192.168.2.218.49412 > 77.88.21.158.465: Flags [P.], seq 2470:2512, ack 5146, win 66, options [nop,nop,TS val 3533621102 ecr 2856340969], length 4
2
Xld
() автор топика
Ответ на: комментарий от firkax

В смысле из клиента?

Sending of the message failed.
The message could not be sent because connecting to Outgoing server (SMTP) smtp.yandex.ru failed. The server may be unavailable or is refusing SMTP connections. Please verify that your Outgoing server (SMTP) settings are correct and try again.
Xld
() автор топика
Ответ на: комментарий от Xld

Из msmtp. Там время должно быть указано.

А ещё лучше сделать на него tail -f и запомнить момент когда этот лог появился (всмысле какие строки в tcpdump в этот момент были).

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от Xld

Интерес тут мог бы представлять pcap-файл с трафиком неуспешного соединения на порт 587 и рядом - файл с дампом успешного подключеня ТУДА ЖЕ другой программой (той же openssl s_client -connect same_ipv4_addr:587 -servername same.hostname.tld -starttls smtp), что, как ты уверяешь, имеет место.

А мы тут тянем кота за яйца.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 2)
Ответ на: комментарий от Xld

То, что вы приводите, не соотносится. В tcpdump видно, что идёт обмен данными, это явно не «connecting failed». Либо вы дампите какое-то другое соедиение, либо включайте в «тундерприце» логгирование. Как-то так: https://michalzuber.wordpress.com/2023/02/04/debugging-smtp-connection-in-thu... и ещё там в Error Console включите временные метки и убедитесь, что часы там и в tcpdump синхронизированы.

Без временных меток понять, что происходит сложно. У вас сдамплено всего 2 секунды, причём, RST пакета нет. Непонятно, закрывается штатно соединение или просто по нему перестают проходить пакеты. И thunderbird обычно больше 2 с думает, если соединение не проходит и отваливается по таймауту.

В dmesg всё чисто, нет сообщений, о переполнении conntrack или ещё чего? Только не надо сюда постить весь dmesg, нужно смотреть есть ли сообщения в момент отправки.

mky ★★★★★
()

Спасибо всем, кто помогал с диагностикой. Решил проблему кардинально, потому что почта нужна, а времени на более глубокий анализ нет. Переставил систему по хэндбуку по виндовс и теперь Дебиан снова гладкий и шелковистый с работающей почтой. Если снова вылезет, напишу, чтобы продолжить диагностические изыскания.

Xld
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.