Шукати в цьому блозі

понеділок, 7 березня 2016 р.

Тестування SMTP та ESMTP через telnet

SMTP (Simple Mail Transfer Protocol, Простий Протокол Пересилання Пошти) - це протокол, який використовується для пересилання електронної пошти до поштового сервера або з клієнта-комп'ютера, або між поштовими серверами. В IANA для SMTP зареєстрований порт 25. SMTP з'єднання де застосовується SSL шифрування використовують порт 465. Формально SMTP визначений в RFC 821 (STD 10) та покращений RFC 1123 (STD 3) розділ 5. Протокол, який використовується зараз, також відомий як ESMTP і визначений в RFC 2821.

Окрім з'єднань між MTA (Mail Transfer Agent), зі сторони клієнта з'єднатися з smtp-сервером можна як за допомогою налаштованого MUA (Mail User Agent) так і за допомогою telnet на 25/tcp порт. Щоб швидко перевірити чи smtp-сервер взагалі слухає та хоч якось працює останнього цілком достатньо.

Перевіряємо SMTP.
telnet сервер 25
Після того як з'єднання з smtp-сервером буде встановлено і отримаємо привітання, щось на кшталт
220 smtp.server.com, ESMTP
Можна спробувати ввести одна за одною наступні smtp-команди:
HELO localhost
MAIL FROM: <sender@server.com>
RCPT TO: <user1@server.com>
RCPT TO: <user2@server.com>
DATA
From: Sender <sender@server.com>
To: Receiver1 <user1@server.com>
To: Receiver2 <user2@server.com>
Subject: Test SMTP
Content-Type: text/plain

Hi!
Test SMTP.

.
QUIT
Варто зауважити, що якщо ви не є визнаним користувачем smtp-сервера (наприклад, абонентом провайдера до smtp-сервера якого хочете отримати доступ) то smtp-сервер може або не прийняти з'єднання або ж на будь-якому етапі перервати його, якщо таку дію налаштовано задля забезпечення унеможливлювання пересилання спаму.

Іноді, але не завжди, smtp-сервера для своїх користувачів надають можливість надсилати пошту з будь-якої частини Мережі, за умови позитивного проходження аутентифікації. Аутентифікація є розширенням до протоколу SMTP. Для її перевірки попередньо знадобиться виконати дві команди: перша ідентифікую користувача сервера, друга його пароль:
~$ perl -MMIME::Base64 -e 'print encode_base64("sender\@server.com");'
c2VuZGVyQHNlcnZlci5jb20=
~$ perl -MMIME::Base64 -e 'print encode_base64("pa\$\$w0rd");'
cGEkJHcwcmQ=

Після цього можна спробувати поспілкуватися з smtp-сервером і спробувати авторизуватися:
EHLO localhost
AUTH LOGIN
c2VuZGVyQHNlcnZlci5jb20=
cGEkJHcwcmQ=
MAIL FROM: <sender@server.com>
RCPT TO: <user1@server.com>
RCPT TO: <user2@server.com>
DATA
From: Sender <sender@server.com>
To: Receiver1 <user1@server.com>
To: Receiver2 <user2@server.com>
Subject: Test SMTP
Content-Type: text/plain

Hi!
Test Auth.

.
QUIT

Замість AUTH LOGIN до речі можна використовувати й AUTH PLAIN чи, наприклад, AUTH CRAM-MD5, якщо це підтримується сервером і якщо знаєте як цим користуватися.

Варто також зауважити, що у наведених прикладах localhost варто замінити на реальне ім'я своєї системи, а у полях from та to вказувати реальних користувачів, інакше сервер легко може сприйняти вас за спамера і, відповідно, заблокувати відправлення пошти.

Немає коментарів: