У дитинстві при отриманні в подарунок нової іграшки, напевно, у багатьох виникало пекуче бажання розібрати її, подивитися, що там всередині, дізнатися, як вона працює. І чим дорожче, складніше була іграшка, тим сильніше було таке бажання. У деяких з віком ця риса характеру не зникла.
У цій статті ми "розберемо на частини" електронну пошту. Дійсно, для роботи з нею зовсім не обов'язкові поштові програми, вони просто роблять весь процес комфортніше. Поштові протоколи прості і розраховані радше на людину, ніж на комп'ютер, тому вони легко реалізуються незалежно від платформи і обладнання.
Частина 1 - Формат листа
Існує множина не стандартизованих полів заголовка. Вони починаються з символу X. Це можуть бути такі поля, як X-Mailer: - поштова програма відправника; X-MSMail-Priority :. X-Priority: - пріоритет (важливість) листи і т.д. Ви також можете придумати і використовувати будь-який своє поле, що починається з X-.
Ось приклад звичайного текстового листи:
From: "Tester"
Частина 2 - Отримання пошти
Електронні листи можна отримувати по протоколу POP3 (Post Office Protocol - Version 3). Команди протоколу POP3 складаються зазвичай з 4 букв. Після кожної команди сервер видає відповідь + OK в разі нормального завершення і -ERR в разі помилки. За роботу POP3 відповідає 110 порт.
Для спілкування з поштовим сервером нам знадобиться програма telnet, яка є в складі будь-якої версії Windows. Отже, запускаємо "Пуск" - "Виконати" - набираємо telnet <имя_сервера> <порт>. наприклад:
telnet ezmail.ru 110
Відразу після підключення сервер видасть рядок привітання. Він представився, тепер, згідно з правилами хорошого тону, треба представиться нам. Для цього використовується пара команд USER і PASS. приклад:
USER <ваш логин>
PASS <ваш пароль>
Відразу за відповіддю + OK слідують кількість листів і їх загальний розмір. Для отримання списку листів потрібно ввести команду LIST. В результаті сервер видасть список листів із зазначенням розміру кожного листа. На сервері листи розрізняються за допомогою спеціального ідентифікатора. Як і у всіх багаторядкових відповідях POP3, в кінці списку знаходиться рядок з однієї тільки точкою.
Тепер для звернення до будь-якого конкретного листа ми повинні використовувати його ідентифікатор. Для роботи з листами використовуються команди RETR. DELE і TOP. Команда RETR використовується для отримання листа з сервера. В якості єдиного параметра їй передається ідентифікатор листи, який видала команда LIST.
+OK 417 bytes for admin
From: "Test"
X-Mailer: Microsoft Internet Mail 4.70.1155
Content-Type: text / plain; charset = KOI8-R
Команда DELE використовується, щоб позначити лист для видалення (фізично видалення відбувається при завершенні поштової сесії). Єдиний параметр цієї команди - ідентифікатор листи.
Команда TOP застосовується для тих випадків, коли цілком отримувати лист не треба, достатньо лише перших рядків. Це може використовуватися, наприклад, для фільтрації спаму у заголовках листів, без скачування листи цілком. Перший аргумент команди TOP - це ідентифікатор листи, а другий - кількість рядків тіла листи, які повинні бути отримані разом з заголовком.
Ну і остання команда POP3-протоколу, яка нам знадобиться - це QUIT. Вона сигналізує серверу про завершення поштової сесії. Прийнявши її, сервер завершує з'єднання.
Ось приклад типової поштової сесії по POP3-протоколу:
+OK POP3 server ready
+OK 425 bytes for admin
Для отримання пошти використовують також більш складний протокол IMAP4 (Internet Message Access Protocol - version 4 rev1), але його розгляд не входить в рамки даної статті.
Частина 3 - Відправка пошти
Після встановлення з'єднання SMTP-сервер представляється нам (220 код). Логічно, що ми повинні також представитися йому. Для цього використовується команда HELO. Єдиним її аргументом є ім'я Вашого комп'ютера. Тобто Ви говорите: "Привіт, я - test.kirov.ru".
220-Use of this system for the delivery of UCE (a.k.a. SPAM), or any other
220-message without the express permission of the system owner is prohibited.
220 Use of this system for third party relaying is prohibited.
250 proxy.kirov.ru Hello test.kirov.ru [167.15.230.25], pleased to meet you
MAIL FROM: [email protected]
Далі необхідно вказати одержувача повідомлення. Для цього використовуємо команду RCPT TO :. Якщо одержувачів декілька, то команда RCPT вводиться кілька разів.