Simple Mail Transfer Protocol (SMTP) - це стандарт для e-mail-пошти. Спочатку був зафіксований в RFC 821 (1982), останній раз оновлювався в 2008 році з розширеними додаваннями SMTP за RFC 5321 (широко поширеним сьогодні протоколом). Хоча поштові сервери та інші поштові агенти застосовують SMTP для передачі і отримання e-mail-кореспонденції, програмне забезпечення інтерфейсу класу, як правило, використовують SMTP-порти тільки для відправки даних на сервер для ретрансляції. Для отримання повідомлень клієнтські програми зазвичай використовують або IMAP, POP3. Дані протоколи найбільш зручні і затребувані для цих цілей: мають розширений функціонал і широкий спектр можливостей.
Характерні особливості
SMTP-зв'язок між поштовими серверами використовує TCP порт 25. Поштові клієнти часто відправляють вихідні листа на поштовий сервер по порту 587. Незважаючи на те, що застарілі поштові провайдери раніше дозволяють використовувати нестандартний порт 465 для цієї мети.
SMTP-з'єднання, захищені TLS, відомі як SMTPS, можуть бути виконані з використанням технології STARTTLS. Запатентовані системи і системи електронної пошти використовують власні нестандартні протоколи для доступу до поштових скриньок на своїх поштових серверах — всі компанії використовують порти SMTP-сервера, коли надсилання та отримання електронної пошти відбуваються за межами їх власних систем.
Призначення протоколу SMTP
Майже всі дії в Інтернеті стають можливими завдяки протоколам — спеціальними правилами мережного програмного забезпечення, які дозволяють комп'ютеру зв'язуватися з усіма мережами, щоб користувачі могли робити покупки, читати новини, відправляти електронну пошту. Протоколи життєво важливі для повсякденного мережевий діяльності — вони вбудовані в мережеве програмне забезпечення і використовуються за замовчуванням. Протокол SMTP-порту надає набір кодів, які спрощують обмін повідомленнями електронної пошти між серверами (мережний комп'ютер, який обробляє вхідну і вихідну електронну пошту). Це свого роду скорочення, яке дозволяє серверу розбити різні частини повідомлення на категорії, які може зрозуміти інший сервер. Коли користувач відправляє повідомлення, воно перетворюється в рядок тексту, розділені кодовими словами (або цифрами), які визначають призначення кожного розділу.
Технічна термінологія
SMTP — це протокол TCP/IP, що використовується для роботи з e-mail поштою. Проте оскільки він обмежений можливістю відправляти повідомлення в чергу на приймаючій стороні, він зазвичай використовується або з POP3 або IMAP, які дозволяють зберігати дані на сервер і при необхідності завантажувати їх. Іншими словами, зазвичай використовують додаток, яке вибирає SMTP для відправки e-mail і POP3 або IMAP для отримання кореспонденції. В системах Unix sendmail є найбільш широко використовуваним SMTP-сервером електронної пошти. В комерційний пакет Sendmail входить сервер POP3. Microsoft Exchange включає в себе SMTP-сервер і так само може бути налаштований на підтримку POP3. SMTP, як правило, використовується для роботи через інтернет-порт 25. Альтернативою SMTP, яка широко використовується в Європі, є X. 400. Багато поштові сервери тепер підтримують Extended Simple Mail Transfer Protocol (ESMTP), який дозволяє передавати мультимедійні файли в вигляді електронної пошти.
Історія
У 1960-х роках використовувалися різні форми обміну електронними повідомленнями. Користувачі спілкувалися за допомогою систем, створених для конкретних мейнфреймів. Оскільки все більше комп'ютерів ставали взаємопов'язаними, з'явилася необхідність у розробці стандартів, які дозволяють користувачам різних систем відправляти електронну пошту один одному. SMTP виник з цих стандартів, розроблених в 1970-х роках. Подальші реалізації включають FTP Mail Protocol, починаючи з 1973 року. Робота з розвитку тривала в 1970-х рр., поки ARPANET не перейшла в сучасний Інтернет в 1980 році. Потім Джон Постіль запропонував протокол передачі поштових даних.
SMTP почав широко застосовуватися на початку 1980-х рр. У той час, даний протокол був доповненням до Unix для поштової програми Unix Copy Program. SMTP найкраще працює, коли відправляє і приймає машини підключені до Мережі, використовують механізм зберігання та відправки і є прикладами технології push.
Модель обробки пошти
E-mail-пошта відправляється поштовим клієнтом (поштовим агентом користувача, MUA) на поштовий сервер (агент відправлення пошти, MSA) з використанням SMTP на TCP-порт 587. Більшість провайдерів поштових скриньок і раніше дозволяють відправку на традиційний порт 25. MSA доставляє пошту на свій поштовий агент (агент передачі пошти, MTA). Найчастіше ці агенти є екземплярами загального програмного забезпечення, активованого з різними параметрами на одному комп'ютері. Локальна обробка може виконуватися або на одній машині, або розділятися між декількома машинами. Процеси поштового агента на одній машині можуть обмінюватися файлами, але якщо обробка виконується на декількох машинах, вони передають повідомлення між собою, використовуючи SMTP-порт, де кожна машина налаштована на використання наступної машини в якості інтелектуального хоста.
Огляд протоколу
SMTP являє собою текстовий протокол, що орієнтований на з'єднання, в якому відправник пошти спілкується з поштовим одержувачем шляхом видачі командних рядків та надання необхідних даних по надійному впорядкованому каналу потоку даних. Сеанс SMTP складається з команд, створених SMTP-клієнтом (ініціюючим агентом, відправником або передавачем) та відповідними відповідями від SMTP-сервера (агента прослуховування або одержувача). Сеанс може включати в себе нуль або більше SMTP-транзакцій, які складаються з трьох послідовностей команд/відповідей:
MAIL (сервер mail.ru SMTP-порту), щоб встановити зворотну адресу, також званий зворотний шлях. RCPT, щоб встановити одержувача повідомлення. Ця команда може видаватися неодноразово, але один раз для кожного користувача. DATA, щоб сигналізувати початок тексту та його зміст. Даний параметр складається з заголовка і тіла повідомлення, розділеного порожнім рядком. DATA представляє собою групу команд, на яку сервер відповідає двічі: один раз для самої команди DATA, щоб підтвердити, що він готовий прийняти дані, повторно — після закінчення послідовності інформації, щоб прийняти або відхилити всі повідомлення.
Крім проміжного відповіді для DATA, відповідь кожного сервера може бути або позитивним, або негативним (код 2xx). Негативні відповіді можуть бути постійними (коди 5xx) або тимчасовими (коди 4xx). Відхилення — це постійний збій, і клієнт повинен відправити повідомлення відмов на сервер, на який він його отримав. Падіння - це позитивну відповідь, за яким слідує відмова від повідомлення.
Поштові SMTP-порти і їх значення
SMTP — тільки протокол доставки. При звичайному використанні пошта відправляється на цільовий поштовий сервер, наприклад, SMTP-сервер порту mail. Дані направляються на основі цільового сервера, а не окремих користувачів, яким він адресований. Інші протоколи POP або IMAP) спеціально розроблені для використання окремими користувачами, які отримують повідомлення і керують поштовими скриньками. SMTP, POP і IMAP є неприйнятними для протоколами ретрансляції пошти з допомогою комп'ютерів з переривчастою зв'язком. Вони призначені для роботи після остаточної доставки, коли інформація, критично важлива для правильної роботи поштового ретранслятора, була видалена.
Пуск черзі порожніх повідомлень
Remote Message Queue Starting - це функція SMTP, яка дозволяє віддаленому хосту запустити обробку пошти на сервері, щоб вона могла одержувати повідомлення, призначені для неї, відправивши команду TURN. Однак ця функція створювала потенційну загрозу безпеки даних і була розширена в RFC 1985 командою ETRN, яка надійно працює з використанням методу аутентифікації на основі інформації про систему доменних імен.
Міжнародний адресу електронної пошти
Користувачі, чий сценарій не є латинським, або які використовують діакритичні символи не в наборі символів ASCII, відчували труднощі з вимогою адреси електронної пошти латинського алфавіту (SMTP порт mail.ru). RFC 6531 був створений для вирішення цієї проблеми, надаючи можливості інтернаціоналізації для SMTP, розширення SMTPUTF8 і підтримки многобайтовых і не-ASCII-символів в адресах електронної пошти. Приклади: діакритичні знаки та інші мовні символи (грецький і китайська). Також актуально для SMTP-порту Yandex. Поточна підтримка цього документа на даний момент обмежена, але є великий інтерес до широкого впровадження RFC 6531 і відповідних RFC в таких країнах, як Китай, які мають велику користувацьку базу, де Latin (ASCII) є іноземним сценарієм.
Вихідна пошта SMTP-сервера
Клієнт електронної пошти повинен знати IP-адресу свого вихідного SMTP-сервера. Це повинно бути зазначено як частину його конфігурації (зазвичай це ім'я DNS). Цей сервер буде надавати вихідні повідомлення від імені користувача.
Обмеження доступу до сервера вихідної пошти
Адміністраторів сервера необхідно накласти певний контроль на тих клієнтів, які можуть використовувати сервер. Це дозволяє боротися зі зловживаннями і спамом. Широко використовувалися такі рішення: раніше багато системи вводили обмеження на використання місця розташування клієнта, дозволяючи тільки використання клієнтами, чий IP-адреса є одним з адміністраторів сервера. Використання з будь-якого іншого IP-адреси клієнта заборонено.
Сучасні SMTP-сервери зазвичай пропонують альтернативну систему, що вимагає аутентифікації клієнтів за обліковими даними, перш ніж дозволяти доступ.
SMTP — який порт використовується?
Зв'язок між поштовими серверами зазвичай завжди використовує стандартне значення порту TCP 25 призначеного для SMTP. Тим не менш поштові клієнти зазвичай замість цього використовують певні порти порти smtp, ssl. Більшість провайдерів інтернет-послуг тепер блокують весь трафік вихідного порту від своїх клієнтів у якості міри захисту від спаму. З тієї ж причини підприємства зазвичай налаштовують свій брандмауер, щоб дозволити вихідний порт з призначених поштових серверів.
Приклад транспорту SMTP
Типовий приклад відправки повідомлення через SMTP на дві поштові скриньки (alice і theboss), розташованих в одному і тому ж поштовому домені (example.com або localhost.com), відтворюється в наступному сеансі обміну. Після того, як відправник повідомлення (клієнт SMTP) встановлює надійний канал зв'язку для приймача повідомлень (SMTP-сервер), сеанс відкривається з сервером, зазвичай містить його повне доменне ім'я (FQDN), в цьому випадку smtp, example або com. Клієнт ініціює своє діалогове вікно, відповідаючи командою HELO, ідентифікує себе в параметрі команди з його повним доменним ім'ям (або литералом адреси, якщо він недоступний).
Додаткові розширення
Клієнти дізнаються, які опції підтримує сервер, використовуючи привітання EHLO, замість вихідного HELO. Клієнти повертаються в HELO тільки в тому випадку, якщо сервер не підтримує розширення протоколу SMTP. Сучасні клієнти можуть використовувати ключове слово SSRE розширення ESMTP для запиту сервера для максимального розміру повідомлення, яке буде прийнято. Старі клієнти і сервери можуть намагатися передавати повідомлення з надмірною розміром, які будуть відхилені після використання мережевих ресурсів, включаючи час підключення до мережних посиланнях.
Методи захисту від спаму і аутентифікація по електронній пошті
Оригінальний дизайн SMTP не мав можливості ідентифікувати відправників або перевіряти, чи дозволено серверів відправляти від їх імені. В результаті можливе використання спуфінга електронної пошти, що зазвичай використовується в поштовому розсиланні спаму і фішингу.
Виробляються спеціальні пропозиції для зміни SMTP або їх заміни повністю. Одним з прикладів цього є Internet Mail 2000 але ні він, ні який-небудь інший не домоглися великого успіху перед мережевим ефектом величезною встановленої бази класичного SMTP. Замість цього поштові сервери тепер використовують цілий ряд методів, у тому числі DomainKeys, DomainKeys Identified Mail, Policy Policy Framework і DMARC, DNSBLs і greylisting для відхилення або карантину підозрілих листів.