Відправлення листа з Telnet з SMTP авторизацією

У деяких випадках з метою тестування або діагностики роботи пошти, поштової адміністратору потрібно перевірити відправку листів через свої сервера Exchange (і не тільки) з певних хостів. У тому випадку, якщо сервер не вимагає авторизації (open-relay сервер), відправити пошту можна з командного рядка telnet. Однак в більшості випадків поштові сервера для відправки пошти вимагають авторизації. У цьому прикладі ми покажемо, як в консолі telnet виконати аутентифікацію типу AUTH LOGIN на SMTP сервері і відправити лист.

AUTH LOGIN - в термінології Exchange - це базова аутентифікація, коли ім'я і пароль користувача передаються по мережі в закодованому за алгоритмом base64 вигляді. На більшості внутрішніх серверах Exchange адміністраторів не відключають Basic Authentication. Перевірити її підтримку можна в налаштуваннях приймає коннектора.

Примітка. Звертаємо вашу увагу що зловмисник при доступі до каналу зв'язку може легко перехопити і розшифрувати закодовані за Base64 облікові дані користувача. Тому цей спосіб авторизації рекомендується використовувати виключно в приватних корпоративних мережах.

Для авторизації на поштовому сервер з за допомогою AUTH LOGIN, нам потрібно перетворити ім'я і пароль користувача, з-під якого буде відправлятися лист в формат Base64. Це можна зробити за допомогою скриптів або онлайн сервісів. Я скористатися сайтом https://www.base64encode.org/.

Ім'я користувача:  testuser @contoso.com, в кодуванні Base64 вийшло: dGVzdHVzZXJAY29udG9zby5jb20 =

пароль: $up3RsTr)ng - в Base64 JHVwM1JzVHIpbmc =

Тепер в командою рядку за допомогою Telnet підключаємося на 25 (SMTP) порт нашого поштового сервера (вводяться команди я буду виділяти синім квітів):

telnet mail.contoso.com 25

Якщо це Exchange, він поверне щось на зразок;

220 mail.contoso.com Microsoft ESMTP MAIL Service ready at Thu, 10 Aug 2015 14:25:30 +0300

відрекомендуємося:

ehlo sender.contoso.com

Сервер поверне список підтримуваних типів авторизаций і можливостей. Як ви бачите базова авторизація (AUTH LOGIN) в списку є.

250-mail.contoso.com Hello [192.168.100.15]
250-SIZE 36700160
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-AUTH LOGIN
250-8BITMIME
250-BINARYMIME
250 CHUNKING

Повідомляємо SMTP сервера, що ми хочемо авторизуватися за допомогою наявної облікового запису:

AUTH LOGIN

Сервер повинен відповісти:
334 VXNlcm5hbWU6

Тепер вставляємо ім'я користувача в форматі Base64, яке ми закодували раніше:
dGVzdHVzZXJAY29udG9zby5jb20 =

Сервер повинен відповісти:

334 UGFzc3dvcmQ6.

Тепер пора вставити пароль в форматі Base64:
JHVwM1JzVHIpbmc =

Якщо ім'я і пароль користувача вірні, сервер відповість.
235 2.7.0 Authentication successful

Якщо ні:

535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6

Тепер можна заповнити стандартні поля листи:

mail from: [email protected]
250 2.1.0 Sender OK
rcpt to: [email protected]
250 2.1.5 Recipient OK
data
354 Start mail input; end with .
from: TestUserovich
to: TheAdmin
Subject: Test BASE SMTP Authenticated via Telnet
This is test
.
250 2.6.0 [InternalId = 6384384] Queued mail for delivery

QUIT

221 2.0.0 Closing connection.
Connection closed by foreign host.

На цьому все, тестовий лист має успішно доставила в ящик одержувача.