Вот что я узнал из RFC 5321:
4.1.1.5. СБРОС (СБРОС)
Эта команда указывает, что текущая почтовая транзакция будет прервана. Любые сохраненные данные об отправителе, получателе и почте ДОЛЖНЫ быть удалены, а все буферы и таблицы состояний очищены. Получатель ДОЛЖЕН отправить ответ 250 OK на команду RSET без аргументов. Команда сброса может быть выдана клиентом в любое время. Он фактически эквивалентен NOOP (т. е. не имеет никакого эффекта), если выдается сразу после EHLO, до того, как EHLO выдается в сеансе, после отправки и подтверждения индикатора окончания данных или непосредственно перед QUIT.
Акценты мои. Это говорит о том, что если мы получаем RSET после окончания индикатора данных ., но до того, как мы отправили подтверждение, то мы должны отбросить содержимое сообщения, которое в данный момент доставляется. Это не кажется практичным. Более того, сервер может легко действовать так, как если бы он получил RSET после того, как отправил подтверждение — клиент не смог бы об этом узнать. Пытаясь узнать, что обычно делается, я нашел это обсуждение https://www.ietf.org/mail-archive/web/ietf-smtp/current/msg00946.html, где они говорят:
Under a RFC5321 compliant "No Quit/Mail" cancellation implementation, after
completing the DATA state, the server is waiting for a pending RSET, MAIL
or QUIT command:
QUIT - complete transaction, if any
MAIL - complete transaction, if any
perform a "reset"
RSET - cancel any pending DATA transaction delivery,
perform a "reset"
drop - cancel any pending DATA transaction delivery
We added this support in 2008 as a local policy option (EnableNoQuitCancel)
which will alter your SMTP state flow, your optimization and now you MUST
follow RSET vs QUIT/MAIL correctly. RSET (after DATA) aborts the
transaction, QUIT/MAIL (after DATA) does not. RSET is not an NOOP at this
point.
В спецификации сказано, что отбрасывать НЕОБХОДИМО. Однако приведенный выше отрывок предполагает, что на практике он интерпретируется как МОЖЕТ. Я мог бы посмотреть код известных реализаций SMTP/LMTP, таких как Dovecot, но, возможно, кто-то уже просматривал его, и это сэкономило бы мне время.