Привет, сообщество ServerFault,
Я отправил это в список рассылки stunnel-users 30 апреля 2018 г. и еще раз 16 мая 2018 г. по адресу https://www.stunnel.org/pipermail/stunnel-users/2018-April/006000.htmlК сожалению, там никто не знает ответа, так что теперь я пытаюсь найти здесь экспертов.
Ниже приводится дословная цитата из письма в список рассылки.
Привет, список,
Я только что присоединился к сообществу stunnel.
Я нахожусь в процессе переноса общедоступных портов нашего почтового сервера в stunnel по соображениям соответствия PCI.
Пока мне удалось наладить работу:
- imap (143 / tcp) с starttls
- imaps (993 / tcp)
- pop3 (110 / tcp) с starttls
- pop3s (995 / tcp)
У меня проблема с smtp (25 / tcp, 587 / tcp) с starttls.
Я пробовал несколько разных почтовых клиентов, и каждый из них говорит мне, что сервер не поддерживает протоколы аутентификации.
Я установил stunnel 5.44. Тройник соответствующих частей в моей конфигурации:
[mail2-imap] protocol = imap accept = 143 connect = <mail-fqdn>:143 [mail2-imaps] accept = 993 connect = <mail-fqdn>:143 [mail2-pop3] protocol = pop3 accept = 110 connect = <mail-fqdn>:110 [mail2-pop3s] accept = 995 connect = <mail-fqdn>:110 [mail2-smtp] protocol = smtp accept = 25 connect = <mail-fqdn>:25 [mail2-smtps] accept = 465 connect = <mail-fqdn>:465 [mail2-smtps-submission] debug = 7 protocol = smtp accept = 587 connect = <mail-fqdn>:587
В файле журнала при подключении есть следующие записи
2018.04.30 09:20:50 LOG7[5]: Service [mail2-smtps-submission] started 2018.04.30 09:20:50 LOG7[5]: Option TCP_NODELAY set on local socket 2018.04.30 09:20:50 LOG5[5]: Service [mail2-smtps-submission] accepted connection from 41.13.8.49:56890 2018.04.30 09:20:50 LOG6[5]: s_connect: connecting 10.10.11.2:587 2018.04.30 09:20:50 LOG7[5]: s_connect: s_poll_wait 10.10.11.2:587: waiting 10 seconds 2018.04.30 09:20:50 LOG5[5]: s_connect: connected 10.10.11.2:587 2018.04.30 09:20:50 LOG5[5]: Service [mail2-smtps-submission] connected remote server from 10.10.11.11:42466 2018.04.30 09:20:50 LOG7[5]: Option TCP_NODELAY set on remote socket 2018.04.30 09:20:50 LOG7[5]: Remote descriptor (FD=23) initialized 2018.04.30 09:20:50 LOG7[5]: RFC 2487 detected 2018.04.30 09:20:50 LOG7[5]: <- 220 <mail-fqdn> ESMTP Postfix 2018.04.30 09:20:50 LOG7[5]: -> 220 <mail-fqdn> stunnel for ESMTP Postfix 2018.04.30 09:20:51 LOG7[5]: <- EHLO [100.125.153.220] 2018.04.30 09:20:51 LOG7[5]: -> 250-<mail-fqdn> 2018.04.30 09:20:51 LOG7[5]: -> 250 STARTTLS 2018.04.30 09:20:51 LOG7[5]: <- STARTTLS 2018.04.30 09:20:51 LOG7[5]: -> 220 Go ahead 2018.04.30 09:20:51 LOG6[5]: Peer certificate not required 2018.04.30 09:20:51 LOG7[5]: TLS state (accept): before/accept initialization 2018.04.30 09:20:51 LOG7[5]: SNI: no virtual services defined 2018.04.30 09:20:51 LOG7[5]: TLS state (accept): SSLv3 read client hello A 2018.04.30 09:20:51 LOG7[5]: TLS state (accept): SSLv3 write server hello A 2018.04.30 09:20:51 LOG7[5]: TLS state (accept): SSLv3 write certificate A 2018.04.30 09:20:51 LOG7[5]: TLS state (accept): SSLv3 write key exchange A 2018.04.30 09:20:51 LOG7[5]: TLS state (accept): SSLv3 write server done A 2018.04.30 09:20:51 LOG7[5]: TLS state (accept): SSLv3 flush data 2018.04.30 09:20:51 LOG7[5]: TLS state (accept): SSLv3 read client certificate A 2018.04.30 09:20:52 LOG7[5]: TLS state (accept): SSLv3 read client key exchange A 2018.04.30 09:20:52 LOG7[5]: TLS state (accept): SSLv3 read certificate verify A 2018.04.30 09:20:52 LOG7[5]: TLS state (accept): SSLv3 read finished A 2018.04.30 09:20:52 LOG7[5]: TLS state (accept): SSLv3 write change cipher spec A 2018.04.30 09:20:52 LOG7[5]: TLS state (accept): SSLv3 write finished A 2018.04.30 09:20:52 LOG7[5]: TLS state (accept): SSLv3 flush data 2018.04.30 09:20:52 LOG7[5]: New session callback 2018.04.30 09:20:52 LOG7[5]: 2 server accept(s) requested 2018.04.30 09:20:52 LOG7[5]: 2 server accept(s) succeeded 2018.04.30 09:20:52 LOG7[5]: 0 server renegotiation(s) requested 2018.04.30 09:20:52 LOG7[5]: 0 session reuse(s) 2018.04.30 09:20:52 LOG7[5]: 2 internal session cache item(s) 2018.04.30 09:20:52 LOG7[5]: 0 internal session cache fill-up(s) 2018.04.30 09:20:52 LOG7[5]: 0 internal session cache miss(es) 2018.04.30 09:20:52 LOG7[5]: 0 external session cache hit(s) 2018.04.30 09:20:52 LOG7[5]: 0 expired session(s) retrieved 2018.04.30 09:20:52 LOG6[5]: TLS accepted: new session negotiated 2018.04.30 09:20:52 LOG6[5]: No peer certificate received 2018.04.30 09:20:52 LOG6[5]: Negotiated TLSv1.2 ciphersuite ECDHE-RSA-AES128-GCM-SHA256 (128-bit encryption) 2018.04.30 09:20:52 LOG7[5]: Compression: null, expansion: null 2018.04.30 09:20:52 LOG6[5]: Read socket closed (read hangup) 2018.04.30 09:20:52 LOG7[5]: Sending close_notify alert 2018.04.30 09:20:52 LOG7[5]: TLS alert (write): warning: close notify 2018.04.30 09:20:52 LOG6[5]: SSL_shutdown successfully sent close_notify alert 2018.04.30 09:20:52 LOG6[5]: TLS fd: Connection reset by peer (104) 2018.04.30 09:20:52 LOG6[5]: TLS socket closed (SSL_read) 2018.04.30 09:20:52 LOG7[5]: Sent socket write shutdown 2018.04.30 09:20:52 LOG5[5]: Connection closed: 156 byte(s) sent to TLS, 30 byte(s) sent to socket 2018.04.30 09:20:52 LOG7[5]: Remote descriptor (FD=23) closed 2018.04.30 09:20:52 LOG7[5]: Local descriptor (FD=22) closed 2018.04.30 09:20:52 LOG7[5]: Service [mail2-smtps-submission] finished (4 left)
Это ошибка, которую я получаю от K9-Mail K9-Mail Ошибка
Приложение google mail просто сообщает мне: Ошибка Google Mail
Alpine (клиент smtp командной строки linux) Ошибка клиента Alpine
Какие-нибудь советы от гуру?
С уважением
Из ваших комментариев:
Проблема в том, что ваш почтовый сервер уже настроен с сертификатом SSL и поэтому будет разрешать аутентификацию SMTP только при обнаружении безопасного зашифрованного соединения.
Насколько я могу судить, ваш stunnel-сервер завершает защищенное соединение, которое делает клиент, и устанавливает второе незашифрованное SMTP-соединение с открытым текстом к вашему почтовому серверу.
Затем почтовый сервер отказывается принимать любой запрос аутентификации, сделанный клиентом, потому что, насколько он может определить, в противном случае клиент отправит свое имя пользователя и пароль через небезопасное соединение.
Проблема в том, что stunnel предназначен для преобразования протоколов с открытым текстом в защищенные SSL и наоборот, но то, что вы хотите сделать, требует настройки «человек посередине», при которой вы берете входящее SSL-соединение и создаете исходящее SSL-соединение, которое требует некоторых уловок.
Спасибо HBruijn за то, что указал мне в правильном направлении.
В итоге я сделал следующее, извлеченное из моей конфигурации:
[mail2-smtp]
protocol = smtp
accept = 25
connect = localhost:26
[mail2-smtps]
accept = 465
connect = localhost:26
[mail2-smtp-submission]
protocol = smtp
accept = 587
connect = localhost:26
[mail2-smtp-ssl-client]
protocol = smtp
accept = 26
client = yes
connect = <mail-fqdn>:587
Ключ - это последняя часть, которая устанавливает безопасное соединение с почтовым сервером.