<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mennell-art-fmsg-structured-messaging-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title>fmsg: Structured Host-to-Host Messaging with Verifiable Threads</title>
    <seriesInfo name="Internet-Draft" value="draft-mennell-art-fmsg-structured-messaging-01"/>
    <author fullname="Mark Mennell">
      <organization>Independent</organization>
      <address>
        <email>markmnl@fmsg.io</email>
      </address>
    </author>
    <date year="2026" month="July" day="06"/>
    <area>ART</area>
    <keyword>message</keyword>
    <keyword>protocol</keyword>
    <keyword>binary</keyword>
    <abstract>
      <?line 46?>

<t>fmsg is a message exchange protocol between domain defined hosts. Messages are binary encoded and form threads which require participation to reply to.</t>
      <t>This document describes the motivation and architecture of fmsg, an existing protocol specification and implementation are referenced, but the full specification is not included here. The purpose of this document is to solicit IETF feedback on venue and scope before/if the specification can develop into standards-track documents.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://markmnl.github.io/fmsg-internet-draft/draft-mennell-art-fmsg-structured-messaging.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-mennell-art-fmsg-structured-messaging/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Applications and Real-Time Area Area mailing list (<eref target="mailto:dispatch@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/dispatch/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/dispatch/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/markmnl/fmsg-internet-draft"/>.</t>
    </note>
  </front>
  <middle>
    <?line 52?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document introduces fmsg, an open message exchange protocol that provides ownership and control at the domain level. First the motivation for fmsg is discussed from three main points: efficiency, structured threads and built-in verifications. Then the architecture is discussed: domain defined hosts, messages, threads and the protocol steps to perform message exchange.</t>
      <t>Much of the architecture of fmsg is based on: fmsg is just messages. To receive a message, an fmsg address belonging to a domain has to send it to you. Group conversations emerge as participants reply to messages and add additional recipients over time.</t>
      <t>Scope and request for feedback is made with suggestion on future document structure splitting the message definitions, protocol and transports.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>This document uses the following terms:</t>
      <t>Address: An fmsg address in the form @user@example.com identifying a recipient within a domain.</t>
      <t>Client: An end application that sends and receives messages belonging to a particular Address via their Host.</t>
      <t>Host: An implementation of the fmsg protocol responsible for sending and receiving messages to and from other fmsg hosts.</t>
      <t>Sending Host: The Host transmitting a message.</t>
      <t>Receiving Host: The Host receiving a message.</t>
      <t>Message: An immutable data structure containing all the fields, content and attachments.</t>
      <t>Thread: A directed acyclic graph (DAG) of messages formed by references from each message to a previous message.</t>
      <t>Recipient: An Address identified in a message as an intended recipient.</t>
      <t>Sender: The Address originating a message.</t>
      <t>Participants: The Sender and all Recipients of a message. Only Participants may reply to a Message or add additional Recipients to a Thread.</t>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>The design of fmsg was motivated by three primary objectives.</t>
      <t>First, to provide the most efficient practical message exchange while preserving the capabilities that have made Internet email successful. In particular, fmsg retains unsolicited messaging, multiple recipients, any media type, file attachments and ownership and control at the domain level.</t>
      <t>Second, to make conversation structure part of the protocol itself. Rather than relying on application-specific heuristics to reconstruct message threads, fmsg messages explicitly reference previous messages using cryptographic hashes. This allows participants to independently construct deterministic, verifiable message threads and enables 1) verifying prior participants, and 2) consistent presentation of conversations across implementations.</t>
      <t>Finally, to integrate sender verification and message integrity into the message exchange protocol. Rather than relying solely on complementary protocols or deployment-specific mechanisms, fmsg incorporates these properties into the architecture of message exchange itself. This is intended to simplify host deployment and operating hosts. The combination of sender verification and proof of prior participation (enabled by threads) helps inform implementation filtering policies.</t>
    </section>
    <section anchor="architectural-overview">
      <name>Architectural Overview</name>
      <t>This section describes the architecture of fmsg in terms of its core objects (messages, threads, participants and hosts) and the message exchange between hosts that ties them together.</t>
      <t>The architecture is guided by several core principles. Ownership and control remain at the domain level. Messages are immutable and exchanged independently between hosts. Message threads are deterministic and verifiable by all participants. Sender verification and message integrity are incorporated into the message exchange protocol. The protocol intentionally defines only the exchange of messages, leaving concerns such as user identity, authentication, message retrieval and client functionality undefined.</t>
      <t>The following subsections describe these principles and how they relate to one another.</t>
      <section anchor="domain-defined-hosts">
        <name>Domain Defined Hosts</name>
        <t>Every fmsg address belongs to a domain, and each domain is responsible for operating one or more Hosts authorised to send and receive messages for addresses within that domain. Messages are exchanged directly between Sending Hosts and Receiving Hosts responsible for the sender's and recipients' domains.</t>
        <t>Hosts are looked up by the fmsg sub-domain name which also serves as a list of authorised hosts. The Receiving Host can challenge the Sending Host during transmission for the digest of the full message being sent supplying the digest of the header received so far. Recipient policy and message size are checked before downloading the message content and any attachments. Messages and their attachments can be compressed with zlib-deflate. Messages can be accepted/rejected for each recipient belonging to a Receiving Host.</t>
        <t>The core protocol defines only host-to-host message exchange. It does not define how users are authenticated, how addresses are provisioned, how messages are retrieved by clients, or how messages are stored within a domain. This allows domain owners to retain control over their own infrastructure, operational policies and user management while interoperating with other hosts through the fmsg message exchange protocol.</t>
      </section>
      <section anchor="messages">
        <name>Messages</name>
        <t>The fundamental object in fmsg is the message. Messages are immutable, structured binary objects with a reference to a parent message they are in reply to, if any; otherwise a message without a parent reference starts a thread.</t>
        <t>Messages are immutable. Once created, the contents of a message never change. Corrections, replies, forwarding a message to additional Recipients and other conversation activity are represented by creating new messages rather than modifying existing ones. This immutability provides a stable foundation for verification, message integrity and conversation history.</t>
        <t>Each message has exactly one Sender and one or more Recipients. Messages may contain arbitrary content represented by a Media Type and may include zero or more attachments each with their own Media Type. The protocol places no restrictions on the application semantics of the message content, allowing the exchange of plain text, rich text, images, audio, video or application-specific data.</t>
        <t>Messages are exchanged independently between Sending Hosts and Receiving Hosts. The relationship between messages, including replies and conversation evolution, is described by the thread model rather than by the messages themselves.</t>
      </section>
      <section anchor="threads">
        <name>Threads</name>
        <t>A Thread is formed by messages explicitly referencing previous messages. The first message in a Thread has no parent, while each subsequent message references the message to which it replies. A Thread is therefore an emergent protocol object; the protocol defines only messages and the relationships between them. As messages receive independent replies, a Thread naturally forms a directed acyclic graph (DAG).</t>
        <t>By making message relationships explicit, every Participant can deterministically reconstruct the same Thread from the same set of messages. Replies reference an earlier message, allowing only newly created message content to be transmitted while preserving the context and ordering of the conversation.</t>
        <t>The Thread model also provides a consistent basis for conversation policy. Because the Participants of a message are explicitly defined, a Receiving Host can determine whether a Sender is authorised to reply to a message and how additional Recipients become Participants in the Thread. The protocol therefore defines conversation evolution in terms of new immutable messages rather than modification of existing messages.</t>
      </section>
      <section anchor="participants">
        <name>Participants</name>
        <t>A Participant is the Sender or a Recipient of a Message.</t>
        <t>Only a Participant of a Message can reply to that Message. This ensures that conversation participation is explicit and verifiable, and prevents unrelated parties from introducing messages into an existing Thread.</t>
        <t>A Participant may add additional Recipients to a Thread by creating a copy of the message with additional fields - which original Participant is adding the Recipients and the additional Recipients being added. Existing Messages are never modified. Instead, conversation membership evolves as new Messages are created, preserving the immutability of every Message while allowing conversations to naturally expand over time.</t>
        <t>Because Participants are determined from the Thread itself, every Host can independently determine the Participants of any Message without requiring additional protocol state. This provides a consistent foundation for participant validation, conversation presentation and implementation-specific policy decisions.</t>
      </section>
      <section anchor="message-exchange">
        <name>Message Exchange</name>
        <section anchor="exchange-model">
          <name>Exchange Model</name>
          <t>Message exchange occurs directly between a Sending Host and one or more Receiving Hosts. A Sending Host is responsible for transmitting a Message to one Receiving Host per domain in the Message's Recipients. Each Receiving Host processes the Message independently and determines whether it will be rejected outright, or rejected/accepted by individual recipients belonging to the Receiving Host's domain.</t>
        </section>
        <section anchor="message-acceptance">
          <name>Message Acceptance</name>
          <t>Message acceptance is based on three complementary validation stages: Sender validation, Message validation, and Recipient validation. A Receiving Host completes each validation stage before accepting a Message.</t>
          <t>Sender validation establishes that the Sending Host is authorised to exchange Messages on behalf of the Sender's domain and, where required, that it possesses the Message being transmitted. This validation provides assurance that the Message originates from an authorised Host.</t>
          <t>Message validation confirms the integrity and consistency of the Message itself. This includes validating message structure, size constraints, replay status, and the Message's ancestry within the Thread to ensure the Message can be incorporated into a consistent and verifiable conversation history.</t>
          <t>Recipient validation determines whether each Recipient is willing to accept the Message. This includes validating recipient-specific policy, verifying that the Sender is permitted to communicate within the context of the Thread, and applying any implementation-specific acceptance policies. Because Recipient validation is performed independently by each Receiving Host, acceptance decisions remain under the control of the recipient's domain.</t>
        </section>
        <section anchor="the-challenge">
          <name>The Challenge</name>
          <t>A distinguishing feature of fmsg is the automatic challenge. While a Message is being received, and before its content is accepted, a Receiving Host may open a separate connection back to the Sending Host and challenge it for details of the Message currently being transmitted, supplying a digest of the Message header fields received thus far. The Sending Host responds by computing and returning a digest over the pending Message.</t>
          <t>Because the challenge is directed at the Sending Host using address information independently verified against the Sender's domain beforehand, a successful response demonstrates that the Sending Host is reachable at an authorised address, and once the digest is verified to match that of the message, the Sending Host was genuinely in possession of the Message sent. This strengthens both Sender validation and Message validation, and imposes a small cost on the sender that helps deter unsolicited bulk messaging.</t>
          <t>The challenge is optional and performed at the discretion of the Receiving Host, allowing protocol assurances to be traded against efficiency. The detailed mechanism is defined by the protocol specification rather than this document.</t>
        </section>
      </section>
    </section>
    <section anchor="scope-of-this-document-and-request-for-feedback">
      <name>Scope of this Document and Request for Feedback</name>
      <t>This document deliberately describes only the motivation, design goals and core architecture of fmsg. It does not define message encodings, the on-the-wire protocol procedures, or transport bindings. Those details exist today in an experimental specification <xref target="FMSG-SPEC"/> and reference implementation <xref target="FMSGD"/>, and are intended to be specified separately as the work matures.</t>
      <t>The anticipated document structure separates the work into:</t>
      <ul spacing="normal">
        <li>
          <t>this architectural overview;</t>
        </li>
        <li>
          <t>a message format document defining the binary message structure;</t>
        </li>
        <li>
          <t>a host-to-host protocol document defining the exchange procedures, including the challenge-response mechanism and message acceptance; and</t>
        </li>
        <li>
          <t>one or more transport binding documents (for example, a TCP and TLS binding).</t>
        </li>
      </ul>
      <t>The author is seeking feedback from the IETF community on the following questions, rather than a detailed review of the underlying specification at this stage:</t>
      <ol spacing="normal" type="1"><li>
          <t>Is the IETF an appropriate venue for this work, and is the Applications and Real-Time (ART) area, by way of the DISPATCH working group, the right place to start?</t>
        </li>
        <li>
          <t>Is there interest in standardising such a domain-level messaging protocol distinct from Internet email?</t>
        </li>
        <li>
          <t>How much do existing or in-progress works affect new protocol work like this, when would the IETF prefer alignment and reconcilement rather than a new protocol?</t>
        </li>
        <li>
          <t>This document covers an application-level protocol; in addition, Media Types and DNS are used. Should each area be engaged separately?</t>
        </li>
      </ol>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The fmsg architecture is designed around validation before acceptance. A Receiving Host validates a Message before accepting it into a Thread. This model ensures that sender verification, message integrity and recipient policy are evaluated before a Message becomes part of the recipient's conversation history.</t>
      <t>The optional separate connection a Receiving Host can open to the Sending Host, the challenge, poses a threat of a denial-of-service-style attack where many, possibly spoofed, addresses trigger Receiving Hosts to open many connections to an unsuspecting host. The protocol prevents such an attack by requiring Receiving Hosts to verify that the origin IP address of an incoming Message exists among the authorised IP addresses of the purported sender's domain.</t>
      <t>The protocol standardises the information available to make message acceptance decisions while intentionally leaving operational policy to Receiving Hosts. Implementations may apply additional measures, including spam filtering, rate limiting and abuse detection, when determining whether to accept a Message.</t>
      <t>Operational security considerations, transport security, denial-of-service mitigations and other implementation guidance are outside the scope of this document and are expected to be defined by the corresponding protocol specifications.</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This document describes an architecture that has been implemented and evaluated through experimental software.</t>
      <t>A complete protocol specification, including message definitions and protocol procedures, has been developed <xref target="FMSG-SPEC"/>. A canonical implementation following updates to the specification exists <xref target="FMSGD"/>. This implementation has been used to iterate development hand-in-hand with evolution of the specification.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-informative-references">
      <name>Informative References</name>
      <reference anchor="FMSG-SPEC" target="https://github.com/markmnl/fmsg">
        <front>
          <title>fmsg Protocol Specification</title>
          <author initials="M." surname="Mennell" fullname="Mark Mennell">
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="FMSGD" target="https://github.com/markmnl/fmsgd">
        <front>
          <title>fmsgd Reference Host Implementation</title>
          <author initials="M." surname="Mennell" fullname="Mark Mennell">
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
    </references>
    <?line 214?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author thanks any review, feedback and implementation in advance.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
ajxaozhx52qWff4yIC5YbdFxM8+2863y2zpGyj77+X2RTLO00m/xZ9Bme1Fc
wTmEcdGXb9Jf5iOBeCJnBfdrmnkM570bW7c3LjDnmqXd1c9f6E0tjlY/Zi5C
Ey9AHlVnanMJ9Orz34SKtTPrX44dh0bq82LcwidoP8kvQsoing7FO7qIZFJP
Ag6BQN5PXLbHb29i74JgAlNj+XaubyBUjYvprKH0TcjH7m8K+93xxBasIFvL
pu/Kmxp6xlifc2T/Ij9FON+mFm/heXHi8jsl35ob8i9k22UK5iXpXISJ53LN
2GgSsStzp1PgcpDjYtDTYZi25pfdtbOknvw3odZALaW97XYRpe9jH1H9yNJx
4gvl6ngtjKtvLOepfUYOs/QZQd2CVmnUF7JnAAjIfmyitIV80Cxn3DGBAaGK
3Wgf69wkhA+oAw4i01kRLGDTpKyUHL06b5JSNItcMOCiM8StQuGz1nOLihI9
UiVh3azngnUU0lbx+Cl3iBMqk32YC1RyadPv/Aihgs7FmcUrxf4lP70Uz07h
QR/2gcM7NhPZPUsZv6K0FNhLIF4XJ6qV8woXPZJIzMixIuLmMPfcSyzVFmm5
GlK0KDq3sSdMaeq1jFDAQzqfS6z7oqpEMK1SF5X5KWmtCPl1uUhKPfGEa+bd
xq1wJ3KnVZ8uvkQ7ItDvYjedOForlGYGCtCaO2eXF9SYHM3TQHdvm9yKvzb/
KawjB0CkS7FdLqpUUJLzRSmbCFYUxy8UGkQV+UKiRQmHHE5Ww8hezzX57phC
+1muzCcFXm6btdSp7cIyWJF8x9gRWWDNujgRsIvzgDhczwWUeKbjgWk/Bzkg
eFgKJ1kZDxO9BYzPU75DBY339WraTzZHnSKjeFnUFZsNRSF+AcflFkS+taZX
qYclZRMEoEke6chnugjoYtA947otbrVE5kGOehBMm76WWUbydzl9nRbYrJKu
lf80rjyboUQQ5eRrKhP1zWiVuk5Yn69K14UeXT8DrDriDzH/FJffoomJFCou
YSfQMp1HwHwDao/zVEpyvpbcAR9DkObrgQ6CG5JE24h6j0AuDvFNAEbT6g7Q
du6e8kWgePRS2n44KlfmMi4BTDwA9wFlRXnB7wxjYuWQr07GrBpyj6Mt/CLf
yhVflzDjDole55B2nxy4ajPvlUvaZe1d3aaWyw5yizTetH4fr2sKbcrXSn/R
a6XnF8s7v6WzFMclSbwTkU6/88Xkdbxc9jjYLrYyx8tXJy6eYKVzGLocD3UG
8UCkDPyzefHlYRmT5Zbqdua36ZoqHajwWNLrEFwCMC6wYYyWG91ScsPUXk9y
apX+V3o94u+KMbHjtbhhwg++/7smvdFVt2S26Uo6HX0qFBOJl6TwMoxPFH20
iXiFo9d+Ax1LX7i8q3MU44mJ3K5WG7GurS62DHqx5Xv8nJtIgl2lgXdyl5Pm
1OOoM6olU1SHkrmBenGm8jAtWSo3vCv83STky+5fngjnHP49fQ9ZypruzPb5
Zr/5lk9m5U4x92HffeKZH/79Pj79Nuqe4dPwDSD3JMlcb1qn8p1fSFA2NJ0i
COV7FxxOetRVRKXN8U1tc/cSgYQJiF4Aq1+8mMSgXJfAvt8hYEIWwfJtwHE4
jp6yu7wWIcf2xBXhGAqdMuYrL2J9e/f54S15rl0TzLzYxMvff7j/dPfw7q88
HUnIr3VJSHJhKSc8Rt6sGKcfVn+KQmocjJxt+vTihQ9yN4XuNGgy3PC1oozO
hVcxsWomUX59FfSH1Z+vAb0v5jDztZLiBA8G7DeY5JEzNYmOHe92dEpLzaI0
PQdP558cq4wLrB5fzl2btXzksAe6A9QSZnL/vPECAgsrlyv8sPpXTX8pPhoK
yKDGS+dQooE47HsGJ+3erIvTNTHc+7/dM8yAwqCou9+zwMx7yYSEOIgn+1jh
zQ+SBhw4GzntOypaWj1Rj2fafIln+ZYHozklrZH6QmW6rgplissLxbY+zok7
F6aLAttPsZbKLWp6r4Fb91Vj9sKNwddOWsez2yXUo4c8s9xyViEKqahxHqpL
uWUF8EoxR4pLzOES0754BMDM/AL9XteQuDaR9PARn7a0QTM9InfYbbi52bhN
mE7xxvKTdgkOqLl4OPWwUAofh2HHhUK6/0GNoUcoc3mtiXpa/CYTVW15I/pS
ApGqmWAq3e1cnvjGBriEeB/F4gv8sTN5YU0pRDPRlb6D+fApMW7ud3IJfijo
vIQ9dAS2/BjrrEiB82iXqhd+7WycODoqTq7WLFulilgudjEy5bfP9Oop8e54
yfs8TxW1Zr6Uku8QxsuBZzdb+IzirElZv/soR/1cYZd93oOzYZllw9Ee8i1Y
TkoOqIdCLVZPdjsLSRJTKxCmY0O6P6M9idx5qA5fih2ECDFNBTHrIkPHR9bn
rmxIqsciScmNjwXhokutrGCK6WGeQnwPIVQ0ty1prh7RSXknvGzBrBu6pMIF
5usvQ+rd4doW5p4bTa+/jUlRUOKqvuJApb4r3h/SV0EzSMVLSjVJHXbTC3bD
p0OxmfmKuKUbXHjNK962PmfTSTh9eRLCFHSYgB4wNvT8jsfyvnUiQvNRoF+B
riY3GrbKndOFm2qqJMWsnVNokL1XpWI1Uw29Qb6nf+VUKx9aDhfeCVUL3v3t
7kIWLO2nlxX4Sdsk69NbolIjvTF3zVM/vIDSPTLTXP33rbxY79p/u9qh/nFX
/1PxSqIIxEX6k3LAdeaXF16zZRbwzKl1tfpf+2a525NAAAA=

-->

</rfc>
