LINUX.ORG.RU
ФорумAdmin

Как понять причину не коннекта к SMTP по SSL?

 , ,


0

1

Всем привет.

Есть китайский DVR с возможностью отправки EMAIL при событиях. Но вот беда, SSL и TLS в нём какие-то «кривые».
При его попытке отправить на сервер email, со стороны сервера видна следующая ошибка:

Jun 14 10:56:55 submission-login: Info: Disconnected: Connection closed: SSL_accept() failed: error:0A0000C1:SSL routines::no shared cipher (no auth attempts in 0 secs): user=<>, rip=188.232.165.188, rport=56714, lip=192.168.203.5, lport=465, TLS handshaking: SSL_accept() syscall failed: Invalid argument


Я вот думал, что он использует какой-то древний SSL/TLS, которые запрещены в dovecot и попробовал сделать так:
ssl_min_protocol = ANY
ssl_cipher_list = ALL:+LOW:+HIGH:+MEDIUM


но это ничего не изменило.
Подскажите что можно сделать? И можно ли?

ЗЫ. Знаю точно работающий вариант - выкинуть его. Но не приемлимо :))



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

Как ни странно, но -trace у меня нет такого параметра. Какой-то эдакий openssl, причём он в этом же выводе хелпа указан типа есть -msg для использования вместе с -trace, а самого -trace нет... странно...

# openssl version
OpenSSL 1.1.1w  11 Sep 2023


# openssl s_server -cert ./certs/cert.pem -key ./certs/key.pem -port 2525
Using default temp DH parameters
ACCEPT
-----BEGIN SSL SESSION PARAMETERS-----
MHUCAQECAgMDBAIAPAQgFhfwaXv463u5M948AwsQR+cv9avPCM99I1GmZKLaqKME
MP7+fW2EVx9RuFJJ8oGgi40HefUnQiqx/IG6MKbgqo8e5FBKY77C7dBqesshhoo6
naEGAgRoToOPogQCAhwgpAYEBAEAAAA=
-----END SSL SESSION PARAMETERS-----
Shared ciphers:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA
Signature Algorithms: RSA+SHA512:RSA+SHA384:RSA+SHA256:RSA+SHA224:RSA+SHA1:0x01+0x01
Shared Signature Algorithms: RSA+SHA512:RSA+SHA384:RSA+SHA256:RSA+SHA224
CIPHER is AES128-SHA256
Secure Renegotiation IS supported
220 mail.server.gov Dovecot ready.
HELO LocalHost
250 mail.server.gov
AUTH LOGIN
334 VXNlcm5hbWU6
YWRtaW5Ac2VydmVyLmdvdg==
^C


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

Spider55
() автор топика
Ответ на: комментарий от vlb
$netstat -lnp
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:465             0.0.0.0:*               LISTEN      16/dovecot
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      16/dovecot


проксит он через себя, я так понимаю для авторизации

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

То есть, эта железяка успешно поговорила с тем же openssl, который используется почтовиком?

А другие клиенты в него на 465 порт нормально ходят?

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

Выглядит как да... Поговорила. И да другие клиенты на 465 порт ходят...
Но что любопытно, на 587ой порт она не смогла зайти. Пробовал повесить openssl s_server на 587 порт, там сразу дисконнект. Пробовал mitmproxy на 587 порт для этой железки, и там тоже дисконнект. Нашёл какие-то упоминания в issue mitmproxy что какая то из реализаций uTLS (микроТЛС) библиотеки имеет такой косяк, возможно мой случай с TLS.

Взял stunnel в режиме SMTP:25 -> SSL/TLS 465/587 и всё прекрасно работает. Да, это костыль. Первопричина пока не понятна, неужели никто не пользовал TLS/SSL в этих DVR... Не верю...

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

неужели никто не пользовал TLS/SSL в этих DVR...

С учетом описания в виде «китайский DVR», не исключено что и никто. Во всяких непознанных железках не редкость, что заявленное != рабочее.

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

OFFTOPIC

Ну кстати, у меня пара очень старых (10+ лет как) серверов в Хецнере из разряда - работает не трожь, последнее время https (даже любопытно стало, что там SSL или TLS «уже») отдают через раз, а то и через 2 :(
При этом tunel на другой сервер на этот же Хецнер и с него эти сервера прекрасно всё отдают.

Spider55
() автор топика

no shared cipher

по моему тут видно что не смогли согласовать протоколы…

Если это у вас постфикс, то там можно включить отладку tls/ssl в логах

smtpd_tls_loglevel = 1 # или больше 1
smtpd_tls_received_header = yes
gfh ★★★
()

Из моей деревни это выглядит так:

$ telnet 188.232.165.188 465
Trying 188.232.165.188...
telnet: connect to address 188.232.165.188: Connection refused

$ telnet 188.232.165.188 25
Trying 188.232.165.188...
telnet: connect to address 188.232.165.188: Connection refused
IMHO там нет почтовика.

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

Ну 188.232.165.188 это вообще то мой IP да ещё и динамический и с сотовой сети...
Что бы там что-то было то?

rip=188.232.165.188, rport=56714, lip=192.168.203.5, lport=465

если уж на то пошло, то адрес сервера 192.168.203.5, но это адрес внутри docker сети... Так что, О чём речь то?

Spider55
() автор топика
Последнее исправление: Spider55 (всего исправлений: 1)
Ответ на: комментарий от Spider55
rip=188.232.165.188, rport=56714, lip=192.168.203.5, lport=465,

Да, я не смог догадаться, что можной просто взять и зайти с внешнего ip на внутренний, хотя rport=56714 и lport=465 должен был насторожить.

vel ★★★★★
()
12 сентября 2025 г.

Привет! Исходя из твоих сообщений вижу, что у Вас установлен почтовик на базе mailu (судя по внутреннему дефолтному для его докера IP).

Источник проблемы: регистратор НЕ понимает современные ECDSA сертификаты, плюс у него устаревший допустимый набор шифров (ciphers).

Для решения проблемы с регистратором тебе нужно:

  1. Перевыпустить сертификат, вместо ECDSA выпустить RSA. Каким образом - Вам виднее, смотря как его выпускали. Тот же LE позволяет выпускать как RSA, так и ECDSA сертификаты.
  2. Подставить на своём сервере в mailu новые сертификаты, по-умолчанию они в /mailu/certs/
  3. В папке с mailu (допустим, /mailu) нужно создать файл /mailu/overrides/nginx/dovecot/proxy.conf с таким содержимым:
ssl_cipher_list = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:TLS_RSA_WITH_AES_128_CBC_SHA256:TLS_RSA_WITH_AES_256_CBC_SHA256:TLS_RSA_WITH_AES_128_CBC_SHA:TLS_RSA_WITH_AES_256_CBC_SHA
  1. Перезапустить контейнер
docker compose restart front
  1. В регистраторе в качестве SMTP выбрать порт 465, шифрование SSL.

После всех этих манипуляций регистратор с почтовиком смогут договориться и он сможет отправлять письма (будь он [вырезано цензурой] неладен).

Shturmn
()