- •Тема 1. Мережеві операційні системи, ос FreeBsd
- •Контрольні питання
- •Література
- •Тема 2. Ядро ос FreeBsd і управління програмним забезпеченням
- •Література
- •Тема 3. Мережева підсистема FreeBsd
- •Література
- •Тема 4. Маршрутизація трафіку в ос FreeBsd
- •Література
- •Тема 5. Динамічне налаштування мережевих інтерфейсів
- •Література
- •Тема 6. Засоби фільтрації трафіку
- •Література
- •Тема 7. Трансляція мережевих адрес
- •Література
- •Тема 8. Служба доменних імен
- •Література
- •Тема 9. Поштові служби. Протоколи smtp, pop3
- •Література
- •Тема 10. Протокол imap
- •Література
- •Тема 11. Обмін файлами у мережах. Протокол ftp
- •Література
- •Тема 12. Обмін файлами у мережах. Nfs, smb, BitTorrent
- •Література
- •Тема 13. Веб-сервер на основі ос FreeBsd
- •Література
- •Тема 14. Проксі –сервер. Сервіси моніторингу
- •Література
- •Тема 15. Захищені віртуальні канали. Стек протоколів ipSec
- •Література
Література
P. Mockapetris. RFC-1034. DOMAIN NAMES - CONCEPTS AND FACILITIES. ISI, 1987. (http://www.ietf.org/rfc/rfc1034.txt?number=1034)
P. Mockapetris. RFC-1035. DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION. ISI, 1987. (http://www.ietf.org/rfc/rfc1035.txt?number=1035)
H.Eidnes, G. de Groot, P. Vixie. RFC-2317. Classless IN-ADDR.ARPA delegation. 1998. (http://www.ietf.org/rfc/rfc2317.txt?number=2317)
Альбитц П., Ли К.. DNS и BIND. - Пер. с англ. - СПб: Символ-Плюс, 2002. - 696 с.
Документация по BIND 9. Справочное руководство системного администратора. (http://www.nominum.com/resources/documentation/Bv9ARM.pdf)
Тема 9. Поштові служби. Протоколи smtp, pop3
Принцип організації електронної пошти в мережі Інтернет
Електронна пошта (англ. email, e-mail, від англ. Electronic mail) – технологія і надані нею послуги з пересилки і отримання електронних повідомлень (званих «листи» або «електронні листи») за розподіленої (у тому числі глобальної) комп'ютерної мережі (див. рисунок 9.1).
Електронна пошта по складу елементів і принципу роботи практично повторює систему звичайної (паперової) пошти, запозичуючи як терміни (пошта, лист, конверт, вкладення, ящик, доставка та інші), так і характерні особливості – простоту використання, затримки передачі повідомлень, достатню надійність і в той же час відсутність гарантії доставки.
Рисунок 9.1 – Типовий інтерфейс програми-клієнта електронної пошти Thunderbird
Електронною поштою можна надсилати не лише текстові повідомлення, але й документи, графіку, аудіо-відеофайли, програми тощо. Через електронну пошту можна отримати послуги інших сервісних мереж.
Електронна пошта – типовий сервіс відкладеного зчитування (off-line). Після відправлення повідомлення, як правило, у вигляді звичайного тексту, адресат отримує його на свій комп'ютер через деякий період часу, і знайомиться з ним, коли йому буде зручно.
Електронна пошта схожа на звичайну пошту. Звичайний лист складається із конверта, на якому зазначена адреса отримувача і стоять штампи поштових відділень шляху слідування, та вмісту – власне листа. Електронний лист складається із заголовків, які містять службову інформацію (про автора листа, отримувача, шлях проходження листа), які служать, умовно кажучи, конвертом, та власне вміст самого листа. За аналогією зі звичайним листом, відповідним методом можна внести в електронний лист інформацію якого-небудь іншого роду, наприклад, фотографію тощо. Як і у звичайному листі можна поставити свій підпис. Звичайний лист може не дійти до адресата або дійти з запізненням, аналогічно і електронний лист. Звичайний лист доволі дешевий, а електронна пошта – найдешевший вид зв'язку.
Отже, електронна пошта повторює переваги (простоту, дешевизну, можливість пересилання нетекстової інформації, можливість підписати і зашифрувати лист) та недоліки (негарантований час пересилки, можливість доступу для третіх осіб під час пересилки, неінтерактивність) звичайної пошти. Проте у них є і суттєві відмінності. Вартість пересилки звичайної пошти у значній мірі залежить від того, куди вона повинна бути доставлена, її розміру та типу. У електронної пошти такої залежності або немає, або вона досить невідчутна. Електронний лист можна шифрувати та підписувати більш надійніше та зручніше, ніж лист на папері – для останнього, власне, взагалі не існує загальноприйнятих засобів шифровки. Швидкість доставки електронних листів набагато вища, ніж паперових, та мінімальний час проходження незрівнянно менший. Загалом в залежності від розміру листа та швидкості каналу зв'язку доставка електронного листа триває в середньому від кількох секунд до кількох хвилин. Щоправда, можуть бути затримки через збої в поштових серверах.
На діаграмі (див. рисунок 9.2) показано типову послідовність подій, що відбуваються, коли Аліса відправляє листа з допомогою поштової програми (MUA). Вона вводить e-mail адресата та натискає кнопку «відправити».
Рисунок 9.2 – Принцип роботи електронної пошти
Її поштовий клієнт форматує повідомлення в спеціальний формат та відправляє по протоколу SMTP на місцевий сервер обміну пошти (MTA), в цьому випадку smtp.a.org, її інтернет-провайдера.
Сервер обміну пошти отримує адресу призначення з даних протоколу SMTP (а не з шапки листа), в цьому випадку, це bob@b.org. Адреса скрині для отримання електронних листів це рядок localpart@exampledomain. Фрагмент перед знаком @ називають локальною частиною адреси, зазвичай, вона збігається з іменем користувача отримувача, а фрагмент після знаку @ називають доменним іменем. Сервер передачі листів використовує доменне ім'я для визначення повного доменного імені сервера обміну листами в доменній системі імен (DNS).
DNS сервер домену b.org, ns.b.org, надсилає у відповідь МХ записи в яких перелічено сервери обміну пошти цього домену, в цьому випадку mx.b.org, сервер інтернет-провайдера Боба.
smtp.a.org відправляє лист mx.b.org по протоколу SMTP, який кладе його в скриню користувача bob.
Боб натискає кнопку «отримати повідомлення» в поштовому клієнті, який отримує листи з сервера по протоколу Post Office Protocol (POP3).
Вперше можливість роботи багатьох користувачів на одному комп'ютері була продемонстрована у 1961 у Массачусетському технологічному інституті, де була створена Сумісна система спільного часу (CTSS). Користувачі отримали можливість входити в систему комп'ютера IBM 7094 через віддалені телефонні термінали і зберігати свої дані на твердому диску.
У 1965 році співробітники Массачусетського технологічного інституту (MIT) Ноель Моріс і Тому Ван Вабив написали програму MAIL для операційної системи CTSS (Compatible Time-sharing System), встановлену на комп'ютері IBM 7090/7094.
Загальний розвиток електронної пошти йшов через розвиток локальної взаємодії користувачів на системах, що розраховані на багато користувачів. Користувачі могли, використовуючи програму mail (або її еквівалент), пересилати один одному повідомлення у межах одного мейнфрейма (великого комп'ютера). Наступним кроком стала можливість переслати повідомлення користувача на інші машини – для цього використовувалася ім'я машини та ім'я користувача на машині. Адреса могла записуватися у вигляді foo!joe (користувач joe на комп'ютері foo).
Третій крок для становлення електронної пошти відбувся після появи можливості передачі листів через третій комп'ютер. У разі використання UUCP-адреса користувача включала маршрут до користувача через декілька проміжних машин (наприклад, gate1!gate2!foo!joe – лист для joe через машину gate1, gate2 на машину foo). Недоліком такої адресації було те, що відправникові (або адміністраторові машини, на якій працював відправник) необхідно було знати точну дорогу до машини адресата.
Після появи розподіленої глобальної системи імен DNS, для вказівки адреси стали використовуватися доменні імена – user@example.com – користувач user на машині example.com. Одночасно з цим відбувалося переосмислення поняття «На машині»: для пошти стали використовуватися виділені сервери, на які не мали доступу звичайні користувачі (лише адміністратори), а користувачі працювали на своїх машинах, при цьому пошта приходила не на робочі машини користувачів, а на поштовий сервер, звідки користувачі забирали свою пошту за різними мережевими протоколами (серед найпоширеніших на даний момент – POP3, IMAP, MAPI, веб-інтерфейси). Одночасно з появою DNS була продумана система резервування маршрутів доставки пошти, а доменне ім'я у поштовій адресі перестало бути ім'ям конкретного комп'ютера і стало просто фрагментом поштової адреси. За обслуговування домена можуть відповідати багато серверів (можливо, фізично розміщені на різних континентах і у різних організаціях), а користувачі з одного домена можуть не мати між собою нічого спільного (особливо подібне характерне для користувачів безкоштовних серверів електронної пошти).
Рисунок 9.3 – Текстовий інтерфейс програми mail
Крім того, існували та інші системи електронної пошти (деякі з них існують і зараз), наприклад: Netmail у мережі Фідонет, X.400 у мережах X.25Шаблон:Уточнити. Доступ до них з мережі Інтернет і назад здійснюється через поштовий шлюз. Для маршрутизації пошти в мережах X.25 у DNS передбачений спеціальний ресурсний запис з відповідною назвою X25 (код 19).
Функціонування електронної пошти побудовано на принципі клієнт-сервер, стандартному для більшості мережевих сервісів. Для обміну листами з поштовим сервером, потрібна спеціальна програма-клієнт. Існує багато різних програм-клієнтів електронної пошти, які можуть відрізнятися окремими функціями, можливостями та інтерфейсом, в тому числі й такі, що працюють на сервері (в режимі on-line). Проте загальні функції у більшості пакетів однакові. До них можна віднести:
підготовка тексту;
імпорт файлів-додатків;
відправка листа;
перегляд і збереження кореспонденції;
знищення кореспонденції;
підготовка відповіді;
коментування і пересилка інформації;
експорт файлів-додатків.
До популярних поштових програм-клієнтів відносять:
Eudora Mail
Evolution
KMail
Mozilla Mail
Mozilla Thunderbird
Netscape Mail
Novell GroupWise
Opera Mail (M2)
Outlook
Outlook Express
TheBat!
Сучасний пакет програм електронної пошти має добре організований інтерфейс користувача, який не потребує багато часу і зусиль для засвоєння, та звичайно забезпечує такі додаткові функції:
ідентифікація власника поштової скриньки;
автоматичне приєднання підпису;
адресні книги;
перевірка орфографії;
можливість створення поштових скриньок різного призначення;
шифрування/дешифрування повідомлень;
робота у автономному (off-line) режимі;
фільтрацію/маршрутизацію повідомлень;
автоматична відправка відповіді про тимчасову відсутність отримувача або автоматична переадресація листа на іншу адресу електронної пошти.
Формат поштових адрес
В загальному випадку адреса електронної пошти складається з трьох частин і виглядає приблизно так:
user@computer.site.ua
Де: @ – спеціальний символ притаманний адресам електронної пошти, відділяє ім`я комп`ютера від імені користувача. user – ім`я користувача. Властиво, назва поштової скриньки, яка зареєстрована на поштовому сервері на певну особу чи організацію. computer.site.ua – доменне ім`я комп`ютера (ім`я під яким комп`ютер зареєстрований в Інтернеті) на якому запущено поштовий сервер.
Кожен лист електронної пошти складається з двох частин – заголовків та тіла листа, подібно як звичайний лист складається з конверта та властиво листа.
Заголовки листа, складаються багатьох полів, більшість з яких містять службову інформацію, нецікаву для пересічного користувача. Звичайно поштові програми-клієнти за замовчуванням показують лише декілька основних полів: To:, From:, Date:, Subject:, Cc:, Bcc:, і Attachments:. Поля To:, Subject:, Cc:, і Bcc: можуть бути безпосередньо відредаговані. Для того щоб відправити лист обов`язково заповнити поле To: і бажано поле Subject:. Всі решта поля можна залишити порожніми. Для переміщення курсору між полями використовуйте клавішу Tab або клацніть мишкою на потрібному полі. При введенні інформації в поле використовуйте стандартні засоби редагування тексту, доступні в меню Edit (редагувати). Нижче описані основні поля заголовку листа:
To: (кому). Електронна адреса одержувача або визначений Вами псевдонім (nickname). Можна відправити один лист зразу на декілька адрес, в цьому випадку різні адреси повинні розділятися комами. Якщо лист прийшов Вам то в полі To: повинна бути Ваша адреса. From: (від кого). Електронна адреса відправника, деколи ним може бути не людина, а програма-робот. Date:(дата). Точний час та дата відправлення листа. Subject: (тема). Невеликий текст, що пояснює зміст Вашого листа. Це поле можна залишити порожнім, що, однак, не рекомендується з міркувань етикету. Cc: (копії). E-mail адреса або псевдонім людини, якій буде відправлена копія Вашого листа. Можна писати декілька адрес через кому. Bcc: (приховані копії). Адресати, перераховані в полях Cc: та Bcc: отримають копію листа. Проте, на відміну від адресатів, перерахованих в Cc:, адресати, які були в полі Bcc: не будуть видимі в заголовках отриманого листа. Це корисно, тоді коли Ви хочете послати комусь копію листа так, щоб інші одержувачів не знали про це. Можна писати декілька адрес через кому. Attachments: (приєднання). Список файлів, що будуть послані разом з листом. Це поле не можна редагувати вручну.
Бiльшiсть програм електронної пошти забезпечує пересилку файлів як у коді ASCII (текстовий формат), так i у двійковому форматі. Найменшою одиницею iнформацiї, якою оперує комп'ютер є бiт, який є числом 0 або 1. Для кодування iнформацiї 8 бiтiв об'єднуються в один байт, в результаті чого є 256 комбiнацiй послідовностей 0 та 1.
Код ASCII (Amerіcan Standаrd Code for Information Interchange) – американський стандартний код для обміну iнформацiєю, це таблиця, у якiй кожну букву замінює вiдповiдний числовий код. Наприклад, послiдовнiсть 01000001 означає букву "А". Цей код можуть читати всi комп'ютери. Проте, вiн дозволяє таким чином записувати тiльки текстову інформацію. Крiм того, вiн не має спецiальних знакiв для символів, якi притаманнi нацiональним мовам.
Файли в двійковій системі дозволяють зберегти окрім чистого тексту таку додаткову iнформацiю, як форматування, характеристики шрифта, графічну інформацію, тощо.
Якщо Ви бажаєте пiдготувати листа до відправки його електронною поштою, потрібно користуватися файлами ASCII, крім тих випадків, коли ви повністю впевнені в тому, що Ваш адресат має вiдповiдне програмне забезпечення щоб прочитати файл.
Додатки. Хоча кінцевий користувач може сприймати додатки як окремі файли, насправді (наприклад, це відноситься до додатків поштових повідомлень Інтернету) вони оформлюються як частина поштового повідомлення. Найпопулярнішим форматом додатку є формат MIME (Multipurpose Internet Mail Extension). Він перетворює двійковий файл у текст, вiдмiчає маркерами його початок i кінець. Маркер початку включає ім’я файлу i тип додатку (аудіо, код додатку, код програми, текст тощо). При одержанні повідомлення, поштовий пакет знов перетворює текст у двійковий файл, зберігаючи ім’я (існує можливість змінити його), розмір файлу, піктограму (вона вiдповiдна до його типу).
Використовуються також ще два формати додатків, якi аналогiчнi MIME. Формат BinHex популярний у середовищі Macintosh, але слабо підтримується Windows та Unix та формат uuencode/uudecode (спосіб кодування розповсюджений у середовищі Unix) сумісний з більшістю сучасних поштових пакетів.
Якщо Ви маєте вихід в Інтернет, то можете надсилати електронну пошту не тiльки адресатам Інтернету. Багато інших мереж у свiтi надає своїм користувачам можливість надсилати поштові повідомлення. Ці системи, як правило, працюють з протоколами, якi вiдрiзняються від TCP/IP. Тому кожне повідомлення коли переходить із однієї системи до іншої, проходить через шлюз, де здiйснюйться перевід даних у формат, який ця система використовує.
Протоколи для обміну повідомленнями
В Інтернеті для роботи з електронною поштою використовуються протоколи SMTP, POP та IMAP.
Протокол SMTP (Simple Mail Transfer Protocol – простий протокол передачі пошти) підтримує передачу повідомлень між різними вузловими комп`ютерами Інтернету. Маючи механізми проміжного зберігання пошти, протокол SMTP допускає використання різних транспортних служб та поштових серверів. Він може працювати навіть в мережах які не підтримують протокол TCP/IP. Протокол SMTP дозволяє групувати повідомлення, які приходять на адресу одного користувача, а також розсилати копії e-mail повідомлення по різних адресах.
Протокол POP (PostOffice Protocol – протокол поштового офісу) дає кінцевому користувачу доступ до надійшовших на його адресу електронних повідомлень. РОР-клієнти при спробі одержання пошти вимагають пароль, що підвищує конфіденційність переписки. На сьогодні актуальна версія протоколу РОР3.
Протокол IMAP (Internet Message Access Protocol – протокол доступу до поштових повідомлень через Інтернет). Програма IMAP-клієнт дає доступ до поштових каталогів на IMAP сервері з будь-якої платформи комп`ютера користувача розташованого будь-де в Інтернеті. Це перспективний новий протокол, основною перевагою протоколу IMAP перед POP-протоколом є можливість використання більше ніж одного комп`ютера для роботи з поштою. Ще одною перевагою є здатність IMAPу до селективного доступу до різних частин листів (наприклад, з поштового сервера на Ваш комп`ютер не буде стягуватися доданий до листа аудіофайл розміром 2 Мб, без Вашої на те згоди). Це дуже важливо для повільних з`єднань (напр. dialup). Сьогодні використовується версія IMAP4.
При неможливості доставки листа адресату, або при виникненні якихось проблем з доставкою лист може повернутися назад до відправника. Кожен лист який повертається містить повідомлення про помилку чи проблеми з доставкою.
Можливі проблеми і способи їх вирішення:
550 ... User unknown – Неправильне ім`я адресата. На вказаному комп`ютері немає такої поштової скриньки (в даному випадку username). Якщо ім`я адресата помилково вказано неправильно - виправити його і відправити ще раз.
550 < user@computer.site.ua >... Host unknown (Name server: computer.site.ua: host not found) – система не знайшла комп'ютер адресата Вашого повідомлення (в даному випадку computer.site.ua). Перевірте правильність написання адреси і відправте знов.
********************************************************
** THIS IS A WARNING MESSAGE ONLY **
** YOU DO NOT NEED TO RESEND YOUR MESSAGE **
********************************************************
451 < user@computer.site.ua >... computer.site.ua: Name server timeout
Warning: message still undelivered after 4 hours
Will keep trying until message is 5 days old
Пошта може знайти комп'ютер, проте, все одно не може доставити повідомлення. Це відбувається за таких причин:
можливо, в мережі є пошкодження;
віддалена система може бути "мертва" через серйозні апаратні проблеми;
конфiгурацiя віддаленої системи може бути зруйнована, нерідко бувають випадки, коли система забуває оповістити про це.
Повідомлення про відмову не означає, що комп'ютер буде недоступний i надалі, апаратні перешкоди можуть бути лiквiдованi. Нема потреби посилати лист ще раз. Поштова служба буде робити спроби доставити Ваш лист адресату що 4 години протягом 5 днів, і лише якщо за цей час на вдасться зв`язатися з віддаленим комп`ютером, поверне цей лист Вам назад з поміткою Network Unreachable.
На кожному вузловому комп'ютері де є поштовий сервер, обов`язково є скринька, яка має ім’я postmaster. Цю пошту читає людина яка відповідає з пошту на даному сервері. Якщо у Вас виникли проблеми, наприклад, з доставкою пошти, Ви можете написати листа до поштового адмiнiстратора відповідного поштового сервера.
При якихось проблемах з поштою в нашому університеті прошу звертатись за адресою: postmaster@vstu.vn.ua.
При зверненні до postmasterа Ви можете очікувати на:
допомогу у пошуку адреси електронної пошти абонента цього поштового сервера;
допомогу в пошуку вiдповiдного шлюзу для пересилки електронної пошти у інші зовнiшнi мережі;
вiдповiднi дії щодо тих, хто порушує правила користування електронною поштою.
Протокол SMTP
Основне завдання протоколу SMTP (Simple Mail Transfer Protocol) полягає в тому, щоб забезпечувати передачу електронних повідомлень (пошту). Для роботи через протокол SMTP клієнт створює TCP з'єднання з сервером через порт 25. Потім клієнт і SMTP сервер обмінюються інформацією поки з'єднання не буде закрито або перервано. Основною процедурою в SMTP є передача пошти (Mail Procedure). Далі йдуть процедури форвардінгу пошти (Mail Forwarding), перевірка імен поштової скриньки і висновок списків поштових груп. Найпершою процедурою є відкриття каналу передачі, а останньою – його закриття.
Електронна пошта представлена поштовим клієнтом (MUA, mail user agent - користувальницький поштову агент) для поштового сервера (MSA, mail submission agent – агент передачі електронної пошти) за допомогою SMTP по TCP-порту 587. Звідти MSA доставляє пошту своїм агентам пересилання повідомлень (MTA, mail transfer agent). Часто ці два агента є просто різними зразками одного і того ж програмного забезпечення, запущеного з різними параметрами на одному пристрої. Локальна обробка може бути проведена як на окремій машині, так і розділена між різними пристроями; в першому випадку залучені процеси мають загальний доступ до файлів, в другому випадку SMTP використовується для пересилання повідомлення внутрішньо, причому кожен хост налаштований на використання наступного пристрою в якості проміжного хоста . Кожен процес - сам по собі MTA, тобто – SMTP-сервер.
Граничний MTA повинен знайти цільової хост. Він використовує систему доменних імен (DNS) для пошуку записів поштової обмінника (mail exchanger - MX) домену одержувача (частина адреси, що знаходиться праворуч від символу @). Повертаємий запис поштового MX містить ім'я цільового хоста. Потім MTA підключається до сервера обміну в якості SMTP-клієнта.
Як тільки мета MX приймає вхідне повідомлення, вона передає його агенту доставки пошти (mail delivery agent – MDA) для локальної доставки повідомлення. MDA передбачає можливість зберігати повідомлення у відповідному форматі поштової скриньки. Прийом пошти, знову ж таки, може бути проведений як кількома, так і одним комп'ютером – зображення показує два найближчих скриньки для кожного випадку. MDA може доставляти повідомлення прямо на зберігання або передавати їх по мережі за допомогою SMTP або будь-яких інших засобів, у тому числі протоколу локальної пересилання пошти (Local Mail Transfer Protocol - LMTP) - похідного від SMTP, призначеного для цієї мети.
Після доставки на локальний поштовий сервер повідомлення зберігається для пакетного пошуку за аутентифицироваться поштовим клієнтам (MUA). Повідомлення витягується додатками кінцевого користувача (поштові клієнти) з використанням Internet Message Access Protocol (IMAP, який полегшує доступ до повідомлень і управляє зберігається поштою), або ж за допомогою Post Office Protocol (POP), який зазвичай використовує традиційний mbox-формат файлів, або фірмові системи на зразок Miscrosoft Exchange/Outlook або Lotus Notes/Domino. Клієнти мережевий пошти можуть використовувати будь-який метод, але протокол пошуку часто не відповідає офіційним стандартам.
SMTP визначає передачу повідомлення, а не його зміст. Таким чином, він задає оболонку повідомлення і її параметри (такі, як відправник оболонки), але не заголовок або тіло самого повідомлення. STD 10 і RFC 5321 визначають SMTP (оболонку), в той час як STD 11 і RFC 5322 – повідомлення (заголовок і тіло), офіційно званий форматом поштового повідомлення (Internet Message Format).
Команди SMTP вказують серверу, яку операцію хоче справити клієнт. Команди складаються з ключових слів, за якими слід один або більше параметрів. Ключове слово складається з 4-х символів та розділено від аргументу одним або декількома пропусками. Кожна командний рядок закінчується символами CRLF. Ось синтаксис усіх команд протоколу SMTP (SP – пробіл):
HELO <SP> <domain> <CRLF>
MAIL <SP> FROM: <reverse-path> <CRLF>
RCPT <SP> TO: <forward-path> <CRLF>
DATA <CRLF>
RSET <CRLF>
SEND <SP> FROM: <reverse-path> <CRLF>
SOML <SP> FROM: <reverse-path> <CRLF>
SAML <SP> FROM: <reverse-path> <CRLF>
VRFY <SP> <string> <CRLF>
EXPN <SP> <string> <CRLF>
HELP <SP> <string> <CRLF>
NOOP <CRLF>
QUIT <CRLF>
Звичайна відповідь SMTP сервера складається з номера відповіді, за яким через пробіл слід додатковий текст. Номер відповіді служить індикатором стану сервера.
Відправка пошти – насамперед підключаємося до SMTP сервера через порт 25 (для перевірки, можна це зробити через клієнт telnet smtp.mail.ru 25). Тепер треба передати серверу команду HELLO і наш IP адреса:
C: HELLO 195.161.101.33
S: 250 smtp.mail.ru is ready
При відправці пошти передаємо деякі потрібні дані (відправник, одержувач і сам лист):
C: MAIL FROM: <drozd> вказуємо відправника
S: 250 OK
C: RCPT TO: <drol@mail.ru> вказуємо одержувача
S: 250 OK
Вказуємо серверу, що будемо передавати зміст листа (заголовок і тіло листа).
C: DATA
S: 354 Start mail input; end with <CRLF>. <CRLF>
Передачу листа необхідно завершити символами CRLF.CRLF
S: 250 OK
C: From: Drozd <drozd@mail.ru>
C: To: Drol <drol@mail.ru>
C: Subject: Hello
Між заголовком листа і його текстом не одна пара CRLF, а дві.
C: Hello Drol!
C: You will be die on next week!
Закінчуємо передачу символами CRLF.CRLF.
S: 250 OK
Тепер завершуємо роботу, відправляємо команду QUIT:
S: QUIT
C: 221 smtp.mail.ru is closing transmission channel
Інші команди:
SEND – використовується замість команди MAIL і що показують, що пошта повинна бути доставлена на термінал користувача.
SOML, SAML – комбінації команд SEND або MAIL, SEND і MAIL відповідно.
RSET – вказує серверу перервати виконання поточного процесу. Всі збережені дані (відправник, одержувач та ін.) видаляються. Сервер повинен відправити позитивну відповідь.
VRFY – просить сервер перевірити, чи є переданий аргумент ім'ям користувача. У разі успіху сервер повертає повне ім'я користувача.
EXPN – просить сервер підтвердити, що переданий аргумент – це список поштового групи, і якщо так, то сервер виводить членів цієї групи.
HELP – запитує у сервера корисну допомогу про переданої в якості аргументу команді.
NOOP – на виклик цієї команди сервер повинен позитивно відповісти. NOOP нічого не робить і ніяк не впливає на вказані до цього дані.
Протокол POP3
Перед роботою через протокол POP3 сервер прослуховує порт 110. Коли клієнт хоче використовувати цей протокол, він повинен створити TCP з'єднання з сервером. Коли з'єднання встановлено, сервер відправляє запрошення. Потім клієнт і POP3 сервер обмінюються інформацією поки з'єднання не буде закрито або перервано.
Команди POP3 складаються з ключових слів, за деякими слід один або більше аргументів. Всі команди закінчуються парою CRLF (у Visual Basic константа vbCrLf). Ключові слова й аргументи складаються з друкованих ASCII символів. Ключове слово і аргументи розділені одиночним пропуском. Ключове слово складається від 3-х до 4-х символів, а аргумент може бути довжиною до 40-ка символів.
Відповіді в POP3 складаються з індикатора стану і ключового слова, за яким може слідувати додаткова інформація. Відповідь закінчується парою CRLF. Існує тільки два індикатори стану: "+ OK" - позитивний і "-ERR" - негативний.
Відповіді на деякі команди можуть складатися з декількох рядків. У цих випадках кожен рядок розділена парою CRLF, а кінець відповіді закінчується ASCII символом 46 (".") І парою CRLF.
POP3 сесія складається з декількох режимів. Як тільки з'єднання з сервером було встановлено і сервер відправив запрошення, то сесія переходить в режим AUTHORIZATION (Авторизація). У цьому режимі клієнт повинен ідентифікувати себе на сервері. Після успішної ідентифікації сесія переходить в режим TRANSACTION (Передача). У цьому режимі клієнт запитує сервер виконати певні команди. Коли клієнт відправляє команду QUIT, сесія переходить в режим UPDATE. У цьому режимі POP3 сервер звільняє всі зайняті ресурси і завершує роботу. Після цього TCP з'єднання закривається.
У POP3 сервера може бути INACTIVITY AUTOLOGOUT таймер. Цей таймер повинен побут, принаймні, з інтервалом 10 хвилин. Це означає, що якщо клієнт і сервер не взаємодіють один з одним, сервер автоматично перериває з'єднання і при цьому не переходить в режим UPDATE.
Авторизація. Як тільки буде встановлено TCP з'єднання з POP3 сервером, він відправляє запрошення, що закінчується парою CRLF, наприклад:
S:+OK POP3 server ready
Тепер POP3 сесія знаходиться в режимі AUTHORIZATION. Клієнт повинен ідентифікувати себе на сервері, використовуючи команди USER і PASS. Спочатку треба відправити команду USER, після якої в якості аргументу слід ім'я користувача. Якщо сервер відповідає позитивно, то тепер необхідно відправити команду PASS, за якою слідує пароль. Якщо після відправлення команди USER або PASS сервер відповідає негативно, то можна пробувати авторизуватися знову або вийти з сесії за допомогою команди QUIT. Після успішної авторизації сервер відкриває і блокує maildrop (поштова скринька). У відповіді на команду PASS сервер повідомляє скільки повідомлень знаходиться в поштовій скриньці і передає їх загальний розмір. Тепер сесія знаходиться в режимі TRANSACTION. Підіб'ємо підсумки з командами:
Команда: USER [ім'я]
Аргументи: [ім'я] – рядок, що вказує ім'я поштової скриньки
Опис: Передає серверу ім'я користувача.
Можливі відповіді:
+OK name is a valid mailbox
-ERR never heard of mailbox name
Приклади:
C: USER MonstrVB
S:+OK MonstrVB is a real hoopy frood
...
C: USER MonstrVB
S:-ERR sorry, no mailbox for frated here
Команда: PASS [пароль]
Аргументи: [пароль] - пароль для поштової скриньки
Опис: Передає серверу пароль поштової скриньки.
Можливі відповіді:
+OK maildrop locked and ready
-ERR invalid password
-ERR unable to lock maildrop
Приклади:
C: USER MonstrVB
S:+OK MonstrVB is a real hoopy frood
C: PASS mymail
S:+OK MonstrVB's maildrop has 2 messages (320 octets)
...
C: USER MonstrVB
S:+OK MonstrVB is a real hoopy frood
C: PASS mymail
S:-ERR maildrop already locked
Команда: QUIT
Аргументи: немає
Опис: Сервер завершує POP3 сесію і переходить в режим UPDATE.
Можливі відповіді:
+OK
Приклади:
C: QUIT
S:+OK dewey POP3 server signing off
Основні команди (Transaction). Після успішної ідентифікації користувача на сервері POP3 сесія переходить в режим TRANSACTION, де користувач може передавати нижче наступні команди. Після кожної з таких команд слідує відповідь сервера. Ось доступні команди в цьому режимі:
Команда: STAT
Аргументи: немає
Опис: У відповідь на виклик команди сервер видає позитивну відповідь "+OK", за яким слід кількість повідомлень в поштовій скриньці і їх загальний розмір в символах. Повідомлення, які помічені для видалення не враховуються у відповіді сервера.
Можливі відповіді:
+OK n s
Приклади:
C: STAT
S: + OK 2 320
Команда: LIST [повідомлення]
Аргументи: [повідомлення] - номер повідомлення (необов'язковий аргумент)
Опис: Якщо був переданий аргумент, то сервер видає інформацію про зазначеному повідомленні. Якщо аргумент не був переданий, то сервер видає інформацію про всі повідомлення, що знаходяться в поштовій скриньці. Повідомлення, помічені для видалення не перераховує.
Можливі відповіді:
+ OK scan listing follows
-ERR no such message
Приклади:
C: LIST
S:+OK 2 messages (320 octets)
S: 1120
S: 2200
S:.
...
C: LIST 2
S:+OK 2200
...
C: LIST 3
S:-ERR no such message, only 2 messages in maildrop
Команда: RETR [повідомлення]
Аргументи: [повідомлення] - номер повідомлення
Опис: Після позитивної відповіді сервер передає зміст повідомлення.
Можливі відповіді:
+ OK message follows
-ERR no such message
Приклади:
C: RETR 1
S: + OK 120 octets
S:
S:.
Команда: DELE
Аргументи: номер повідомлення
Опис: POP3 сервер позначає вказане повідомлення як віддалене, але не видаляє його, поки сесія не перейде в редім UPDATE.
Можливі відповіді:
+ OK message deleted
-ERR no such message
Приклади:
C: DELE 1
S: + OK message 1 deleted
...
C: DELE 2
S:-ERR message 2 already deleted
Команда: NOOP
Аргументи: немає
Опис: POP3 сервер нічого не робить і завжди відповідає позитивно.
Можливі відповіді:
+OK
Приклади:
C: NOOP
S: + OK
Команда: RSET
Аргументи: немає
Опис: Якщо які - то повідомлення були помічені для видалення, то з них знімається ця мітка.
Можливі відповіді:
+OK
Приклади:
C: RSET
S: + OK maildrop has 2 messages (320 octets)
Оновлення. Коли клієнт передає команду QUIT в режимі TRANSACTION, то сесія переходить в режим UPDATE. У цьому режимі сервер видаляє всі повідомлення, помічені для видалення. Після цього TCP з'єднання закривається.
Додаткові POP3 команди. Наступні додаткові команди дають вам велику свободу при роботі з повідомленнями: Команда: TOP [повідомлення] [n] Аргументи: [повідомлення] – номер повідомлення [n] – додатнє число (обов'язковий аргумент) Опис: Якщо відповідь сервера позитивний, то після нього він передає заголовки повідомлення і вказане кіл – у рядків з тіла повідомлення. Можливі відповіді: +OK top of message follows-ERR no such message Приклади: C: TOP 10 січня S: + OK S: <тут POP3 сервер передає заголовки першого повідомлення і перші 10-ть рядків з тіла повідомлення.> S:. ... C: TOP 100 3 S:-ERR no such message Команда: UIDL [повідомлення] Аргументи: [повідомлення] – номер повідомлення (необов'язковий аргумент). Опис: Якщо був вказаний номер повідомлення, то сервер видає унікальний ідентифікатор для цього повідомлення. Якщо аргумент не був переданий, то ідентифікатори перераховуються для всіх повідомлень, крім вибрані для видалення. Можливі відповіді: +OK unique-id listing follows-ERR no such message Приклади: C: UIDL S: + OK S: 1 whqtswO00WBw418f9t5JxYwZ S: 2 QhdPYR: 00WBw1Ph7x7 S:. ... C: UIDL 2 S: + OK 2 QhdPYR: 00WBw1Ph7x7 ... C: UIDL 3 S:-ERR no such message, only 2 messages in maildrop.
Ось приклад простого сеансу з POP3 сервером:
S: <створюємо нове TCP з'єднання c POP3 сервером через порт 110>
S:+OK POP3 server ready
C: USER MonstrVB
S:+OK User MonstrVB is exists
C: PASS mymail
S:+OK MonsrVB's maildrop has 2 messages (320 octets)
C: STAT
S:+OK 2 320
C: LIST
S:+OK 2 messages (320 octets)
S: 1120
S: 2200
S:.
C: RETR 1
S:+OK 120 octets
S:
S:.
C: DELE 1
S:+OK message 1 deleted
C: RETR 2
S:+OK 200 octets
S:
S:.
C: DELE 2
S:+OK message 2 deleted
C: QUIT
S:+OK dewey POP3 server signing off (maildrop empty)
C: <закриваємо з'єднання>
Розгортання поштового серверу на основі ОС FreeBSD
Виконаємо покрокові дії:
1. Встановимо MTA Postfix, в діалоговому меню залишаємо все за замовченням:
# cd /usr/ports/mail/postfix
# make install clean
2. Налаштування Postfix:
Для того, щоб Postfix запускався при завантаженні операційної системи, необхідно додати в файл /etc/rc.conf рядки:
postfix_enable="YES"
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
3. Файли конфігурації Postfix зберігаються в папці /usr/local/etc/postfix. На даному етапі для нас цікаві два файли: main.cf (головний файл конфігурації) і aliases (файл, що описує псевдоніми). У файлі main.cf необхідно змінити наступні значення (докладний опис всіх опцій, які можна задати в даному файлі, приведено в postconf):
myhostname = smtp.zone30.com.ua
mydomain = zone30.com.ua
myorigin = $mydomain
inet_interfaces = all
mydestination = $mydomain
mynetworks = 127.0.0.0/8, 10.18.0.0/16, 192.168.56.0/24
alias_database = hash:/usr/local/etc/postfix/aliases
alias_maps = $alias_database
4 Додавання підтримки аутентифікації SMTP.
4.1 Аутентифікація SMTP, функціонування якої описано в документі RFC-2554, призначена для розмежування доступу користувачів до поштового сервера на підставі їх облікових даних (імен і паролів).
4.2 У першу чергу необхідно встановити Cyrus-SASL2 і Cyrus-SASL2-salauthd з портів:
# cd /usr/ports/security/cyrus-sasl2
# make install clean
# cd ../cyrus-sasl2-saslauthd
# make install clean
4.3 В папці /usr/local/lib/sasl2 міститься два файли конфігурації Cyrus-SASL2: Sendmail.conf (для використання спільно з Sendmail) і smtpd.conf (для використання спільно з Postfix). Нас цікавить другий, вміст якого потрібно замінити на:
cd /usr/local/lib/sasl2
rm Sendmail.conf
touch smtpd.conf
echo “pwcheck_method: saslauthd” >> smtpd.conf
4.4 Таке значення параметра pwcheck_method змушує Cyrus-SASL2 використовувати для аутентифікації Cyrus-SASL2-saslauthd. Для того, щоб Cyrus-SASL2-saslauthd запускався при завантаженні операційної системи і використовував її базу даних паролів, необхідно додати в файл /etc/rc.conf наступні рядки:
saslauthd_enable="YES"
saslauthd_flags="-a getpwent"
4.5 Після настройки Cyrus-SASL2 і Cyrus-SASL2-saslauthd необхідно включити підтримку SASL2 у файлі main.cf:
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $mydomain
broken_sasl_auth_clients = yes
5. Для створення бази синонімів виконаємо команди:
# touch /usr/local/etc/postfix/aliases
# newaliases
FreeBSD підтримує декілька MTA зокрема: Exim, Postfix, Qmail, Sendmail, та інші в тому числі і комерційні. Sendmail в FreeBSD МТА за замовченням, він дуже простий і самій старий з переліку, має деякі проблеми з безпекою. Qmail непоганий сервер але офіційна його розробка вже не проводиться, існують лише сторонні модифікації. Exim і Postfix на даний час є найпопулярнішими МТА для FreeBSD. Exim має дуже гнучку конфігурацію, але не дуже популярне на сильнозавантажених поштових серверах. Для автоматичного встановлення і налаштування повноцінного сервера Postfix з Dovecot IMAP POP3 було створено скрипт http://www.iredmail.org/, що взагалі не повинно створювати проблем при піднятті поштового сервера.
