[ietf-smtp] Proper definition of the term "email payload".

Viruthagiri Thirumavalavan <giri@dombox.org> Sun, 31 March 2019 17:58 UTC

Return-Path: <giri@dombox.org>
X-Original-To: ietf-smtp@ietfa.amsl.com
Delivered-To: ietf-smtp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 53C201201AC for <ietf-smtp@ietfa.amsl.com>; Sun, 31 Mar 2019 10:58:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.99
X-Spam-Level:
X-Spam-Status: No, score=-1.99 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_MIME_MALF=0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=dombox.org
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lsncvBAuNB7X for <ietf-smtp@ietfa.amsl.com>; Sun, 31 Mar 2019 10:58:07 -0700 (PDT)
Received: from mail-yb1-xb43.google.com (mail-yb1-xb43.google.com [IPv6:2607:f8b0:4864:20::b43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DD8B612001B for <ietf-smtp@ietf.org>; Sun, 31 Mar 2019 10:58:06 -0700 (PDT)
Received: by mail-yb1-xb43.google.com with SMTP id g12so469193ybh.7 for <ietf-smtp@ietf.org>; Sun, 31 Mar 2019 10:58:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dombox.org; s=default; h=mime-version:from:date:message-id:subject:to; bh=v3Zb9ziiotgojo9zXIXGhEjw0PuH9N/Omknkos8KdUU=; b=lyCwKqyj70MHHfwjFLRHqBunXL+Pk4LqxpqfrF8DVcugjYNgG+1R9uiLPFysnTJOGG Q21F3H9+PY6dqnNlcXJVx5uMjAB4UlN+EvEqofS6LLH3sqMG4/kNdHSHtg9rQEPCMrz8 gbV/pEETNqI2naSTOwGhlelW7lMfgQEFnZG1k10ErNY/E+pUALwqiHBjDPJBGijfCuIf ofACQTf2LfQnepJz74vDfWb+IAoDcdFpb+l/xg8oczXmCha1Y8cdrWCOVkO6ci9qbs57 2Vtnb1R0swrSC4QkEhTWOzKv/pCawpDkcuqihYSKY+e7X7kn+Xpqz3LQrJOc02dij+7h 2CKg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=v3Zb9ziiotgojo9zXIXGhEjw0PuH9N/Omknkos8KdUU=; b=KTrXrUzJ/HlcvBd9tOgvaUpcQkMbJXPxsuPkqBGRcaDaZY3iIEN6ejwn/x3P0NVx3N 1EIl7XZn0EXO2bizUGQ0DfrL6VnE1rGJwSIvAKbmr3j7H0SArq760E97jFsGTIOouohF h+m1wJIws38PiE20kyCs1ieYiDXv2CQRKPn0KvzVD+/c1ffvpOHcF3FdPJP6qrBUJrQo 9tOHmiWf+ONU8m1ng069w/4CFyy5pf+nYtkxWLCUvrqwZwNH87+V6tmquTWGVfzHviCx yUlCQIDzQ4+IJVGLu7H742k8/yUifXJErgL09TUbN2QqxhQr5ADXn3put/FjCYFt+fz2 6IxA==
X-Gm-Message-State: APjAAAWb57sszAmP37MLhhRYRIvPupt72ZR5G0feag3eTGhyay17dpOM neoRerBvo/oclBqMGceO9DKXBqlS0c9lcCAzSn4jri6athQ=
X-Google-Smtp-Source: APXvYqx5NmTJRhKwysoSyKXNa/efifa8vhZ+oC2Zax+/WCUpECgjLXvRX1jN7UKBIfcAqAtpWLCpLpy3jJMnpKbv8sc=
X-Received: by 2002:a25:6b4d:: with SMTP id o13mr7677213ybm.89.1554055085953; Sun, 31 Mar 2019 10:58:05 -0700 (PDT)
MIME-Version: 1.0
From: Viruthagiri Thirumavalavan <giri@dombox.org>
Date: Sun, 31 Mar 2019 23:27:30 +0530
Message-ID: <CAOEezJRM8ZVaWK6rtvP4ZH9CbN-itVof9_Zi8hf+wVym0cAxzA@mail.gmail.com>
To: ietf-smtp@ietf.org, barry@python.org
Content-Type: multipart/alternative; boundary="0000000000005c2ddc058567a5cf"
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf-smtp/8i_gnHqMYjZcnr1jLVFYJgw7Z60>
Subject: [ietf-smtp] Proper definition of the term "email payload".
X-BeenThere: ietf-smtp@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Discussion of issues related to Simple Mail Transfer Protocol \(SMTP\) \[RFC 821, RFC 2821, RFC 5321\]" <ietf-smtp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf-smtp>, <mailto:ietf-smtp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf-smtp/>
List-Post: <mailto:ietf-smtp@ietf.org>
List-Help: <mailto:ietf-smtp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf-smtp>, <mailto:ietf-smtp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 31 Mar 2019 18:00:08 -0000

Hello IETF,

I need some clarification about the term "email payload".

Wikipedia <https://en.wikipedia.org/wiki/Payload_(computing)> says

*In computing and telecommunications, the payload is the part of
transmitted data that is the actual intended message. Headers and metadata
are sent only to enable payload delivery*

Python email library documentation
<https://docs.python.org/3/library/email.message.html> says this.

*An email message consists of headers and a payload (which is also referred
to as the content). Headers are RFC 5322 or RFC 6532 style field names and
values, where the field name and value are separated by a colon. The colon
is not part of either the field name or the field value. The payload may be
a simple text message, or a binary object, or a structured sequence of
sub-messages each with their own set of headers and their own payload. The
latter type of payload is indicated by the message having a MIME type such
as multipart/* or message/rfc822.*

It looks like Python email library
<https://github.com/python/cpython/blob/3.7/Lib/email/message.py>author "Barry
Warsaw <https://barry.warsaw.us/>" followed similar definition found in
wikipedia when defining his library functions. But I feel like calling ONLY
the email "Body Part" as "payload" is wrong. The term "payload" should
refer to the entire "Message Part" in Email. i.e. Both Headers and Body.

When you place an order for a "box of beer", you are not paying only for
the "beer cans", but also paying for the "container box". So the payload
here is the entire box.

HTTP Example:

HTTP/1.1 200 OK
Date: Sun, 10 Oct 2010 23:26:07 GMT
Content-Type: text/html
Content-Length: 1234

<html>

<head>
<title>Hello World!</title>
</head>

<body>
(more contents)
  .
  .
  .
</body>
</html>



If you take a closer look at this HTTP example, the headers are only just
instructions for the client. The end user doesn't need to worry about any
piece of information found in those headers. So wikipedia definition
perfectly suited for applications like HTTP.

But in Email, When a mail get transferred from Hop A to Hop C via Hop B,
the user in Hop A actually wants to deliver the whole "message part" to Hop
C. If Hop B, strips the headers and transfer only the "Body" part, then it
becomes an "Anonymous" message. So the end user requires the information
found in the "Headers" too. e.g. From, Subject, Date etc. [In HTTP, title
tag is equivalent to Subject and it's found in the "head" Markup, not in
the HTTP Headers]

As you can see, the user is interested in the "entire message". So the term
"actual intended message" should refer to the "whole message" extracted
from the DATA command. The "actual intended message" should be pictured like
this <https://www.dropbox.com/s/2i6mec5fzgu1v6n/messagepart1.png?dl=0> in
email.

Also note that, when you migrate your mails to another mail service, you
need the whole message with Headers, not just the body.

Based on my points, I believe calling only the "Body" part as "Payload" is
wrong. I would love to hear your thoughts on this. If Barry Warsaw is here,
would love to know your opinion too.

PS: I did actually ask this question 2 years back in a stackexchange website
<https://softwareengineering.stackexchange.com/questions/342184/what-is-an-email-payload>.
I wasn't satisfied with the answer I got there. I don't want to use the
term incorrectly in my application. That's why I'm posting it here.

Thanks
-- 
Best Regards,

Viruthagiri Thirumavalavan
Dombox, Inc.