3 Прийом пошти і поштові скриньки
Для переважної більшості людей в даний час реальна система електронної пошти складається з двох різних серверів, що працюють на серверній машині. Один називається SMTP Server, скорочення SMTP означає простий протокол електронної пошти (Simple Mail Transfer Protocol). SMTP server відповідає за вихідну електронну пошту. Інший сервер - це або сервер POP3, або сервер IMAP. кожен з них обробляє вхідну пошту. POP побудований на базі протоколу поштового відділення (Post Office Protocol), а IMAP використовує протокол доступу до інтернет-повідомленнями (Internet Mail Access Protocol). Типовий сервер електронної пошти виглядає приблизно так: Сервер SMTP приймає сигнали по добре відомому порту 25, POP3 - по порту 110, а IMAP використовує порт 143 (подробиці, що стосуються портів, дивіться у статті про те, як працюють Web-сервери). Сервер SMTP Коли користувач надсилає повідомлення електронної пошти, його клієнт електронної пошти для обробки відправлення взаємодіє з SMTP сервером. Для доставки цього повідомлення SMTP сервер хоста користувача може обмінюватися інформацією з іншими SMTP серверами. Припустимо, користувач хоче відправити повідомлення електронної пошти. Припустимо також, що ім'я користувача brain і його обліковий запис знаходиться на howstuffworks.com. Він збирається відправити повідомлення на jsmith@mindspring.com. Користувач застосовує окремий поштовий клієнт типу Outlook Express. При створенні облікового запису на howstuffworks користувач вказав програмі ім'я сервера електронної пошти - mail.howstuffworks.com. Після того, як написано повідомлення і натиснута кнопка Send («Відправити»), відбувається наступне: Outlook Express з'єднується з SMTP сервером на mail.howstuffworks.com по порту 25. Outlook Express обмінюється інформацією з SMTP сервером, вказує йому адресу відправника і адресу одержувача, а також передає тіло повідомлення. SMTP сервер приймає адресу, за якою слід відправити повідомлення (jsmith@mindspring.com) і розбиває його на дві частини: ім'я одержувача (jsmith) та ім'я домену (mindspring.com). Якщо адреса, за якою слід надіслати повідомлення, вказує на користувача, що не знаходиться на howstuffworks.com, сервер SMTP просто передасть повідомлення POP3 серверу на howstuffworks.com, використовуючи маленьку програму під назвою «Агент доставки електронної пошти» (delivery agent). Оскільки одержувач розташовується в іншому домені, SMTP потрібно обмінятися інформацією з цим доменом. SMTP сервер здійснює діалог з сервером доменних імен (Domain Name Server, DNS) (подробиці дивіться у статті про те, як працюють Web-сервери). SMTP сервер запитує: «Можете мені дати IP адреса SMTP сервера для mindspring.com?» DNS у відповідь видає один або більше IP адрес для SMTP сервера (серверів), з яким (и) Mindspring працює. SMTP сервер на howstuffworks.com з'єднується з SMTP сервером на Mindspring через порт 25. Далі відбувається такий же обмін простий текстовою інформацією, як і в разі обміну користувацького клієнта електронної пошти з SMTP сервером для HowStuffWorks, при цьому повідомлення передається на сервер Mindspring. Сервер Mindspring розпізнає, що доменне ім'я для jsmith є на Mindspring, тому він передає повідомлення на POP3 сервер, що знаходиться на Mindspring, а той у свою чергу поміщає повідомлення в поштову скриньку jsmith. Якщо з якоїсь причини SMTP сервер на HowStuffWorks не може зв'язатися з SMTP сервером на Mindspring, повідомлення ставиться в чергу. SMTP сервер на більшості машин використовує для самої пересилання програму під назвою sendmail, тому така черга називається чергою sendmail. Sendmail періодично робить спроби повторно надіслати повідомлення з цієї черги. Ця програма може, наприклад, намагатися відправити повідомлення кожні 15 хвилин. Після закінчення чотирьох годин безуспішних спроб зазвичай користувачеві приходить повідомлення електронної пошти, що повідомляє, що існує деяка проблема. Після п'яти днів, якщо так і не вдалося відправити повідомлення, в більшості конфігурацій передбачено відмову від подальших спроб і повернення електронного листа відправнику в якості невідправленого. SMTP сервер розуміє дуже прості текстові команди типу HELO, MAIL, RCPT і DATA. Ось найпоширеніші команди: HELO - представтесь, вказується IP адреса відправника EHLO - представтесь (вказується IP адреса відправника) і прохання працювати в режимі розширених SMTP команд MAIL FROM: - вказується відправник RCPT TO: - вказується одержувач DATA - серверу вказується, що передається тіло листа (у перших трьох рядках повинні бути адреса одержувача, адреса відправника і тема листа) RSET - перервати виконання поточного процесу з видаленням всіх збережених даних QUIT - завершення сесії HELP - запит у сервера корисної допомоги по командам VRFY - перевірити адресу EXPN - просить сервер підтвердити, що переданий аргумент - це список поштового групи VERB - докладно