Exchange Tips & Tricks – как проверить работоспособность SMTP сервера из командной строки при использовании TLS

Я уже писал о том, как возможно произвести проверку SMTP сервера, если он использует Basic аутентификацию (Exchange 2013 Tips & Tricks – test SMTP server with Basic authentication). Но как можно проверить сервер, если Basic аутентификация доступна только после STARTTLS?

В этом случае можно использовать другой инструмент – OpenSSL (я, например, качал его отсюда — https://indy.fulgan.com/SSL).


Итак, если Exchange сервер требует для Basic аутентификации использование TLS, то при выводе доступных SMTP серверу команд мы не увидим ожидаемый AUTH LOGIN. Как видно на скриншоте – такой метод аутентификации не поддерживается сервером:

image


Теперь, если послать серверу команду STARTTLS, то мы увидим готовность сервера заишфровать соединение:

image


К сожалению, на этом возможности обычной командной строки по работе с TLS заканчиваются.


OpenSSL

Теперь давайте воспользуемся этой утилитой для подклчюения к SMTP серверу.

Команда на подключение будет следующей:

openssl s_client -connect EX2013SRV01:25 -starttls smtp

Ключевое в данной коменда – это последний параметр, который говорит, что необходимо выдать команду STARTTLS для протокола SMTP перед попыткой шифрования сессии.

Результатом этой команды будет подключение к SMTP серверу с использование TLS:

image


Если же теперь мы продолжим TLS сессию как обычную, то мы увидим, что требуемый тип аутентификации (AUTH LOGIN) появился:


image


И далее мы можем спокойно проводить SMTP сессию, имитируя подключение клиента с использованием TLS.


Для наглядности, давайте посмотрим в транспортные логи принимающего коннектора и убедимся, что сессия является зашифрованной.

0,+,,
1,*,SMTPSubmit SMTPAcceptAnySender SMTPAcceptAuthoritativeDomainSender AcceptRoutingHeaders,Set Session Permissions
2,>,"220 EX2013SRV01.E2013.Lab Microsoft ESMTP MAIL Service ready at Tue, 29 Sep 2015 22:57:32 +0300",
3,<,EHLO openssl.client.net,
4,*,SMTPSubmit SMTPAcceptAnySender SMTPAcceptAuthoritativeDomainSender AcceptRoutingHeaders,Set Session Permissions
5,>,250-EX2013SRV01.E2013.Lab Hello [10.200.0.10],
6,>,250-SIZE 37748736,
7,>,250-PIPELINING,
8,>,250-DSN,
9,>,250-ENHANCEDSTATUSCODES,
10,>,250-STARTTLS,
11,>,250-X-ANONYMOUSTLS,
12,>,250-AUTH NTLM,
13,>,250-X-EXPS GSSAPI NTLM,
14,>,250-8BITMIME,
15,>,250-BINARYMIME,
16,>,250-CHUNKING,
17,>,250 XRDST,
18,<,STARTTLS,
19,>,220 2.0.0 SMTP server ready,
20,*,,Sending certificate
21,*,CN=EX2013SRV01,Certificate subject
22,*,CN=EX2013SRV01,Certificate issuer name
23,*,4B4A6239194812884D4C04EE4B57D98B,Certificate serial number
24,*,DA619D2339DF87D4FB315D873E031CAAFA2C643D,Certificate thumbprint
25,*,EX2013SRV01;EX2013SRV01.E2013.Lab,Certificate alternate names
26,*,,"TLS protocol SP_PROT_TLS1_2_SERVER negotiation succeeded using bulk encryption algorithm CALG_AES_256 with strength 256 bits, MAC hash algorithm CALG_SHA_384 with strength 384 bits and key exchange algorithm CALG_ECDHE with strength 384 bits"
27,<,ehlo me,
28,*,,Client certificate chain validation status: 'EmptyCertificate'
29,*,,TlsDomainCapabilities='None'; Status='NoRemoteCertificate'
30,*,,TlsDomainCapabilities='None'; Status='NoRemoteCertificate'
31,*,SMTPSubmit SMTPAcceptAnySender SMTPAcceptAuthoritativeDomainSender AcceptRoutingHeaders,Set Session Permissions
32,>,250-EX2013SRV01.E2013.Lab Hello [10.200.0.10],
33,>,250-SIZE 37748736,
34,>,250-PIPELINING,
35,>,250-DSN,
36,>,250-ENHANCEDSTATUSCODES,
37,>,250-AUTH NTLM LOGIN,
38,>,250-X-EXPS GSSAPI NTLM,
39,>,250-8BITMIME,
40,>,250-BINARYMIME,
41,>,250-CHUNKING,
42,>,250 XRDST,
43,<,quit,
44,>,221 2.0.0 Service closing transmission channel,
45,-,,Local

Выделенная часть (синим) означает, что сессия успешно зашифрована.

Читайте также:

Добавить комментарий