Объясненный протокол SMTP (Как работает электронная почта?)

  1. Что такое SMTP?
  2. Мотивирующий пример
  3. 1- пользовательский агент Боба
  4. 2- Почтовый сервер Боба
  5. 3- Почтовый сервер Алисы
  6. 4- пользовательский агент Алисы
  7. Путешествие по электронной почте
  8. Протокол SMTP
  9. Первое: SMTP-рукопожатие
  10. Второе: передача сообщений
  11. Третье: закрытие соединения
  12. Несколько слов о пользовательских агентах
  13. Теперь мой вопрос к вам

Вы когда-нибудь задумывались, что происходит после того, как вы написали письмо своему другу и нажали кнопку «Отправить»?

Как электронная почта попадает в почтовый ящик вашего друга?

В этой статье я расскажу вам шаг за шагом о том, как пройти почтовое сообщение, начиная с момента нажатия кнопки «отправить», до его попадания в почтовый ящик вашего друга.

Чтобы понять, как работает электронная почта, вам необходимо понять интернет-протокол, который называется SMTP или «простой протокол передачи почты».

Давайте начнем!

Что такое SMTP?

SMTP является Интернет стандарт для отправки писем в интернете.

Если вы чувствуете приключения и хотите прочитать спецификации протокола, оригинальные спецификации SMTP были опубликованы в RFC 821 в 1982 году. Позже, в рамках RFC 5321 ,

Я должен предупредить вас, что эти RFC очень сухие и, как бы скучно читать.

Теперь вместо того, чтобы проходить RFC, я бы лучше объяснил, как работает электронная почта и SMTP, на практическом примере.

Мотивирующий пример

В оставшейся части этой статьи я расскажу о протоколе SMTP и о том, как работает электронная почта, следуя пути отправки электронного сообщения от одного человека Боба другому Алисе .

Предположим, что у Боба есть учетная запись электронной почты на gmail, [email protected], а у Алисы есть учетная запись электронной почты на yahoo, [email protected]

Боб хочет отправить Алисе электронное письмо. Он создает свое сообщение в приложении, работающем на его MAC (почтовое приложение Apple), и он готов нажать «отправить».

Теперь я собираюсь отслеживать это сообщение от ноутбука Боба, пока оно не достигнет ноутбука Алисы.

Во-первых, давайте сложим всех участвующих игроков в процессе:

1- пользовательский агент Боба

Это приложение, работающее на ноутбуке Боба, которое он использует для составления, ответа и чтения своих сообщений электронной почты.

Боб использует Почтовое приложение Apple на его MAC в качестве своего пользовательского агента.

Если Боб хочет прочитать свои сообщения электронной почты, его пользовательский агент выбирает их с почтового сервера Боба (я объясню, что это будет дальше). Если Боб хочет отправить сообщение электронной почты, он создает сообщение в своем пользовательском агенте, а затем отправляет его на свой почтовый сервер для доставки нужному получателю.

2- Почтовый сервер Боба

Боб имеет учетную запись электронной почты в Gmail.

Это означает, что в домене gmail.com находится удаленный компьютер, который управляет всеми сообщениями электронной почты, отправляемыми Бобу. Эта машина также отвечает за отправку сообщений электронной почты, отправленных Бобом другим пользователям на других почтовых серверах.

Этот удаленный компьютер (или, точнее, приложение, работающее на этом удаленном компьютере) - это то, что мы называем почтовым сервером Боба.

3- Почтовый сервер Алисы

Подобно почтовому серверу Боба, но это машина Yahoo вместо машины Gmail, потому что, как я упоминал ранее, у Алисы есть учетная запись электронной почты Yahoo.

4- пользовательский агент Алисы

аналогично пользовательскому агенту Боба, это приложение, работающее на ноутбуке Алисы, которое позволяет ей получать электронные письма со своего почтового сервера для чтения. Это также позволяет ей составлять сообщения на своем ноутбуке и отправлять их на свой почтовый сервер для последующей доставки нужному получателю. У Алисы есть компьютер, и она использует Microsoft Outlook как ее пользовательский агент.

Путешествие по электронной почте

Теперь вернемся к нашему сценарию, давайте проследим за сообщением электронной почты, которое переместится от Боба к Алисе на высоком уровне.

1- Боб открывает свое почтовое приложение, предоставляет адрес электронной почты Алисы ([email protected]), пишет свое сообщение и нажимает кнопку «отправить»

2- Почтовое приложение начинает связываться с почтовым сервером Боба и в конечном итоге отправляет электронное письмо, которое Боб написал на почтовый сервер Боба, где оно хранится, для последующей доставки на [email protected]

3- Почтовый сервер Боба видит, что есть сообщение, ожидающее доставки на [email protected] Он запускает связь с почтовым сервером yahoo.com, чтобы разрешить доставку этого сообщения. Именно здесь вступает в игру протокол SMTP. SMTP - это протокол, который управляет связью между этими двумя почтовыми серверами. В нашем конкретном сценарии почтовый сервер Боба будет играть роль SMTP-клиента, а почтовый сервер Алисы будет играть роль SMTP-сервера.

4- После некоторого начального SMTP-квитирования между почтовыми серверами gmail и yahoo SMTP-клиент отправляет сообщение Боба на почтовый сервер Алисы.

5- Почтовый сервер Алисы получает сообщение и сохраняет его в своем почтовом ящике, чтобы она могла прочитать его позже.

6. В какой-то момент Алиса использует свой Microsoft Outlook для извлечения сообщений из своего почтового ящика и в конечном итоге читает сообщение Боба.

Я расскажу, как сообщения электронной почты доставляются от пользовательского агента Боба на его почтовый сервер (и с почтового сервера Алисы на ее пользовательский агент) позже.

Протокол SMTP

А сейчас давайте сосредоточимся на связи, которая происходит между почтовым сервером Боба (работающим на компьютере gmail.com) и почтовым сервером Алисы (работающим на компьютере yahoo.com).

Помните, что почтовый сервер Боба должен был установить канал связи с почтовым сервером Алисы для доставки почты Боба Алисе.

Также помните, что SMTP - это протокол, который управляет этой связью.

Вот диаграмма последовательности всех событий, которые происходят, когда все работает правильно.

Протокол SMTP - это текстовый протокол, который состоит из команд и ответов.

SMTP-клиент (в нашем случае почтовый сервер Боба) отправляет SMTP-команды, тогда как SMTP-сервер (почтовый сервер Алисы) отвечает на эти команды числовыми кодами.

Некоторыми примерами команд, которые используются в протоколе SMTP, являются EHLO , MAIL FROM , RCPT TO , DATA и QUIT.

Протокол SMTP состоит из трех этапов:

Первое: SMTP-рукопожатие

Первое: SMTP-рукопожатие

Во-первых, почтовый сервер Боба (SMTP-клиент) устанавливает TCP-соединение с почтовым сервером Алисы (SMTP-сервер), на который SMTP-сервер отвечает кодом 220. (Этот шаг не показан на диаграмме последовательности)

После того, как SMTP-клиент получает ответ 220 , начинается квитирование.

Общая цель этапа установления связи состоит в том, чтобы клиент и сервер идентифицировали себя, предоставляемые ими услуги и идентифицировали личности отправителя и получателя электронной почты.

Он начинается с того, что почтовый сервер Боба отправляет команду EHLO на почтовый сервер Алисы и идентифицирует ее домен. Например, почтовый сервер Боба отправит «EHLO <gmail.com>» .

Думайте о команде EHLO как о приветственном сообщении, которое SMTP-клиент отправляет на SMTP-сервер. Фактически, это было фактически названо командой HELO в более старом RFC, но это было изменено позже в более новом RFC чтобы учесть более богатые возможности.

SMTP-сервер в Yahoo подтверждает сообщение EHLO , отвечая кодом « 250 » вместе со службами, которые может поддерживать SMTP-сервер. Для клиента и сервера важно согласовать сервисы и функции, которые они могут поддерживать, до начала передачи сообщения.

Теперь, когда приветствие закончено, клиенту пришло время отправить информацию об отправителе и получателе письма.

SMTP-клиент возобновляет работу, отправляя команду «MAIL FROM» вместе с информацией об отправителе. В нашем сценарии это будет что-то вроде «MAIL FROM: <[email protected]

Когда SMTP-сервер получает эту команду, он снова отвечает тем же кодом 250, чтобы указать, что у него нет проблем с приемом сообщений от этого пользователя, Боб.

После этого клиент отправляет команду «RCPT TO» вместе с адресом электронной почты получателя «RCPT TO: <[email protected] .

Помимо прочего, SMTP-сервер проверяет, существует ли пользователь «Алиса», и, если да, он отправляет обратно подтверждение 250, указывающее, что все в порядке с принятием сообщений от Боба для доставки Алисе.

На этом завершается этап рукопожатия. Теперь давайте перейдем к мясистым деталям. Как фактическое сообщение электронной почты передается от SMTP-клиента на SMTP-сервер?

Второе: передача сообщений

Второе: передача сообщений

Перед началом фактической передачи сообщения SMTP-клиент отправляет на сервер еще одну команду под названием «ДАННЫЕ», чтобы убедиться, что сторона сервера готова.

Почтовый сервер Алисы отвечает кодом «354», указывающим, что он готов принять сообщение.

После получения этого кода с сервера клиент теперь готов отправить сообщение электронной почты.

Хотите верьте, хотите нет, но фактическое сообщение электронной почты отсылается построчно. Серверная сторона, тем не менее, не подтверждает каждую отдельную полученную строку. Он просто ожидает специальной строки «Конец почты», которая сама по себе имеет только «.» (Точка или полная остановка).

Когда клиент отправляет «.» На сервер, это означает, что клиент завершил отправку сообщения электронной почты. Это также говорит серверу, что он может начать обработку сообщения сейчас.

После того, как почтовый сервер Алисы получает «.», Он подтверждает получение всего сообщения, отправляя код 250 обратно клиенту.

И это все, вот как сообщение электронной почты, которое Боб написал на своем ноутбуке, попадает на компьютер Yahoo, ожидая, пока Алиса загрузит и прочитает. Но по-прежнему не хватает одной вещи - закрытие соединения между SMTP-клиентом и SMTP-сервером.

Третье: закрытие соединения

Третье: закрытие соединения

Это очень просто и понятно.

Почтовый сервер Боба отправляет команду «QUIT» на почтовый сервер Алисы, чтобы указать свое намерение закрыть соединение, на которое почтовый сервер Алисы отвечает кодом «221» .

Несколько слов о пользовательских агентах

Давайте немного поговорим о пользовательских агентах.

В нашем сценарии мы знаем, что Боб использовал свой пользовательский агент для отправки своего почтового сообщения на свой почтовый сервер. Мы также знаем, что Алиса использовала ее, чтобы получить и прочитать электронную почту Боба, но я никогда не говорил о механике этого.

Давайте сначала поговорим о том, как Боб рассказывает о своей электронной почте на своем почтовом сервере в gmail.

Оказывается, пользовательский агент Боба также может использовать протокол SMTP для отправки сообщения Боба на его почтовый сервер.

Думаю об этом.

Это точно такой же процесс, но пользовательский агент Боба является SMTP-клиентом, а почтовый сервер Боба - SMTP-сервером.

Хотя для Алисы все по-другому. Алиса не хочет отправлять электронную почту на свой почтовый сервер. Она хочет получать и читать сообщения, уже хранящиеся в ее почтовом ящике Yahoo. Для этого есть два популярных протокола, которые может использовать ее пользовательский агент. Вы, наверное, слышали о них раньше: POP и IMAP.

Излишне говорить, что это не единственные способы взаимодействия с вашими почтовыми серверами от пользовательских агентов.

Фактически в наши дни наши пользовательские агенты часто являются нашими браузерами (мы отправляем / читаем наши электронные письма на yahoo.com или gmail.com из наших браузеров). Наши браузеры отправляют и получают сообщения HTTP, поэтому SMTP или POP / IMAP вообще не используются. Однако связь между почтовым сервером gmail и почтовым сервером yahoo по-прежнему регулируется протоколом SMTP, как я объяснил ранее.

Теперь мой вопрос к вам

Ранее я упоминал, что SMTP-клиент сам отправляет «.» В строке, чтобы указать, что он передал все данные сообщения электронной почты.

Мой вопрос к вам: как вы думаете, что произойдет, если сообщение электронной почты, которое написал Боб, будет содержать «.» В строке? 🙂

Чтобы узнать, как протокол SMTP обрабатывает такое безответственное поведение со стороны Боба, я советую вам взглянуть на RFC.

Не волнуйся, я облегчу тебе. Вот где вы должны посмотреть.

Похожие

Как изменить агентов пользователя в браузерах Chrome, Firefox и Edge
Когда вы переходите на веб-страницу, ответ от сервера будет зависеть от ряда факторов. Используемая ОС будет проверена (Windows, Linux, Mac или Mobile) вместе с браузером (Firefox, Chrome, Safari и т. Д.) И, возможно, архитектурой системы (x86, x64 и т. Д.). Эти элементы помогают веб-разработчикам оптимизировать свои страницы и являются важной частью современного веб-опыта. Это делается путем чтения «пользовательского агента» в браузере. Пользовательский агент немного похож на ID-карту.
Многие метрики. Такие данные. Вот это да.
[ Crossref Labs любит быть последним, кто запустит интернет-тренд, что может быть лучше, чем объединить Дож мем с altmetrics ? Примечание.
Выпущен Google Chrome 44, теперь доступен для скачивания
Веб-браузер, пожалуй, самая важная часть программного обеспечения на вашем компьютере. Вы проводите большую часть своего времени в Интернете в браузере: когда вы ищете, общаетесь, общаетесь по электронной почте, ходите по магазинам, работаете в банке, читаете новости и смотрите видео онлайн, вы часто
Вот как получить агента для вашего сценария
Писатель, режиссер и продюсер Брайан Коппельман («Опыт подруги», «Одинокий мужчина», «Океан 13») постоянно спрашивают, как найти агента. Поэтому он решил ответить на вопрос в Сообщение блога , который он дал Indiewire разрешение на переиздание ниже. Я помню с особой тщательностью неделю в феврале
Все, что вам нужно знать о странице Google "Моя активность"
Сара Якобссон Purewal / CNET Что Google знает о вас? Все. Серьезно - все. Особенно, если вы часто используете многие продукты Google, такие как Android, Gmail, Привод , Google Maps или YouTube. Или, вы знаете, Google Search. Но есть и хорошие новости, вроде. Google представил новую информационную
Как использовать Gmail как почтовый клиент для ПК за 7 простых шагов
Реклама Вы бы отказались от своего почтового клиента по умолчанию, если бы в Gmail было больше функций, похожих на настольные? Gmail является ведущим клиентом веб-почты, но настольные почтовые клиенты оставайся вещью Они привлекательны, потому что вы можете хранить свои электронные письма локально и получать к ним доступ в любое время. Что если Gmail мог
Как автоматически восстановить Windows Vista, используя Startup Repair
Оглавление Обзор параметров восстановления Windows Vista Как выполнить автоматическое восстановление Windows Vista с помощью восстановления при загрузке Обзор расширенных инструментов Заключение Обзор вариантов восстановления Windows Vista Windows Vista поставляется с богатым набором инструментов
Как обойти ограничение бесплатных статей на новостных сайтах
Вы часто читаете страницы с новостями и новостями, на которых так называемые фортепианная система? Вас раздражает, что после прочтения, например, 10 статей, остальные тексты ограничены наполовину, и вы должны подписаться, чтобы продолжать читать все новости? Не беспокойся Существует способ, позволяющий обойти ограничение бесплатных статей на сайтах такого типа.
Как построить отслеживание звонков с помощью Google Analytics, Twilio и PHP
«Половина денег, которые я трачу на рекламу, тратится впустую. Проблема в том, что я не знаю, какая половина. - Джон Уонамейкер Уважаемый Сол Гудман, эсквайр, Прежде всего, мои комплименты за вашу феноменально эффективную рекламу. Я не могу ехать по улицам Альбукерке, сидеть на автобусной остановке или смотреть мои любимые шоу на AMC, не видя ни одного из ваших вездесущих рекламных роликов «Лучше позвони Солу». Судя по, скажем так, «экономичному»
Разъем USB для iPad работает с клавиатурами и аудио входом
Разъем USB-to-Dock, который входит в комплект Apple Camera Connection Kit, не только работает с камерами. В ранних сообщениях говорится, что он также позволит вам подключить USB-клавиатуру, подключить
Как слушать подкасты на Google Home
Google выпустил подкасты в приложение Play Music для Android и недавно выпустило специальное приложение для подкастов , также. Но вы также можете довольно легко слушать подкасты

Комментарии

Теперь, что вы говорите своим друзьям, не заставляя их думать, что их собственные жизни в Facebook не достаточно хороши для вас?
Теперь, что вы говорите своим друзьям, не заставляя их думать, что их собственные жизни в Facebook не достаточно хороши для вас? Для пинка я спросил мою сеть Google+ - два раза - полагая, что среди них должны быть полукуттеры на Facebook. У большинства был менталитет «задавай и забывай»: если они действительно вам нужны, они дойдут до вас по-другому, поэтому просто напишите, что вас там нет. Один из друзей предложил
Что такое EXE-файлы?
Что такое EXE-файлы? Файлы EXE («исполняемые»), такие как bot wekings v.1.4.006.exe, представляют собой файлы, которые содержат пошаговые инструкции, которые выполняет компьютер для выполнения функции . Когда вы «дважды щелкаете» по файлу EXE, ваш компьютер автоматически выполняет эти инструкции, разработанные разработчиком программного обеспечения (например, Smithhacked от F1-forever) для запуска программы (например, BOT WeKings) на вашем ПК. Каждое программное
Что я могу удалить?
Что я могу удалить? Хорошие новости: вы можете удалить что угодно и все на странице «Моя активность». Поскольку Google использует ваши данные для настройки вашего взаимодействия с Google, вы можете увидеть снижение полезности некоторых служб Google, если вы удалите значительную часть своей деятельности. Чтобы удалить отдельные элементы со страницы «Моя активность», найдите элемент, щелкните три точки рядом с ним и нажмите « Удалить» . (Вы также
Как защитить себя?
Как защитить себя? не открывайте электронные письма, не говоря уже о вложениях из неизвестных, неофициальных или подозрительных источников; здравый смысл - самая эффективная защита от вируса ; используйте хорошее программное обеспечение для защиты своего компьютера, не забывайте обновлять его - в сети появляются новые поколения и варианты вирусов, поэтому очень важно иметь современную базу данных сигнатур; всегда создавайте резервную копию наиболее важных
Вам все еще нужен клиент электронной почты на рабочем столе?
Вам все еще нужен клиент электронной почты на рабочем столе? Конечно, рассматривая все функции, которые предлагает Gmail, трудно отрицать его как замену клиенту электронной почты на рабочем столе. Единственное, что вас сдерживает, это медленный интернет или проблемы безопасности и конфиденциальности. В этом случае вы можете использовать настольный почтовый клиент. И если вы пользователь Mac, вот несколько полезных приложения,
Как создать такое предложение?
Как создать такое предложение? Если вы можете создавать предложения на пассивной стороне, то хорошая новость заключается в том, что предложения в причинной форме будут очень похожи на предложения в пассивном голосе. Вы должны помнить использовать глагол иметь вместо того, чтобы быть . Также важно не менять шаблон (1. Иметь, 2. Sth, 3. III). Я надеюсь, что помог. Если вы хотите больше грамматики, я приглашаю вас
Вам 20 лет и вам не хватает денег?
Вам 20 лет и вам не хватает денег? Мы знаем, как отскочить от дна! RAF Рис. Thinkstock Поддерживаются не только частные проекты, но и социальные кампании. Примером этого является сборник для кампании «Трасса Хейтохолик - Хейтбастерс - мы очищаем польские города от спрятанных» . Его автор, тренер и
Как пошло совместное производство и совместное микширование?
Как пошло совместное производство и совместное микширование? Rostam Batmanglij: Ариэль и я собрали идентичные UAD, Pro Tools и другие настройки плагинов на обоих наших отдельных компьютерах, и это позволяет нам открывать сессии друг друга. У нас были жесткие диски, которые мы синхронизировали каждые несколько дней, и это позволило нам максимизировать наш рабочий процесс и нашу способность выполнять работу, как когда мы были вместе, так и когда он был
Как записать изображение на карту micro SD для вашего Pi?
Как записать изображение на карту Micro SD для вашего Pi? Видеть Руководства по установке RPi Image Больше подробностей) 3) Скопируйте драйвер ЖКД на карту micro SD (или скопируйте драйвер в систему Pi с помощью USB-накопителя). 4) Добавьте следующие строки в файл config.txt, который находится в корне карты: max_usb_current = 1 hdmi_group = 2 hdmi_mode = 87 hdmi_cvt 800 480 60 6 0 0 0
Как здоровье веб-браузера на нашей платформе?
Как здоровье веб-браузера на нашей платформе? Прежде чем приступить к статистике времени и статистики, я должен упомянуть, что вся эта функция немного искусственна. Моя методология была проста - взять несколько популярных сайтов с высокой пропускной способностью и время, необходимое для полной загрузки (в общем, панорамирование и масштабирование каждой страницы было гораздо более плавным после рендеринга всей страницы). Тем не менее, это игнорирует то, как многие сайты
Как я могу решить эту проблему?
Как я могу решить эту проблему? Любая помощь будет оценена. О NTLDR & BOOTMGR NTLDR - это сокращение от NT loader, который является загрузчиком для всех выпусков операционной системы Windows NT вплоть до Windows XP и Windows 2003. Обычно NTLDR запускается загрузочной записью системного жесткого диска. NTLDR содержит следующие файлы: ntldr (сам основной загрузчик), NTDETECT.COM (определяет базовую информацию об оборудовании, необходимую для успешной загрузки ОС на

Что такое SMTP?
Как электронная почта попадает в почтовый ящик вашего друга?
Что такое SMTP?
Как фактическое сообщение электронной почты передается от SMTP-клиента на SMTP-сервер?
» В строке?
Crossref Labs любит быть последним, кто запустит интернет-тренд, что может быть лучше, чем объединить Дож мем с altmetrics ?
Вас раздражает, что после прочтения, например, 10 статей, остальные тексты ограничены наполовину, и вы должны подписаться, чтобы продолжать читать все новости?
Теперь, что вы говорите своим друзьям, не заставляя их думать, что их собственные жизни в Facebook не достаточно хороши для вас?
Что такое EXE-файлы?
Что я могу удалить?