$ telnet expamle.com 25
— мы пробуем подключиться к example.com по 25 порту, который как раз используется для передачи почты.
Trying example.com...
Connected to example.com.
Escape character is '^]'.
220 mailserver at example.com greets you. Make love not war!
— подключение удалось.
HELO test.com
250 example.com
— поприветствовали друг друга с помощью команды HELO, сервер получателя ответил командой 250, что значит, что возможно дальнейшее «общение».
MAIL FROM: <
test@test.com > — мы говорим, от кого хотим отправить письмо.
250 2.1.0 Ok
— сервер отвечает, что готов принять письмо от этого адресата (бывают ситуации, когда адрес внесен в блэклист на стороне получателя, и тогда уже здесь начнутся ошибки.
RCPT TO: <
user@example.com> — мы говорим, кому хотим отправить письмо.
250 2.1.5 Ok
— сервер отвечает, что готов принять письмо для этого получателя (если адреса не существует, то здесь сервер может сказать что-то вроде 550 No such user here.
DATA
— сообщаем серверу, что начинаем передавать письмо.
354 End data with <CR><LF>.<CR><LF>
— сервер отвечает, в каком виде он хочет видеть конец письма.
FROM:
test@test.com — начинаем передавать письмо вместе с техническими заголовками.
TO: user@example.com
SUBJECT: test mail from test subject
test body
.
— показываем, что мы закончили передачу письма.
250 2.0.0 Ok: queued as 1CF5FC0AAE
— сервер отвечает, что принял письмо для доставки и назначил ему id 1CF5FC0AAE (по нему, в случае недоставки, системный администратор принимающего сервера сможет найти, что стало с письмом.
QUIT
— сообщаем, что сеанс связи закончен.
221 2.0.0 Bye
— сервер прощается с нами.
Connection closed by foreign host.
— соединение обрывается.