Взаимодействие клиентского и серверного программного обеспечения по протоколу SMTP основано на принципе "запрос-ответ" и требует установления сеанса между клиентом и сервером. Запросы клиента содержат команды, указывающие на действия, которые сервер должен выполнить. В ответах сервера содержатся коды возврата – специальные числа, уведомляющие о результате обработки поступившей команды. Вся информация передается в текстовом виде.
Процесс взаимодействия клиента и сервера состоит из трех этапов:
-
Установление сеанса. На этапе установления сеанса клиент сообщает серверу о себе, а также осуществляется проверка корректности адреса отправителя.
-
Передача сообщений. Этот этап подразумевает выполнения следующих действий: проверку корректности каждого адреса из списка получателей и собственно передачу сообщений. Протоколом предполагается, что при получении почты SMTP-сервер берет на себя ответственность за дальнейшую доставку почты либо непосредственно в почтовый ящик получателя, либо путем пересылки ее другим SMTP-серверам. В последнем случае этот SMTP-сервер выступает в качестве клиента по отношению к другим серверам.
Следует отметить, что в процессе доставки может быть задействовано большое количество SMTP-серверов. В этом случае часть серверов будут выполнять промежуточную маршрутизацию (relaying) сообщений, т.е. принимать сообщения от одних SMTP-серверов и пересылать другим.
В ряде случаев сервер может отказаться от доставки почты (например, если промежуточная маршрутизация сообщений на сервере запрещена). Тогда он обязан уведомить об этом клиента, оставив на нем ответственность за судьбу сообщения.
Следует отметить, что протокол SMTP предоставляет возможность пересылки в рамках одного сеанса нескольких сообщений одному или более адресатам.
-
Завершение сеанса. После окончания пересылки сообщений клиент передает серверу команду завершения сеанса.