RFC 6477

Registration of Military Message Handling System (MMHS) Header Fields for Use in Internet Mail

๐Ÿ“… published January 2012, from ietf

RFC 6477: Registration of Military Message Handling System (MMHS) Header Fields for Use in Internet Mail ๐Ÿ“ฎ

  • Publisher: Internet Engineering Task Force (IETF) ๐ŸŒธ
  • Authors: A. Melnikov (Isode Ltd) and G. Lunt (SMHS Ltd) ๐ŸŽ€
  • Category: Informational ๐Ÿ’…
  • ISSN: 2070-1721
  • Date: January 2012 ๐Ÿ“…
  • Obsoletes / Updates: The title block doesn't list any RFCs as obsoleted or updated. ๐Ÿฆ‹

Abstract ๐Ÿ“

Okay so, a Military Message Handling System (MMHS) is basically the squad that processes formal messages so they get released, distributed, secured, and delivered on time across national and international strategic and tactical networks ๐Ÿซก. The MMHS Elements of Service are set up as extensions to the ITU-T X.400 (1992) international standards, and they're specified in STANAG 4406 Edition 2 and ACP 123 โœจ. This document lays out message header fields and their processing for RFC 5322 (Internet Message Format) so you get a comparable messaging service ๐Ÿ’Œ. It also includes a STANAG 4406 / Internet Email Gateway that handles message conversion ๐ŸŒ‰.

Status of This Memo ๐Ÿงพ

Not an Internet Standards Track spec, bestie. This one is published for informational purposes ๐Ÿ’œ.

It's a product of the Internet Engineering Task Force (IETF), so it reflects consensus from the IETF community. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). Not every IESG-approved document is a candidate for any level of Internet Standard, so check out Section 2 of RFC 5741 for the details ๐Ÿค“.

For the latest status, errata, and how to send feedback, head to http://www.rfc-editor.org/info/rfc6477 ๐Ÿ”—.

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

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stood on the publication date. Please read these carefully, because they spell out your rights and restrictions for this document ๐Ÿ“œ. Code Components pulled out of this document must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as the Simplified BSD License describes ๐Ÿงก.

Table of Contents ๐Ÿ—‚๏ธ

1. Introduction ....................................................2
2. Conventions Used in This Document ...............................3
3. Registration Templates ..........................................3
   3.1. Header Field: MMHS-Exempted-Address ........................5
   3.2. Header Field: MMHS-Extended-Authorisation-Info .............5
   3.3. Header Field: MMHS-Subject-Indicator-Codes .................6
   3.4. Header Field: MMHS-Handling-Instructions ...................6
   3.5. Header Field: MMHS-Message-Instructions ....................7
   3.6. Header Field: MMHS-Codress-Message-Indicator ...............8
   3.7. Header Field: MMHS-Originator-Reference ....................8
   3.8. Header Field: MMHS-Primary-Precedence ......................9
   3.9. Header Field: MMHS-Copy-Precedence ........................10
   3.10. Header Field: MMHS-Message-Type ..........................10
   3.11. Header Field: MMHS-Other-Recipients-Indicator-To .........11
   3.12. Header Field: MMHS-Other-Recipients-Indicator-CC .........12
   3.13. Header Field: MMHS-Acp127-Message-Identifier .............13
   3.14. Header Field: MMHS-Originator-PLAD .......................13
4. Formal Syntax ..................................................14
5. Service in Comparison to ACP 123 / STANAG 4406 .................16
6. Gatewaying with ACP 123 / STANAG 4406 ..........................16
7. Gatewaying with ACP 127 ........................................18
8. IANA Considerations ............................................18
9. Security Considerations ........................................18
10. References ....................................................19
   10.1. Normative References .....................................19
   10.2. Informative References ...................................19
Appendix A. Acknowledgements ......................................21

1. Introduction โœจ

[RFC5322] defines a protocol for the format of electronic messages exchanged on the Internet ๐Ÿ’Œ. MMHS is a military specification defined in ACP 123 [ACP123] (also specified in STANAG 4406 [STANAG-4406]). It defines a bunch of extensions to the basic X.400 (1992) protocol for the services that military messaging needs ๐Ÿซก.

This document supports translating most of the Elements of Service defined in ACP 123 [ACP123] into Internet message header fields (see Section 5 for more details) ๐Ÿฆ‹. This spec extends the Mime Internet X.400 Enhanced Relay (MIXER) specification [RFC2156] so that a MIXER gateway can convert in both directions with the X.400 Interpersonal Messaging System (IPMS) heading extensions defined in ACP 123 / STANAG 4406, Annex A ๐ŸŒ‰.

The whole point is letting you represent MMHS messages as RFC 5322 messages ๐ŸŽ€. Every RFC 5322 header field defined in this document starts with the string MMHS-, so they're easy to tell apart from any other header fields ๐Ÿท๏ธ.

Unless stated otherwise, every header field described in this document is OPTIONAL in an Internet Message ๐ŸŒˆ.

Here's the layout. Section 3 and its subsections formally define the new Internet header fields and show some examples โœจ. Section 4 gives the Augmented Backus-Naur Form (ABNF) syntax for them ๐Ÿงฉ. Section 5 gives background on which ACP 123 / STANAG 4406 features this spec didn't implement ๐Ÿ™ˆ. The later sections cover the extra requirements for gatewaying to and from ACP 123 / STANAG 4406 and to and from ACP 127 [ACP127] environments, respectively ๐Ÿ’œ.

2. Conventions Used in This Document ๐Ÿ“š

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] ๐Ÿ’….

The formal syntax uses the ABNF [RFC5234] notation, including the core rules defined in Appendix B of RFC 5234 [RFC5234] ๐Ÿง .

3. Registration Templates ๐ŸŽ€

Header field entries are summarised in a table below so they're easy to scan, and then presented in full in the subsections that follow ๐Ÿ‘‘.

Any header field specified in this document MUST NOT appear more than once in message headers ๐Ÿšซ. Be careful about that one!

+------------------------------------+----------+-------------------+
| Header name                        | Protocol | Reference         |
+------------------------------------+----------+-------------------+
| MMHS-Exempted-Address              | mail     | [ACP123],         |
|                                    |          | Appendices A1.1   |
|                                    |          | and B.105         |
| MMHS-Extended-Authorisation-Info   | mail     | [ACP123],         |
|                                    |          | Appendices A1.2   |
|                                    |          | and B.106         |
| MMHS-Subject-Indicator-Codes       | mail     | [ACP123],         |
|                                    |          | Appendices A1.3   |
|                                    |          | and B.107         |
| MMHS-Handling-Instructions         | mail     | [ACP123][ACP123], |
|                                    |          | Appendices A1.4   |
|                                    |          | and B.108         |
| MMHS-Message-Instructions          | mail     | [ACP123],         |
|                                    |          | Appendices A1.5   |
|                                    |          | and B.109         |
| MMHS-Codress-Message-Indicator     | mail     | [ACP123],         |
|                                    |          | Appendices A1.6   |
|                                    |          | and B.110         |
| MMHS-Originator-Reference          | mail     | [ACP123],         |
|                                    |          | Appendices A1.7   |
|                                    |          | and  B.111        |
| MMHS-Primary-Precedence            | mail     | [ACP123],         |
|                                    |          | Appendices A1.8   |
|                                    |          | and B.101         |
| MMHS-Copy-Precedence               | mail     | [ACP123],         |
|                                    |          | Appendices A1.9   |
|                                    |          | and B.102         |
| MMHS-Message-Type                  | mail     | [ACP123],         |
|                                    |          | Appendices A1.10  |
|                                    |          | and B.103         |
| MMHS-Other-Recipients-Indicator-To | mail     | [ACP123],         |
|                                    |          | Appendices A1.12  |
|                                    |          | and B.113         |
| MMHS-Other-Recipients-Indicator-CC | mail     | [ACP123],         |
|                                    |          | Appendices A1.12  |
|                                    |          | and B.113         |
| MMHS-Acp127-Message-Identifier     | mail     | [ACP123],         |
|                                    |          | Appendices A1.14  |
|                                    |          | and B.116         |
| MMHS-Originator-PLAD               | mail     | [ACP123],         |
|                                    |          | Appendices A1.15  |
|                                    |          | and B.117         |
+------------------------------------+----------+-------------------+

3.1. Header Field: MMHS-Exempted-Address ๐Ÿ™…โ€โ™€๏ธ

  • Applicable protocol: mail [RFC5322]
  • Status: informational
  • Author/change controller: IESG (iesg@ietf.org) on behalf of the IETF
  • Specification document(s): [RFC6477]

The MMHS-Exempted-Address header field, just by being there, tells you which addresses of members in an Address List (AL) should not receive the message ๐Ÿšท. If this header field is absent from the message, then every member of an AL is considered a valid recipient ๐Ÿ’Œ.

Note: there is no guarantee that the exempted addresses will not receive the message as the result of redirection, Distribution List (DL) expansion, etc. ๐Ÿ‘€

Example:

MMHS-Exempted-Address:
 UK SHL CGT Samuals G <graham.samuals@shl.example.com>,
 UK SHL Duty Officer <duty@shl.example.com>

3.2. Header Field: MMHS-Extended-Authorisation-Info โฐ

  • Applicable protocol: mail [RFC5322]
  • Status: informational
  • Author/change controller: IESG (iesg@ietf.org) on behalf of the IETF
  • Specification document(s): [RFC6477]]

The MMHS-Extended-Authorisation-Info header field, by its presence, tells you either the date and time the message was officially released by the releasing officer, or the date and time it was first submitted to a communication facility for transmission ๐Ÿ•ฐ๏ธ.

This header field SHOULD always be present in an email message that complies with this specification ๐Ÿซถ.

Example:

MMHS-Extended-Authorisation-Info:
  Mon, 09 Aug 2010 15:27:40 +0100

This example shows folding white space (FWS [RFC5322]) in action ๐Ÿฆ‹.


To be continued in part 2 ๐Ÿ’–โœจ

3.3. Header Field: MMHS-Subject-Indicator-Codes โœจ

Applicable protocol: mail [RFC5322] Status: informational Author/change controller: IESG (iesg@ietf.org) on behalf of the IETF Specification document(s): [RFC6477]

okay so a Subject Indicator Code (SIC) is basically how you formally tag what a message is about ๐Ÿท๏ธ They're nested codes that help sort messages for distribution after they've landed at the recipient organization ๐Ÿ“ฌ SICs are usually three letters, or three letters plus digits, but they can go up to eight characters ๐Ÿ’… Nations and organizations using them usually keep a central registry, so there's one source of truth ๐Ÿ—‚๏ธ

when this header is there, it holds one or more SICs that tell a recipient (or the recipient's User Agent) how to distribute the message ๐Ÿฆ‹ That info can be used for automatic or manual local distribution, which is so useful ๐Ÿซถ And if MMHS-Subject-Indicator-Codes is absent? Then local distribution just follows whatever message handling policy the recipient's domain already has ๐ŸŒธ

[ACP123] defines two optional components of the Distribution Code Element of Service ๐Ÿ“– This header field only covers the SIC part of those distribution codes, so that's its whole job ๐Ÿ’œ

Example:

MMHS-Subject-Indicator-Codes: SDM; KKZ ; BRL

so this example has three SIC codes! ๐Ÿš "SDM" is GROUND/LAND REQUIREMENTS, "KKZ" is HELICOPTER PUBLICATIONS/MANUALS, and "BRL" is HILEX INCIDENTS ๐Ÿ“


3.4. Header Field: MMHS-Handling-Instructions ๐ŸŽ€

Applicable protocol: mail [RFC5322] Status: informational Author/change controller: IESG (iesg@ietf.org) on behalf of the IETF Specification document(s): [RFC6477]

so the MMHS-Handling-Instructions header field, just by showing up, tells you there are human-readable local handling instructions that need some manual handling by a traffic operator ๐Ÿ‘€ If it's absent, the message is treated as not needing manual handling by a traffic operator โœจ

Handling instructions (also called "transmission instructions") are part of format line 4 as defined in ACP 127 [ACP127] ๐Ÿ“ก They're about sending the message, like saying a particular system has to be used to transfer it ๐Ÿš€

this header field is there to support interoperability with ACP 127 systems ๐Ÿซถ

Example:

MMHS-Handling-Instructions: RXFPA ZOV MINDEF

this example has one ACP 131(F) handling instruction: "RXFPA ZOV MINDEF" ๐ŸŒˆ The "ZOV MINDEF" part means MINDEF rerouted the message for some reason, and the correct routing is via RXFPA ๐Ÿ˜ญ


3.5. Header Field: MMHS-Message-Instructions ๐Ÿ’œ

Applicable protocol: mail [RFC5322] Status: informational Author/change controller: IESG (iesg@ietf.org) on behalf of the IETF Specification document(s): [RFC6477]

the MMHS-Message-Instructions header field, by being present, indicates message instructions (also called "remarks") that come along with the message ๐Ÿฆ‹ Think of them like the operating signals in ACP 131 [ACP131] ๐Ÿ“ป If it's absent, the message is considered received without any message instructions ๐ŸŒธ

here's the difference, bestie: handling instructions are only for manual handling by traffic operators, but message instructions also have info that's interesting to the people actually reading the message ๐Ÿ‘€

Example:

MMHS-Message-Instructions: MINIMIZE CONSIDERED; NO DISTRIBUTION

this example has two message instructions defined by ACP123(B) [ACP123] ๐Ÿ”ฅ "MINIMIZE CONSIDERED" means the originating user has considered the Minimize status of the recipients ๐Ÿซง And "NO DISTRIBUTION" means the recipients should not distribute the message any further without the originating user's approval ๐Ÿ™ˆ


3.6. Header Field: MMHS-Codress-Message-Indicator ๐Ÿงš

Applicable protocol: mail [RFC5322] Status: informational Author/change controller: IESG (iesg@ietf.org) on behalf of the IETF Specification document(s): [RFC6477]

the MMHS-Codress-Message-Indicator header field, by its presence, indicates that the message is in Codress format ๐Ÿ” If it's absent, the message is considered received without the Codress format ๐ŸŒท

so a Codress message is one where all addresses (the sender and every recipient) are encrypted within the ACP 127 text (body) [ACP127] ๐Ÿค The heading of any Codress message only has the minimum info needed for a receiving station to deal with that particular transmission properly and quickly โšก The general rules for preparing and sending Codress messages are in ACP 121 [ACP121] ๐Ÿ“–

this header field is only used to support interoperability with ACP 127 systems ๐Ÿซถ

Example:

MMHS-Codress-Message-Indicator: 23

3.7. Header Field: MMHS-Originator-Reference ๐ŸŒธ

Applicable protocol: mail [RFC5322] Status: informational Author/change controller: IESG (iesg@ietf.org) on behalf of the IETF Specification document(s): [RFC6477]

the MMHS-Originator-Reference header field, by its presence, indicates a user-defined reference called the "originator's number" ๐Ÿ”ข If it's absent, the message is considered received without any user-defined reference ๐Ÿซง

the originator's number is used by the originating organizational unit, and it's further qualified within national policy ๐Ÿ›๏ธ

Note: trailing and leading spaces in an originator reference are not allowed by syntax. โš ๏ธ So no sneaky spaces at the edges, periodt ๐Ÿ’…

Example:

MMHS-Originator-Reference: IMSCOM-JIC-612-78

3.8. Header Field: MMHS-Primary-Precedence ๐Ÿ‘‘

Applicable protocol: mail [RFC5322] Status: informational Author/change controller: IESG (iesg@ietf.org) on behalf of the IETF Specification document(s): [RFC6477]

the MMHS-Primary-Precedence header field, by its presence, indicates the precedence level of the primary ("action") recipients ๐Ÿ”ฅ The message originating domain MUST ensure that this header field is always present if the message contains "To:" ("action") addresses ๐Ÿšจ

the MMHS Primary Precedence Element of Service shows the relative order in which Military Messages should be handled for primary (action) recipients ๐Ÿƒโ€โ™€๏ธ So a Military Message with a higher MMHS-Primary-Precedence value SHOULD be handled before one with a lower value ๐Ÿ’–

the value is a non-negative integer, or one of six predefined case-insensitive labels ๐ŸŽ€ Those are "deferred" (same as "0"), "routine" (same as "1"), "priority" (same as "2"), "immediate" (same as "3"), "flash" (same as "4"), or "override" (same as "5") ๐ŸŒˆ You can optionally follow the label with a comment โœจ Also, according to ACP 123, values from 0 to 15 are reserved for NATO-defined precedence levels, and values from 16 to 31 are reserved for national users ๐Ÿ‡บ๐Ÿ‡ณ

Example 1:

MMHS-Primary-Precedence: 0 (Deferred)

Example 2:

MMHS-Primary-Precedence: FLASH

Example 3:

MMHS-Primary-Precedence: 7

3.9. Header Field: MMHS-Copy-Precedence ๐Ÿฆ‹

Applicable protocol: mail [RFC5322] Status: informational Author/change controller: IESG (iesg@ietf.org) on behalf of the IETF Specification document(s): [RFC6477]

the MMHS-Copy-Precedence header field, by its presence, indicates the precedence level of the copy ("information") recipients ๐Ÿ“‹ The message originating domain MUST ensure that this header field is always present if the message contains "Cc:" or "Bcc:" ("information") addresses ๐Ÿ’Œ

this is the copy twin of the primary one: the MMHS Copy Precedence Element of Service shows the relative order in which Military Messages should be handled for copy (information) recipients ๐Ÿซถ So a Military Message with a higher MMHS-Copy-Precedence value SHOULD be handled before one with a lower value ๐Ÿƒโ€โ™€๏ธ

the value is a non-negative integer, or one of 6 predefined case-insensitive labels ๐Ÿ’œ Those are "deferred" (same as "0"), "routine" (same as "1"), "priority" (same as "2"), "immediate" (same as "3"), "flash" (same as "4"), or "override" (same as "5"), and you can optionally add a comment after ๐ŸŒธ According to ACP 123, values from 0 to 15 are reserved for NATO-defined precedence levels, and values from 16 to 31 are reserved for national users ๐Ÿ‡บ๐Ÿ‡ณ

Example 1:

MMHS-Copy-Precedence: 2 (priority)

Example 2:

MMHS-Copy-Precedence: Priority

3.10. Header Field: MMHS-Message-Type ๐Ÿงšโ€โ™€๏ธ

Applicable protocol: mail [RFC5322] Status: informational Author/change controller: IESG (iesg@ietf.org) on behalf of the IETF Specification document(s): [RFC6477]

the MMHS-Message-Type heading extension, by its presence, indicates whether the message is to be considered an exercise, an operation, a project, or a drill ๐ŸŽฏ (The list of types is extensible, and other types can be specified using the numeric form, see below! ๐Ÿ”ข)

it can include an optional parameter naming the exercise, operation, project, or drill ๐Ÿท๏ธ If this extension is absent, the message is considered to be of an undefined type ๐Ÿซง

the value is a non-negative integer, or one of four predefined case-insensitive labels: "exercise" (same as "0"), "operation" (same as "1"), "project" (same as "2"), or "drill" (same as "3") ๐ŸŒˆ According to ACP 123, values from 0 to 127 are reserved for NATO-defined Message Type identifiers, and values from 128 to 255 are not defined by NATO and may be used nationally or bilaterally ๐ŸŒ

Example 1:

MMHS-Message-Type: 0(exercise); identifier="CANDLE FISH"

Example 2:

MMHS-Message-Type: 3

Example 3:

MMHS-Message-Type: 2 (projet)

Example 4:

MMHS-Message-Type: project

Some of the examples above show optional comments in action ๐Ÿ’… See Section 4 for the exact syntax of this header field ๐Ÿ“–


3.11. Header Field: MMHS-Other-Recipients-Indicator-To ๐ŸŒ™

Applicable protocol: mail [RFC5322] Status: informational Author/change controller: IESG (iesg@ietf.org) on behalf of the IETF Specification document(s): [RFC6477]

the MMHS-Other-Recipients-Indicator-To header field, by its presence, indicates the names of primary ("action") recipients who are meant to receive, or have already received, the message through means other than MMHS ๐Ÿ“ฌ Note that if both this header field and the MMHS-Other-Recipients-Indicator-CC header field (see Section 3.12) are absent, that does not guarantee that all recipients are inside the MMHS ๐Ÿ‘€

this header field lets a recipient figure out every action recipient of a Military Message ๐Ÿ” It's derived from the Other Recipient Indicator Element of Service ๐Ÿซถ

there are a few reasons a recipient of a Military Message might show up in this header:

  1. The recipient is not part of the MMHS.
  2. The path to the recipient through the MMHS may not be secure; therefore, the originator has used alternative mechanisms to distribute the Military Message.
  3. The recipient was already in receipt of the Military Message prior to the Military Message being inserted into the MMHS.

Example:

MMHS-Other-Recipients-Indicator-To: UK SHL COS; UK SHL IM

this example includes the names of two primary recipients who received the message via means other than MMHS ๐Ÿฆ‹

3.12. Header Field: MMHS-Other-Recipients-Indicator-CC ๐Ÿ’Œ

  • Applicable protocol: mail [RFC5322]
  • Status: informational
  • Author/change controller: IESG (iesg@ietf.org) on behalf of the IETF
  • Specification document(s): [RFC6477]

okay so the MMHS-Other-Recipients-Indicator-CC header field is basically the "hey, these people got a copy too" header ๐Ÿ’Œ Its presence tells you the names of the copy ("information") recipients who are meant to get the message, or already got it, through some way that isn't MMHS. ngl that's such a useful thing to know! Also, if you don't see this header or the MMHS-Other-Recipients-Indicator-To header (see Section 3.11), that does not mean everyone is inside the MMHS ๐Ÿ™ˆ it just means the header isn't there.

This header lets a recipient figure out every copy recipient of a Military Message, and it's derived from the Other Recipient Indicator Element of Service. Literally the whole point ๐Ÿ’…

So why would a recipient of a Military Message show up in this header? There are a few reasons:

  1. The recipient is not part of the MMHS.
  2. The path to the recipient through the MMHS may not be secure, so the originator used other mechanisms to distribute the Military Message.
  3. The recipient was already in receipt of the Military Message before it was inserted into the MMHS.

Example:

MMHS-Other-Recipients-Indicator-CC: UK SHL LEGAD

The example above includes 1 copy (information) recipient that received the message via means other than MMHS. โœจ


3.13. Header Field: MMHS-Acp127-Message-Identifier ๐Ÿฆ‹

  • Applicable protocol: mail [RFC5322]
  • Status: informational
  • Author/change controller: IESG (iesg@ietf.org) on behalf of the IETF
  • Specification document(s): [RFC6477]

The MMHS-Acp127-Message-Identifier header field is a sweet little flag ๐Ÿฆ‹ Its presence means there's an ACP 127 message identifier [ACP127] for a message that started out in an ACP 127 domain. If this extension is missing, then the message never went through an ACP 127 domain.

This header carries the contents of ACP 127 format line 3. That line has three space-separated fields: the Calling Station (DERI), the Station Serial Number (SSN), and the Filing Time (JFT) [ACP127].

This header field is only there to support interoperability with ACP 127 systems. A pure MMHS system should treat it as opaque, so don't go poking around inside it ๐Ÿ™ˆ

Example:

MMHS-Acp127-Message-Identifier: RPDLE 1234 0341215

3.14. Header Field: MMHS-Originator-PLAD ๐ŸŒธ

  • Applicable protocol: mail [RFC5322]
  • Status: informational
  • Author/change controller: IESG (iesg@ietf.org) on behalf of the IETF
  • Specification document(s): [RFC6477]

The MMHS-Originator-PLAD header field (PLAD is short for Plain Language Address Designator) is the cross-referencing one ๐ŸŒธ Its presence tells you the plain language address linked to an originator. If it's absent, then the message is considered to have no originator PLAD cross-reference between the MMHS and ACP 127 domains.

This header is only used to support interoperability with ACP 127 systems. It works together with the MMHS-Extended-Authorisation-Info header field to give a cross-reference for message identification in both ACP 127 and MMHS domains. Two headers, one iconic duo ๐Ÿ‘ฏโ€โ™€๏ธ

Example:

MMHS-Originator-PLAD: SACLANT

4. Formal Syntax ๐Ÿ“œ

okay bestie, this part is the grammar, so it's giving very precise energy ๐Ÿค“ The syntax below is written in the Augmented Backus-Naur Form (ABNF) as described in [RFC5234]. Anything not defined here is taken from [RFC5322], [RFC5234], and [RFC2156], so go check those if something looks unfamiliar ๐Ÿ’–

NZ-DIGIT       =  %x31-39
                  ; "1".."9"

nonneg-integer = "0" / (NZ-DIGIT *DIGIT)

military-string = 1*69( ps-char )

quoted-military-string = DQUOTE military-string DQUOTE

military-string-sequence = military-string
                    *( [FWS] ";" [FWS] military-string )

Exempted-Address = "MMHS-Exempted-Address:"
                   [FWS] address-list [FWS] CRLF

Extended-Authorisation-Info = "MMHS-Extended-Authorisation-Info:"
                              [FWS] date-time CRLF

Subject-Indicator-Codes = "MMHS-Subject-Indicator-Codes:"
                          [FWS] sic-sequence [FWS] CRLF

sic-sequence = sic *( [FWS] ";" [FWS] sic )
               ; ACP 123 specifies that the maximum number of
               ; SICs is 8. Use of more than 8 SICs is
               ; permitted, but additional SICs might not
               ; be transferred to ACP 123 system.

sic = 3*8( ps-char )

Handling-Instructions = "MMHS-Handling-Instructions:"
                        [FWS] military-string-sequence [FWS] CRLF

Message-Instructions = "MMHS-Message-Instructions:"
                       [FWS] military-string-sequence [FWS] CRLF

Codress-Message-Indicator = "MMHS-Codress-Message-Indicator:"
                            [FWS] nonneg-integer [FWS] CRLF

Originator-Reference = "MMHS-Originator-Reference:"
                       [FWS] military-string [FWS] CRLF

PrimaryPrecedence = "MMHS-Primary-Precedence:" [FWS] precedence CRLF

CopyPrecedence = "MMHS-Copy-Precedence:" [FWS] precedence CRLF

precedence = (nonneg-integer / std-precedence) [CFWS]

std-precedence = "deferred" / "routine" / "priority" /
                 "immediate" / "flash" / "override"
                 ; deferred == 0
                 ; routine == 1
                 ; priority == 2
                 ; immediate == 3
                 ; flash == 4
                 ; override == 5

MessageType = "MMHS-Message-Type:" [FWS] message-type [CFWS]
              [";" [FWS] MessageTypeParam [FWS] ] CRLF

message-type = nonneg-integer / std-message-type

std-message-type = "exercise" / "operation" / "project" /  "drill"
                   ; exercise  == 0
                   ; operation == 1
                   ; project == 2
                   ; drill == 3

MessageTypeParam = "identifier" [FWS] "=" [FWS]
                   quoted-military-string

Designator = military-string

OtherRecipIndicatorPrimary = "MMHS-Other-Recipients-Indicator-To:"
                     [FWS] Designator *([FWS] ";" [FWS] Designator)
                     [FWS] CRLF

OtherRecipIndicatorCopy = "MMHS-Other-Recipients-Indicator-CC:"
                     [FWS] Designator *([FWS] ";" [FWS] Designator)
                     [FWS] CRLF

Acp127MessageIdentifier = "MMHS-Acp127-Message-Identifier:"
                          [FWS] military-string [FWS] CRLF

OriginatorPLAD = "MMHS-Originator-PLAD:" [FWS] military-string [FWS]
                 CRLF

address-list = <Defined in RFC 5322>

5. Service in Comparison to ACP 123 / STANAG 4406 โš–๏ธ

so the service in this document is a subset of the functionality in Annex A1 "Military Heading Extensions" of [ACP123] ๐Ÿ’… Most of that functionality is supported here! A few capabilities got left out, because including them would have made the spec way more complicated.

For Distribution Codes (A.1.3), only Subject Indicator Codes are supported, and Distribution Extensions are omitted. The authors of this document believe distribution extensions aren't widely used, so ๐Ÿคทโ€โ™€๏ธ

Address List Indication (A.1.11) is not supported. This complex extension is deprecated in [ACP123], so it's not giving anymore ๐Ÿ’€

Pilot Forwarding Information (A.1.13) is not supported.

Security Information Labels (A.1.16) is not supported. This extension is deprecated in favor of Annex A of [ACP123], which uses Enhanced Security Services (ESS) Labels [RFC2634]. Those can be supported in a directly compatible manner in S/MIME [RFC5751], which is honestly a glow-up ๐ŸŒˆ

ACP 127 Notification Requests (see Annex A.2.1 of [ACP123) and Responses (see Annex A.3.1 of [ACP123]) are not supported. These extensions are used to request and return notifications from ACP 127 gateways, and they aren't relevant to an SMTP gateway, so we're skipping them ๐Ÿ™ˆ


6. Gatewaying with ACP 123 / STANAG 4406 ๐ŸŒ‰

okay this is the gateway section, and it's where the magic happens โœจ The header fields defined in this specification are designed to be mapped with ACP 123 Annex A1 heading extensions as part of a MIXER mapping according to [RFC2156]. The syntax of these headings is defined so that the mapping is mechanical, which is so clean ๐Ÿซถ OR Names SHOULD be mapped with Internet Email addresses according to [RFC2156].

This section summarizes how a gateway between [ACP123] and [RFC5322] conformant to this specification operates.

If an incoming X.400 message is encoded as P772, [RFC5322] header fields MUST be generated according to this specification for all ACP 123 heading extensions where an equivalent header is defined in this specification. For the three heading extensions where no mapping is defined, the heading extension MAY be discarded or mapped in a proprietary manner. If a Distribution Extension is encoded, this MAY be discarded or represented as a comment (<CFWS>). The whole message MAY be signed according to [RFC5652]. These rules also apply to heading extensions in forwarded messages. MM-Message MUST be treated as a forwarded message for the purposes of MIXER mapping. If an ACP 127 Notification Request is present, this MAY be discarded or represented as a comment (<CFWS>).

Incoming X.400 notifications are encoded according to [RFC2156]. If an ACP 127 Notification Response is present, this MAY be discarded or mapped in a proprietary manner.

If an incoming SMTP message contains any of the header fields defined in this specification, the outgoing X.400 message MUST be encoded as P772. The outgoing message MAY be encoded as P772 for other reasons, for instance, policy or characteristics such as the message containing a military body part. The X.400 message might be signed according to ACP 123 Annex B [ACP123] or STANAG 4406 Annex G [STANAG-4406]. message/rfc822 body parts included in the message SHOULD be mapped to MM-Message and the heading mapping rules applied.

Generated P772 messages SHOULD follow the following rules, generating heading extensions if needed. ๐Ÿ“

a. Extended Authorization is required. If the MMHS-Extended-Authorization-Info header field is absent, then the default value is taken from the Date header field.

b. Primary Precedence is required if the To header field is present. If the MMHS-Primary-Precedence header field is absent, the message need not be considered a Military Message and can be handled according to a local policy.

c. Copy Precedence is required if the Cc header field is present and there is an MMHS-Copy-Precedence header field that is different from the MMHS-Primary-Precedence header field.

d. For Message-ID fields, ACP 123 applies additional constraints over X.400, leading to the following rules in addition to [RFC2156], which SHOULD be followed by a gateway following this specification.

  1. The local identifier MUST be at least 15 characters long. If the [RFC2156] generated value is shorter than this, then it is padded with spaces to 15 characters. This value will correctly reverse map.
  2. The OR Address part is required, and it is not usually generated by an [RFC2156] mapping. It is mandatory in ACP 123. The gateway SHOULD generate an OR Address in a manner that can be reverse mapped. It MAY use the OR Address to encode long message ids that cannot be encoded in the local identifier. ๐ŸŒŸ

7. Gatewaying with ACP 127 โœจ

okay bestie so the header fields in this spec include some fields that carry Elements of Service specific to ACP 127 [ACP127] ๐ŸŽ€ but here's the tea: this spec does NOT define a mapping of these header fields to ACP 127 ๐Ÿ’… no cap, it's just not in here.

so what do we do?? ๐Ÿฅบ the spec says it's recommended that these headings get mapped to ACP 123 and then hop into ACP 127 by following Annex D (Gateway Translation) of [STANAG-4406] ๐Ÿฆ‹ it's giving "go the long way round through ACP 123" energy, iykyk ๐Ÿ’œ

8. IANA Considerations ๐ŸŒธ

okay so IANA has added the list of header fields from the subsections of Section 3 to the "Permanent Message Header Field Names" registry ๐Ÿ“‹ that registry is defined by "Registration Procedures for Message Header Fields" [RFC3864] โœจ very official, very slay.

9. Security Considerations ๐Ÿ”ฅ๐Ÿ”ฅ

bestie this section is SERIOUS and I'm literally shaking ๐Ÿ˜ญ so pay attention!!

Annex B of [ACP123] describes how MMHS messages can be protected in an X.400 environment ๐Ÿ” similar protection can be provided using S/MIME [RFC5751] and/or DKIM [RFC6376] ๐Ÿ’–

okay the big one: DKIM can be used to protect against alteration, deletion, or insertion of header fields specified in this document that can affect disposition and quality of service applied to processing of the protected Internet message by receiving gateways/endpoints that support this specification ๐Ÿ›ก๏ธ like, these fields literally decide how a message gets treated, so messing with them is a whole crime ๐Ÿ’€

(Note that most of the header fields defined in this document might affect processing of the message by the receiving gateway/end system, MMHS-Subject-Indicator-Codes and MMHS-Primary-Precedence/MMHS-Copy-Precedence header fields being the most important examples. For example, alteration of the MMHS-Primary-Precedence header field value might affect processing speed of the message by the recipient Message Transfer Agent (MTA).) ๐Ÿšจ

so the MMHS-Subject-Indicator-Codes, MMHS-Primary-Precedence and MMHS-Copy-Precedence fields are the MVPs here ๐Ÿ‘‘ changing the MMHS-Primary-Precedence value could slow down how fast the recipient MTA processes the message ๐Ÿข yikes!!

also, when the original message header fields are digitally signed, gatewaying messages with them to or from an ACP 123 environment breaks those digital signatures ๐Ÿ’” the gateway can sign the translated message itself (e.g., with DKIM) ๐Ÿงš but a recipient still wouldn't be able to verify that the original sender generated the message ๐Ÿ™ˆ not ideal, periodt.

10. References ๐Ÿ“š

10.1. Normative References ๐Ÿ’œ

  • [ACP123] CCEB, "Common Messaging Strategy and Procedures", ACP 123 (B), May 2009, http://jcs.dtic.mil/j6/cceb/acps/acp123/.
  • [ACP127] CCEB, "Communication Instructions - Tape Relay Procedures", ACP 127 (G), November 1988, http://jcs.dtic.mil/j6/cceb/acps/acp127/.
  • [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [RFC2156] Kille, S., "MIXER (Mime Internet X.400 Enhanced Relay): Mapping between X.400 and RFC 822/MIME", RFC 2156, January 1998.
  • [RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration Procedures for Message Header Fields", BCP 90, RFC 3864, September 2004.
  • [RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008.
  • [RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322, October 2008.
  • [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, RFC 5652, September 2009.
  • [RFC6376] Crocker, D., Ed., Hansen, T., Ed., and M. Kucherawy, Ed., "DomainKeys Identified Mail (DKIM) Signatures", RFC 6376, September 2011.

10.2. Informative References ๐ŸŒˆ

  • [ACP121] CCEB, "Comms Instructions - General", ACP 121 (I), October 2010, http://jcs.dtic.mil/j6/cceb/acps/acp121/.
  • [ACP131] CCEB, "Comms Instructions - Operating Signals", ACP 131 (F), April 2009, http://jcs.dtic.mil/j6/cceb/acps/acp131/.
  • [RFC2634] Hoffman, P., Ed., "Enhanced Security Services for S/MIME", RFC 2634, June 1999.
  • [RFC5751] Ramsdell, B. and S. Turner, "Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 3.2 Message Specification", RFC 5751, January 2010.
  • [STANAG-4406] NATO, "STANAG 4406 Edition 2: Military Message Handling System", STANAG 4406, March 2005.

Appendix A. Acknowledgements ๐Ÿซถ

this doc copies a lot of text from "Mapping between X.400 P772 and RFC-822" by Julian Onions and Graeme Lunt, and STANAG 4406 (2nd Edition) ๐Ÿ“ so the authors wanted to give a big shoutout to the people who wrote those ๐Ÿ’–

many thanks to the reviewers and text contributors: Steve Kille, Alan Ross, David Wilson, James Usmar, Kathy Nuckles, Andy Trayler, Ken Carlberg, Chris Bonatti, Oeyvind Jonsson, Mykyta Yevstifeyev, Sean Turner, Stephen Farrell, Adrian Farrel, and Peter Saint-Andre โœจ๐Ÿ‘‘


Authors' Addresses ๐Ÿ“ฎ

  • Alexey Melnikov Isode Ltd 5 Castle Business Village 36 Station Road Hampton, Middlesex, TW12 2BX UK EMail: Alexey.Melnikov@isode.com
  • Graeme Lunt SMHS Ltd Bescar Moss Farm Bescar Lane Ormskirk L40 9QN UK EMail: graeme.lunt@smhs.co.uk

the end, bestie!! ๐ŸŒˆ๐Ÿ’–๐Ÿฆ‹ that's the whole RFC 6477 glow-up โœจ

๐Ÿ“ฆ where this page comes from