RFC 5598

Internet Mail Architecture

๐Ÿ“… published July 2009, from ietf

Internet Mail Architecture ๐Ÿ’Œโœจ

okay bestie, let's start with the basics ๐ŸŽ€

  • RFC number: 5598
  • Series: Network Working Group
  • Author: D. Crocker, from Brandenburg InternetWorking
  • Category: Informational
  • Date: July 2009
  • Obsoletes / Updates: the title block doesn't list anything it obsoletes or updates

Abstract ๐ŸŒธ

okay so the vibe is that Internet Mail has been around for thirty-five years ๐Ÿ˜ญ and in that time it went from a small thing to a global infrastructure service ๐ŸŒ that everybody depends on. The changes were evolutionary, not revolutionary, because everyone really wanted to keep the existing installed base working and keep it useful ๐Ÿซถ

here's the tea though: to work on this huge, complicated system together, everyone needs the same mental picture AND the same vocabulary. right now the different perspectives make it super hard to know what another person actually means when they say something ๐Ÿ’€ so this doc is the shared reference point ๐Ÿ’… it describes the enhanced Internet Mail architecture as it works right now ๐Ÿฆ‹

Status of This Memo ๐ŸŽ€

this memo gives information to the Internet community ๐Ÿ’œ it is not an Internet standard of any kind, so don't go treating it like one ๐Ÿ™ˆ and distribution is unlimited, so share it with everyone โœจ

Copyright (c) 2009 IETF Trust and the persons identified as the document authors. All rights reserved. ๐Ÿ”’

this document is covered by BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents, as they stood on the date it was published. you can find those at http://trustee.ietf.org/license-info. please actually read them, because they spell out your rights and restrictions for this doc ๐Ÿง

also, this doc might have material from IETF Documents or IETF Contributions that were published or made publicly available before November 10, 2008. the people who control the copyright on some of that stuff might not have given the IETF Trust permission to allow changes outside the IETF Standards Process ๐Ÿ˜ฌ so unless you get a proper license from those copyright holders, this document can't be modified outside the IETF Standards Process, and you can't make derivative works of it outside that process either. the exceptions are formatting it for publication as an RFC, or translating it into languages other than English ๐ŸŒˆ

Table of Contents ๐Ÿงš

1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
  1.1.  History  . . . . . . . . . . . . . . . . . . . . . . . . .  4
  1.2.  The Role of This Architecture  . . . . . . . . . . . . . .  6
  1.3.  Document Conventions . . . . . . . . . . . . . . . . . . .  7
2.  Responsible Actor Roles  . . . . . . . . . . . . . . . . . . .  7
  2.1.  User Actors  . . . . . . . . . . . . . . . . . . . . . . .  8
  2.2.  Message Handling Service (MHS) Actors  . . . . . . . . . . 11
  2.3.  Administrative Actors  . . . . . . . . . . . . . . . . . . 14
3.  Identities . . . . . . . . . . . . . . . . . . . . . . . . . . 17
  3.1.  Mailbox  . . . . . . . . . . . . . . . . . . . . . . . . . 17
  3.2.  Scope of Email Address Use . . . . . . . . . . . . . . . . 18
  3.3.  Domain Names . . . . . . . . . . . . . . . . . . . . . . . 19
  3.4.  Message Identifier . . . . . . . . . . . . . . . . . . . . 19
4.  Services and Standards . . . . . . . . . . . . . . . . . . . . 21
  4.1.  Message Data . . . . . . . . . . . . . . . . . . . . . . . 24
    4.1.4.  Identity References in a Message . . . . . . . . . . . 25
  4.2.  User-Level Services  . . . . . . . . . . . . . . . . . . . 29
  4.3.  MHS-Level Services . . . . . . . . . . . . . . . . . . . . 31
  4.4.  Transition Modes . . . . . . . . . . . . . . . . . . . . . 34
  4.5.  Implementation and Operation . . . . . . . . . . . . . . . 35
5.  Mediators  . . . . . . . . . . . . . . . . . . . . . . . . . . 35
  5.1.  Alias  . . . . . . . . . . . . . . . . . . . . . . . . . . 37
  5.2.  ReSender . . . . . . . . . . . . . . . . . . . . . . . . . 38
  5.3.  Mailing Lists  . . . . . . . . . . . . . . . . . . . . . . 39
  5.4.  Gateways . . . . . . . . . . . . . . . . . . . . . . . . . 41
  5.5.  Boundary Filter  . . . . . . . . . . . . . . . . . . . . . 42
6.  Considerations . . . . . . . . . . . . . . . . . . . . . . . . 42
  6.1.  Security Considerations  . . . . . . . . . . . . . . . . . 42
  6.2.  Internationalization . . . . . . . . . . . . . . . . . . . 43
7.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 45
  7.1.  Normative References . . . . . . . . . . . . . . . . . . . 45
  7.2.  Informative References . . . . . . . . . . . . . . . . . . 47
Appendix A.  Acknowledgments . . . . . . . . . . . . . . . . . . . 50
Index  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

1. Introduction โœจ

okay so same energy as the abstract, but now with the receipts ๐Ÿงพ Internet Mail has a thirty-five-year history, and it's changed a LOT in scale and complexity as it turned into a global infrastructure service ๐ŸŒ the changes were evolutionary, not revolutionary, because everyone was protecting the installed base and keeping it useful ๐Ÿ’œ today it's run by lots of independent operators, with lots of different components serving Users, plus lots of different components that move messages around ๐Ÿšš

the underlying technical standards are a whole rich buffet of features ๐Ÿ“ the core specs are:

  • Simple Mail Transfer Protocol (SMTP) ([RFC0821], [RFC2821], [RFC5321]) is what moves a message through the Internet ๐Ÿ“จ
  • Internet Mail Format (IMF) ([RFC0733], [RFC0822], [RFC2822], [RFC5322]) defines what a message object actually is ๐Ÿ“ฆ
  • Multipurpose Internet Mail Extensions (MIME) [RFC2045] is the upgrade to the message object that lets you add multimedia attachments ๐Ÿ“Ž๐Ÿ–ผ๏ธ

public collaboration on the technical, operations, and policy side of email has been a big deal ๐Ÿ™Œ this includes all the work that responds to email abuse. it's brought a MUCH wider range of people into the technical community, which is iconic and also a little chaotic ๐Ÿ’€ to collaborate on this huge system, everyone needs the same shared view and the same language for its parts and how they interact. but because perspectives differ so much, it's hard to tell what someone else means ๐Ÿ˜ญ

that's why this document exists ๐Ÿฆ‹ it describes the realities of the current system. Internet Mail is always getting new technical, operations, and policy work, and the discussions keep getting stuck because people use different models of email service design and different meanings for the same terms ๐Ÿ™ƒ

so, to be the shared frame of reference, this document describes the enhanced Internet Mail architecture as it currently works. it focuses on:

  • Capturing refinements to the email model ๐Ÿช„
  • Clarifying functional roles for the architectural components ๐ŸŽญ
  • Clarifying identity-related issues across the email service ๐Ÿชช
  • Defining terminology for architectural components and their interactions ๐Ÿ“–
โš ๏ธ bestie reminder: some of those citations point at older RFCs, so keep the numbers handy when you go looking. ([RFC0733] and friends are all in the references ๐Ÿซถ)

1.1. History โœจ

Okay so the very first standardized architecture for networked email split things into two worlds ๐Ÿ’…: the user world, made of Message User Agents (MUAs), and the transfer world, the Message Handling Service (MHS), which is made up of Message Transfer Agents (MTAs) [RFC1506]. The MHS takes a message from one User and delivers it to one or more other Users, which basically creates a virtual MUA-to-MUA exchange environment ๐Ÿฆ‹

Figure 1 shows that this architecture has two logical layers of interoperability ๐ŸŒธ. One is directly between Users. The other is among the components along the transfer path. On top of that, there's interoperability between the layers too, first when a message gets posted from the User to the MHS, and later when it's delivered from the MHS back to the User.

The operational service has glowed up a lot ๐Ÿ’–, but core stuff like mailbox addressing and message format style is still remarkably constant (iconic ๐Ÿ™ˆ). The original split between user level and transfer level is still there, just with elaborations in each. "Internet Mail" is the term for the whole collection of user and transfer components and services.

For Internet Mail, "end-to-end" usually refers to a single posting and the set of deliveries that result from a single transit of the MHS. The big exception is group dialogue mediated through a Mailing List ๐Ÿ“ฌ. There, two postings happen before the intended Recipients receive an Author's message, see Section 2.1.4 for more on that. Also, some uses of email treat the entire email service, including Author and Recipient, as a subordinate component ๐Ÿ‘€. For those, "end-to-end" refers to points outside the email service. Examples are voicemail over email [RFC3801], EDI (Electronic Data Interchange) over email [RFC1767], and facsimile over email [RFC4142] ๐Ÿ“ 

                                     +--------+
                  ++================>|  User  |
                  ||                 +--------+
                  ||                      ^
      +--------+  ||          +--------+  .
      |  User  +==++=========>|  User  |  .
      +---+----+  ||          +--------+  .
          .       ||               ^      .
          .       ||   +--------+  .      .
          .       ++==>|  User  |  .      .
          .            +--------+  .      .
          .                 ^      .      .
          .                 .      .      .
          V                 .      .      .
      +---+-----------------+------+------+---+
      |   .                 .      .      .   |
      |   .................>.      .      .   |
      |   .                        .      .   |
      |   ........................>.      .   |
      |   .                               .   |
      |   ...............................>.   |
      |                                       |
      |     Message Handling Service (MHS)    |
      +---------------------------------------+

      Legend: === lines indicate primary (possibly indirect)
                  transfers or roles
              ... lines indicate supporting transfers or roles

            Figure 1: Basic Internet Mail Service Model

End-to-end Internet Mail exchange is accomplished by using a standardized infrastructure with these components and characteristics:

  • An email object
  • Global addressing
  • An asynchronous sequence of point-to-point transfer mechanisms
  • No requirement for prior arrangement between MTAs or between Authors and Recipients
  • No requirement for prior arrangement between point-to-point transfer services over the open Internet
  • No requirement for Author, Originator, or Recipients to be online at the same time

The end-to-end portion of the service is the email object, called a "message". Broadly, the message itself separates control information, used for handling, from the Author's content ๐Ÿ“ฆ

A precept for designing mail over the open Internet is permitting User-to-User and MTA-to-MTA interoperability without prior, direct arrangement between the independent administrative authorities responsible for handling a message ๐Ÿค. All participants rely on the core services being universally supported and accessible, either directly or through Gateways that act as translators between Internet Mail and email environments conforming to other standards. Given how important spontaneity and serendipity are in interpersonal communication, not requiring that prearrangement is a core benefit of Internet Mail, and it remains a core requirement for it ๐Ÿ’œ

Within localized networks at the edge of the public Internet, prior administrative arrangement often is required. That can include access control, routing constraints, and configuration of the information query service ๐Ÿ”. Recipient authentication has usually been required for message access since the beginning of Internet Mail. In recent years, it also has been required for message submission. In these cases, a server validates the client's identity, either through explicit security protocols or through implicit infrastructure queries that identify "local" participants.


1.2. The Role of This Architecture ๐Ÿง 

An Internet service is an integration of related capabilities among two or more participating nodes. Those capabilities are accomplished across the Internet by one or more protocols. What connects a protocol to a service is an architecture ๐ŸŽ€. An architecture specifies how the protocols implement the service by defining the logical components of a service and the relationships among them. So from that logical view, a service defines what is being done, an architecture defines where the pieces are (in relation to each other), and a protocol defines how particular capabilities are performed.

An architecture describes a service more formally, at a relatively high level. A protocol that implements some portion of a service will conform to the architecture to a greater or lesser extent, depending on the pragmatic tradeoffs it makes when trying to implement the architecture under real-world constraints. Failing to precisely follow an architecture is not a failure of the protocol, and failing to precisely cast a protocol is not a failure of the architecture ๐Ÿ™…โ€โ™€๏ธ. Where a protocol varies from the architecture, it's of course appropriate for it to explain the reason for the variance. Still, that variance is not a mark against a protocol. Happily, the IETF prefers running code to architectural purity ๐Ÿƒโ€โ™€๏ธ๐Ÿ’จ

In this particular case, this architecture tries to define the logical components of Internet email, and it does so post hoc, capturing the architectural principles that the current email protocols embody. Different email protocols conform to this architecture more or less well ๐ŸŒˆ. Insofar as this architecture differs from those protocols, the reasons are generally well understood and are required for interoperation. Those differences are not a sign that protocols need to be fixed. However, this architecture is a best attempt at a logical model of Internet email. So insofar as new protocol development varies from this architecture, designers need to understand those differences and explain them carefully ๐Ÿ“


1.3. Document Conventions ๐Ÿ“š

References to structured fields of a message use a two-part dotted notation. The first part cites the document that contains the specification for the field, and the second part is the name of the field. So <RFC5322.From> is the IMF From: header field in an email content header, and <RFC5321.MailFrom> is the address in the SMTP "Mail From" command ๐Ÿ’Œ

When it appears without the IMF (RFC 5322) qualifier, a header field name is shown with a colon suffix. For example, From:.

References to labels for actors, functions, or components have the first letter capitalized โœจ


2. Responsible Actor Roles ๐Ÿ‘‘

Internet Mail is a highly distributed service, with a variety of Actors playing different roles. These Actors fall into three basic types ๐Ÿซถ:

  • User
  • Message Handling Service (MHS)
  • ADministrative Management Domain (ADMD)

Although they're related to a technical architecture, the focus on Actors is about participant responsibilities, not the functionality of modules. That's why the labels are different from the ones used in classic diagrams of email architecture ๐Ÿงš


2.1. User Actors ๐Ÿฆ‹

Users are the sources and sinks of messages. Users can be people, organizations, or processes ๐Ÿ™Œ. They can have an exchange that iterates, and they can expand or contract the set of Users that participate in a set of exchanges. In Internet Mail, there are four types of Users ๐Ÿ’…:

  • Authors
  • Recipients
  • Return Handlers
  • Mediators

Figure 2 shows the primary and secondary flows of messages among them. As a pragmatic heuristic: User Actors can generate, modify, or look at the whole message ๐Ÿ‘€

        ++==========++
        ||  Author  ||<..................................<..
        ++=++=++=++=++                                     .
           || || ||     ++===========++                    .
           || || ++====>|| Recipient ||                    .
           || ||        ++=====+=====++                    .
           || ||               .                           .
           || ||               ..........................>.+
           || ||                                           .
           || ||               ...................         .
           || ||               .                 .         .
           || ||               V                 .         .
           || ||         +-----------+    ++=====+=====++  .
           || ++========>| Mediator  +===>|| Recipient ||  .
           ||            +-----+-----+    ++=====+=====++  .
           ||                  .                 .         .
           ||                  ..................+.......>.+
           ||                                              .
           ||    ..............+..................         .
           ||    .             .                 .         .
           \/    V             V                 '         .
        +-----------+    +-----------+    ++=====+=====++  .
        | Mediator  +===>| Mediator  +===>|| Recipient ||  .
        +-----+-----+    +-----+-----+    ++=====+=====++  .
              .                .                 .         .
              .................+.................+.......>..

       Legend: === lines indicate primary (possibly indirect)
                   transfers or roles
               ... lines indicate supporting transfers or roles

              Figure 2: Relationships among User Actors

From a User's perspective, all message-transfer activities are performed by a monolithic Message Handling Service (MHS), even though the actual service can be provided by many independent organizations. Users are customers of this unified service ๐Ÿ›๏ธ

Whenever any MHS Actor sends information back to an Author or Originator in the sequence of handling a message, that Actor is a User ๐Ÿ”„

2.1.1. Author โœจ

Okay so the Author is the one who creates the message, writes its contents, and makes the list of Recipient addresses ๐Ÿ’Œ. The MHS takes the message from the Author and delivers it to the Recipients. ๐Ÿฆ‹ The MHS has an Originator role (Section 2.2.1) that lines up with the Author role.

2.1.2. Recipient ๐Ÿ“ฌ

The Recipient is the consumer of the delivered message. The MHS has a Receiver role (Section 2.2.4) that matches up with the Recipient role. This is labeled Recv in Figure 3.

Any Recipient can close the user-communication loop by creating and submitting a brand-new message that replies to the Author ๐Ÿ”. An automated example of this is the Message Disposition Notification (MDN), which tells the Author how the Recipient handled the message. (See Section 4.1.)

2.1.3. Return Handler ๐ŸŽ€

Also called "Bounce Handler," the Return Handler is a special kind of Recipient whose whole job is servicing the notifications the MHS generates while it transfers or delivers the message. (See Figure 3.) These notices can be about failures or completions, and they go to an address that the Originator specifies. This Return Handling address (also known as a Return Address) might look nothing like the address of the Author or Originator ๐Ÿ™ˆ.

2.1.4. Mediator ๐Ÿงš

A Mediator receives, aggregates, reformulates, and redistributes messages among Authors and Recipients who are the principals in (potentially) long-running exchanges. This gets easily mixed up with the underlying MHS transfer exchanges. ngl, though, they have totally different purposes and work in totally different ways ๐Ÿ’….

When mail gets delivered to the Mediator named in the RFC5321.RcptTo command for the original message, the MHS handles it the same way it handles any other Recipient. The MHS sees each posting and delivery activity between sources and sinks as independent. It does not see later re-posting as a continuation of a process ๐Ÿ‘€. Because the Mediator originates messages, it can receive replies. So when a Mediator submits a reformulated message, it's an Author, even though it's really acting as an agent for one or more other Authors. A Mediator is literally a full-fledged User. Mediators get a deep dive in Section 5.

A Mediator tries to keep the original Author's information in the message it reformulates, but it's allowed to make meaningful changes to the message content or envelope. The MHS sees a brand-new message, but Users get something they interpret as coming from, or at least started by, the Author of the original message. The Mediator's role is not just about connecting other participants. The Mediator is responsible for the new message โœจ.

A Mediator's role is complex and depends on the situation. For example, it might modify and add content, or regulate which Users are allowed to take part and when. The classic example is a group Mailing List ๐ŸŒˆ. In a more complex setup, a sequence of Mediators could carry out a sequence of formal steps, like reviewing, modifying, and approving a purchase request.

A Gateway is a particularly interesting form of Mediator ๐Ÿฆ‹. It's a hybrid of User and Relay that connects heterogeneous mail services. Its purpose is to emulate a Relay. For a detailed discussion, see Section 2.2.3.


2.2. Message Handling Service (MHS) Actors ๐ŸŒธ

The Message Handling Service (MHS) does a single end-to-end transfer on behalf of the Author to reach the Recipient addresses given in the original RFC5321.RcptTo commands. Exchanges that are either mediated or iterative and long-running, like those used for collaborating over time, are handled by the User Actors, not the MHS Actors. As a pragmatic heuristic, MHS Actors generate, modify, or look at only transfer data, rather than the entire message ๐Ÿง .

Figure 3 shows how the transfer participants in Internet Mail relate to each other. Even though it shows the Originator (labeled Origin) as separate from the Author, and the Receiver (labeled Recv) as separate from the Recipient, each pair of roles usually has the same Actor ๐Ÿ‘ฏ. Transfers typically involve one or more Relays. Direct delivery from the Originator to the Receiver is possible, though. Intra-organization mail services usually have only one Relay.

        ++==========++                        ++===========++
        ||  Author  ||                        || Recipient ||
        ++====++====++   +--------+           ++===========++
              ||         | Return |                  /\
              ||         +-+------+                  ||
              \/           .    ^                    ||
          +---------+      .    .                +---++---+
          |         |      .    .                |        |
       /--+---------+----------------------------+--------+----\
       |  |         |      .    .      MHS       |        |    |
       |  | Origin  +<......    .................+  Recv  |    |
       |  |         |           ^                |        |    |
       |  +---++----+           .                +--------+    |
       |      ||                .                    /\        |
       |      ||  ..............+..................  ||        |
       |      \/  .             .                 .  ||        |
       |  +-------+-+        +--+------+        +-+--++---+    |
       |  |  Relay  +=======>|  Relay  +=======>|  Relay  |    |
       |  +---------+        +----++---+        +---------+    |
       |                          ||                           |
       |                          ||                           |
       |                          \/                           |
       |                     +---------+                       |
       |                    | Gateway +-->...                  |
       |                     +---------+                       |
       \-------------------------------------------------------/

      Legend: === and || lines indicate primary (possibly
                  indirect) transfers or roles
              ... lines indicate supporting transfers or roles

              Figure 3: Relationships among MHS Actors

2.2.1. Originator ๐Ÿ“

The Originator makes sure a message is valid for posting, and then submits it to a Relay. A message is valid if it conforms to both Internet Mail standards and local operational policies. The Originator can just review the message for conformance and reject it if it finds errors, or it can create some or all of the information that's needed. Basically, the Originator is responsible for the functions of the Mail Submission Agent ๐ŸŽ€.

The Originator operates with dual allegiance ๐Ÿ‘‘. It serves the Author, and the two can be the same entity. But its role in making sure a message is valid means it also represents the local operator of the MHS, that is, the local ADministrative Management Domain (ADMD).

The Originator also handles any post-submission, Author-related administrative tasks tied to message transfer and delivery. Notably, that means sending error and delivery notices, enforcing local policies, and dealing with messages from the Author that turn out to be problematic for the Internet ๐Ÿ™ƒ. The Originator is accountable for the message content, even when it isn't the one responsible for it. The Author creates the message, but the Originator deals with any transmission issues that come up with it.

2.2.2. Relay ๐Ÿš€

The Relay does MHS-level transfer-service routing and store-and-forward by transmitting or retransmitting the message to its Recipients. The Relay adds trace information [RFC2505] but does not modify the envelope information or the message content semantics. It can modify the message content representation, like changing the form of transfer encoding from binary to text, but only as required to meet the capabilities of the next hop in the MHS ๐Ÿงฉ.

A Message Handling System (MHS) network consists of a set of Relays. This network sits above any underlying packet-switching network that might be used, and below any Gateways or other Mediators.

In other words, email scenarios can involve three distinct architectural layers, each providing its own type of store-and-forward service:

  • User Mediators
  • MHS Relays
  • Packet Switches

The bottom layer is the Internet's IP service. The most basic email scenarios involve Relays and Switches ๐ŸŒ.

When a Relay stops trying to transfer a message, it becomes an Author, because it sends an error message to the Return Address. Looping is avoided by leaving a Return Address out of this message ๐Ÿ”„.

2.2.3. Gateway ๐ŸŒ‰

A Gateway is a hybrid of User and Relay that connects heterogeneous mail services. Its purpose is to emulate a Relay, and the closer it comes to this, the better ๐Ÿ’ฏ. A Gateway operates as a User when it needs the ability to modify message content.

Differences between mail services can be as small as minor syntax variations, but they usually involve significant semantic distinctions. One difference could be email addresses that are hierarchical and machine-specific, rather than a flat, global namespace. Another could be support for text-only content versus multimedia ๐ŸŽจ. So the Relay function in a Gateway is a real design challenge if the result is supposed to feel nearly seamless. The challenge is to make sure User-to-User functionality works between the services, despite differences in their syntax and semantics.

The basic test of Gateway design is whether an Author on one side of a Gateway can send a useful message to a Recipient on the other side, without requiring changes to any components in the Author's or Recipient's mail services other than adding the Gateway. To each of these otherwise independent services, the Gateway looks like a native participant ๐Ÿซถ. But the ultimate test of Gateway design is whether the Author and Recipient can keep up a dialogue. In particular: can a Recipient's MUA automatically formulate a valid Reply that will reach the Author? ๐Ÿค”

2.2.4. Receiver ๐Ÿ“ฅ

The Receiver does final delivery or sends the message to an alternate address. It can also do filtering and other policy enforcement immediately before or after delivery ๐Ÿ›ก๏ธ.

2.3. Administrative Actors โœจ

Okay so, admin actors are the folks who run the infrastructure, and they can belong to totally different organizations, each with its own admin authority ๐Ÿข. Because they're all independent but still need to talk to each other, we need a way to draw lines between them. That's where the ADministrative Management Domain (ADMD) comes in ๐Ÿ’…. Each ADMD can have wildly different operating policies and different ways of deciding what to trust ๐Ÿ”ฅ. The classic example is mail that stays inside one organization versus mail that goes between independent organizations. Those two kinds of traffic get handled very differently, so we need the ADMD construct to mark where one zone ends and the next begins ๐Ÿฆ‹.

Internet Mail is run by different providers (or operators), and each one can be its own independent ADMD ๐ŸŒธ. That independence in decision-making is what draws the boundaries between the different parts of the Internet Mail service. Take a department running a local Relay, an IT team running an enterprise Relay, and an ISP running a public shared email service. They can be wired together in lots of combinations of admin and operational relationships. Each one is its own distinct ADMD, and each might have a complicated pile of functional components inside it ๐Ÿงš. Figure 4 shows how ADMDs relate to each other. The big win of the ADMD idea is that it gives us a way to talk about designs, policies, and operations that need to tell internal issues apart from external ones ๐Ÿ’œ.

The architectural impact of needing boundaries between ADMDs is covered in [Tussle]. The biggest deal here is that the entities talking across an ADMD boundary usually have the extra job of enforcing their organization's policies on outside communication ๐Ÿ˜ญ. On a more everyday level, routing mail between ADMDs can get tricky. For example, you might need to send mail between organizational partners over specially trusted paths ๐Ÿ›ค๏ธ.

There are three basic types of ADMDs ๐Ÿ‘‘:

  • Edge: Independent transfer services in networks at the edge of the open Internet Mail service.
  • Consumer: Might be a type of Edge service, as is common for web-based email access.
  • Transit: Mail Service Providers (MSPs) that offer value-added capabilities for Edge ADMDs, such as aggregation and filtering.

Mail-level transit is different from packet-level switching, so don't mix them up ๐Ÿ™ˆ. End-to-end packet transfers usually go through intermediate routers. Email across the open Internet, though, can go directly between the Boundary MTAs of Edge ADMDs. This difference between direct and indirect interaction is what highlights the stuff we talk about in Section 2.2.2 โœจ.

      +--------+     +---------+     +-------+     +-----------+
      |  ADMD1 |<===>|  ADMD2  |<===>| ADMD3 |<===>|   ADMD4   |
      |  ----- |     |  -----  |     | ----- |     |   -----   |
      |        |     |         |     |       |     |           |
      | Author |     |         |     |       |     | Recipient |
      |   .    |     |         |     |       |     |     ^     |
      |   V    |     |         |     |       |     |     .     |
      |  Edge..+....>|.Transit.+....>|-Edge..+....>|..Consumer |
      |        |     |         |     |       |     |           |
      +--------+     +---------+     +-------+     +-----------+

      Legend: === lines indicate primary (possibly indirect)
                  transfers or roles
              ... lines indicate supporting transfers or roles

           Figure 4: Administrative Domain (ADMD) Example

Edge networks can use proprietary email standards internally, totally their call ๐ŸŽ€. The line between Transit and Edge transfer services still matters a lot, though, because it's a reminder to think hard about interaction and protection between independent administrations ๐Ÿ”’. This distinction specifically calls for extra care when you're looking at who takes over responsibility at each step, plus the accountability and authorization relationships among everyone involved in moving a message ๐Ÿ’€.

The way ADMD components interact is governed by that domain's policies, and those policies cover things like these ๐Ÿ“‹:

  • Reliability
  • Access control
  • Accountability
  • Content evaluation and modification

These policies can live in different functional components, depending on what the ADMD needs. For an example, check out [RFC5068] ๐ŸŒˆ.

Consumer, Edge, and Transit services can all be offered by providers who run component services or sets of services ๐Ÿซถ. It's also possible for one ADMD to host services for other ADMDs, which is kind of iconic ๐ŸŒŸ.

Here are some common examples of ADMDs ๐Ÿ“:

  • Enterprise Service Providers: These ADMDs operate the internal data and/or the mail services within an organization.
  • Internet Service Providers (ISP): These ADMDs operate the underlying data communication services, which are used by one or more Relay and User. ISPs are not responsible for performing email functions, but they can provide an environment in which those functions can be performed.
  • Mail Service Providers: These ADMDs operate email services, such as for consumers or client companies.

Practical operational concerns mean providers often have to get involved in administration and enforcement issues. That involvement can even stretch down to the operators of lower-level packet services ๐Ÿ”ฅ.


3. Identities ๐Ÿฆ‹

The forms of identity used by Internet Mail are: mailbox, domain name, message-ID, and ENVID (envelope identifier). Each one is globally unique ๐Ÿ’–.

3.1. Mailbox ๐Ÿ“ฌ

"A mailbox receives mail. It is a conceptual entity that does not necessarily pertain to file storage." [RFC5322]

A mailbox is specified as an Internet Mail address <addr-spec> ๐Ÿ’Œ. It has two distinct parts, separated by an at-sign (@). The right side is a globally interpreted domain name tied to an ADMD. We'll get into domain names in Section 3.3. The addressing syntax can support source routes, which show the path a message ought to take. Source routes aren't common, and [RFC5321] has deprecated them, so please don't go using them ๐Ÿ™…โ€โ™€๏ธ.

The left side of the at-sign holds a string that's globally opaque, called the <local-part> ๐Ÿคซ. Only the entity named by the address's domain can interpret it. Except for the exceptions covered later in this section, everyone else treats the <local-part> as an uninterpreted literal string and keeps all of its original details intact. So putting it out there publicly is basically like sending a web browser "cookie" that only means something when it gets returned to whoever made it ๐Ÿช.

Some <local-part> values have been standardized for contacting people at an organization. These names cover common operations and business functions, and they're defined in [RFC2142] ๐Ÿข.

Sites often have their own local structuring conventions for the left-hand side, <local-part>, of an <addr-spec>. This lets them do sub-addressing, like telling apart different discussion groups used by the same person ๐Ÿงฉ. Just know that these conventions are strictly private to the User's organization and aren't interpreted by any domain except the one on the right side of the <addr-spec> ๐Ÿ™ƒ. The only exceptions are specialized services that follow public, standardized conventions, which we'll mention below.

Basic email addressing defines the <local-part> as globally opaque. Some uses of email, though, add a standardized, global schema to that value. One example is between an Author and a Gateway. The <local-part> details stay invisible to the public email transfer infrastructure, but they give addressing and handling instructions for further processing by the Gateway โœจ. Standardized examples of these conventions include the telephone numbering formats for the Voice Profile for Internet Mail (VPIM) [RFC3801], like this:

+16137637582@vpim.example.com

And iFax ([RFC3192], [RFC4143]) looks like this:

FAX=+12027653000/T33S=1387@ifax.example.com

3.2. Scope of Email Address Use ๐ŸŒ

Email addresses have gone way beyond their original job of email transfer and delivery ๐Ÿ˜ญ. Practically speaking, an email address string has turned into the common identifier for online identity. So it's super important to be clear about both the nature and role of an identity string in a given context, and about which entity is responsible for setting that string ๐Ÿซฃ. For example, see Sections 4.1.4, 4.3.3, and 5.

3.3. Domain Names ๐ŸŒ

A domain name is a global reference to an Internet resource, like a host, a service, or a network ๐Ÿ’ป. A domain name usually maps to one or more IP Addresses. Conceptually, a name can represent an organization, a collection of machines working together as one homogeneous service, or a single machine. A domain name can be administered to refer to an individual User, but that isn't common practice ๐Ÿ™…โ€โ™€๏ธ. The name is a hierarchical sequence of labels separated by dots (.), with the top of the hierarchy on the right end of the sequence. There can be lots of names in the sequence, so the depth of the hierarchy can get pretty substantial ๐Ÿ“š. Domain names are defined and operated through the Domain Name System (DNS) ([RFC1034], [RFC1035], [RFC2181]) ๐Ÿง .

When a domain name isn't part of a mailbox address, Internet Mail uses it to refer to the ADMD or to the host that acted on the message. For example, it might provide the administrative scope for a message identifier or handle transfer processing ๐ŸŽฏ.

3.4. Message Identifier ๐Ÿท๏ธ

There are two standardized tags for identifying messages: Message-ID: and ENVID ๐Ÿ’œ. A Message-ID: is about content, and an ENVID is about transfer. Keep those two straight and you're golden ๐Ÿ‘‘.

3.4.1. Message-ID โœจ

okay so bestie, IMF only allows one Message-ID: per message ๐Ÿ’– It's a user-level tag that's good for a bunch of things: threading, spotting duplicates, and DSN (Delivery Status Notification) tracking ๐Ÿงต. The Originator is the one who assigns it, and the Recipient's ADMD is the main consumer, though literally any Actor along the transfer path can use it ๐Ÿซถ

The Message-ID: is globally unique ๐ŸŒ It looks a lot like a mailbox, with two parts split by an at-sign (@). Usually the right side names the ADMD or host that made the ID, and the left side is a string that's globally opaque, so it just exists to make the message unique inside the domain on the right ๐Ÿ” How long that uniqueness lasts is undefined, so don't count on forever ๐Ÿ’€

Now the tricky part: what happens when a message gets revised? Deciding whether to make a new Message-ID: is kind of a vibe check ๐Ÿ˜ญ It takes a subjective call on whether the editorial content changed enough to count as a new message. [RFC5322] says, "a message identifier pertains to exactly one version of a particular message; subsequent revisions to the message each receive new message identifiers." But real life is messy, so some flexibility is needed ๐Ÿฆ‹ The impossible test is whether the Recipient will think the new one is equivalent to the old one. For most parts of Internet Mail there's no way to predict what a specific Recipient wants here ๐Ÿ™ˆ And honestly, both making a new ID and not making one have their downsides ๐Ÿ’…

Here are some guidelines and examples:

  • If a message is changed only in form, such as character encoding, it is still the same message.
  • If a message has minor additions to the content, such as a Mailing List tag at the beginning of the RFC5322.Subject header field, or some Mailing List administrative information added to the end of the primary body part text, it is probably the same message.
  • If a message has viruses deleted from it, it is probably the same message.
  • If a message has offensive words deleted from it, some Recipients will consider it the same message, but some will not.
  • If a message is translated into a different language, some Recipients will consider it the same message, but some will not.
  • If a message is included in a digest of messages, the digest constitutes a new message.
  • If a message is forwarded by a Recipient, what is forwarded is a new message.
  • If a message is "redirected", such as using IMF "Resent-*" header fields, some Recipients will consider it the same message, but some will not.

The thing is, there are no objective, precise rules for regenerating a Message-ID:, and the string doesn't get strong protection either ๐Ÿ˜ค So an ID can give you an assessment that's a little better than a guess, but it has no real value on its own for strict formal reference or comparison ๐Ÿ’œ That's exactly why the Message-ID: is not intended to be used for any function that has security implications ๐Ÿšจ


3.4.2. ENVID

The ENVID (envelope identifier) is used for message-tracking purposes ([RFC3885], [RFC3464]) about a single posting/delivery transfer ๐Ÿ“ฆ It labels one single transit of the MHS by one specific message. So the ENVID is used for a single posting of the message until that message is delivered ๐Ÿšš If the message gets re-posted, like by a Mediator, that doesn't reuse the ENVID. It can get a new one, even though the message might still legitimately keep its original Message-ID: ๐Ÿฆ‹

The format of an ENVID is free form ๐ŸŽ€ The creator can add structure to the string if they want, but no Internet standards impose any. So by implication, the scope of the string is defined by the domain name of the Return Address ๐ŸŒธ


4. Services and Standards โœจ

Okay, now we're getting into the big picture ๐Ÿ‘‘ The Internet Mail architecture has six basic types of functionality, all arranged to support a store-and-forward service. As Figure 5 shows, each type can have multiple instances, and some of those represent specialized roles ๐Ÿงš This section looks at how these components act and relate to each other, plus the Internet Mail standards that apply to them ๐Ÿ’–

   Message

   Message User Agent (MUA)

      Author MUA (aMUA)

      Recipient MUA (rMUA)

   Message Submission Agent (MSA)

      Author-focused MSA functions (aMSA)

      MHS-focused MSA functions (hMSA)

   Message Transfer Agent (MTA)

   Message Delivery Agent (MDA)

      Recipient-focused MDA functions (rMDA)

      MHS-focused MDA functions (hMDA)

   Message Store (MS)

      Author MS (aMS)

      Recipient MS (rMS)

This figure shows function modules and the standardized protocols used between them ๐Ÿซถ

                  ++========++
                  ||        ||                             +-------+
       ...........++  aMUA  ||<............................+ Disp  |
       .          ||        ||                             +-------+
       .          ++=+==+===++                                 ^
       .  local,imap}|  |{smtp,submission                      .
       .  +-----+    |  |                          +--------+  .
       .  | aMS |<---+  | ........................>| Return |  .
       .  +-----+       | .                        +--------+  .
       .                | .    *****************       ^       .
       .          +-----V-.----*------------+  *       .       .
       .      MSA | +-------+  *   +------+ |  *       .       .
       .          | | aMSA  +-(S)->| hMSA | |  *       .       .
       .          | +-------+  *   +--+---+ |  *       .       .
       V          +------------*------+-----+  *       .       .
 //==========\\                *      V {smtp  *       .       .
 || MESSAGE  ||                *   +------+    *  //===+===\\  .
 ||----------||            MHS *   | MTA  |    *  ||  dsn  ||  .
 || ENVELOPE ||                *   +--+---+    *  \\=======//  .
 ||  smtp    ||                *      V {smtp  *     ^   ^     .
 || CONTENT  ||                *   +------+    *     .   . //==+==\\
 ||  imf     ||                *   | MTA  +....*......   . || mdn ||
 ||  mime    ||                *   +--+---+    *         . \\=====//
 \\==========//                * smtp}| {local *         .     ^
       .           MDA         *      | {lmtp  *         .     .
       .      +----------------+------V-----+  *         .     .
       .      | +----------+   *   +------+ |  *         .     .
       .      | |          |   *   |      | +..*..........     .
       .      | |   rMDA   |<-(D)--+ hMDA | |  *               .
       .      | |          |   *   |      | |<.*........       .
       .      | +-+------+-+   *   +------+ |  *       .       .
       .      +------+---------*------------+  *       .       .
       .  smtp,local}|         *****************       .       .
       .             V                                 .       .
       .          +-----+                         //===+===\\  .
       .          | rMS |                         || sieve ||  .
       .          +--+--+                         \\=======//  .
       .             |{imap,pop,local                  ^       .
       .             V                                 .       .
       .       ++==========++                          .       .
       .       ||          ||                          .       .
       .......>||   rMUA   ++...........................       .
               ||          ++...................................
               ++==========++

Legend: --- lines indicate primary (possibly indirect)
             transfers or roles
         === boxes indicate data objects
         ... lines indicate supporting transfers or roles
         *** lines indicate aggregated service

                  Figure 5: Protocols and Services

4.1. Message Data

So the whole point of the Message Handling System (MHS) is to swap an IMF message object between participants [RFC5322] ๐Ÿ“จ All of its underlying mechanisms are there to get that message from its Author to its Recipients. A message can also be explicitly labeled as to its nature [RFC3458] ๐Ÿท๏ธ

A message is made up of a transit-handling envelope and the message content ๐Ÿ’Œ The envelope holds info the MHS uses. The content splits into a structured header and the body. The header has transit-handling trace information and structured fields that are part of the Author's message content ๐ŸŽ€ The body can be unstructured lines of text, or a tree of multimedia subordinate objects, called "body-parts" or, popularly, "attachments" ๐Ÿ“Ž [RFC2045], [RFC2046], [RFC2047], [RFC4288], [RFC4289], [RFC2049].

Internet Mail also has a few conventions for special control data, and the big ones are:

Delivery Status Notification (DSN):

A Delivery Status Notification (DSN) is a message that the MHS (MSA, MTA, or MDA) can generate, and it gets sent to the RFC5321.MailFrom address ๐Ÿ“ฌ MDA and MTA show up as DSN sources in Figure 5, and the destination is marked as Returns. DSNs give you info about message transit, like transfer errors or successful delivery โœ… [RFC3461]

Message Disposition Notification (MDN):

A Message Disposition Notification (MDN) is a message that tells you about post-delivery processing, like that the message has been displayed [RFC3798] or what form of content can be supported [RFC3297] ๐Ÿ‘€ An rMUA can generate it, and it's sent to the Disposition-Notification-To addresses. The mailbox for this is shown as Disp in Figure 5.

Message Filtering (SIEVE):

Sieve is a scripting language used to set conditions for differential handling of mail, usually at delivery time [RFC5228] ๐Ÿงน Scripts can be shipped around in a bunch of ways, like as a MIME part in a message. Figure 5 shows a Sieve script going from the rMUA to the MDA. Filtering can actually happen at lots of different points along the transit path, though, and any one or more of them might be subject to Sieve directives, especially inside a single ADMD ๐ŸŒˆ Figure 5 only shows one relationship, just to keep things (relatively) simple ๐Ÿ™ˆ


4.1.1. Envelope

Internet Mail has a fragmented framework for transit-related handling info ๐Ÿงฉ Info that the MHS uses directly is called the "envelope". It directs handling activities by the transfer service and gets carried in transfer-service commands. So basically, the envelope lives in the transfer protocol SMTP [RFC5321] ๐Ÿ’œ

Trace info, like RFC5322.Received, gets recorded in the message header and isn't changed afterward [RFC5322] ๐Ÿ•ฐ๏ธ


4.1.2. Header Fields

Header fields are attribute name/value pairs ๐ŸŽ€ They cover an extensible range of email-service parameters, structured user content, and user transaction meta-information. The core set is defined in [RFC5322], and it's common practice to extend that set for different applications ๐ŸŒธ Procedures for registering header fields are defined in [RFC3864]. There's also an extensive set of existing header field registrations in [RFC4021] ๐Ÿ“š

One danger of putting extra info in header fields is that Gateways often alter or delete them ๐Ÿ˜ฌ

4.1.3. Body ๐ŸŽ€

okay so the body of a message can be just plain lines of ASCII text, OR it can be a hierarchically structured composition of multimedia body part attachments using MIME ([RFC2045], [RFC2046], [RFC2047], [RFC4288], and [RFC2049]) ๐Ÿฆ‹ picture a whole nested stack of attachments, ngl it's giving organized chaos โœจ

4.1.4. Identity References in a Message ๐Ÿ’œ

Table 1 lists the core identifiers that show up in a message while it's in transit ๐Ÿงš

+----------------------+----------------+---------------------------+
| Layer                | Field          | Set By                    |
+----------------------+----------------+---------------------------+
| Message Body         | MIME Header    | Author                    |
| Message header       | From:          | Author                    |
| fields               |                |                           |
|                      | Sender:        | Originator                |
|                      | Reply-To:      | Author                    |
|                      | To:, CC:, BCC: | Author                    |
|                      | Message-ID:    | Originator                |
|                      | Received:      | Originator, Relay,        |
|                      |                | Receiver                  |
|                      | Return-Path:   | MDA, from MailFrom        |
|                      | Resent-*:      | Mediator                  |
|                      | List-Id:       | Mediator                  |
|                      | List-*:        | Mediator                  |
| SMTP                 | HELO/EHLO      | Latest Relay Client       |
|                      | ENVID          | Originator                |
|                      | MailFrom       | Originator                |
|                      | RcptTo         | Author                    |
|                      | ORCPT          | Originator                |
| IP                   | Source Address | Latest Relay Client       |
+----------------------+----------------+---------------------------+

Here's the legend so you can read the table like a pro ๐Ÿ“š

Layer means the part of the email architecture that uses the identifier ๐ŸŒธ

Field means the protocol construct that contains the identifier ๐Ÿ’–

Set By means the Actor role responsible for specifying the identifier value. This can be different from the Actor that does the fill-in function for the protocol construct, so don't mix them up ๐Ÿ™ˆ

                  Table 1: Layered Identities

These are the most common address-related fields, bestie ๐Ÿ‘‘

RFC5322.From: Set by - Author

Names and addresses for Authors of the message content go in the From: field โœ๏ธ

RFC5322.Reply-To: Set by - Author

So if a Recipient sends a reply that would otherwise use the RFC5322.From addresses from the original message, the RFC5322.Reply-To addresses get used instead. In other words, this field overrides the From: field for responses from Recipients. main character energy ๐Ÿ’…

RFC5322.Sender: Set by - Originator

This field specifies the address responsible for submitting the message to the transfer service. It can be left out if it has the same address as RFC5322.From. Omitting it doesn't mean there's no Sender, though! It means the header field is virtual and the address in the From: field gets used ๐Ÿซถ

Specifying the notifications Return Addresses, which live in RFC5321.MailFrom, is done by the RFC5322.Sender. Usually the Return address matches the Sender address, but some usage scenarios need it to be different ๐ŸŒˆ

RFC5322.To/.CC: Set by - Author

These fields specify MUA Recipient addresses. BUT some or all of the addresses in these fields might not show up in the RFC5321.RcptTo commands ๐Ÿ‘€

The difference between To and CC is kinda subjective. Generally, a To addressee is considered primary and is expected to take action on the message. A CC addressee typically gets a copy as a courtesy ๐Ÿ’Œ

RFC5322.BCC: Set by - Author

A copy of the message might get sent to an addressee whose participation is not supposed to be disclosed to the RFC5322.To or RFC5322.CC Recipients, and usually not to the other BCC Recipients either ๐Ÿคซ The BCC: header field indicates a message copy to that Recipient. Use of this field is discussed in [RFC5322] โœจ

RFC5321.HELO/.EHLO: Set by - Originator, MSA, MTA

Any SMTP client, including an Originator, MSA, or MTA, can specify its hosting domain identity for the SMTP HELO or EHLO command operation ๐Ÿ“

RFC3461.ENVID: Set by - Originator

The MSA can specify an opaque string, to be included in a DSN, as a way of helping the Return Address Recipient figure out which message produced a DSN or message tracking. iykyk ๐Ÿฆ‹

RFC5321.MailFrom: Set by - Originator

This field is an end-to-end string that specifies an email address for receiving return control information, like returned messages. The name is kinda misleading, tbh, because it isn't required to specify either the Author or the Actor responsible for submitting the message. Instead, the Actor responsible for submission specifies the RFC5321.MailFrom address. Ultimately, the simple basis for deciding which address goes in RFC5321.MailFrom is figuring out which address should be informed about transfer-level problems (and possibly successes) ๐Ÿ’€

RFC5321.RcptTo: Set by - Author, Final MTA, MDA

This field specifies the MUA mailbox address of a Recipient. The string might not be visible in the message content header. For example, the IMF destination address header fields, like RFC5322.To, might specify a Mailing List mailbox, while the RFC5321.RcptTo address specifies one member of that list ๐ŸŒธ

RFC5321.ORCPT: Set by - Originator.

This is an optional parameter to the RCPT command. It indicates the original address that the current RCPT TO address corresponds to, after a mapping was performed during transit. An ORCPT is the only reliable way to correlate a DSN from a multi-Recipient message transfer with the intended Recipient ๐Ÿ”ฅ

RFC5321.Received: Set by - Originator, Relay, Mediator, Dest

This field contains trace information, including the originating host, Relays, Mediators, and MSA host domain names and/or IP Addresses ๐Ÿ•ต๏ธโ€โ™€๏ธ

RFC5321.Return-Path: Set by - Originator

The MDA records the RFC5321.MailFrom address into the RFC5321.Return-Path field ๐Ÿ“ฌ

RFC2919.List-Id: Set by - Mediator, Author

This field provides a globally unique Mailing List naming framework that is independent of particular hosts [RFC2919] ๐ŸŒŸ

The identifier is in the form of a domain name. BUT the string is usually built by combining the two parts of an email address, so the result is rarely a true domain name listed in the domain name service, although it can be ๐Ÿคทโ€โ™€๏ธ

RFC2369.List-*: Set by - Mediator, Author

[RFC2369] defines a collection of message header fields for use by Mailing Lists. In effect, they supply list-specific parameters for common Mailing-List user operations. The identifiers for these operations are for the list itself and for the user-as-subscriber [RFC2369] ๐Ÿ’œ

RFC0791.SourceAddr: Set by - The Client SMTP sending host immediately preceding the current receiving SMTP server

[RFC0791] defines the basic unit of data transfer for the Internet: the IP datagram. It contains a Source Address field that specifies the IP Address for the host (interface) from which the datagram was sent. This information is set and provided by the IP layer, which makes it independent of mail-level mechanisms. As such, it is often taken to be authoritative, although it is possible to provide false addresses ๐Ÿง

4.2. User-Level Services โœจ

Interactions at the user level involve protocol exchanges that are different from the ones at lower layers of the Internet Mail MHS architecture, which sits above the Internet Transport layer. Because email is mostly about people talking to each other, the nature and details of these protocol exchanges are often shaped by the needs of interpersonal and group communication. To handle the idiosyncratic behavior that comes with that, only subjective guidelines, rather than strict rules, can be offered for some aspects of system behavior. Mailing Lists are particularly salient examples ๐Ÿฆ‹

4.2.1. Message User Agent (MUA) ๐Ÿ’…

A Message User Agent (MUA) works on behalf of User Actors and User applications. It's their representative within the email service ๐ŸŽ€

The Author MUA (aMUA) creates a message and does the initial submission into the transfer infrastructure via a Mail Submission Agent (MSA). It can also handle any creation- and posting-time archiving in its Message Store (aMS). An MUA aMS can organize messages in lots of different ways. A common model uses aggregations, called "folders"; in IMAP they're called "mailboxes". This model allows a folder for messages under development (Drafts), a folder for messages waiting to be sent (Queued or Unsent), and a folder for messages that have been successfully posted for transfer (Sent). BUT none of these folders is required. For example, IMAP allows drafts to be stored in any folder, so no Drafts folder needs to be present ๐ŸŒˆ

The Recipient MUA (rMUA) works on behalf of the Recipient to process received mail. This processing includes generating user-level disposition control messages, displaying and disposing of the received message, and closing or expanding the user-communication loop by starting replies and forwarding new messages ๐Ÿ’–

NOTE: Although not shown in Figure 5, an MUA itself can have a distributed implementation, such as a "thin" user-interface module on a constrained device such as a smartphone, with most of the MUA functionality running remotely on a more capable server. An example of such an architecture might use IMAP [RFC3501] for most of the interactions between an MUA client and an MUA server. An approach for such scenarios is defined by [RFC4550]. ๐Ÿงš

A Mediator is a special class of MUA. It performs message re-posting, as discussed in Section 2.1 โœจ

An MUA can be automated, acting on behalf of a User who isn't present at the time the MUA is active. One example is a bulk sending service that has a timed-initiation feature. These services aren't to be confused with a Mailing List Mediator, since there's no incoming message triggering the activity of the automated service ๐Ÿ“

A popular and problematic MUA is an automatic responder, like one that sends out-of-office notices. This behavior might get confused with a Mediator's, BUT this MUA is generating a new message. Automatic responders can annoy Users of Mailing Lists unless they follow [RFC3834] ๐Ÿ™ˆ

The identity fields that are relevant to a typical MUA are:

4.2.2. Message Store (MS) ๐Ÿ“ฆ

okay so an MUA can hang onto a long-term Message Store (MS) ๐Ÿ’– Figure 5 shows an Author's MS (aMS) and a Recipient's MS (rMS) ๐Ÿฆ‹ An MS can live on a remote server or on the very same machine as the MUA, whichever works for you ๐Ÿ’ป

An MS can pick up messages from an MDA in a couple of ways. It can do it proactively through a local mechanism, or even through a standardized mechanism like SMTP(!) ๐Ÿ˜ญ Or it can do it reactively, using POP or IMAP ๐Ÿงš The MUA gets into the MS either through a local mechanism or by using POP or IMAP. Using POP for individual message accesses, instead of bulk transfer, is relatively rare and inefficient ๐Ÿ™ˆ not the vibe, bestie.

4.3. MHS-Level Services ๐ŸŽ€

4.3.1. Mail Submission Agent (MSA) ๐Ÿ“ฎ

A Mail Submission Agent (MSA) takes in the message that the aMUA submits and enforces the policies of the hosting ADMD along with the requirements of Internet standards ๐Ÿ‘‘ The MSA has a super unusual double life, though ๐Ÿ˜ณ it looks out for the Author (aMUA) during posting so the post actually succeeds, and it also looks out for the MHS. In the architecture, Figure 5 splits the MSA into two sub-components to show this, aMSA and hMSA, respectively ๐ŸŒˆ Handing responsibility for one message from an Author's environment over to the MHS is called "posting", and it's marked as the (S) transition inside the MSA ๐Ÿ’…

The hMSA takes transit responsibility for a message that conforms to the relevant Internet standards and to local site policies. It rejects messages that don't conform ๐Ÿ™…โ€โ™€๏ธ The MSA does the final message preparation before submission and handles the transfer of responsibility to the MHS, through the hMSA. How much prep happens depends on the local implementation ๐Ÿ“ Examples of aMSA tasks include adding header fields like Date: and Message-ID:, and changing parts of the message from local notations into Internet standard forms, like expanding an address into its formal IMF representation โœจ

Historically, standards-based MUA/MSA message postings have used SMTP [RFC5321]. The one currently preferred is SUBMISSION [RFC4409]. SUBMISSION comes from SMTP, but it uses a separate TCP port and has its own requirements, like access authorization ๐Ÿ”

These identities are relevant to the MSA:

RFC5321.HELO/.EHLO

RFC3461.ENVID

RFC5321.MailFrom

RFC5321.RcptTo

RFC5321.Received

RFC0791.SourceAddr

4.3.2. Message Transfer Agent (MTA) ๐Ÿšš

A Message Transfer Agent (MTA) relays mail for one application-level "hop" ๐Ÿฆ‹ It's a lot like a packet switch or IP router, because its whole job is making routing decisions and moving the message closer to the Recipients ๐Ÿ›ฃ๏ธ Email objects are usually way bigger than a packet or datagram payload, though, and the end-to-end latencies are usually much higher ๐ŸŒ Relaying is done by a chain of MTAs until the message reaches a destination MDA. So an MTA runs both client and server MTA functionality ๐Ÿซถ It doesn't change addresses in the envelope or rewrite the editorial content. Changing the data form, such as to MIME Content-Transfer-Encoding, is fair game for an MTA, but removing or replacing body content is not ๐Ÿ™…โ€โ™€๏ธ An MTA also adds trace information [RFC2505].

NOTE: Within a destination ADMD, email-relaying modules can make a variety of changes to the message before delivery. When they do, they're acting as Gateways, not MTAs ๐Ÿง

Internet Mail uses SMTP ([RFC5321], [RFC2821], [RFC0821]) mainly to do point-to-point transfers between peer MTAs ๐Ÿ“ฌ Other transfer mechanisms include Batch SMTP [RFC2442] and On-Demand Mail Relay (ODMR) SMTP [RFC2645]. Like most network-layer mechanisms, Internet Mail SMTP has a basic level of reliability, because it provides for retransmission after a temporary transfer failure ๐Ÿ” Unlike typical packet switches (and Instant Messaging services), Internet Mail MTAs are expected to store messages in a way that lets them recover across service interruptions, like a host-system shutdown ๐Ÿ’พ How robust and persistent an MTA is can vary. The base SMTP specification gives a framework for protocol response codes, and an extensible enhancement to that framework is defined in [RFC5248] ๐Ÿงฉ

Even though it's pretty basic, the dominant routing mechanism for Internet Mail is the DNS MX record [RFC1035]. It names an MTA through which the queried domain can be reached ๐Ÿ—บ๏ธ This mechanism assumes a public, or at least common, backbone that lets any attached MTA connect to any other ๐ŸŒ

MTAs can play any of these well-established roles:

  • Boundary MTA: An MTA that is part of an ADMD and interacts with MTAs in other ADMDs. This is also called a Border MTA. There can be different Boundary MTAs, depending on the direction of mail-flow.
    • Outbound MTA: An MTA that relays messages to other ADMDs.
    • Inbound MTA: An MTA that receives inbound SMTP messages from MTA Relays in other ADMDs, for example, an MTA running on the host listed as the target of an MX record.
  • Final MTA: The MTA that transfers a message to the MDA.

These identities are relevant to the MTA:

RFC5321.HELO/.EHLO

RFC3461.ENVID

RFC5321.MailFrom

RFC5321.RcptTo

RFC5322.Received:  Set by - Relay Server

RFC0791.SourceAddr

4.3.3. Mail Delivery Agent (MDA) ๐Ÿ“ซ

When responsibility moves from the MHS to a Recipient's environment (mailbox), that's called "delivery" ๐Ÿ’Œ In the architecture, shown in Figure 5, delivery happens inside a Mail Delivery Agent (MDA). It shows up as the (D) transition from the MHS-oriented MDA component (hMDA) to the Recipient-oriented MDA component (rMDA) ๐Ÿ’…

An MDA can offer distinctive, address-based functionality, because it has detailed information about the properties of the destination address ๐Ÿ” That information might also exist elsewhere in the Recipient's ADMD, like at an organizational border (Boundary) Relay. It is required for the MDA anyway, if only because the MDA has to know where to deliver the message ๐Ÿ“

Like an MSA, an MDA has two roles, as Figure 5 shows ๐Ÿง The formal transfer of responsibility, called "delivery", happens between the two components that carry out those roles, and it's shown as "(D)" in Figure 5. The MHS portion (hMDA) mainly works as a server SMTP engine ๐Ÿ–ฅ๏ธ A common extra job is redirecting the message to an alternative address, based on the Recipient addressee's preferences. The Recipient portion of the MDA (rMDA) performs whatever delivery actions the Recipient has specified ๐ŸŽฏ

Transfer into the MDA happens through a normal MTA transfer mechanism. Transfer from an MDA to an MS uses an access protocol, like POP or IMAP ๐Ÿ”„

NOTE: The term "delivery" can mean the formal MHS function described here, or the first time a message is displayed to a Recipient. A simple, practical test for whether the MHS-based definition applies is whether a DSN can be generated ๐Ÿง 

These identities are relevant to the MDA:

RFC5321.Return-Path:  Set by - Author Originator or Mediator
   Originator

The MDA records the RFC5321.MailFrom address into the RFC5321.Return-Path field ๐Ÿ“

RFC5322.Received:  Set by - MDA server

An MDA can record a Received: header field to show trace information, including source host and receiving host domain names and/or IP Addresses ๐Ÿ•ต๏ธโ€โ™€๏ธ

4.4. Transition Modes ๐ŸŒธ

From the origination site to the point of delivery, Internet Mail usually follows a "push" model ๐Ÿš€ That means the Actor holding the message starts the transfer to the next venue, typically with SMTP [RFC5321] or the Local Mail Transfer Protocol (LMTP) [RFC2033]. With a "pull" model, the Actor holding the message waits for the Actor in the next venue to start a request for the transfer ๐ŸŽฃ Standardized mechanisms for pull-based MHS transfer are ETRN [RFC1985] and ODMR [RFC2645].

After delivery, the Recipient's MUA (or MS) can get access in one of two ways: the message can be pushed to it, or the receiver can pull the message, such as by using POP [RFC1939] and IMAP [RFC3501] ๐Ÿ’œ

4.5. Implementation and Operation ๐Ÿ› ๏ธ

A discussion of any interesting system architecture often gets bogged down when architecture and implementation get confused ๐Ÿ˜ตโ€๐Ÿ’ซ An architecture defines the conceptual functions of a service, divided into discrete conceptual modules. An implementation of that architecture can combine or separate architectural components, depending on what a particular operational environment needs. For example, a software system that mainly does message relaying is an MTA, but it might also include MDA functionality. That same MTA system might be able to interface with non-Internet email services, and so perform as both an MTA and a Gateway ๐ŸŒˆ

Similarly, implemented modules might be configured to form elaborations of the architecture. An interesting example is a distributed MS, where one portion is a remote server and another is local to the MUA ๐Ÿงฉ As discussed in [RFC1733], there are three operational relationships among such MSs:

  • Online: The MS is remote, and messages are accessible only when the MUA is attached to the MS, so the MUA will re-fetch all or part of a message from one session to the next.
  • Offline: The MS is local to the User, and messages are completely moved from any remote store, rather than (also) being retained there.
  • Disconnected: An rMS and a uMS are kept synchronized, for all or part of their contents, while they are connected. When they are disconnected, mail can arrive at the rMS and the User can make changes to the uMS. The two stores are re-synchronized when they are reconnected ๐Ÿฆ‹

5. Mediators ๐Ÿฆ‹

Okay so basic message transfer from Author to Recipients is handled by an asynchronous store-and-forward setup, where it's a bunch of separate little transmissions hopping through however many MTAs ๐Ÿšš. A very different job is a sequence of postings and deliveries through Mediators! A Mediator forwards a message through a re-posting process. It shares some stuff with basic MTA relaying, but it has way more flexibility with both addressing and content than MTAs get ๐Ÿ’…

This is the core set of message information that basically every type of Mediator sets:

  • RFC5321.HELO/.EHLO: Set by - Mediator Originator
  • RFC3461.ENVID: Set by - Mediator Originator
  • RFC5321.RcptTo: Set by - Mediator Author
  • RFC5321.Received: Set by - Mediator Dest
    • The Mediator can record received information to show the delivery to the original address and the submission to the alias address. The trace of Received: header fields can cover everything from the original posting, through relaying, all the way to final delivery ๐Ÿงพ

So what makes a Mediator different from any other MUA that's creating a message? A Mediator keeps the integrity and tone of the original message intact, including the important parts of its origination information ๐Ÿซถ It might also add commentary, bestie.

Here are some examples of MUA messages that a Mediator does not create:

  • New message that forwards an existing message: Even though this action gives a basic template for a class of Mediators, the usual forwarding itself isn't a Mediator example ๐Ÿ™ˆ The new message is seen as coming from the Actor who's doing the forwarding, not from the original Author. The new message wraps the original one and looks like it's from the new Originator. This Mediator Originator might add commentary and can change the original message content. Since the forwarded message sits inside the message the new Originator sends, the new message starts a new dialogue. Still, the final Recipient sees the contained message as coming from the original Author.
  • Reply: When a Recipient answers the Author of a message, the new message usually isn't seen as a forward of the original. The focus is the new content, even if it includes all or some of the original material. The older stuff is just context and secondary. This includes automated replies, like vacation out-of-office notices, which are covered in Section 4.2.1 โœˆ๏ธ
  • Annotation: The original message's integrity is usually kept, but one or more comments get added in a way that makes the commentary stand out from the original text. The main point of the new message is to give commentary from a new Author, kind of like a Reply ๐Ÿ’ฌ

The rest of this section walks through some common examples of Mediators ๐ŸŒธ

5.1. Alias

One job of an MDA is figuring out the internal location of a mailbox so it can deliver there ๐Ÿ“ฌ An Alias is a simple re-addressing facility that gives one or more new Internet Mail addresses instead of a single internal one. The message keeps going through the transfer service so it can reach one or more alternate addresses. Even though it's usually built into an MDA, this facility is a Recipient function. It resubmits the message, but keeps all the handling information except the envelope Recipient (rfc5321.RcptTo) address. Most importantly, the Return Address (rfc5321.MailFrom) doesn't change ๐Ÿ”’

This forwarding trick is seriously similar to normal MTA store-and-forward relaying. The only real difference is that it changes the RFC5321.RcptTo value. Because that change is so tiny, aliasing can be seen as part of the lower-level mail-relaying activity. BUT this tiny change has a huge semantic impact: the designated Recipient has picked a new Recipient ๐Ÿ˜ญ

NOTE: When the replacement list has more than one address, the alias is more and more likely to run into delivery problems. Any problem reports go to the original Author, not the administrator of the alias entry. That makes the problem harder to fix, since the original Author has no idea the Alias mechanism exists ๐Ÿ’€

Along with the core set of message information from the start of this section, Alias usually changes these:

  • RFC5322.To/.CC/.BCC: Set by - Author
    • These fields keep their original addresses. ๐ŸŽ€
  • RFC5321.MailFrom: Set by - Author
    • Keeping the original MailFrom value helps make sure that an Actor tied to the originating ADMD knows there was a delivery problem ๐Ÿ“จ On the other hand, once the message moves from the original Recipient mailbox to the alias mailbox, responsibility for handling problems usually sits with that original Recipient, since the Alias mechanism is totally under their control. Keeping the original MailFrom address is what stops that from happening ๐Ÿ™…โ€โ™€๏ธ

5.2. ReSender

Also called the ReDirector, the ReSender is different from forwarding because the Mediator "splices" a message's addressing information to connect the Author of the original message with the Recipient of the new message ๐Ÿชก This connection lets them talk directly using their normal MUA Reply functions, and it also records full reference information about the Recipient who acted as a Mediator. So the new Recipient sees the message as coming from the original Author, even if the Mediator adds commentary ๐Ÿ‘‘

Along with the core set of message information from the start of this section, these identities matter for a resent message:

  • RFC5322.From: Set by - original Author
    • Names and addresses for the original Author of the message content are kept. The free-form (display-name) part of the address might be changed to give an informal reference to the ReSender ๐Ÿท๏ธ
  • RFC5322.Reply-To: Set by - original Author
    • If this field is in the original message, it's kept in the resent message ๐Ÿ’Œ
  • RFC5322.Sender: Set by - Author's Originator or Mediator Originator
  • RFC5322.To/.CC/.BCC: Set by - original Author
    • These fields specify the original message Recipients ๐ŸŽฏ
  • RFC5322.Resent-From: Set by - Mediator Author
    • This address belongs to the original Recipient who is redirecting the message. Otherwise, the same rules apply to the Resent-From: field as to an original RFC5322.From field ๐Ÿ”
  • RFC5322.Resent-Sender: Set by - Mediator Originator
    • This is the address of the Actor who's responsible for resubmitting the message. Just like with RFC5322.Sender, this field can be left out when it has the same address as RFC5322.Resent-From โœจ
  • RFC5322.Resent-To/-CC/-BCC: Set by - Mediator Author
    • These are the addresses of the new Recipients, who can now reply to the original Author ๐Ÿฅน
  • RFC5321.MailFrom: Set by - Mediator Originator
    • The Actor responsible for resubmission (RFC5322.Resent-Sender) is also the one responsible for specifying the new MailFrom address ๐Ÿซก

5.3. Mailing Lists

A Mailing List takes in messages as an explicit addressee and then re-posts them to a list of subscribed members ๐Ÿ“ฃ It's kind of like an elaborate version of the ReSender. Besides sending the new message to a potentially huge number of new Recipients, the Mailing List can change the content. For example, it can delete attachments, convert the format, and add list-specific comments ๐ŸŒˆ Mailing Lists also archive messages that Authors post. Even so, the message still keeps the characteristics of coming from the original Author ๐Ÿ’œ

Along with the core set of message information from the start of this section, these identities are relevant to a Mailing List processor when it submits a message:

  • RFC2919.List-Id: Set by - Mediator Author
  • RFC2369.List-*: Set by - Mediator Author
  • RFC5322.From: Set by - original Author
    • Names and email addresses for the original Author of the message content are kept ๐Ÿ“
  • RFC5322.Reply-To: Set by - Mediator or original Author
    • It's problematic, but it's super common for a Mailing List to put its own addresses in the Reply-To: header field of the messages it posts ๐Ÿ˜ฌ This is meant to make sure replies go to all list members, instead of only the original Author. As a User Actor, a Mailing List is the Author of the new message and can legitimately set the Reply-To: value. But as a Mediator trying to represent the message on behalf of its original Author, creating or changing a Reply-To: field can count as going against that Author's intent. When the Reply-To is changed like this, a reply that was only meant for the original Author will go to the whole list instead ๐Ÿ“ข When the Mailing List doesn't set the field, a reply meant for the whole list can end up going only to the original Author. Honestly, either choice is just a matter of group culture for that particular list ๐Ÿคทโ€โ™€๏ธ
  • RFC5322.Sender: Set by - Author Originator or Mediator Originator
    • This field usually has the address of the Actor who's in charge of Mailing List operations ๐Ÿง‘โ€๐Ÿ’ป Mailing Lists that work like a simple MTA Relay keep as much of the original handling information as they can, including the original RFC5322.Sender field. (Heads up that this way of operating makes the Mailing List act a lot like an Alias, the only difference being how many new addressees there are ๐ŸŽ€)
  • RFC5322.To/.CC: Set by - original Author
    • These fields usually hold the original list of Recipient addresses ๐Ÿ’–
  • RFC5321.MailFrom: Set by - Mediator Originator
    • A Mailing List can change the message content in any way, so it's responsible for that content, which means it's an Author ๐Ÿ‘‘ That means the Mailing List specifies the Return Address. It's possible for the Mailing List to reuse the Return Address the original Originator used, but notifications sent to that address after the Mailing List has processed a message could be a problem ๐Ÿ˜…

5.4. Gateways ๐ŸŒ‰

okay so a Gateway does the same basic routing and transfer work as any message relay ๐Ÿ“ฌ, but it's also allowed to modify content, structure, address, or attributes ๐Ÿ’… when it needs to, so the message can get into a messaging environment that runs on different standards or potentially incompatible policies โœจ. When a Gateway connects two different messaging services, its role is super easy to spot ๐Ÿ‘€. When it connects environments that follow similar technical standards but have significantly different administrative policies, it's easy to just think of the Gateway as merely an MTA ๐Ÿคทโ€โ™€๏ธ.

The critical distinction between an MTA and a Gateway is that a Gateway can make substantive changes to a message so it can map between the standards ๐Ÿ”. Almost always, this mapping causes some degree of semantic loss ๐Ÿ˜ฌ. So the big challenge of Gateway design is to minimize that loss ๐ŸŽฏ. Standardized Gateways to Internet Mail include facsimile [RFC4143], voicemail [RFC3801], and the Multimedia Messaging Service (MMS) [RFC4356] ๐Ÿ“ ๐Ÿ“ž๐Ÿ“ฑ.

A Gateway can set any identity field that's available to an MUA ๐Ÿชช. On top of the core set of message information listed at the beginning of this section, these identities are usually the ones that matter for Gateways:

  • RFC5322.From: Set by - original Author
    • Names and addresses for the original Author of the message content are kept ๐Ÿ’–. Just like all the original addressing info in the message, the Gateway can translate addresses as needed so they stay useful in the target environment ๐Ÿ—บ๏ธ.
  • RFC5322.Reply-To: Set by - original Author
    • It's best for a Gateway to keep this info if it's there ๐Ÿ™Œ. Being able to do a successful reply as a Recipient is a classic test of whether a Gateway is working โœ….
  • RFC5322.Sender: Set by - Author Originator or Mediator Originator
    • This field can keep the original value, or it can be set to a new address ๐Ÿ”„.
  • RFC5322.To/.CC/.BCC: Set by - original Recipient
    • These fields usually keep their original addresses ๐Ÿซถ.
  • RFC5321.MailFrom: Set by - Author Originator or Mediator Originator
    • The Actor handling the message can specify a new address to receive handling notices ๐Ÿ“จ.

5.5. Boundary Filter ๐Ÿ›ก๏ธ

okay, security bestie moment ๐Ÿฅน. To enforce security boundaries, organizations can have messages analyzed for conformance with their safety policies ๐Ÿ”. A classic example is detecting content classed as spam or a virus ๐Ÿฆ ๐Ÿšซ. A filter might change the content to make it safe, like by removing content that's deemed unacceptable โœ‚๏ธ. Typically, these actions add content to the message that records what was done ๐Ÿ“.


6. Considerations ๐Ÿ’…

6.1. Security Considerations ๐Ÿ˜ฑ

this part is serious, so let's get into it ๐Ÿซก. This document describes the existing Internet Mail architecture. It introduces no new capabilities ๐Ÿ™…โ€โ™€๏ธ. The security considerations of this deployed architecture are documented extensively in the technical specifications referenced by this document ๐Ÿ“š. These specifications cover classic security topics, like authentication and privacy ๐Ÿ”. For example, email-transfer protocols can use standardized mechanisms for operation over authenticated and/or encrypted links, and message content has similar protection standards available ๐Ÿ”’. Examples of these mechanisms include SMTP-TLS [RFC3207], SMTP-Auth [RFC4954], OpenPGP [RFC4880], and S/MIME [RFC3851] โœจ.

The core of the Internet Mail architecture does not impose any security requirements or functions on the end-to-end or hop-by-hop components ๐Ÿ™ˆ. For example, it does not require participant authentication and does not attempt to prevent data disclosure ๐Ÿ˜ญ.

Particular message attributes might expose specific security considerations ๐Ÿ‘€. For example, the blind carbon copy feature of the architecture invites disclosure concerns, as discussed in Section 7.2 of [RFC5321] and Section 5 of [RFC5322] ๐Ÿซฃ. Transport of text or non-text content in this architecture has security considerations that are discussed in [RFC5322], [RFC2045], [RFC2046], and [RFC4288]. Also, security considerations are present for some of the media types registered with IANA ๐Ÿงพ.

Agents that automatically respond to email raise significant security considerations, as discussed in [RFC3834] ๐Ÿค–โš ๏ธ. Gateway behaviors affect end-to-end security services, as discussed in [RFC2480] ๐ŸŒ‰๐Ÿ”. Security considerations for boundary filters are discussed in [RFC5228] ๐Ÿ›ก๏ธ.

See Section 7.1 of [RFC5321] for a discussion of origination validation ๐Ÿ•ต๏ธโ€โ™€๏ธ. As mentioned in Section 4.1.4, it's common practice for components of this architecture to use the RFC0791.SourceAddr to make policy decisions [RFC2505], although the address can be "spoofed" ๐Ÿซข. It's possible to use it without authorization ๐Ÿ’€. SMTP and Submission authentication ([RFC4409], [RFC4954]) provide more secure alternatives ๐Ÿ”‘โœจ.

The discussion of trust boundaries, ADMDs, Actors, roles, and responsibilities in this document highlights the relevance and potential complexity of security factors for operating an Internet Mail service ๐Ÿงฉ. The core design of Internet Mail, which encourages open and casual exchange of messages, has met with scaling challenges ๐Ÿ“ˆ. The population of email participants has grown to include those with problematic practices ๐Ÿ˜ค. For example, spam, as defined in [RFC2505], is a by-product of this architecture ๐Ÿ—‘๏ธ. A number of Standards Track or BCP documents on the subject have been issued (see [RFC2505], [RFC5068], and [RFC5235]) ๐Ÿ“œ.

6.2. Internationalization ๐ŸŒ

the core Internet email standards are based on US-ASCII -- that's SMTP [RFC5321] and IMF [RFC5322], plus their predecessors ๐Ÿ”ค. They describe the transport and composition of messages as composed strictly of US-ASCII 7-bit encoded characters ๐Ÿ”ก. The standards have been gradually upgraded to allow characters outside that limited set, while keeping backwards-compatibility mechanisms ๐Ÿช„. Specifically:

  • The MIME specifications ([RFC2045], [RFC2046], [RFC2047], [RFC2049]) allow for the use of coded character sets and character-encoding schemes ("charsets" in MIME terminology) other than US-ASCII ๐ŸŽจ. MIME's [RFC2046] lets the textual content of a message have a label that specifies the charset used in that content ๐Ÿท๏ธ. Equally, MIME's [RFC2047] lets the textual content of certain header fields be labeled in the same way ๐Ÿท๏ธ. However, since messages might be transported over SMTP implementations that can only handle 7-bit encoded characters, MIME's [RFC2045] also provides "content transfer encoding" so characters from other charsets can be re-encoded as an overlay to US-ASCII ๐Ÿง.
  • MIME's [RFC2045] allows the textual content of a message to be in an 8-bit character-encoding scheme ๐Ÿ’ซ. To transport these without re-encoding them, the SMTP specification supports an option [RFC1652] that permits the transport of such textual content ๐Ÿšš. However, the [RFC1652] option does not address the use of 8-bit content in message header fields, so [RFC2047] encoding is still required for those ๐Ÿ™ƒ.
  • A series of experimental protocols on Email Address Internationalization (EAI) have been released that extend SMTP and IMF so 8-bit encoded characters can appear in addresses and other information throughout the header fields of messages ๐ŸŒโœจ. [RFC5335] specifies the format of such message header fields (which encode the characters in UTF-8), and [RFC5336] specifies an SMTP option for transporting these messages ๐Ÿ“ฆ.
  • MIME's [RFC2045] and [RFC2046] allow for the transport of true multimedia material ๐ŸŽฌ๐ŸŽต. This material enables internationalization because it isn't restricted to any particular language or locale ๐Ÿ—ฃ๏ธ.
  • The formats for Delivery Status Notifications (DSNs -- [RFC3462], [RFC3463], [RFC3464]) and Message Disposition Notifications (MDNs -- [RFC3798]) include both a structured and an unstructured representation of the notification ๐Ÿ“ฌ. If the unstructured representation is in the wrong language or is otherwise unsuitable for use, this lets an MUA build its own appropriately localized notification for display to the User ๐ŸŒ๐Ÿ’–.
  • POP and IMAP have no trouble handling MIME messages, including ones containing 8bit, so they aren't a source of internationalization issues ๐Ÿ™Œ.

Hence, the use of UTF-8 is fully established in existing Internet Mail ๐ŸŽ‰. However, support for long-standing encoding forms is retained and is still used ๐Ÿซถ.

7. References ๐Ÿ“š

7.1. Normative References โœจ

   [RFC0791]  Postel, J., "Internet Protocol", STD 5, RFC 791,
              September 1981.

   [RFC1034]  Mockapetris, P., "Domain names - concepts and facilities",
              STD 13, RFC 1034, November 1987.

   [RFC1035]  Mockapetris, P., "Domain names - implementation and
              specification", STD 13, RFC 1035, November 1987.

   [RFC1939]  Myers, J. and M. Rose, "Post Office Protocol - Version 3",
              STD 53, RFC 1939, May 1996.

   [RFC2045]  Freed, N. and N. Borenstein, "Multipurpose Internet Mail
              Extensions (MIME) Part One: Format of Internet Message
              Bodies", RFC 2045, November 1996.

   [RFC2046]  Freed, N. and N. Borenstein, "Multipurpose Internet Mail
              Extensions (MIME) Part Two: Media Types", RFC 2046,
              November 1996.

   [RFC2047]  Moore, K., "MIME (Multipurpose Internet Mail Extensions)
              Part Three: Message Header Extensions for Non-ASCII Text",
              RFC 2047, November 1996.

   [RFC2049]  Freed, N. and N. Borenstein, "Multipurpose Internet Mail
              Extensions (MIME) Part Five: Conformance Criteria and
              Examples", RFC 2049, November 1996.

   [RFC2181]  Elz, R. and R. Bush, "Clarifications to the DNS
              Specification", RFC 2181, July 1997.

   [RFC2369]  Neufeld, G. and J. Baer, "The Use of URLs as Meta-Syntax
              for Core Mail List Commands and their Transport through
              Message Header Fields", RFC 2369, July 1998.

   [RFC2645]  Gellens, R., "ON-DEMAND MAIL RELAY (ODMR) SMTP with
              Dynamic IP Addresses", RFC 2645, August 1999.

   [RFC2919]  Chandhok, R. and G. Wenger, "List-Id: A Structured Field
              and Namespace for the Identification of Mailing Lists",
              RFC 2919, March 2001.

   [RFC3192]  Allocchio, C., "Minimal FAX address format in Internet
              Mail", RFC 3192, October 2001.

   [RFC3297]  Klyne, G., Iwazaki, R., and D. Crocker, "Content
              Negotiation for Messaging Services based on Email",
              RFC 3297, July 2002.

   [RFC3458]  Burger, E., Candell, E., Eliot, C., and G. Klyne, "Message
              Context for Internet Mail", RFC 3458, January 2003.

   [RFC3461]  Moore, K., "Simple Mail Transfer Protocol (SMTP) Service
              Extension for Delivery Status Notifications (DSNs)",
              RFC 3461, January 2003.

   [RFC3462]  Vaudreuil, G., "The Multipart/Report Content Type for the
              Reporting of Mail System Administrative Messages",
              RFC 3462, January 2003.

   [RFC3463]  Vaudreuil, G., "Enhanced Mail System Status Codes",
              RFC 3463, January 2003.

   [RFC3501]  Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
              4rev1", RFC 3501, March 2003.

   [RFC3798]  Hansen, T. and G. Vaudreuil, "Message Disposition
              Notification", RFC 3798, May 2004.

   [RFC3834]  Moore, K., "Recommendations for Automatic Responses to
              Electronic Mail", RFC 3834, August 2004.

   [RFC3864]  Klyne, G., Nottingham, M., and J. Mogul, "Registration
              Procedures for Message Header Fields", BCP 90, RFC 3864,
              September 2004.

   [RFC4021]  Klyne, G. and J. Palme, "Registration of Mail and MIME
              Header Fields", RFC 4021, March 2005.

   [RFC4288]  Freed, N. and J. Klensin, "Media Type Specifications and
              Registration Procedures", BCP 13, RFC 4288, December 2005.

   [RFC4289]  Freed, N. and J. Klensin, "Multipurpose Internet Mail
              Extensions (MIME) Part Four: Registration Procedures",
              BCP 13, RFC 4289, December 2005.

   [RFC4409]  Gellens, R. and J. Klensin, "Message Submission for Mail",
              RFC 4409, April 2006.

   [RFC4550]  Maes, S. and A. Melnikov, "Internet Email to Support
              Diverse Service Environments (Lemonade) Profile",
              RFC 4550, June 2006.

   [RFC5228]  Guenther, P. and T. Showalter, "Sieve: An Email Filtering
              Language", RFC 5228, January 2008.

   [RFC5248]  Hansen, T. and J. Klensin, "A Registry for SMTP Enhanced
              Mail System Status Codes", BCP 138, RFC 5248, June 2008.

   [RFC5321]  Klensin, J., "Simple Mail Transfer Protocol", RFC 5321,
              October 2008.

   [RFC5322]  Resnick, P., Ed., "Internet Message Format", RFC 5322,
              October 2008.

7.2. Informative References ๐Ÿ“š

   [RFC0733]  Crocker, D., Vittal, J., Pogran, K., and D. Henderson,
              "Standard for the format of ARPA network text messages",
              RFC 733, November 1977.

   [RFC0821]  Postel, J., "Simple Mail Transfer Protocol", STD 10,
              RFC 821, August 1982.

   [RFC0822]  Crocker, D., "Standard for the format of ARPA Internet
              text messages", STD 11, RFC 822, August 1982.

   [RFC1506]  Houttuin, J., "A Tutorial on Gatewaying between X.400 and
              Internet Mail", RFC 1506, August 1993.

   [RFC1652]  Klensin, J., Freed, N., Rose, M., Stefferud, E., and D.
              Crocker, "SMTP Service Extension for 8bit-MIMEtransport",
              RFC 1652, July 1994.

   [RFC1733]  Crispin, M., "Distributed Electronic Mail Models in
              IMAP4", RFC 1733, December 1994.

   [RFC1767]  Crocker, D., "MIME Encapsulation of EDI Objects",
              RFC 1767, March 1995.

   [RFC1985]  De Winter, J., "SMTP Service Extension for Remote Message
              Queue Starting", RFC 1985, August 1996.

   [RFC2033]  Myers, J., "Local Mail Transfer Protocol", RFC 2033,
              October 1996.

   [RFC2142]  Crocker, D., "MAILBOX NAMES FOR COMMON SERVICES, ROLES AND
              FUNCTIONS", RFC 2142, May 1997.

   [RFC2442]  Freed, N., Newman, D., and Hoy, M., "The Batch SMTP Media
              Type", RFC 2442, November 1998.

   [RFC2480]  Freed, N., "Gateways and MIME Security Multiparts",
              RFC 2480, January 1999.

   [RFC2505]  Lindberg, G., "Anti-Spam Recommendations for SMTP MTAs",
              BCP 30, RFC 2505, February 1999.

   [RFC2821]  Klensin, J., "Simple Mail Transfer Protocol", RFC 2821,
              April 2001.

   [RFC2822]  Resnick, P., "Internet Message Format", RFC 2822,
              April 2001.

   [RFC3207]  Hoffman, P., "SMTP Service Extension for Secure SMTP over
              Transport Layer Security", RFC 3207, February 2002.

   [RFC3464]  Moore, K. and G. Vaudreuil, "An Extensible Message Format
              for Delivery Status Notifications", RFC 3464,
              January 2003.

   [RFC3801]  Vaudreuil, G. and G. Parsons, "Voice Profile for Internet
              Mail - version 2 (VPIMv2)", RFC 3801, June 2004.

   [RFC3851]  Ramsdell, B., "Secure/Multipurpose Internet Mail
              Extensions (S/MIME) Version 3.1 Message Specification",
              RFC 3851, July 2004.

   [RFC3885]  Allman, E. and T. Hansen, "SMTP Service Extension for
              Message Tracking", RFC 3885, September 2004.

   [RFC4142]  Crocker, D. and G. Klyne, "Full-mode Fax Profile for
              Internet Mail (FFPIM)", RFC 4142, November 2005.

   [RFC4143]  Toyoda, K. and D. Crocker, "Facsimile Using Internet Mail
              (IFAX) Service of ENUM", RFC 4143, November 2005.

   [RFC4356]  Gellens, R., "Mapping Between the Multimedia Messaging
              Service (MMS) and Internet Mail", RFC 4356, January 2006.

   [RFC4880]  Callas, J., Donnerhacke, L., Finney, H., Shaw, D., and R.
              Thayer, "OpenPGP Message Format", RFC 4880, November 2007.

   [RFC4954]  Siemborski, R. and A. Melnikov, "SMTP Service Extension
              for Authentication", RFC 4954, July 2007.

   [RFC5068]  Hutzler, C., Crocker, D., Resnick, P., Allman, E., and T.
              Finch, "Email Submission Operations: Access and
              Accountability Requirements", BCP 134, RFC 5068,
              November 2007.

   [RFC5235]  Daboo, C., "Sieve Email Filtering: Spamtest and Virustest
              Extensions", RFC 5235, January 2008.

   [RFC5335]  Abel, Y., "Internationalized Email Headers", RFC 5335,
              September 2008.

   [RFC5336]  Yao, J. and W. Mao, "SMTP Extension for Internationalized
              Email Addresses", RFC 5336, September 2008.

   [Tussle]   Clark, D., Wroclawski, J., Sollins, K., and R. Braden,
              "Tussle in Cyberspace: Defining Tomorrow's Internet",
              ACM SIGCOMM, 2002.

Appendix A. Acknowledgments ๐Ÿซถ

This work began in 2004 and has evolved through lots of rounds of community review, and it actually grew out of a section in an early version of [RFC5068]. Over its 5 years of development, the document went through 14 incremental versions, with seriously vigorous community review that led to a ton of substantive changes ๐Ÿ”ฅ. Review happened in the IETF and in other email technical venues. Even though it wasn't a formal IETF activity, issues with the document's contents got resolved using the classic IETF style of open, group decision-making ๐Ÿ’œ. It's already cited in other work, like the IMAP and Sieve specifications and in academic classwork ๐Ÿ“š. Standardizing it is useful because it gives the Internet's now-complex email service a solid, stable reference โœจ.

The Originator Actor role got a lot clearer thanks to discussions in the IETF's Marid working group ๐ŸŽ€.

Graham Klyne, Pete Resnick, and Steve Atkins gave super thoughtful insight on the framework and details of the original drafts ๐ŸŒธ. Chris Newman did the same for the final versions, and he was also the cognizant Area Director for the document ๐Ÿ‘‘. Tony Hansen served as document shepherd through the IETF process ๐Ÿงš.

Later reviews and suggestions came from Eric Allman, Nathaniel Borenstein, Ed Bradford, Cyrus Daboo, Frank Ellermann, Tony Finch, Ned Freed, Eric Hall, Willemien Hoogendoorn, Brad Knowles, John Leslie, Bruce Valdis Kletnieks, Mark E. Mallett, David MacQuigg, Alexey Melnikov, der Mouse, S. Moonesamy, Daryl Odnert, Rahmat M. Samik-Ibrahim, Marshall Rose, Hector Santos, Jochen Topf, Greg Vaudreuil, Patrick Cain, Paul Hoffman, Vijay Gurbani, and Hans Lachman ๐Ÿ’–.

Diligent early proof-reading was done by Bruce Lilly ๐Ÿ“, and diligent professional technical editing was provided by Susan Hunziker ๐Ÿ’….

The final stages of development were guided by a design team made up of Alexey Melnikov, Pete Resnick, Carl S. Gutekunst, Jeff Macdonald, Randall Gellens, Tony Hansen, and Tony Finch ๐ŸŒˆ. Pete Resnick developed the final version of the section on internationalization ๐Ÿฆ‹.

Index โœจ

okay bestie, here's the index, the cheat sheet for finding every term in this whole doc ๐Ÿ—‚๏ธ๐Ÿ’…

Index

   7
      7-bit  44

   A
      accountability  12
      accountable  13-14
      Actor
         Administrative  14
         Author  10
         Consumer  15
         Edge  15
         Gateway  13
         Originator  12
         Recipient  10
         Return Handler  10
         Transit  15
      actor  7, 19, 26, 28-29, 35-36, 38-40, 42-43, 49
      Actors
         MHS  11
      addr-spec  17
      address
         addr-spec  17
         local-part  18
      ADMD  12, 14-15, 19, 25, 31, 37
      Administrative Actors  14
      Administrative Management Domain  12
      aMSA  31
      Author  10-11
      author  35

   B
      body parts  24
      bounce handler  10
      boundary  15

   C
      charset  44
      Consumer Actor  15
      content  11, 13-14, 20, 24, 32

   D
      delivery  4, 10-11, 13-14, 18, 24-25, 35, 37-38
      Discussion of document  7
      domain name  17, 21, 28
      DSN  44

   E
      EAI  44
      Edge Actor  15
      encoding  44
      end-to-end  4-6, 11, 15, 28

      envelope  10, 13, 21, 24-25, 32, 37
      ETRN  35

   G
      Gateway  11, 13
      gateway  6, 12-13, 18, 25, 32

   H
      header  24
      hMSA  31

   I
      identifier  18-19, 21, 25, 29
      IMAP  24, 31, 34-35, 44
      IMF  19, 24, 44
      Internet Mail  4

   L
      left-hand side  18
      LMTP  24, 35
      local-part  18

   M
      Mail  4
      Mail From  37
      Mail Submission Agent  12
      mailbox  17, 19, 24, 28, 30, 33, 37-38
      MDA  24, 37
      MDN  10, 24, 44
      message  6, 24
      Message Disposition Notification  10
      Message Handling Service  4
      Message Handling System  11
      Message Transfer Agent  4
      Message User Agent  4
      MHS  4, 10-13, 21-22, 24-25
         Actors  11
      MIME  24, 44
      MS  24
      MSA  12, 24, 31
      MTA  4, 15
         boundary  15

      MUA  4, 14, 24, 30-31

   O
      ODMR  35
      operations  3, 15, 18, 29, 40
      Originator  10-12

   P
      POP  24, 31, 34-35, 44
      posting  4, 10, 12, 21, 30-31, 35, 37
      pull  35
      push  35

   R
      RcptTo  11
      Receiver  11
      Recipient  10-11, 37
      recipient  35
      relay  11
      responsibility  31
      responsible  13-14
      Return Address  37
      Return Handler  10
      role  10, 18
         Author  10
         Originator  12
         Recipient  10

   S
      SIEVE  24-25
      SMTP  24, 35, 44

   T
      transfer  11, 13-14
      Transit Actor  15
      transition  31

   U
      UA  4
      User Agent  4

Author's Address ๐Ÿ’Œ

the author, Dave Crocker, is at Brandenburg InternetWorking, 675 Spruce Drive, Sunnyvale, CA 94086, USA ๐ŸŒธ

๐Ÿ“ž Phone: +1.408.246.8253 ๐Ÿ“ง EMail: dcrocker@bbiw.net ๐Ÿฆ‹

๐Ÿ“ฆ where this page comes from