В примерах "C:" и "S:" означают строки посылаемые клиентом и
сервером соответственно и не являются частью передаваемой информации.
Обратите внимание, что строки заканчиваются последовательностью CRLF
(0x0D
0x0A
).
Следующие примеры демонстрируют передачу данных в виде литералов. Литералы используются, например, в случаях когда данные содержат символы перевода строк.
В первых двух примерах клиент передаёт данные на сервер. В первом варианте с ожиданием ответа сервера в виде строки начинающейся с "+" после указания клиентом количества окетов в фигурных скобках и CRLF. Во втором, после количества окетов, перед закрывающей фигурной скобкой клиент указывает символ "+" сообщающий серверу что данные будут переданы сразу после CRLF, без ожидания подтверждения сервером.
Третий пример демонстрирует передачу данных в виде литерала от сервера клиенту. В этом случае сервер начинает отправку данных непосредственно после указания количества окетов в фигурных скобках и CRLF. Символ "+" в этом случае не используется.
Пример 7.1. MMP: Примеры отправки команд и получения ответа содержащих литералы.
C: VCARD u1@domain.invalid {761} S: + Ready for additional command text C: ...данные... S: OK
C: VCARD u1@domain.invalid {761+} C: ...данные... S: OK
C: VCARD u1@domain.invalid S: OK {761} S: ...данные...
Ниже описан пример сессии MMP. Клиент подключается к только что
установленному серверу и аутентифицируется с именем пользователя
postmaster
и паролем
ChangeMe. Для аутентификации используется механизм PLAIN (RFC 4616).
После аутентификации пароль изменяется на my-new-password. Далее,
создаётся новый пользователь с именем u1
и запрашивается список пользователей
домена. После этого клиент завершает сессию.
Пример 7.2. MMP: Пример сессии.
S: * COMMAND-SET "MAIL SPAMCHK AB" S: * STARTTLS S: * SASL "LOGIN PLAIN CRAM-MD5" S: * VERSION "1.0" S: OK C: AUTHENTICATE plain TU1QAHBvc3RtYXN0ZXIAQ2hhbmdlTWU= S: * USER admin "postmaster@domain.invalid" S: OK C: SET USER postmaster PASSWORD "my-new-password" S: OK (GOOD-PSWD) "Good password" C: CREATE USER u1 S: OK C: LIST USERS:domain.invalid S: * "postmaster" 0 0 "ADMIN" S: * "u1" 0 0 "" S: OK C: LOGOUT S: BYE