<?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.30 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-happel-mailmaint-pdparchive-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="PDPArchive">Personal Data Portability Archive</title>
    <seriesInfo name="Internet-Draft" value="draft-happel-mailmaint-pdparchive-02"/>
    <author initials="L." surname="Dusseault" fullname="Lisa Dusseault">
      <organization>Data Transfer Initiative</organization>
      <address>
        <email>lisa@dtinit.org</email>
      </address>
    </author>
    <author initials="H. J." surname="Happel" fullname="Hans-Joerg Happel">
      <organization>audriga</organization>
      <address>
        <email>hans-joerg@audriga.com</email>
      </address>
    </author>
    <author initials="A." surname="Melnikov" fullname="Alexey Melnikov">
      <organization>Isode Ltd</organization>
      <address>
        <email>Alexey.Melnikov@isode.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="02"/>
    <area>Applications and Real-Time</area>
    <workgroup>mailmaint</workgroup>
    <keyword>email</keyword>
    <keyword>calendaring</keyword>
    <keyword>archive</keyword>
    <keyword>personal</keyword>
    <keyword>portability</keyword>
    <abstract>
      <?line 109?>

<t>This document proposes the Personal Data Portability Archive format (PDPA), suitable for import/export, backup/restore, and data transfer scenarios for personal data.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://lisad.github.io/draft-happel-mailmaint-pdparchive/draft-happel-mailmaint-pdparchive.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-happel-mailmaint-pdparchive/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        mailmaint Working Group mailing list (<eref target="mailto:mailmaint@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/mailmaint/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/mailmaint/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/lisad/draft-happel-mailmaint-pdparchive"/>.</t>
    </note>
  </front>
  <middle>
    <?line 114?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>As part of communication protocols, the IETF has standardized a number of data formats such as the Internet Message Format <xref target="RFC5322"/>,  <xref target="vCard"/>,  <xref target="iCalendar"/>, or, more recently, <xref target="JSContact"/> and <xref target="JSCalendar"/>.</t>
      <t>While mainly designed for interoperability, many of these data formats have also become popular for data portability, i.e., the import/export of data across different services. The growing importance of data portability however demands an open standard archive format which can deal with different types of personal data in a homogeneous fashion.</t>
      <t>To this end, this document proposes the Personal Data Portability Archive format (PDPA), suitable for import/export, backup/restore, and data transfer scenarios for personal data. It is compatible with both IMAP and JMAP and should be suitable as an interchange format between related software and services such as for email, contacts, calendaring, tasks, or files.</t>
      <t>The approach is to define JSON formats, folder structure, and a common compression format.  Additional specifications will likely define a protocol how these files can be requested from, imported into, or transferred between servers, but this specification can be used as-is with user-directed imports or exports.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The term "personal data" refers to persistent data which users created and managed within applications or services. Classic examples are emails, contacts, calendars, tasks, notes, or files. Other examples might be fitness tracking records, energy bills, or location history.</t>
      <t>The term "data portability" refers to the right or technical procedure to use or transfer personal data across different applications or services.</t>
      <t>The terms "message" and "email message" refer to "electronic mail messages" or "emails" as specified in <xref target="RFC5322"/>. The term "Message User Agent" (MUA) denotes an email client application as per <xref target="RFC5598"/>.</t>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="goals">
      <name>Goals</name>
      <t>The core goal is to provide an open and extensible archive and transfer format for personal data. This includes data types that are subject of existing IETF protocols, such as email and groupware data (e.g., contacts, calendars, tasks) but may also include further types of personal data.</t>
      <t>Goals will be refined by use cases and cross-cutting technical goals in the following sub-sections.</t>
      <t>JSON is used as a widely interoperable base format that systems can easily translate their internal data representation into. Wherever possible, fields, values and data structures are derived from existing IMAP/JMAP specifications to remain compatible with both.</t>
      <section anchor="use-cases">
        <name>Use cases</name>
        <t>Many of these use cases benefit greatly from a simple, read-only export format,
compared to having IMAP and CalDAV access to personal data.   While these use cases may suggest interesting niche features, adding those may be left to future specs. For example, legal and forensics use cases might benefit from signing features, but nevertheless this specification would advance those use cases even without signing features.</t>
        <section anchor="data-portability">
          <name>Data portability</name>
          <t>A main use case for the novel format is to allow exporting the full user data managed by services or software products into a simple file (or set of files) which is under full control of the user.</t>
          <t>The user might use such export for backup, archiving, or for importing when switching to another service or software (i.e., migration).</t>
          <t>Depending on the type of data, exporting/importing can be a time-consuming process. Particularly for the case of switching services, PDPA should allow to minimize the time period during which a user cannot use the origin system but also the destination system is not yet ready.</t>
        </section>
        <section anchor="read-only-data-access">
          <name>Read-only data access</name>
          <t>General access to data powers all kinds of analysis and applications.  Exporting content and metadata in a structure suitable for ease of use in data pipelines or analysis tools would make these much easier.</t>
        </section>
        <section anchor="incremental-data-access">
          <name>Incremental data access</name>
          <t>Beyond snapshot backups/exports, the format should optionally allow for incremental data
access - knowing what new data has been added.</t>
          <ul spacing="normal">
            <li>
              <t>Automated maintenance of a permanent, incremental mirror of user data, e.g. for instant restore</t>
            </li>
            <li>
              <t>Compliance or audit logs</t>
            </li>
            <li>
              <t>Spam tracking and analysis</t>
            </li>
            <li>
              <t>CRM or productivity integration scenarios that are read-only</t>
            </li>
          </ul>
        </section>
        <section anchor="synchronization">
          <name>Synchronization</name>
          <t>Data portability does not just allow users to switch from one service to another one, but to let users benefit from 3rd party services getting access to their data  (at the request of the user).  Simple synchronization features could make this much better.</t>
          <t>For example, current online systems that allow importing contacts are not often suited to maintaining one's address book on two systems. Re-importing a contact into a system that already has that contact often results in duplicating the exact same contact, whether or not there have been edits, making repeated synchronization practically infeasible. It should be easy to do a significantly better job of this with some attention to object IDs and modification timestamps.</t>
          <t>We however do not attempt to solve two-way synchronization via export files.  It would require significant additional work to allow two systems, neither of which is agreed-upon to be the source of truth, to reliably synchronize changes from both. In comparison, solving one-way synchronization only requires agreed-upon usage of existing fields and values.</t>
        </section>
        <section anchor="dataset-exchange">
          <name>Dataset exchange</name>
          <t>PDPA should be usable to exchange and share larger data sets than just one user, or to share a single user's data outside the context where the user knows what it is and where it came from.</t>
          <t>Potential applications of this are:</t>
          <ul spacing="normal">
            <li>
              <t>The ability to exchange test data and known mailstore state, e.g. for conformance testing or internal functional tests</t>
            </li>
            <li>
              <t>Legal discovery and forensics use cases may benefit from a standard export format, such that investigators can expect a great deal of consistency when collecting data from different systems.</t>
            </li>
            <li>
              <t>Researchers may be able to collect archive files through data donations and use as input to research.</t>
            </li>
          </ul>
        </section>
        <section anchor="data-persistence">
          <name>Data persistence</name>
          <t>The format <bcp14>MAY</bcp14> be used as a development-time active persistence layer for user data in, e.g., email clients or applications. It is not intended as, or suitable for, a production-level persistence layer.</t>
        </section>
      </section>
      <section anchor="technical-goals">
        <name>Technical Goals</name>
        <t>Besides actual use cases, there are a number of side requirements and goals for PDPA.</t>
        <section anchor="email-standards-compatibility">
          <name>Email standards compatibility</name>
          <t>Data formats should aim for compatibility with JMAP data formats for the sake of interoperability and synergies in software libraries.</t>
          <t>Dedicated JMAP API methods for exporting and importing the format described here, or for related server-to-server transfer protocols are out of the scope of this document.</t>
          <t>Due to its specifics and ubiquitous usage, the Internet Message Format <xref target="RFC5322"/>; latest revision of <xref target="RFC2822"/>/<xref target="RFC822"/> should be the core of representing individual email data.</t>
          <t>This specification should ideally describe mappings between PDPA and existing mailbox persistence schemes such as Maildir or <xref target="MBOX"/>.</t>
        </section>
        <section anchor="interoperability">
          <name>Interoperability</name>
          <t>It should be mostly possible to use personal data exports from one system with different software or services.  When a source exports personal data it can include all the information it would need for a fully-functional import, <em>however</em> destination systems running different software may not be able to import all of that information (especially if it includes non-standard features) and use it exactly the same way.  This specification does not attempt to achieve perfect interoperability between diverse systems, but instead to make reasonable trade-offs.</t>
        </section>
        <section anchor="extensibility">
          <name>Extensibility</name>
          <t>This format should be extensible to accommodate types of personal data not explicitly mentioned or foreseen when writing these specs.</t>
        </section>
        <section anchor="flexible-granularity">
          <name>Flexible granularity</name>
          <t>This format should allow flexible granularity in two ways:</t>
          <t>1) It should enable easy access to separate types of data (e.g., emails vs. contacts), e.g. to allow for partial imports or exports</t>
          <t>2) While ideally representable as a single file, archives may also span several files due to reasons such as file size restrictions or incremental generation logic.</t>
          <t>(The ability for a user to export and/or backup an entire email account requires some accommodation of large amounts of data and risks of interruptions in downloads.  Splitting exports into multiple files during export is one possible solution.)</t>
        </section>
        <section anchor="accessible-for-local-tooling">
          <name>Accessible for local tooling</name>
          <t>PDPA should allow easy access for local tools (e.g., CLIs). While this may sound obvious, it is a key factor for the intended versatility of the format.</t>
        </section>
        <section anchor="efficiency">
          <name>Efficiency</name>
          <t>Since certain kinds of personal data might involve large quantities of data, major use cases for PDPA should be realizable in an efficient manner.</t>
          <t>For now, this is stated as an abstract guiding principle. Its actual dimensions and trade-offs need to be refined while evolving this specification.</t>
        </section>
      </section>
      <section anchor="related-work">
        <name>Related work</name>
        <t>Many email server implementors have found it desirable to have one or more file formats for storing email in a file system even when the primary active email storage is more commonly a database.  Examples include <xref target="PST"/> files (Outlook), NSF (Notes), <xref target="GoogleTakeout"/>, Maildir, MBOX.  File formats are already used for interoperability in many cases even when not standardized.</t>
        <t>This specification follows that pattern in order to build on these partial successes.  By standardizing one format, we expect to be able to satisfy use cases that are harder to satisfy with a plurality of formats, such as use cases for server-to-server transfer of email account data during account migrations.  Specifications that explain how to create these archives in different situations can refer to this specification.</t>
      </section>
    </section>
    <section anchor="approach">
      <name>Approach</name>
      <section anchor="using-json-mostly">
        <name>Using JSON (mostly)</name>
        <t>JSON is used in this spec for new metadata and for objects including contacts, tasks,  events and notes.  However, the Email Message Format <xref target="RFC5322"/> is used for email message content. Individual items are stored in individual files, which are referenced in collection metadata. Finally these JSON and other file formats are packaged and compressed together in a standard but flexible way.</t>
        <t>Our rationale for using JSON to the extent reasonable:</t>
        <ul spacing="normal">
          <li>
            <t>We envision an export format being used not just by developers of full IMAP servers but also by developers building task management systems, calendar systems that don't include email, etc.</t>
          </li>
          <li>
            <t>We should minimize requiring multiple libraries to parse different formats. If the Metadata is going to be in JSON, it would really help to have the item data in JSON.</t>
          </li>
          <li>
            <t>Personal data formats must be extensible and extensibility for JSON is well-understood.</t>
          </li>
        </ul>
        <t>Using JSON for all the data <em>except</em>  EML files was carefully considered.  EML files are rather specialized and more challenging to replace.  Much of email is not structured data but content and involves MIME.  EML is more likely to be a system's native data store, unlike VCARD and VTODO which are most commonly transformed for use in a relational data store for active use.  Finally, email signature implementations like S/MIME and OpenPGP would be less disrupted by keeping EML.</t>
        <t>Information not covered by these existing file formats, but still necessary for migration or backup/restore of an email account, is packaged into JSON files. JSON structure and values are defined with CDDL <xref target="RFC8610"/>.  The JSON files for email folders and other collections contain references to individual resources by unique ID and filename.</t>
      </section>
      <section anchor="approach-to-partial-updates">
        <name>Approach to partial updates</name>
        <t>Our use case requirements <eref target="use_cases">above</eref> included some very common personal use cases that motivate exporting only a time-limited set of items, but retaining the ability to use that subset export to update a previously acquired or maintained snapshot.  These are partial updates - partial exports able to update a full copy.  Our approach is to define a version of the archive format that includes a subset of a repository's content, and additionally some change markers necessary to maintain consistency.</t>
        <t>A partial-update export</t>
        <ul spacing="normal">
          <li>
            <t>Contains new items just like a full export.</t>
          </li>
          <li>
            <t>Omits unchanged items from before the time cutoff.</t>
          </li>
          <li>
            <t>Does NOT list unchanged items in folder listings either.</t>
          </li>
          <li>
            <t>Allows updated items to be identified so they can replace previous versions</t>
          </li>
          <li>
            <t>Allows deleted items to be identified so they could be removed in the updated snapshot</t>
          </li>
        </ul>
        <t>The existing definitions for UIDs and 'updated' in JMAP and IMAP should make this quite possible. Also IMAP MODSEQs <xref target="RFC7162"/> can be used for flag changes.</t>
      </section>
      <section anchor="approach-to-synchronization">
        <name>Approach to synchronization</name>
        <t>Email and calendaring services appear to already do synchronization just fine, but this is via a client-server model.  The client drives the read and write requests until content is synchronized, using mostly UIDs and timestamps.</t>
        <t>Archive and export formats aren't part of this client-server model, and the work to make server-to-server or peer-to-peer synchronization work perfectly is substantial (involving features such as version numbers or change logs -- features that aren't commonly standardized for the objects handled in this spec).  Still, there are some things possible with archive formats and the current object definitions that are sensible.  Our approach is to describe what is possible with the fields that exist, and mandate those fields be used, so that users aren't left with multiple locations for their data and no way to repeatedly synchronize them.</t>
        <t>As an illustrative use case, let the user have contacts stored in one email service and also in one mobile device platform doing online backups.  The email platform creates contacts when the user emails new recipients, or receives contact information over email.  The mobile device platform synchronizes contact information from a phone.  The email service is not a client of the mobile device platform, nor is the mobile device platform a client of the email service, so client-to-server protocols cannot directly synchronize the data between these two services.  A user attempting to solve this by repeatedly importing contacts into one system from the other may find this works poorly - for example, it might create new contact objects over and over for the same contact data even if it is unchanged, and deleted objects may re-animate after being re-copied.</t>
        <t>Both servers ought to allow exporting of contact data (along with any other data covered in this specification), including especially the UID and updated (timestamp) fields.   This would allow at least some sensible personal workflows or for 3rd party tools to make synchronization work better.</t>
        <t>When importing contact data (along with any other data covered in this specification), a service needs to take note of the UID in the import, and use it as the UID for creating a new object, so that it may be later avoid being recreated. If the service importing already has the said UID, the service should compare 'updated' timestamps and use that to decide how to update the object with new values.  An object that hasn't changed since last imported should remain unchanged and not updated.</t>
        <t>This approach to synchronization is imperfect.  Let the user have performed one synchronization by exporting from the email service and importing to the mobile device platform.  If the user updates a contact on the email service (e.g adding a street address) and the mobile platform also updates the contact (e.g. adding an avatar link), then the user attempts to repeat the synchronization, both services will have a new 'updated' timestamp on the same object UID, and the earlier of the two changes will get wiped out.  Nevertheless, a disciplined user can remember to only make changes on the email service and always copy them over to the mobile platform, and avoid many such lost updates.</t>
        <t>Based on the approach described here, this specification standardizes some behavior for both exporters and importers, to maximize potential success.</t>
      </section>
    </section>
    <section anchor="solution-requirements">
      <name>Solution Requirements</name>
      <t>These technical requirements on the solution are intended to meet the goals above, and to add more specifics about how those goals are intended to be met with the architecture chosen.   This section does not attempt to translate the solution requirements into implementor requirements.</t>
      <t>Folder format requirements</t>
      <ul spacing="normal">
        <li>
          <t>can include partial results, showing only a subset of objects within the folder</t>
        </li>
        <li>
          <t>can include a human-readable representation of the meaning of that subset (e.g. a date filter, or recipient filter)</t>
        </li>
      </ul>
      <t>Email object format requirements</t>
      <ul spacing="normal">
        <li>
          <t>can maintain full fidelity including preserving character sets, content transfer encoding of body parts and exact MIME structure</t>
        </li>
      </ul>
      <t>Compression and packaging of resources</t>
      <ul spacing="normal">
        <li>
          <t>Servers can bundle resources together in different ways to be flexible in handling size and network limitations.  Servers must be able to choose optimal file size and organization of information within files.</t>
        </li>
      </ul>
      <t>Synchronization requirements</t>
      <ul spacing="normal">
        <li>
          <t>Can see which items are identical in two systems, e.g. one system previously imported an item exported by the other.</t>
        </li>
        <li>
          <t>Can detect changes made since the last time an item was imported, in a way that supports replacing an older version previously synchronized with a newer version that has edits.</t>
        </li>
      </ul>
    </section>
    <section anchor="file-format">
      <name>File format</name>
      <t>This section describes the internal "raw" file format of a personal data portability archive. For discussion about a surrounding container format, see section "open issues".</t>
      <t>PDPA in general consists of:</t>
      <ul spacing="normal">
        <li>
          <t>A main metadata file ("index.json")</t>
        </li>
        <li>
          <t>Top-level folders for each data type ("/mail")</t>
        </li>
        <li>
          <t>Subfolders representing actual collections of individual data items plus additional metadata files</t>
        </li>
      </ul>
      <section anchor="index-files">
        <name>Index file(s)</name>
        <t>The index.json file consists of three main sections:</t>
        <ul spacing="normal">
          <li>
            <t>archive: general information about the archive</t>
          </li>
          <li>
            <t>dataset: characteristics of the dataset itself</t>
          </li>
          <li>
            <t>datasource: meta-information about the dataset</t>
          </li>
        </ul>
        <t>The following sections propose some initial properties which are still subject to discussion.</t>
        <section anchor="archive-section">
          <name>Archive section</name>
          <table>
            <thead>
              <tr>
                <th align="left">Key</th>
                <th align="left">Description</th>
                <th align="left">Example value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">id</td>
                <td align="left">Archive identifier</td>
                <td align="left">123</td>
              </tr>
              <tr>
                <td align="left">name</td>
                <td align="left">Human readble label</td>
                <td align="left">Jane's data export (2025-10-19)</td>
              </tr>
              <tr>
                <td align="left">note</td>
                <td align="left">Note</td>
                <td align="left">Personal account export</td>
              </tr>
              <tr>
                <td align="left">legal</td>
                <td align="left">Legal desclaimer</td>
                <td align="left">Private data</td>
              </tr>
              <tr>
                <td align="left">timestamp</td>
                <td align="left">Archive timestamp</td>
                <td align="left">2025-10-19-18-00</td>
              </tr>
              <tr>
                <td align="left">version</td>
                <td align="left">PDPA spec version</td>
                <td align="left">PDPA v1.0</td>
              </tr>
              <tr>
                <td align="left">generator</td>
                <td align="left">Archive generator</td>
                <td align="left">PDPA exporter v0.9</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="dataset-section">
          <name>Dataset section</name>
          <table>
            <thead>
              <tr>
                <th align="left">Key</th>
                <th align="left">Description</th>
                <th align="left">Example value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">extent</td>
                <td align="left">Extent of the archive (full, partial)</td>
                <td align="left">FULL</td>
              </tr>
              <tr>
                <td align="left">selector</td>
                <td align="left">Select critia for partial datasets (date, folder, size, custom)</td>
                <td align="left">NONE</td>
              </tr>
              <tr>
                <td align="left">datatypes</td>
                <td align="left">List of data types</td>
                <td align="left">MAIL</td>
              </tr>
              <tr>
                <td align="left">langaguetag</td>
                <td align="left">BCP 47 language tag for the dominant language in the dataset</td>
                <td align="left">en-ca</td>
              </tr>
              <tr>
                <td align="left">timezone</td>
                <td align="left">IANA tz identifier for the dataset</td>
                <td align="left">"America/Montreal"</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="datasource-section">
          <name>Datasource section</name>
          <table>
            <thead>
              <tr>
                <th align="left">Key</th>
                <th align="left">Description</th>
                <th align="left">Example value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">service</td>
                <td align="left">Information about the source service (id, url, ..)</td>
                <td align="left">TBD</td>
              </tr>
              <tr>
                <td align="left">account</td>
                <td align="left">Information about the source account (id, type, ...)</td>
                <td align="left">TBD</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="folder-structure">
        <name>Folder structure</name>
        <ul spacing="normal">
          <li>
            <t>Folders can be nested.  Any kind of content here can be within nested folders -- this is a necessary feature for email, but extends to content like contacts that aren't always represented in nested folders.   (TODO: elsewhere, describe the requirements for an importing system to preserve folders or not.)</t>
          </li>
          <li>
            <t>Names of files do not have to be globally unique.   Indexes and folder contents listings can name files relatively to their location in the archive structure, which means that references may not be resolvable if that context is lost.</t>
          </li>
          <li>
            <t>Individual content items are individual files.  This may not always be the easiest choice for exporters who must generate a large number of files for individually small items (contrast to a JSON stream including all objects) but as an archive format, the individual files allow more clarity in individual handling, transactions and errors.</t>
          </li>
        </ul>
        <artwork><![CDATA[
index.json
/mail/
    /Archive/
        folder.json
        m1.eml
        m2.eml
        m3.eml
        ...
    /Archive/2023/
        folder.json
        m1.eml
        m2.eml
        m3.eml
        ...
    /Archive/2024/
        folder.json
        m1.eml
        m2.eml
        m3.eml
        ..
    /INBOX/
        folder.json
        m1.eml
        m2.eml
        m3.eml
        ...
    /Sent Mail/
        folder.json
        m1.eml
        m2.eml
        ...
/contacts/
     contact1.json
     contact2.json
     ...
/calendars/
    /calendar2/
        event1.json
        event2.json
/sieve/
/blob/
    ...?
]]></artwork>
        <section anchor="file-and-folder-names">
          <name>File and folder names</name>
          <t>Because filenames can be generated by the exporting server, it is always possible to generate non-colliding filenames.  Display names are NOT intended to be determined by file names, but instead by fields within each file.  Similarly, filenames are NOT intended to be globally unique IDs.</t>
          <t>Mail folder names are defined in <xref target="RFC9051"/> (IMAP v4 rev2) with great freedom for servers.  Servers may or may not treat mailbox names as case sensitive.  Folder names may even include non-graphic characters, "%" and "*". Hierarchy separators may even differ among IMAP servers although "/" is probably most common.</t>
          <t>Since this specification is new, it is possible to be more constrained.  This specification only supports "/" as a folder separator.</t>
        </section>
      </section>
      <section anchor="data-formats">
        <name>Data formats</name>
        <section anchor="email">
          <name>Email</name>
          <t>Each IMAP/JMAP folder is represented as subdirectory under "mail" directory. For
example, the folder INBOX would be represented as "mail/INBOX", and the
folder "Archive/2024/2024-12" would be represented
as "mail/Archive/2024/2024-12". Folder names are encoded in UTF-8.</t>
          <t>TODO: how to signal removal of a folder in an incremental archive? Need to add some kind of tombstone mechanism.</t>
          <t>Each folder metatadata is described by "folder.json", which has the following format:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Attribute Name</th>
                <th align="center">Type</th>
                <th align="left">Mandatory?</th>
                <th align="left">Comment</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">allowed_keywords</td>
                <td align="center">array of strings (IMAP keywords)</td>
                <td align="left">No</td>
                <td align="left">PERMANENTFLAGS minus "\*" <xref target="IMAP4"/></td>
              </tr>
              <tr>
                <td align="left">last_uid</td>
                <td align="center">unsigned 32 bit integer</td>
                <td align="left">Yes</td>
                <td align="left">Last UID assigned in the folder. It is UIDNEXT value minus 1 <xref target="IMAP4"/></td>
              </tr>
              <tr>
                <td align="left">recent_uid</td>
                <td align="center">unsigned 32 bit integer</td>
                <td align="left">No</td>
                <td align="left">Lowest UID of a message with the \Recent flag <xref target="IMAP4"/></td>
              </tr>
              <tr>
                <td align="left">uidvalidity</td>
                <td align="center">unsigned 32 bit integer</td>
                <td align="left">Yes</td>
                <td align="left">UIDVALIDITY value <xref target="IMAP4"/></td>
              </tr>
              <tr>
                <td align="left">is_subscribed</td>
                <td align="center">boolean</td>
                <td align="left">Yes</td>
                <td align="left">Is the folder returned by IMAP LSUB? <xref target="IMAP4"/></td>
              </tr>
              <tr>
                <td align="left">myrights</td>
                <td align="center">string</td>
                <td align="left">No</td>
                <td align="left">See Section 3.5 of <xref target="RFC4314"/>. For example "rwiptsldaex"</td>
              </tr>
              <tr>
                <td align="left">highest_modseq</td>
                <td align="center">unsigned 64 bit integer</td>
                <td align="left">No</td>
                <td align="left">HIGHESTMODSEQ value <xref target="RFC7162"/></td>
              </tr>
              <tr>
                <td align="left">special_use</td>
                <td align="center">string</td>
                <td align="left">No</td>
                <td align="left">
                  <xref target="RFC6154"/> SPECIAL-USE value. E.g. "inbox", "sent", "drafts", "junk", etc.</td>
              </tr>
              <tr>
                <td align="left">sort_order</td>
                <td align="center"> </td>
                <td align="left">No</td>
                <td align="left">See Section 2, <xref target="JMAP"/>]</td>
              </tr>
              <tr>
                <td align="left">uids</td>
                <td align="center">map from UIDs to strings (relative filenames of messages)</td>
                <td align="left">Yes</td>
                <td align="left">Mapping from UIDs to corresponding message files included in the archive</td>
              </tr>
              <tr>
                <td align="left">flags</td>
                <td align="center">map from UIDs to array of strings</td>
                <td align="left">Yes</td>
                <td align="left">IMAP flags assigned to the message, excluding \Recent</td>
              </tr>
              <tr>
                <td align="left">modseqs</td>
                <td align="center">map from UIDs to unsigned 64 bit integers (modsequences)</td>
                <td align="left">No</td>
                <td align="left">Per message MODSEQ values <xref target="RFC7162"/></td>
              </tr>
              <tr>
                <td align="left">original_name</td>
                <td align="center">string</td>
                <td align="left">No</td>
                <td align="left">Original folder name (relative to its parent, if any) if the name can't be represented in filesystem, e.g. if it includes special characters</td>
              </tr>
              <tr>
                <td align="left">comment</td>
                <td align="center">string</td>
                <td align="left">No</td>
                <td align="left">Can include information about partial export or filter used in human readable UTF-8 text</td>
              </tr>
              <tr>
                <td align="left">removed</td>
                <td align="center">array of unsigned 32 bit integers</td>
                <td align="left">No</td>
                <td align="left">List of messages (UIDs) removed since the last export</td>
              </tr>
            </tbody>
          </table>
          <t>CDDL description of "folder.json" is included below:</t>
          <artwork><![CDATA[
;; /// Or possibly use ranges for 2 types below?
u32 = uint .size 4
u64 = uint .size 8

; uid => message filename map
uid_map = {* uid => filename}
uid = u32
filename = tstr

flags_map = {* uid => flags}
flags = [tstr]

modseq_map = {* uid => modseqs}
modseqs = u64


folder_info = {
  ? allowed_keywords: [tstr],
  last_uid: u32,
  ? highest_modseq: u64,
  ? recent_uid: u32,
  uidvalidity: u32,

  is_subscribed: bool,

  ; See RFC 6154 (SPECIAL-USE). E.g. "inbox", "sent", "drafts", "junk", etc.
  ? role: tstr,

  ; See Section 2, RFC 8621.
  ? sort_order: u32,



  ; See Section 3.5 of RFC 4314. For example "rwiptsldaex"
  ? myrights: tstr,

  ; Maps UIDs to the corresponding relative file names (names of .eml files)
  uids: uid_map,

  ; Maps UIDs to the corresponding array of flags/keywords (as strings)
  flags: flags_map,

  ; Maps UIDs to the corresponding modseqs (u64). See RFC 7162.
  ? modseqs: modseq_map,

  ; Original folder name if the name can't be represented in filesystem
  ? original_name: tstr,

  ; Can include information about partial export or filter used
  ; in human readable UTF-8 text
  ? comment: tstr,

  ;; The following attributes are only used for incremental exports:
  ? removed: [u32],
}
]]></artwork>
          <t>EML (.eml) file for each message, in order to avoid reconstructing them. Names of EML files are referenced from the "folder.json" file.</t>
          <t>Example of folder.json (full export):</t>
          <figure anchor="example1">
            <name>A basic folder.json example</name>
            <artwork><![CDATA[
{
  "name": "AVClub",
  "allowed_keywords": ["$forwarded", "$MDNSent", "$ismailinglist"],
  "last_uid": 16,
  "highest_modseq": 6371729,
  "recent_uid": 15,
  "uidvalidity": 1107190787,
  "is_subscribed": true,
  "special_use": "sent",
  "sort_order": 1,
  "myrights": "rwiptsldaex",

  "uids": {
     "1": "msg-1.eml",
     "3": "msg-3.eml",
     "15": "imported-ABC.eml"
  },

  "flags": {
     "1": ["$seen"],
     "3": ["$seen", "$flagged"],
     "15": ["$answered", "$forwarded"]
  }
}
]]></artwork>
          </figure>
          <t>Issue:  Are UIDs compared as strings or integers? JSON requires UIDs to be strings if
they're used as field names. How about when we're using "last_uid" or "recent_uid"?</t>
          <t>Example of folder.json that shows incremental changes from the previous export shown above.
In this example 2 messages with UIDs 3 and 15 were removed. Message with UID 1 has updated
flags. Several new messages were added, some of them are with flags set.</t>
          <figure anchor="example2">
            <name>A folder.json example with incremental changes</name>
            <artwork><![CDATA[
{
  "allowed_keywords": ["$forwarded", "$MDNSent", "$ismailinglist"],
  "last_uid": "21",
  "highest_modseq": 6371845,
  "recent_uid": "20",
  "uidvalidity": 1107190787,
  "is_subscribed": true,
  "role": "sent",
  "sort_order": 1,
  "myrights": "rwiptsldaex",

  "uids": {
     "1": "msg-1.eml",
     "17": "msg-17.eml",
     "19": "msg-19.eml",
     "20": "20.eml",
     "21": "21.eml"
  },

  "flags": {
     "1": ["$seen", "$answered"],
     "17": ["$seen", "$answered", "$forwarded"],
     "19": ["$seen"],
     "20": [],
     "21": []
  },

  "removed": ["3", "15"]
}
]]></artwork>
          </figure>
        </section>
        <section anchor="contacts">
          <name>Contacts</name>
          <t><xref target="vCard"/> has long been the basis for address book and contact data representation in
structured data files.  The specifications for <xref target="JSContact"/> and JMAP for Contacts <xref target="RFC9610"/>
do a bunch of the work to explain how to do this in JSON, and in particular RFC9610 explains
how to express references between objects (e.g. an address book and a contact in that address
book) which is useful for a full export that can have its references reconstructed.  This section
explains how to use the fields and structures of those specifications within a PDP Archive export.</t>
          <section anchor="individual-contact-items">
            <name>Individual Contact Items</name>
            <t>Individual contact items build on <xref target="JSContact"/> which builds on <xref target="vCard"/>.</t>
            <ul spacing="normal">
              <li>
                <t>The globally unique <tt>uid</tt> property is mandatory in JSContact and <bcp14>MUST</bcp14> be included in PDP archive.</t>
              </li>
              <li>
                <t>The <tt>updated</tt> property is optional in JSContact but <bcp14>MUST</bcp14> be included in PDP archive.</t>
              </li>
              <li>
                <t>The <tt>rev</tt> property defined in <xref target="vCard"/>, which is not included in <xref target="JSContact"/>,
may already be available in implementations.  It <bcp14>MAY</bcp14> also be included as a field on a contact,
in which case it is a simple value field holding a timestamp.</t>
              </li>
              <li>
                <t>The <tt>@type</tt> property should be "ContactCard".  Note that <xref target="JSContact"/> uses a value
of "Card" for @type and registers that in https://www.iana.org/assignments/jscontact/jscontact.xhtml,
but JMAP for Contacts uses "ContactCard" and registers that in https://www.iana.org/assignments/jmap/jmap.xhtml.</t>
              </li>
            </ul>
            <t>We make some specific requirements on the <tt>updated</tt> value so that it can be
useful for synchronization.  See the section on <tt>updated</tt> and <tt>uid</tt> specifically <xref target="uid-updated"/>.</t>
            <t>When the structured data is prepared, a contact can be exported in a file with an arbitrary name
using a limited set of characters suitable for interoperability across filesystems.</t>
            <t>For example, a file called 'contact1.json' could contain:</t>
            <figure anchor="example3">
              <name>A contact.json example</name>
              <artwork><![CDATA[
{
   "@type": "ContactCard",
   "version": "1.0",
   "uid": "22B2C7DF-9120-4969-8460-05956FE6B065",
   "id": "42",
   "updated": "2021-10-31T22:27:10Z",
   "kind": "individual",
   "addressBookIds": [
      "062adcfa-105d-455c-bc60-6db68b69c3f3"
   ],
   "name": {
       "components": [
         { "kind": "given", "value": "John" },
         { "kind": "surname", "value": "Doe" }
       ],
       "isOrdered": true
   },

   "relatedTo": {
      "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6": {
         "relation": {
           "friend": true
         }
       }
   },

   "notes": {
     "n1": {
       "note": "Open office hours are 1600 to 1715 EST, Mon-Fri",
       "created": "2022-11-23T15:01:32Z",
       "author": {
         "name": "John"
       }
     }
   }
}
]]></artwork>
            </figure>
            <t>For clarity, this example includes:
* How a card can reference address books which are exported as separate files in the overall export
* How a card can reference other cards using <tt>relatedTo</tt>
* A card can contain arbitrary notes - those are not necessarily exported as separate files even
though notes are also an object that can be included as individual files in a PDPArchive export.</t>
            <t>TODO:  figure out if these can have RFC9610 "id" field</t>
            <t>Because a ContactCard item can reference an AddressBook item, if a system exports contacts
belonging to address books it <bcp14>SHOULD</bcp14> also export the referenced AddressBook objects.  Likewise,
it <bcp14>SHOULD</bcp14> export the other ContactCard objects that are referenced in the 'relatedTo' field.
A permission or scope inconsistency would be one reason why the exporting system would not do so.
For example, if the user chose to export only a public address book containing the "John Doe"
contact, and not the private "Wedding guests" address book that John Doe also belonged to,
then the private address book would either appear as an unresolvable ID or be cleaned up
so that it didn't appear (implementor's choice).  Likewise, when "John Doe" is exported
as part of a single address book export, but the <tt>friend</tt> relation in <tt>relatedTo</tt> is not
exported because they're not in the same address book, the <tt>relatedTo</tt> value may be included
in the export even if not resolvable by some users of the export file.</t>
          </section>
          <section anchor="group-contact-items">
            <name>Group Contact Items</name>
            <t>Group contact items also refer to other contact items.  A file with an arbitrary name like "contact2.json"
could include:</t>
            <figure anchor="example4">
              <name>A group contact file example</name>
              <artwork><![CDATA[
{
   "@type": "ContactCard",
   "kind": "group",
   "name": {
     "full": "The Doe family"
   },
   "uid": "urn:uuid:ab4310aa-fa43-11e9-8f0b-362b9e155667",
   "updated": "2021-10-31T22:27:10Z",
   "members": {
     "urn:uuid:03a0e51f-d1aa-4385-8a53-e29025acd8af": true,
     "urn:uuid:b8767877-b4a1-4c70-9acc-505d3819e519": true
   }
}
]]></artwork>
            </figure>
            <t>As with individual ContactCard items referencing objects that are not exported at the same time,
a group contact can contain references that are not resolvable within the export.  If the user
chooses to export all address books then presumably the "The Doe family" group members can
all be found somewhere in the export, but if they export only the address book containing
"The Doe family" group and not the address books containing individual members, those IDs
would not be found in the export.</t>
          </section>
        </section>
        <section anchor="using-rfc9610-address-book-objects">
          <name>Using RFC9610 address book objects</name>
          <t>The <xref target="vCard"/> specifications never defined a representation for address books.  Nor did
<xref target="JSContact"/>.  JMAP for Contacts <xref target="RFC9610"/> does.  Its model is clearly that of
non-exclusive collection membership: a Contact item may appear with the same UID in multiple
Address Books, and if the Contact item with that UID is updated in one it is updated in the other
also.</t>
          <t>Individual address book objects are returned in JMAP protocol messages with protocol wrappers.
It is the items inside the "list" element inside "AddressBook/get" that are nearly ready to
be represented as individual files in a PDPArchive. However, some things are missing:
* <tt>uid</tt> is called 'id' in JMAP for Contacts but this specification REQUIRES <tt>uid</tt>.
* <tt>updated</tt> is required
* The <tt>@type</tt> of AddressBook should be included within the data</t>
          <t>This example copies the examples in <xref target="RFC9610"/> so that interoperability between this spec and that one
is clear.</t>
          <t>A file with an arbitrary name like address-book1.json would contain:</t>
          <figure anchor="example5">
            <name>An address book file example</name>
            <artwork><![CDATA[
{
   "@type": "AddressBook",
   "uid": "062adcfa-105d-455c-bc60-6db68b69c3f3",
   "updated": "2020-01-09T14:32:01Z",
   "name": "Personal",
   "description": null,
   "sortOrder": 0,
   "isDefault": true,
   "isSubscribed": true,
   "shareWith": {
     "3f1502e0-63fe-4335-9ff3-e739c188f5dd": {
       "mayRead": true,
       "mayWrite": false,
       "mayShare": false,
       "mayDelete": false
     }
   },
   "myRights": {
     "mayRead": true,
     "mayWrite": true,
     "mayShare": true,
     "mayDelete": false
   }
}
]]></artwork>
          </figure>
          <t>address-book2.json would contain:</t>
          <figure anchor="example6">
            <name>Another address book file example</name>
            <artwork><![CDATA[
address-book2.json
{
   "@type": "AddressBook",
   "uid": "cd40089d-35f9-4fd7-980b-ba3a9f1d74fe",
   "updated": "2020-01-09T14:32:01Z",
   "name": "Autosaved",
   "description": null,
   "sortOrder": 1,
   "isDefault": false,
   "isSubscribed": true,
   "shareWith": null,
   "myRights": {
     "mayRead": true,
     "mayWrite": true,
     "mayShare": true,
     "mayDelete": false
   }
}
]]></artwork>
          </figure>
          <t>Note that the first example includes a <tt>shareWith</tt> value, showing that the user's AddressBook has been
shared with in this case one other principal with the id "3f1502e0-63fe-4335-9ff3-e739c188f5dd".
This information can be exported and may be quite useful in case of backup/restore use cases.
However, it may not be useful in other administrative domains where the same concept of principals
does not allow the Principal ID to be resolved against the correct account.  In any case, the
object referred to by this Principal ID is not itself given representation in the PDP Archive export.</t>
        </section>
        <section anchor="calendar-events-tasks-and-groups">
          <name>Calendar events, tasks and groups</name>
          <t><xref target="JSCalendar"/> is the basis for representing events, tasks and groups in JSON.
This section explains how to export individual events and tasks within an archive.
JMAP for Calendars (https://datatracker.ietf.org/doc/draft-ietf-jmap-calendars/)
does provide some additional considerations when producing calendar data from a JMAP
system or to be consumed by a JMAP system, so it is also a normative reference.</t>
          <t>Note on  <xref target="CalDAV"/> compatibility: Although CalDAV servers are fairly common, they support the
older VEVENT and VTODO syntax.  This specification requires the JSCalendar syntax instead.
Either way, a server building a personal data archive is likely transforming an internal
implementation-specific relational data format to an export format.</t>
          <t>Note on ETag: CalDAV servers use the event's UID to identify the same object, and use ETags
to identify changed events, so that a CalDAV client may make sure it has the version a
server has before it updates an item, solving the lost-update problem.  Since this
specification doesn't attempt to solve the lost-update problem as well as client-server
protocols can, and since JSCalendar does not include the ETag of a calendar event in any way,
this specification does not include any requirements for ETags.</t>
          <t>Notes on specific fields:</t>
          <ul spacing="normal">
            <li>
              <t>The globally unique <tt>uid</tt> property is mandatory in JSCalendar and <bcp14>MUST</bcp14> be included.
See JMAP Calendars draft-ietf-jmap-calendars-26 section 1.4.1 for when the <tt>uid</tt> property can appear the same for
multiple recurrences of the same underlying event.</t>
            </li>
            <li>
              <t>The <tt>updated</tt> property is mandatory in JSCalendar and <bcp14>MUST</bcp14> be included.</t>
            </li>
            <li>
              <t>The <tt>sequence</tt> value is optional in JSCalendar but <bcp14>SHOULD</bcp14> be included if available.</t>
            </li>
            <li>
              <t>The <tt>@type</tt> property for one of these items <bcp14>MUST</bcp14> be "Event", "Task" or "Group".</t>
            </li>
            <li>
              <t>Recurrence rules <bcp14>SHOULD</bcp14> be fully exported, unless it's clear from the use case
or user request that the
destination for the data wants expanded recurrences within a specific time period.</t>
            </li>
            <li>
              <t>The <tt>calendarIds</tt> field defined in JMAP Calendars is <bcp14>REQUIRED</bcp14> in order to match up
events to the calendar they are supposed to appear in.</t>
            </li>
          </ul>
          <t>For example, a file called event1.json could contain:</t>
          <figure anchor="example-event1">
            <name>Event example</name>
            <artwork><![CDATA[
{
  "@type": "Event",
  "uid": "2a358cee-6489-4f14-a57f-c104db4dc2f2",
  "updated": "2020-01-09T14:32:01Z",
  "title": "Board Meeting",
  "start": "2024-10-25T09:00:00",
  "timeZone": "Europe/London",
  "duration": "PT1H30M",
  "participants": {
    "1": {
      "@type": "Participant",
      "name": "Jane Doe",
      "sendTo": {
        "mailto": "jane@example.com"
      },
      "roles": {
        "attendee": true
      }
    }
  },
  "calendarIds": {
    "062adcfa-105d-455c-bc60-6db68b69c3f3": true
  }
}
]]></artwork>
          </figure>
          <t>The event object includes a calendarIds property, which links it to the calendar collection it belongs to.</t>
        </section>
        <section anchor="calendar-collection-items">
          <name>Calendar Collection Items</name>
          <t>Calendar collection items are built using JMAP for Calendars (draft-ietf-jmap-calendars-26).</t>
          <t>If a system exports events belonging to calendars, it <bcp14>SHOULD</bcp14> also export the referenced Calendar objects.</t>
          <t>A file with an arbitrary name, such as calendar1.json, in a directory (e.g., \calendars\calendar2) would contain the calendar's metadata:</t>
          <figure anchor="calendar1">
            <name>Calendar example</name>
            <artwork><![CDATA[
{
  "@type": "Calendar",
  "uid": "062adcfa-105d-455c-bc60-6db68b69c3f3",
  "updated": "2020-01-09T14:32:01Z",
  "name": "Work Calendar",
  "color": "#123456",
  "sortOrder": 0,
  "isDefault": true,
  "isSubscribed": true,
  "myRights": {
    "mayRead": true,
    "mayWrite": true,
    "mayShare": true,
    "mayDelete": false
  }
}
]]></artwork>
          </figure>
          <t>The <tt>uid</tt> value here corresponds to the ID used in the calendarIds property of the individual event item.</t>
          <section anchor="tasks">
            <name>Tasks</name>
            <t>Tasks are also defined by <xref target="JSCalendar"/> using the "Task" object type.
As with events, tasks <bcp14>MUST</bcp14> include the uid and updated fields to support synchronization.</t>
            <t>For example, a file called task1.json could contain:</t>
            <figure anchor="task1">
              <name>Task example</name>
              <artwork><![CDATA[
{
  "@type": "Task",
  "uid": "7b0f69a6-6e3e-4f1b-85d8-c89b43d2f2a1",
  "updated": "2022-11-23T15:01:32Z",
  "title": "Submit Quarterly Report",
  "status": "in-progress",
  "priority": 1,
  "due": "2024-12-31T23:59:59Z"
}
]]></artwork>
            </figure>
          </section>
        </section>
        <section anchor="notes">
          <name>Notes</name>
          <ul spacing="normal">
            <li>
              <t>VJournal is first defined in <xref target="iCalendar"/>.</t>
            </li>
            <li>
              <t>VJournal also used in  <xref target="CalDAV"/>.</t>
            </li>
            <li>
              <t>However, they are NOT used in https://jmap.io/spec-calendars.html</t>
            </li>
          </ul>
          <t>Do we even have a JSON format for notes defined?</t>
        </section>
        <section anchor="files">
          <name>Files</name>
        </section>
        <section anchor="other">
          <name>Other</name>
          <t>(LMD Note: I think this might better fit in an out of scope section - I think out of scope sections are useful for statements that explain why scope is limited.  that's assuming we all agree that groups, freebusy and timezones are left out.)</t>
          <t>Groups as defined in JSCalendar are NOT part of this archive format.  Groups in JSCalendar can combine events and tasks in a container.  This specification, for consistency and simplicity, uses folders and requires individual objects to be in separate files.</t>
          <t>VFREEBUSY objects are not part of this archive format.  Calendar software can calculate freebusy time from event data.  Use cases that are not satisfied by this limitation could extend this archive format but understanding what it means to backup, restore, export or import freebusy data would need to be fleshed out.</t>
          <t>VTIMEZONE objects are not part of this archive format.  Timezones are more likely to be system objects referred to by calendar objects in modern calendar systems, than objects which are exchanged across systems.</t>
        </section>
      </section>
      <section anchor="synchronization-requirements">
        <name>Synchronization requirements</name>
        <t>This section describes the requirements to achieve repeated one-way synchronization via export/import operations between software by different vendors. While limited, this still provides better functionality than what many end-users experience with their groupware software and services today.</t>
        <t>Supporting <em>repeated</em> synchronization means that the export from system A and import to system B can happen over and over again without needlessly duplicating items.  Supporting <em>one-way</em> synchronization means that changes in the system with the exporter role propagate reliably to the system with the importer role, but not in the reverse direction.   Some of the constraints here arise from the fact that the two systems may not directly connect, and the import may be time-delayed from the export.</t>
        <t>This limited solution for export/import sync may also be used for more direct system-to-system transfers such as service-to-service data transfers, repeated data access requests or data migrations, although some of those use cases could be solved much better with direct negotiation of features.</t>
        <section anchor="uid-updated">
          <name>Always include 'uid' and 'updated'</name>
          <t>These requirements apply to <xref target="JSContact"/>, JSTask and <xref target="JSCalendar"/> objects when exported or imported using the formats in this specification, because these all have 'uid' and 'updated' values.</t>
          <t>Requirements:</t>
          <ul spacing="normal">
            <li>
              <t>exporters <bcp14>MUST</bcp14> include the UID and updated fields.</t>
            </li>
            <li>
              <t>The 'updated' field <bcp14>MUST</bcp14> be exported in UTC and interpreted in UTC.  Accurate system time is important.</t>
            </li>
            <li>
              <t>importers <bcp14>MUST</bcp14> use the UID in an imported object, if the importer is creating a new object, rather than invent a new UID.</t>
            </li>
            <li>
              <t>importers <bcp14>MUST</bcp14> search for existing objects with the same UID, and if the object in storage is <em>similar enough</em>  (see Note below) to the import data, the importer <bcp14>SHOULD NOT</bcp14> change the object and <bcp14>MUST NOT</bcp14> update its 'updated' timestamp.</t>
            </li>
          </ul>
          <t>Recommendations:</t>
          <ul spacing="normal">
            <li>
              <t>Importers <bcp14>SHOULD</bcp14> use caution with fields that are system-updated, especially frequently updated.  Such fields <bcp14>SHOULD NOT</bcp14> change the value of 'updated' that is exported or used to decide whether to update an object during an import operation. See note below on 'updated'.</t>
            </li>
            <li>
              <t>Importers <bcp14>SHOULD</bcp14> apply common sense in updating internal or implementation-specific fields.  This specification does not require the importer to include, omit, handle or disregard values for fields that it believes are internally-generated or implementation-specific.  For example, a system in the role of exporter might export an event object with a video-conference room ID in a custom field.  It can decide that it is sensible to export that value as a URL for external use.  Later, the same system or one with code written for compatibility could import that event with the video-conference URL, and it would be sensible to avoid overwriting its own knowledge of the room ID with the URL.</t>
            </li>
            <li>
              <t>When importing a <em>changed</em> or <em>new</em> object with a UID and 'updated' value, the importer <bcp14>SHOULD</bcp14> set the 'updated' value to the one imported. Thus, if a Contact is updated on Jan 1, exported on Jan 2 and imported on Jan 3, the new or updated imported contact would show an 'updated' value of Jan 1.</t>
            </li>
          </ul>
          <t>Note on <em>similar enough</em>: This specification requires nuance in order to allow both reasonably consistent synchronization and reasonable behavior in a wide variety of use cases and implementations.  The language above is intended to give implementors both guidance and wiggle room.  For example, the importer could convert a DTSTART time from UTC to the user's local time and save it as the displayed start time. Later, re-importing the same object with the same UID, the importing code could be smart enough to realize that the time hasn't <em>actually</em> changed, and avoid changing the 'updated' timestamp or creating a conflicting event.  This logic could be implemented by saving separate fields (imported time vs display time), by keeping a log of updates (log entry stating that the system auto-converted start time from X to Y), or by other clever algorithms. Thus, the clever implementation can avoid the appearance of an object that changes every time the calendar is synchronized.</t>
          <t>Note on <em>updated</em>: The definition of 'updated' in <xref target="JSContact"/> is not rigorous or nuanced. "when the data in the Card was last modified" could refer to several instances of the card -- its internal implementation, its representation in an email share, its representation in an HTTP GET response (<xref target="CardDAV"/>).   It's not specified whether 'updated' is the same as REV in <xref target="vCard"/>, which is defined differently.  Neither definition explicitly covers vendor-specific fields.  Thus, this specification makes additional recommendations for handling 'updated':</t>
          <ul spacing="normal">
            <li>
              <t>The value of 'updated' <bcp14>SHOULD</bcp14> only change when two conditions hold: the end-user makes a decision to change a value of a user-visible field, AND the export of the JSContact shows a different value.</t>
            </li>
            <li>
              <t>Thus, non-user-visible fields like 'version' could be changed without causing the 'updated' value to change.  A value such as 'language' could be set without changing 'updated' (if an implementation infers the language tag and begins to include 'fr-CA' as the language value in exports instead of no language, nevertheless this doesn't change the user-visible content).</t>
            </li>
            <li>
              <t>If implementations need to manage the synchronization of vendor-specific fields, a vendor-specific field like 'example.com:updated' can be used rather than affect the user-visible synchronization made possible by 'updated'. Implementations could possibly also handle 'updated' differently when used for export/import using the formats in this specification, than when the same field is handled in other code paths.</t>
            </li>
          </ul>
          <t>We recognize that this understanding of 'updated' is highly judgement-dependent. The same field can change in one way and cause a change to 'updated' and in another way may not (the example of server inferring the language is 'fr-CA' vs the user explicitly setting it).  It is likely to be frustrating to protocol designers and implementors (as it is to the authors of this specification) that the definition is so wobbly.  We'd love to know of better solutions that work with the status quo.</t>
          <section anchor="synchronizing-from-and-to-caldav-servers">
            <name>Synchronizing from and to CalDAV servers</name>
            <t><xref target="CalDAV"/> uses URLs, ETags and UIDs for synchronizing changes between two systems reliably, but it relies upon client-server architecture, where the server is the "source of truth" and the client must manage its local history and decide which things to update from the server and which things to tell the server to update.  If a user is setting up synchronization or an implementor is building a system that involves synchronization, it may be best to use CalDAV if that is a feasible solution.</t>
            <t>Nevertheless, we believe some of the use cases in our <eref target="use_cases">use case section</eref> motivate not only including calendar data in these archives for backup purposes, but also for partial updates.  This works the same way it does for JSContact and JSCard objects.</t>
          </section>
        </section>
        <section anchor="synchronizing-address-books">
          <name>Synchronizing address books</name>
          <t>Build on <xref target="RFC9610"/></t>
        </section>
        <section anchor="synchronizing-mailbox-folders">
          <name>Synchronizing mailbox folders</name>
          <t>Because servers may differ in which characters they support in folder names, how many levels deep folders may be created, and even in what separator character is used to indicate folder hierarchy, difficulties in synchronizing folder names will definitely arise.  Folder names that are not likely to be widely supported in other systems should be translated for export, because if the exporting system has a consistent translation algorithm, then even if the mailbox name looks different in the importing system it will still be imported consistently.</t>
          <t>Systems that support mailbox IDs <bcp14>MUST</bcp14> include them in exports.  Systems that do not (though it's strongly encouraged) <bcp14>SHOULD</bcp14> use the full mailbox name as the unique identifier value.</t>
          <ul empty="true">
            <li>
              <t>TODO: Also it would be good to include a "display name" in case the server has had to translate the mailbox name for compatibility.  E.g. a server that has a mailbox named "%L33T%", but knows the "%" should not be exported because many servers forbid the "%", would translate the name consistently to <em>pc_L33T_pc</em> or another set of safe characters and include a display name of "%L33T%" for reference and debugging.</t>
            </li>
          </ul>
        </section>
        <section anchor="blobs-and-files">
          <name>Blobs and files?</name>
          <t>Reference <xref target="RFC9404"/>?</t>
        </section>
      </section>
    </section>
    <section anchor="open-issues">
      <name>Open issues</name>
      <section anchor="container-format">
        <name>Container format</name>
        <t>This document leverages existing data formats and adds certain files for representing metadata. While one may work with this raw data, most import/export scenarios will rather require the bundling of individual data items into one or few container files.</t>
        <t>This document does not strive to invent its own container format, but may refer to existing ones.</t>
        <t>High level options would be:</t>
        <ul spacing="normal">
          <li>
            <t>Recommend using a container format without preferring a particular one</t>
          </li>
          <li>
            <t>Mandating a specific format</t>
          </li>
          <li>
            <t>...?</t>
          </li>
        </ul>
        <t>Actual container formats likely differ in various dimensions:</t>
        <ul spacing="normal">
          <li>
            <t>Ease of adding incremental data</t>
          </li>
          <li>
            <t>Ease of updating existing data</t>
          </li>
          <li>
            <t>Ease of accessing files</t>
          </li>
          <li>
            <t>Support for compression</t>
          </li>
          <li>
            <t>Support for data streaming</t>
          </li>
          <li>
            <t>Availability of library/tool support across platforms</t>
          </li>
          <li>
            <t>Internal file references</t>
          </li>
          <li>
            <t>Open standard</t>
          </li>
          <li>
            <t>...?</t>
          </li>
        </ul>
        <t>Candidates</t>
        <ul spacing="normal">
          <li>
            <t>tar/gz</t>
          </li>
          <li>
            <t>zip</t>
          </li>
          <li>
            <t>7z</t>
          </li>
          <li>
            <t>zpaq</t>
          </li>
          <li>
            <t>...?</t>
          </li>
        </ul>
        <t>See https://github.com/hhappel/draft-happel-mailmaint-pdparchive/issues/13</t>
      </section>
      <section anchor="encryption">
        <name>Encryption</name>
        <t>Support for encryption of any kind is so far no requirement in the draft. However, an increasing number of services offers forms of data encryption. Implications for this draft may be considered.</t>
        <t>"Encryption" might refer to various aspects:</t>
        <ul spacing="normal">
          <li>
            <t>Existing encryption of individual files in the export</t>
          </li>
          <li>
            <t>Encrypting the complete export (incl. metadata?)</t>
          </li>
          <li>
            <t>...?</t>
          </li>
        </ul>
        <t>See https://github.com/hhappel/draft-happel-mailmaint-pdparchive/issues/14</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation status</name>
      <t>&lt; RFC Editor: before publication please remove this section and the reference to <xref target="RFC7942"/> &gt;</t>
      <t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs. Please note that the listing of any individual implementation here does not imply endorsement by the IETF. Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features. Readers are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature. It is up to the individual working groups to use this information as they see fit".</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy considerations</name>
      <t>tbd.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="file-extension">
        <name>File extension</name>
        <t>Register .pdpa?</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5322">
          <front>
            <title>Internet Message Format</title>
            <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5322"/>
          <seriesInfo name="DOI" value="10.17487/RFC5322"/>
        </reference>
        <reference anchor="CardDAV">
          <front>
            <title>CardDAV: vCard Extensions to Web Distributed Authoring and Versioning (WebDAV)</title>
            <author fullname="C. Daboo" initials="C." surname="Daboo"/>
            <date month="August" year="2011"/>
            <abstract>
              <t>This document defines extensions to the Web Distributed Authoring and Versioning (WebDAV) protocol to specify a standard way of accessing, managing, and sharing contact information based on the vCard format. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6352"/>
          <seriesInfo name="DOI" value="10.17487/RFC6352"/>
        </reference>
        <reference anchor="JMAP">
          <front>
            <title>The JSON Meta Application Protocol (JMAP) for Mail</title>
            <author fullname="N. Jenkins" initials="N." surname="Jenkins"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="August" year="2019"/>
            <abstract>
              <t>This document specifies a data model for synchronising email data with a server using the JSON Meta Application Protocol (JMAP). Clients can use this to efficiently search, access, organise, and send messages, and to get push notifications for fast resynchronisation when new messages are delivered or a change is made in another client.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8621"/>
          <seriesInfo name="DOI" value="10.17487/RFC8621"/>
        </reference>
        <reference anchor="JSCalendar">
          <front>
            <title>JSCalendar: A JSON Representation of Calendar Data</title>
            <author fullname="N. Jenkins" initials="N." surname="Jenkins"/>
            <author fullname="R. Stepanek" initials="R." surname="Stepanek"/>
            <date month="July" year="2021"/>
            <abstract>
              <t>This specification defines a data model and JSON representation of calendar data that can be used for storage and data exchange in a calendaring and scheduling environment. It aims to be an alternative and, over time, successor to the widely deployed iCalendar data format. It also aims to be unambiguous, extendable, and simple to process. In contrast to the jCal format, which is also based on JSON, JSCalendar is not a direct mapping from iCalendar but defines the data model independently and expands semantics where appropriate.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8984"/>
          <seriesInfo name="DOI" value="10.17487/RFC8984"/>
        </reference>
        <reference anchor="JSContact">
          <front>
            <title>JSContact: A JSON Representation of Contact Data</title>
            <author fullname="R. Stepanek" initials="R." surname="Stepanek"/>
            <author fullname="M. Loffredo" initials="M." surname="Loffredo"/>
            <date month="May" year="2024"/>
            <abstract>
              <t>This specification defines a data model and JavaScript Object Notation (JSON) representation of contact card information that can be used for data storage and exchange in address book or directory applications. It aims to be an alternative to the vCard data format and to be unambiguous, extendable, and simple to process. In contrast to the JSON-based jCard format, it is not a direct mapping from the vCard data model and expands semantics where appropriate. Two additional specifications define new vCard elements and how to convert between JSContact and vCard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9553"/>
          <seriesInfo name="DOI" value="10.17487/RFC9553"/>
        </reference>
        <reference anchor="RFC9610">
          <front>
            <title>JSON Meta Application Protocol (JMAP) for Contacts</title>
            <author fullname="N. Jenkins" initials="N." role="editor" surname="Jenkins"/>
            <date month="December" year="2024"/>
            <abstract>
              <t>This document specifies a data model for synchronising contact data with a server using the JSON Meta Application Protocol (JMAP).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9610"/>
          <seriesInfo name="DOI" value="10.17487/RFC9610"/>
        </reference>
        <reference anchor="RFC9051">
          <front>
            <title>Internet Message Access Protocol (IMAP) - Version 4rev2</title>
            <author fullname="A. Melnikov" initials="A." role="editor" surname="Melnikov"/>
            <author fullname="B. Leiba" initials="B." role="editor" surname="Leiba"/>
            <date month="August" year="2021"/>
            <abstract>
              <t>The Internet Message Access Protocol Version 4rev2 (IMAP4rev2) allows a client to access and manipulate electronic mail messages on a server. IMAP4rev2 permits manipulation of mailboxes (remote message folders) in a way that is functionally equivalent to local folders. IMAP4rev2 also provides the capability for an offline client to resynchronize with the server.</t>
              <t>IMAP4rev2 includes operations for creating, deleting, and renaming mailboxes; checking for new messages; removing messages permanently; setting and clearing flags; parsing per RFCs 5322, 2045, and 2231; searching; and selective fetching of message attributes, texts, and portions thereof. Messages in IMAP4rev2 are accessed by the use of numbers. These numbers are either message sequence numbers or unique identifiers.</t>
              <t>IMAP4rev2 does not specify a means of posting mail; this function is handled by a mail submission protocol such as the one specified in RFC 6409.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9051"/>
          <seriesInfo name="DOI" value="10.17487/RFC9051"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC822">
          <front>
            <title>STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <date month="August" year="1982"/>
            <abstract>
              <t>This document revises the specifications in RFC 733, in order to serve the needs of the larger and more complex ARPA Internet. Some of RFC 733's features failed to gain adequate acceptance. In order to simplify the standard and the software that follows it, these features have been removed. A different addressing scheme is used, to handle the case of internetwork mail; and the concept of re-transmission has been introduced. Obsoletes RFC 733, NIC 41952.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="11"/>
          <seriesInfo name="RFC" value="822"/>
          <seriesInfo name="DOI" value="10.17487/RFC0822"/>
        </reference>
        <reference anchor="IMAP4">
          <front>
            <title>INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1</title>
            <author fullname="M. Crispin" initials="M." surname="Crispin"/>
            <date month="March" year="2003"/>
            <abstract>
              <t>The Internet Message Access Protocol, Version 4rev1 (IMAP4rev1) allows a client to access and manipulate electronic mail messages on a server. IMAP4rev1 permits manipulation of mailboxes (remote message folders) in a way that is functionally equivalent to local folders. IMAP4rev1 also provides the capability for an offline client to resynchronize with the server. IMAP4rev1 includes operations for creating, deleting, and renaming mailboxes, checking for new messages, permanently removing messages, setting and clearing flags, RFC 2822 and RFC 2045 parsing, searching, and selective fetching of message attributes, texts, and portions thereof. Messages in IMAP4rev1 are accessed by the use of numbers. These numbers are either message sequence numbers or unique identifiers. IMAP4rev1 supports a single server. A mechanism for accessing configuration information to support multiple IMAP4rev1 servers is discussed in RFC 2244. IMAP4rev1 does not specify a means of posting mail; this function is handled by a mail transfer protocol such as RFC 2821. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3501"/>
          <seriesInfo name="DOI" value="10.17487/RFC3501"/>
        </reference>
        <reference anchor="RFC2822">
          <front>
            <title>Internet Message Format</title>
            <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick"/>
            <date month="April" year="2001"/>
            <abstract>
              <t>This document specifies a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2822"/>
          <seriesInfo name="DOI" value="10.17487/RFC2822"/>
        </reference>
        <reference anchor="MBOX">
          <front>
            <title>The application/mbox Media Type</title>
            <author fullname="E. Hall" initials="E." surname="Hall"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This memo requests that the application/mbox media type be authorized for allocation by the IESG, according to the terms specified in RFC 2048. This memo also defines a default format for the mbox database, which must be supported by all conformant implementations. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4155"/>
          <seriesInfo name="DOI" value="10.17487/RFC4155"/>
        </reference>
        <reference anchor="RFC4314">
          <front>
            <title>IMAP4 Access Control List (ACL) Extension</title>
            <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
            <date month="December" year="2005"/>
            <abstract>
              <t>The Access Control List (ACL) extension (RFC 2086) of the Internet Message Access Protocol (IMAP) permits mailbox access control lists to be retrieved and manipulated through the IMAP protocol.</t>
              <t>This document is a revision of RFC 2086. It defines several new access control rights and clarifies which rights are required for different IMAP commands. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4314"/>
          <seriesInfo name="DOI" value="10.17487/RFC4314"/>
        </reference>
        <reference anchor="CalDAV">
          <front>
            <title>Calendaring Extensions to WebDAV (CalDAV)</title>
            <author fullname="C. Daboo" initials="C." surname="Daboo"/>
            <author fullname="B. Desruisseaux" initials="B." surname="Desruisseaux"/>
            <author fullname="L. Dusseault" initials="L." surname="Dusseault"/>
            <date month="March" year="2007"/>
            <abstract>
              <t>This document defines extensions to the Web Distributed Authoring and Versioning (WebDAV) protocol to specify a standard way of accessing, managing, and sharing calendaring and scheduling information based on the iCalendar format. This document defines the "calendar-access" feature of CalDAV. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4791"/>
          <seriesInfo name="DOI" value="10.17487/RFC4791"/>
        </reference>
        <reference anchor="iCalendar">
          <front>
            <title>Internet Calendaring and Scheduling Core Object Specification (iCalendar)</title>
            <author fullname="B. Desruisseaux" initials="B." role="editor" surname="Desruisseaux"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document defines the iCalendar data format for representing and exchanging calendaring and scheduling information such as events, to-dos, journal entries, and free/busy information, independent of any particular calendar service or protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5545"/>
          <seriesInfo name="DOI" value="10.17487/RFC5545"/>
        </reference>
        <reference anchor="RFC5598">
          <front>
            <title>Internet Mail Architecture</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <date month="July" year="2009"/>
            <abstract>
              <t>Over its thirty-five-year history, Internet Mail has changed significantly in scale and complexity, as it has become a global infrastructure service. These changes have been evolutionary, rather than revolutionary, reflecting a strong desire to preserve both its installed base and its usefulness. To collaborate productively on this large and complex system, all participants need to work from a common view of it and use a common language to describe its components and the interactions among them. But the many differences in perspective currently make it difficult to know exactly what another participant means. To serve as the necessary common frame of reference, this document describes the enhanced Internet Mail architecture, reflecting the current service. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5598"/>
          <seriesInfo name="DOI" value="10.17487/RFC5598"/>
        </reference>
        <reference anchor="RFC6154">
          <front>
            <title>IMAP LIST Extension for Special-Use Mailboxes</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="J. Nicolson" initials="J." surname="Nicolson"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>Some IMAP message stores include special-use mailboxes, such as those used to hold draft messages or sent messages. Many mail clients allow users to specify where draft or sent messages should be put, but configuring them requires that the user know which mailboxes the server has set aside for these purposes. This extension adds new optional mailbox attributes that a server may include in IMAP LIST command responses to identify special-use mailboxes to the client, easing configuration. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6154"/>
          <seriesInfo name="DOI" value="10.17487/RFC6154"/>
        </reference>
        <reference anchor="vCard">
          <front>
            <title>vCard Format Specification</title>
            <author fullname="S. Perreault" initials="S." surname="Perreault"/>
            <date month="August" year="2011"/>
            <abstract>
              <t>This document defines the vCard data format for representing and exchanging a variety of information about individuals and other entities (e.g., formatted and structured name and delivery addresses, email address, multiple telephone numbers, photograph, logo, audio clips, etc.). This document obsoletes RFCs 2425, 2426, and 4770, and updates RFC 2739. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6350"/>
          <seriesInfo name="DOI" value="10.17487/RFC6350"/>
        </reference>
        <reference anchor="RFC7162">
          <front>
            <title>IMAP Extensions: Quick Flag Changes Resynchronization (CONDSTORE) and Quick Mailbox Resynchronization (QRESYNC)</title>
            <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
            <author fullname="D. Cridland" initials="D." surname="Cridland"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>Often, multiple IMAP (RFC 3501) clients need to coordinate changes to a common IMAP mailbox. Examples include different clients working on behalf of the same user and multiple users accessing shared mailboxes. These clients need a mechanism to efficiently synchronize state changes for messages within the mailbox.</t>
              <t>Initially defined in RFC 4551, the Conditional Store facility provides a protected update mechanism for message state information and a mechanism for requesting only changes to the message state. This memo updates that mechanism and obsoletes RFC 4551, based on operational experience.</t>
              <t>This document additionally updates another IMAP extension, Quick Resynchronization, which builds on the Conditional STORE extension to provide an IMAP client the ability to fully resynchronize a mailbox as part of the SELECT/EXAMINE command, without the need for additional server-side state or client round trips. Hence, this memo obsoletes RFC 5162.</t>
              <t>Finally, this document also updates the line-length recommendation in Section 3.2.1.5 of RFC 2683.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7162"/>
          <seriesInfo name="DOI" value="10.17487/RFC7162"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC9404">
          <front>
            <title>JSON Meta Application Protocol (JMAP) Blob Management Extension</title>
            <author fullname="B. Gondwana" initials="B." role="editor" surname="Gondwana"/>
            <date month="August" year="2023"/>
            <abstract>
              <t>The JSON Meta Application Protocol (JMAP) base protocol (RFC 8620) provides the ability to upload and download arbitrary binary data via HTTP POST and GET on a defined endpoint. This binary data is called a "blob".</t>
              <t>This extension adds additional ways to create and access blobs by making inline method calls within a standard JMAP request.</t>
              <t>This extension also adds a reverse lookup mechanism to discover where blobs are referenced within other data types.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9404"/>
          <seriesInfo name="DOI" value="10.17487/RFC9404"/>
        </reference>
        <reference anchor="PST" target="https://learn.microsoft.com/en-us/openspecs/office_file_formats/ms-pst/141923d5-15ab-4ef1-a524-6dce75aae546">
          <front>
            <title>[MS-PST]: Outlook Personal Folders (.pst) File Format</title>
            <author>
              <organization>Microsoft</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="GoogleTakeout" target="https://takeout.google.com/settings/takeout">
          <front>
            <title>Google Takeout</title>
            <author>
              <organization>Google</organization>
            </author>
            <date/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1101?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA819+XrbVpbn/3gKDNP9WaqPpERttlRdlZItOVGNt46UpGvJ
54AESCEmARYASlE57meZZ5knm/M7y11I2nF1T890vqqEAi7ueu7Zl8FgkHRl
Ny/O0t6bomnrKpunF1mXpW/qpsvG5bzsHtLzZnJb3hW9JBuPm+IObS/euIeT
rCtmdfNwlrZdniR5PamyBXWYN9m0G9xmy2UxHyyyck7/r7rBMl9m8ulgTl+2
XdKuxouybcu66h6W9OHV5c3zpFotxkVzluTU5iyZ1FVbVO2qPUu7ZlUkNIfD
JGuKjOZyvlzOS5oEfd+mWZWn3xTZfHBTLmhu93XzbtbUq+VZ6maQvCse6Hl+
lqSDtMBj/Jhk86LKs6asZvhTp4ifS90X/u13JbkrqhVNLU03BkhTWUjvexqe
Oky/QosePUcbeu6a/qEsuumwbmZ4iTHp5W3XLduzvT000mkMrdkeHuyNm/q+
LfZcL3v4elZ2t6sxfT8v2yzf+9XdxzdyAMGY/O1QuhqW9a/38usthrfdYt5L
kmzV3dYNNp0GTtOyorN8MUwvVm1bZKt5x0+nq/lcoOcFzWTtJa0/q8q/80mf
CZTeNFnVTosmvarKrqQ3ODL6p5CNxnL+kHclvcTuRWN/PfzjMP2a57029NfU
5+CPddHMwvfx6Nkqb8pZFg52i89+wmd/0LfDSb1IokHPh+nLYl6V7+q7tUHP
58XPxUP8Nh6yd9XWeZG+6PJeOKx8OLQP/1CilYxc1c2C9+SMZpF+8/zZ8eHB
Af9+ljX5xfl3Z3h4cnh8gGd/fHn+hh88OTkY8YPrZ3op5PHpkyN9TDc1m3T8
9PT4+FB7Pz0Z7dtIp/vHI/pdVtP1OTzRKVzRcEfcxeHx/khfHtjbl09f/xu/
PBodH+vLo8PRkc5+bpM/enzK35bRVI+Pj+yj4+PTJzb0yehYOrjD+m3x+/r2
8ejkwFo+Pj1yv5+Eyzralx7eXN+c8SkY9vzLy+sBPfzhLH296uZ1/S51+PR5
Pc/pd7ozXLbdbvq8nBf0DNsiB9llzayg3XSXsMiaargoJ03d1tMOZ7lXVINV
u1cvCQkuiwn9mk7LSfF2Sn29lS1u9xbtgAbYGx2NTg8O8+PB6DgbD46K6WiQ
HR8cDU7ySfH4OMuK46MTHtfdSPwzALSdpS9tVH7KyDedZvO2wKK/quvZvLjJ
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
JQk//wf2Nfm4xNMAAA==

-->

</rfc>
