
проверки – получение хоть какой то информации об административной
принадлежности узла). Отсюда вывод: КРАЙНЕ полезно, чтобы провайдеры всем
свои клиентам (в том числе и dial-up клиентам) давали доменные имена для
того, чтобы такие узлы могли проходить подобную «проверку» на SMTP
серверах.
Подытожим возможные способы обработки SMTP серверами команды HELO
(рассмотренные выше и несколько упрощенные):
• Сервер проводит обратное разрешение IP адреса клиента в FQDN и если
результат не совпадает с аргументом, который клиент передал в команде
HELO, то разрывает с ним соединение (это, как мы уже сказали, «грубо»)
• Сервер проводит разрешение FQDN, который клиент передал в качестве
аргумента в команде HELO в IP адрес и если результат не совпадает с
реальным IP адресом клиента, то сервер разрывает с ним соединение (по
сути то же самое, что и в прошлом случае, грубо и не может эффективно
использоваться)
• Сервер проводит обратное разрешение IP адреса клиента в доменное имя,
и если это разрешение удалось (не обязательно совпало с тем, что передал
в аргументе команды HELO клиент), то сервер готов обслужить
пользователя, иначе сервер разрывает соединение
• Сервер требует, чтобы клиент использовал команду HELO и аргумент
обязательно формально являлся FQDN, т.е. имел точки в названии, более
никаких проверок не производится, ясно, что в таком случае
использование команды HELO – абсолютная формальность
• Сервер требует, чтобы клиент использовал команду HELO и аргумент
обязательно присутствовал, больше никаких проверок не производится
• Сервер требует, чтобы клиент использовал команду HELO, можно и без
аргументов
• Сервер разрешает клиентам пропускать команду HELO и сразу переходить
к почтовым транзакциям, о которых мы поговорим сейчас
Разумеется, поведение конкретного сервера зависит от автора
программного обеспечения и от администратора, который тем или иным образом
сконфигурировал свой почтовый сервер.
После того, как клиент ввел команду HELO (или сервер не требовал данной
команды) клиент SMTP может переходить к передаче самого письма, или как
говорят, к почтовой транзакции. Для этого клиент должен использовать команду
MAIL, рассматриваем ее синтаксис:
MAIL FROM:author@next.ru<CR><LF> или
MAIL FROM:Любой текст<author@next.ru><CR><LF> или
MAIL FROM:<author@next.ru><CR><LF>
Команда (как и все остальные команды SMTP) должна заканчиваться
символами CR и LF, т.е. байтами 0D 0A. Команда MAIL говорит почтовому
серверу, что необходимо будет доставить письмо в почтовый ящик пользователя
(его адрес позже) от имени ДАННОГО пользователя и использовать указанный в
команду MAIL адрес отправителя для генерации отчетов об ошибках доставки
письма, если таковые будут иметь место. Так как никакой авторизации в
протоколе не предусмотрено, то в качестве обратного адреса можно, по сути,
указать все, что угодно, вопросы безопасности протокола SMTP мы рассмотрим
позже, иначе нам придется постоянно на них отвлекаться, а нам сейчас
необходимо сосредоточиться на изучение самого протокола SMTP. С передачи
данной команды начинается транзакция
SMTP
– оговоренная
последовательность команд, приводящая к отправке почтового сообщения.
На самом деле аргументом команды MAIL является не просто электронный
адрес отправителя, а так называемый reverse-path, который в самом простом