X.400 clients (User Agents) use the X.400 P7 protocol to access a Message Store. Isode's M-Store X.400 is an X.400 Message Store that supports X.400 P7, and also uses X.400 P3 to connect to an MTA (Message Transfer Agent) such as M-Switch X.400. It serves as an intermediary between User Agents and the Message Transfer Agent, accepting delivery of messages on the user's behalf and storing them for subsequent retrieval.

The Message Store provides facilities for searching and listing messages, to optimize retrieval. Messages may be deleted or retained online in the Message Store. Messages are submitted from a P7 client to the MTA through the message store (indirect submission) and M-Store X.400 can be configured to store these messages in an "out box" for subsequent client access.

Message Store and client configuration management is integrated into the messaging infrastructure using the LDAP/X.500 directory.

Deployment Targets

The Isode X.400 Message Store is designed for use in situations where high performance and highly available message storage is required. In particular it is suitable for:

  • EDI deployments.
  • Aeronautical deployments following the AMHS standards, which define an X.400 profile that M-Store X.400 can support.
  • Military messaging deployments, following the STANAG 4406 specifications. M-Store X.400 provides support for the P772 protocol, which is based on X.400 and defined by STANAG 4406 using X.400 extensions.

Key Benefits

The major benefits of the Isode X.400 Message Store are:


M-Store X.400 is a robust product that uses the underlying file store to ensure message and database integrity. Online backup of both submitted and delivered messages is supported. M-Store X.400 includes support for failover clustering and Off Site Hot Standby and Disaster Recovery.

Flexible Approach/ M-Switch Integration

Use of directory based message store configuration gives a highly flexible approach, integrated with the configuration of the M-Switch. This allows for client/server configuration management and sharing of configuration information between servers.

This configuration is managed with Isode's MConsole management GUI.

Support of the P3 protocol

The Message Store does not need to be co-located with the message switch, which means that a single message switch can support many message stores. This gives a high degree of flexibility.

High Performance

M-Store X.400 provides for fast message access to mailboxes that may contain hundreds of thousands of messages and high throughput message submission and delivery with low latency.

Message Store Functionality


The diagram below illustrates the architecture of the Isode X.400 Message Store and its relationship to P7 client and to its associated X.400 MTA using X.400 P3. An X.400 Message Store is associated with a single X.400 user. M-Store X.400 uses a single process to support multiple X.400 clients, retaining separate databases for each X.400 client (UA).

There are two databases (of the same format) for each Message Store client; an "In Box" that holds messages delivered to the user and an "Out Box" for messages sent by the X.400 client. Each message is held as a single file on disk that contains:

  • Message Content.
  • Message Envelope Information.
  • Message Store Sequence Number and Child Sequence Number information.
  • Cached index attribute values

This file is written once on message delivery (or submission), and not changed subsequently. The files are named by the parent sequence number, which is the primary index to the message in the P7 protocol, plus a 'state' character, indicating whether the message is New, Listed or Processed. As a message progresses through these states it is renamed appropriately.

By use of the file store, the indexing and integrity mechanisms of the file store are utilized by M-Store X.400. There is no complex database, and so problems associated with database corruption are avoided. Some operations, such as fetch based on sequence number can operate very efficiently using just this database structure.

In order to support efficient searching and listing of messages, M-Store X.400 maintains an optimized message index.

Note that authoritative message information is held in the message databases. The message index can be completely rebuilt from the message database, and the presence of prebuilt index attribute values stored in message files means that a full decode of messages is not required during this process.

The M-Store X.400 server is a single process, comprising a number of modules. The P7 server module supports P7 connections initiated by multiple P7 clients and will:

  • Support Summarize, List, Fetch, Register (auto action) and Delete operations using the In Box or Out Box database.
  • Pass Indirect Submission operations to the P3 Submission module.
  • Send auto-alerts to the P7 client, as requested by the P3 delivery module.

The P3 submission module will initiate a connection to an MTA for indirect message submission. After the message is submitted, a copy may be stored in the Out Box database.

The P3 delivery module accepts messages being delivered by an MTA. Delivered messages will be stored in the In Box database, and then registered auto actions are processed. Auto-forwarded messages are handled through the P3 Submission module. Auto alerts are passed to the client through the P7 server module.

After a message is delivered into the In Box database for a user, the most recent message for that user is cached in memory. In a typical high performance system, the P7 client will have a registered auto alert and will fetch the message immediately and thus make use of the memory cached copy. Clients will generally cache message copies, and in this case the only further message change will be when it is deleted. Thus the only disk i/o is that needed to write the message, and rename the message file to reflect the change in its status. The message database format is chosen to be efficiently generated from a P3 delivery. This approach provides for very high volume and low latency delivery.

The message index is held in memory within the M-Store X.400 server. It is periodically flushed to disk, and is also written out on a clean shutdown, so that it can be quickly reloaded when M-Store X.400 is restarted. On restart, M-Store X.400 runs an index check routine to ensure that the reloaded index for each mailbox is consistent with the set of message files present in the mailbox (since inconsistency could arise if M-Store X.400 has been shut down uncleanly). This check runs as a background process; while it is running, messages can be submitted and delivered as normal.

Performance Optimization

X.400 P7 is a complex and flexible protocol that can be used in many ways. While M-Store X.400 supports a wide range of usage, it is optimized for certain types of use, as described here. Isode's X.400 Client API is designed so that calls will use M-Store X.400 in an efficient manner. Key optimizations:

  • Full message fetch. Few clients make use of the P7 capabilities to retrieve selected parts of messages.
  • Empty mailbox. Many systems operate with a "fetch message; process message; delete message" model.
  • Large mailboxes, that may contain hundreds of thousands of messages, with most fetched and cached. A common model (for both In Box and Out Box) is that messages are archived, often for a fixed period (e.g., 30 days). At the same time, new messages are fetched quickly, so only new messages are active. There are various optimizations in support of this model, including
    • Listing of new messages (to efficiently determine new messages in a large mailbox).
    • Systematic fetching of all messages in a large mailbox, to enable restore on local In Box and Out Box messages on a client.
  • Searching by message priority (precedence) and message size, which is useful for clients to control order of processing.
  • Delivery to clients using auto-alert and immediate fetch.

It is recommended to consider this information when configuring or designing clients to use M-Store X.400.

Auto Actions

Auto actions are an important feature of an X.400 Message Store. An auto action may be applied to all messages or to selected ones (e.g., to all high priority messages). M-Store X.400 supports the following auto actions:

  • Auto Alert. This sends an alert to the P7 client that a message has been delivered to the store, enabling the client to immediately fetch the new message.
  • Auto Forward. Message is forwarded on to another recipient, and the message originator notified with an Inter Personal Notification. A copy may be kept for the local user, and this variant is sometimes referred to as Auto Copy.
  • Delayed Auto Forward. Message is auto-forwarded if it is not fetched within a configured period. This mechanism can be useful to ensure that messages get processed promptly.

Military Messaging

M-Store X.400 provides support for Military Messages as defined in STANAG 4406.

Precedence Handling

M-Store X.400 is aware of message priority, including six level STANAG 4406 priority (precedence). Many actions are event driven, and so there is no "ordered queue" to precedence sorted. Clients can search for messages based on priority, and thus order their work to retrieve higher precedence messages first.

For message delivery, M-Switch X.400's precedence ordered queuing will ensure that high precedence messages get delivered ahead of lower precedence messages. M-Store X.400 auto-alert can immediately notify the client.

Message Ageing

Both In Box and Out Box stores can be configured to delete messages after a certain period of time. This is useful as a mechanism to automatically clear out messages, and also in support of mandatory online archiving requirements, such as the ICAO (Aviation) requirements for two and thirty day archiving.


Because M-Store X.400 uses the file store to hold messages (and not a special database), standard backup techniques may be used on the M-Store X.400 database, including the message index.

M-Store X.400 provides a restore capability that will synchronize an index server to the message database, removing index entries not needed and creating missing ones. This will deal with the situation where the message and index backups are not aligned.
M-Store X.400 also provides built in backup and restore commands, which can be driven using the SOM protocol described below with a scripting interface. This backs up all or selected mailboxes to a specified file store location. Backup and restore can also be requested from the MConsole GUI.


M-Store X.400 uses directory based configuration, which means that configuration and user agent information is stored in M-Vault X.500. Use of directory for message store configuration gives a highly flexible approach, integrated with the configuration of the M-Switch. This allows for client/server configuration management and sharing of configuration information between servers.

Both configuration and operational management is done using Isode's MConsole management GUI.


All of the protocols support X.400 simple authentication.

P7 Client Access over TLS is also supported.

Disaster Recovery

M-Store X.400 provides and off site disaster recover capability that can be used as part of a full X.400 disaster recovery capability. For more information see our X.400 Disaster Recovery whitepaper.

Client Application Integration

M-Store X.400 is good for use with custom applications and clients. Isode's cross platform X.400 Client API, which can be used to integrate client applications over X.400 P7.

X.400 P7 Clients & Testing

For testing M-Store X.400, Isode recommends use of XUXA, which is a demonstration and test P7 Client.

If a general purpose messaging client is needed for general or military use, Isode recommends the Boldon James P7 Plug in for Outlook, which enables Microsoft Outlook to be used with M-Store X.400, and the associated Safemail product for military messaging.


ITU X.400 Message Handling System: System and Service Overview, ISO/IEC 10021-1, 1999
ITU X.411 Message Transfer System: Abstract Service Definition and Procedures, ISO/IEC 10021-4, 1999
ITU X.413 Message Store: Abstract Service Definition, ISO/IEC 10021-5, 1999
ITU X.420 Message Handling Systems (MHS): Interpersonal Messaging System, ISO/IEC 10021-7, 1999
ACP 123 Information Technology: Message Handling System (P772)

Note that for X.413, the MS service is supported, but not the MS(94) service.

There are two ITU/ISO Protocol Implementation and Conformance Statement (PICS) documents for M-Store X.400, that give a detailed specification of the X.400 services and protocol elements supported:

Military Conformance is according to:

  • ACP 123, "Common Messaging Strategy and Procedures", August 1997. ACPs (Allied Communications Publications) are issued by the CCEB (Combined Communications Electronics Board).
  • STANAG 4406, Edition 1, Version 3. "Military Message Handling System", March 1999. STANAG documents are NATO standardization agreements.
  • STANAG 4406, Edition 2. "Military Message Handling System", March 2005 (to be ratified)
    • Annexe A: "Military Message Handling System Extensions"
    • Annexe C: "Alpha Profile Set" 

Management Conformance

RFC 1801 MHS use of the X.500 Directory to support X.400 MHS Routing, S. Kille, June 1995
RFC 2294 Representing the O/R Address hierarchy in the X.500 Directory Information Tree, S. Kille, March 1998
RFC 2788 Network Services Monitoring MIB, S. Kille, N. Freed, March 2000
ITU X.500 The Directory: Overview of concepts, models and services, ISO/IEC 9594-1, 2001