SMTP наизнанку

Как работает электронная почта

Задумывались ли вы, что происходит, когда вы нажимаете кнопку Отправить в своей почтовой программе? Наверное, нет, я думаю – пока это работает. Это точно причина, почему вы должны удивляться, хотя. Если что-то не работает, хорошо знать, что не работает. Обычно это половина решения.

При отправке электронной почты SMTP вступает в игру. SMTP – это сокращение от Simple Mail Transfer Protocol, как определено в RFC 5321: Simple Mail Transfer Protocol. Ваш почтовый клиент общается с SMTP-сервером, используя эту простую и понятную процедуру для пересылки электронной почты из одного места в другое.

Флирт

Ваша программа электронной почты становится SMTP-клиентом, подключается к порту 25 вашего почтового сервера (обычно это порт SMTP) и – говорит EHLO . Компьютеры, в конце концов, только люди, и главное, что они хотят быть вежливыми. На самом деле, он не пытается быть вежливым, а использует более поздние дополнения к SMTP, которые привели к двум разновидностям более поздней команды HELO (команда SMTP обычно состоит из четырех символов).

Два вкуса HELO

EHLO, будучи более свежим, заставляет сервер объявлять о всех дополнительных функциях (таких как уведомление о состоянии доставки или возможность транспортировать сообщения, которые содержат иные, чем безопасные символы ASCII), которые он поддерживает.

Не каждый сервер разрешит это приветствие, но требуется принять простой HELO, который, естественно, предполагает отсутствие дополнительных функций. Однако обе команды приветствия требуют, чтобы клиент указывал свой домен после ** LO. На практике это выглядит примерно так:

220 mail.domain.net ESMTP-сервер
HELO
501 HELO требуется адрес домена
HELO localhost
250 mail.domain .net Привет localhost [127.0.0.1], рад знакомству

(У меня ввод курсив , вывод сервера черный; строки, начинающиеся с 5, указывают на ошибку.)

Отправитель

Остальная часть протокола действительно заслуживает простого атрибута. Если вы хотите отправить электронное письмо, вы начинаете с ключевых слов MAIL FROM: . После этого идет адрес электронной почты отправителя, как предложено от. Не забудьте поставить скобки вокруг адреса, хотя (как). Продолжая наш пример, мы имеем:

ПОЧТА ОТ:
250 sender@example.com … Отправитель в порядке

Получатель

После того, как сервер принял адрес отправителя, клиент может указать адрес получателя. Команда для этого действия, RCPT TO: , снова является довольно многозначительной. Я хочу отправить письмо самому себе:

RCPT TO: receient@example.com
250 support@lifewireguide.com … Получатель в порядке (будет в очереди)

То, что сервер будет ставить в очередь, означает только это: он будет сохранять почту локально и отправлять ее вместе со всей другой почтой, помещенной в очередь, с интервалами (например, каждые 30 минут). Это поведение зависит от конфигурации, и сервер также может доставлять почту мгновенно.

Мы почти закончили. Однако по-прежнему отсутствует важная часть: фактическое сообщение.

Сообщение

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

Команда для инициирования состояния, которое заставляет сервер принять сообщение, является ДАННЫЕ . Далее следуют все поля заголовка сообщения электронной почты, а затем тело, которые составляют всего один большой блок текста (или данных). Чтобы сообщить серверу, что ввод завершен, используется точка на строке (\ r \ n. \ R \ n). Поэтому я отправляю свое сообщение:

ДАННЫЕ
354 Введите почту, оканчиваясь на “.” в отдельной строке
Идентификатор сообщения:
Дата: вс, 17 августа 1997 г. 18:48:15 +0200
От: Heinz Tschabitscher
Кому: Heinz Tschabitscher
Тема: Для конкурса Summarize-Proust
В мир лебедей!
.

250 SAA19153 Сообщение принято к доставке

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

Конец

Теперь вы можете отправлять столько электронных писем, сколько пожелаете, повторяя шаги от MAIL FROM: до . . Если вы закончили с этим, вы можете выйти из сервера с помощью команды QUIT , и это именно то, что мы делаем:

Выйти
221 до свидания

Как я могу это сделать?

Нетривиальным решением является подключение к серверу исходящей почты (вы можете найти его адрес в настройках учетной записи вашего почтового клиента) на порту 25.

  • Откройте командную строку.
  • Типа “телнет 25”.
  • Поговорите с сервером, используя SMTP.

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

Оцените статью
Solutics.ru
Добавить комментарий