CONTENTS Title Page Copyright Page Preface Part I Programming 1 Introduction 1.1 The MAILbus 400 Application Program Interface 1.1.1 The MAILbus 400 Messaging Interface 1.1.1.1 The Message Access Routines 1.1.1.2 Message Transfer Routines 1.1.1.3 Routines for Accessing Routing Information in the Directory 1.1.2 Digital's OSI-Abstract-Data Manipulation Interface 1.2 Conformance 1.2.1 The Messaging Interface 1.2.2 OM Interface 1.3 Digital's Implementation of the X.400 API 1.3.1 Digital's Messaging Interface 1.3.2 Digital's Implementation of the OSI-Abstract-Data Manipulation API 1.4 Digital's Extensions to the APIs 1.4.1 The MAILbus 400 API 1.4.2 The OSI-Abstract-Data Manipulation API 1.5 Functionality Not Available in the MAILbus 400 API 1.6 C Naming Conventions 1.7 Reference Pages 1.8 Terminology 1.9 Example Application 2 OSI-Abstract-Data Manipulation Concepts 2.1 Objects 2.1.1 Private Objects 2.1.2 Public Objects 2.2 Attributes 2.3 Subobjects 2.4 Object Classes 2.4.1 Class Hierarchy 2.5 Packages 2.6 Workspaces 2.7 Descriptors and Descriptor Lists 3 Planning an Application 3.1 What Type of Application? 3.1.1 Multiple Users 3.1.2 1984 or 1988? 3.2 Messaging Object Types 3.2.1 Messages 3.2.2 Probes 3.2.3 Reports 3.2.4 IPM Notifications 3.3 Naming and Addressing 3.3.1 O/R Addresses 3.3.2 Directory Names 3.4 Transfer and Delivery 3.5 Mapping Other Mail Systems to the X.400 Mail System 3.5.1 Address Translation 3.5.2 Mapping Services 3.6 Criticality of Extensions 3.6.1 1988 Extensions 3.6.2 Other Extensions 3.7 Body Parts 3.7.1 Body Part Downgrading 3.7.2 Body Part Conversions 3.8 Security 3.9 Management 3.9.1 Registering the Application 3.9.2 Accounting 3.9.3 Archiving 3.9.4 Documentation 4 Manipulating and Building Messaging Objects 4.1 Manipulating Objects 4.1.1 Determining the Class of an Object 4.1.2 Creating an Object 4.1.2.1 Creating a Private Object 4.1.2.2 Creating a Public Object 4.1.3 Modifying a Private Object 4.1.3.1 Removing Attribute Values 4.1.3.2 Putting Values into a Private Object 4.1.3.3 Copying a String Attribute Value 4.1.3.4 Writing a String Attribute Value in Segments 4.1.4 Examining a Private Object 4.1.5 Reading a String Attribute Value 4.1.6 Deleting an Object 4.1.6.1 Deleting a Service-Generated Public Object 4.1.6.2 Deleting a Private Object 4.1.7 Copying an Object 4.1.8 Encoding and Decoding Private Objects 4.1.8.1 Encoding 4.1.8.2 Decoding 4.2 Building Messaging Objects 4.2.1 Top-Down Message Construction 4.2.2 Object Structures 5 Implementing the Application 5.1 Connecting to the MTA Directly 5.1.1 Direct Connection on DEC OSF/1 Systems 5.1.2 Direct Connection on OpenVMS Systems (VAX and AXP) 5.2 Connecting to the MTA Through the API Server 5.2.1 Connection Through the API Server on DEC OSF/1 Systems 5.2.2 Connection Through the API Server on OpenVMS Systems (VAX and AXP) 5.3 Running the Application on a Different System 5.4 Identifying the Application to the MTA 5.5 Establishing a Session 5.5.1 Identifying the Session 5.5.2 Identifying the Workspace 5.5.3 Selecting Features for the Session 5.6 Terminating the Session 6 Compiling and Linking 6.1 Compiling and Linking 6.1.1 Compiling 6.1.2 Linking 7 Example Application 7.1 Files 7.2 Compiling and Linking mtamail 7.3 Running mtamail 7.3.1 Prerequisites 7.3.2 Submitting Messages 7.3.3 Taking Delivery of Messages Part II Reference 8 MH Packages Algorithm Algorithm and Result Asymmetric Token Bilateral Information Communique Content Delivered Message Delivered Per-recipient DR Delivered Per-recipient NDR Delivered Per-recipient Report Delivered Report Delivery Confirmation Delivery Envelope Delivery Report Digital Session EITs Expansion Record Extensible Object Extension External Trace Entry G3 Fax NBPs General Content Internal Trace Entry Local Delivery Confirmation Local Delivery Confirmations Local NDR Local Per-recipient NDR Message Message RD MT Public Data MTS Identifier OR Address OR Name Per-recipient DR Per-recipient NDR Per-recipient Report Probe Probe RD RD Redirection Record Report Security Label Session Submission Results Submitted Communique Submitted Message Submitted Message RD Submitted Probe Submitted Probe RD Teletex NBPs Token Token Public Data 9 IM Packages Bilaterally Defined Body Part Body Part Content Externally Defined Body Part G3 Fax Body Part G4 Class 1 Body Part General Text Body Part IA5 Text Body Part Interpersonal Message Interpersonal Notification IPM Identifier ISO 6937 Text Body Part Message Body Part Mixed-mode Body Part Nationally Defined Body Part Non-receipt Notification Office Document Architecture Body Part OR Descriptor Receipt Notification Recipient Specifier Teletex Body Part Unidentified Body Part USA Nationally Defined Body Part Videotex Body Part 10 The OM Package 10.1 OM Package Object Identifier 10.2 Class Hierarchy 10.3 Class Definitions 10.3.1 Object 10.3.2 Encoding 10.3.3 External 11 OM Syntaxes 11.1 Syntax Templates 11.2 Syntaxes Defined for OSI-Abstract-Data Manipulation 11.3 Strings 11.3.1 Numeric Strings 11.3.2 Printable Strings 11.3.3 IA5 Strings 11.4 OM Syntaxes and ASN.1 12 Datatypes 12.1 Object Management Data Types OM_boolean OM_descriptor OM_enumeration OM_exclusions OM_integer OM_modification OM_object OM_object_identifier OM_private_object OM_public_object OM_return_code OM_string OM_syntax OM_type OM_type_list OM_value OM_value_length OM_value_number OM_value_position OM_workspace 12.2 Message Handling Data Types MH_feature MH_interval MH_object_count 13 MA Routines ma_cancel_submission ma_close ma_finish_delivery ma_open maX_open ma_size ma_start_delivery ma_submit ma_wait 14 MT Routines mt_close mt_finish_transfer_in mt_open mtX_open mt_size mt_start_transfer_in mt_transfer_out mt_wait 15 Digital Extensions - MH Routines mhX_foreign_to_orname mhX_orname_to_foreign mhX_password_update mhX_validate_credentials 16 OM Routines om_copy om_copy_value om_create om_decode om_delete om_encode om_get om_instance om_put om_read om_remove om_write A Attribute/Class Quick Reference B Installation Details for DEC OSF/1 Systems B.1 Files Installed on a DEC OSF/1 System B.1.1 MAILbus 400 API Subset B.1.2 MAILbus 400 MTA Base Subset B.1.3 MAILbus 400 API Reference Pages (Manpages) Subset C Installation Details for OpenVMS Systems C.1 Files on Your System After You have Installed MAILbus 400 API D Errors D.1 Return Values D.2 Network Errors D.3 System Errors D.4 Debugging Return Values E X.500 Classes Address Algorithm-Identifier Attribute AVA Certificate Certificates Cross-Certificates DS-DN DS-RDN Forward-Certification-Path Name E.1 Presentation Address Relative-Name Signature EXAMPLES 7-1 Display of Message Delivered by mtamail 7-2 Recursive Listing of Message Delivered by mtamail FIGURES 1-1 MAILbus 400 API 1-2 MAILbus 400 API - Functions and Information Flow 2-1 Private and Public Objects 2-2 An Object with Two Attributes 2-3 A Subobject as an Attribute 2-4 Class Hierarchy 2-5 Components of a Descriptor 2-6 Components of a Descriptor List 4-1 Structure of a Message for Transfer Out 4-2 Structure of a Message for Submission 4-3 Structure of a Probe for Transfer Out 4-4 Structure of a Probe for Submission 4-5 Structure of a Report for Transfer Out 4-6 Structure of a Delivered Message 4-7 Structure of a Delivered Report (Non-delivery) 4-8 Structure of an IPN Content (Receipt Notification) 4-9 Structure of an IPM Content 5-1 Availability of Features 7-1 Subobjects in a Message Submitted by mtamail 8-1 Class Hierarchy of the MH Classes 8-2 Algorithm 8-3 Algorithm and Result 8-4 Asymmetric Token 8-5 Bilateral Information 8-6 Communique 8-7 Content 8-8 Delivered Message 8-9 Delivered Per-recipient DR 8-10 Delivered Per-recipient NDR 8-11 Delivered Per-recipient Report 8-12 Delivered Report 8-13 Delivery Confirmation 8-14 Delivery Envelope 8-15 Delivery Report 8-16 Digital Session 8-17 EITs 8-18 Expansion Record 8-19 Extensible Object 8-20 Extension 8-21 External Trace Entry 8-22 G3 Fax NBPs 8-23 General Content 8-24 Internal Trace Entry 8-25 Local Delivery Confirmation 8-26 Local Delivery Confirmations 8-27 Local NDR 8-28 Local Per-recipient NDR 8-29 Message 8-30 Message RD 8-31 MT Public Data 8-32 MTS Identifier 8-33 OR Address 8-34 OR Name 8-35 Per-recipient DR 8-36 Per-recipient NDR 8-37 Per-recipient Report 8-38 Probe 8-39 Probe RD 8-40 RD 8-41 Redirection Record 8-42 Report 8-43 Security Label 8-44 Session 8-45 Submission Results 8-46 Submitted Communique 8-47 Submitted Message 8-48 Submitted Message RD 8-49 Submitted Probe 8-50 Submitted Probe RD 8-51 Teletex NBPs 8-52 Token 8-53 Token Public Data 9-1 Class Hierarchy of the IM Classes 9-2 Bilaterally Defined Body Part 9-3 Body Part 9-4 Externally Defined Body Part 9-5 G3 Fax Body Part 9-6 G4 Class 1 Body Part 9-7 General Text Body Part 9-8 IA5 Text Body Part 9-9 Interpersonal Message 9-10 Interpersonal Notification 9-11 IPM Identifier 9-12 ISO 6937 Text Body Part 9-13 Message Body Part 9-14 Mixed-mode Body Part 9-15 Nationally Defined Body Part 9-16 Non-receipt Notification 9-17 Office Document Architecture Body Part 9-18 OR Descriptor 9-19 Receipt Notification 9-20 Recipient Specifier 9-21 Teletex Body Part 9-22 Unidentified Body Part 9-23 USA Nationally Defined Body Part 9-24 Videotex Body Part 10-1 Class Hierarchy of the OM Classes 11-1 Structure of a String 12-1 Exporting and Importing Object Identifiers 12-2 Representation of a Bit String in the C Interface 12-3 Syntax Component of a Descriptor 12-4 Representation of OM_value 16-1 Original Object 16-2 Public Object 16-3 Source and Destination Objects Before Copying Attribute Values 16-4 Destination Object After Copying Attribute Values 16-5 Example of Using the Write Function E-1 Class Hierarchy of the X.500 Classes E-2 Address E-3 Algorithm-Identifier E-4 Attribute E-5 AVA E-6 Certificate E-7 Certificates E-8 Cross-Certificates E-9 DS-DN E-10 DS-RDN E-11 Forward-Certification-Path E-12 Name E-13 Presentation Address E-14 Relative-Name E-15 Signature TABLES 1-1 C Naming Conventions 4-1 Object Management Functions 5-1 X.400 API Features 8-1 Builtin EIT Values 8-2 External EIT Values 8-3 Forms of O/R Address 11-1 Secondary Identifiers of String Syntaxes 11-2 Relationship of OM Syntaxes to ASN.1 Simple Types 11-3 Relationship of OM Syntaxes to ASN.1 Useful Types 11-4 Relationship of OM Syntaxes to ASN.1 Character String Types 11-5 Relationship of OM Syntaxes to ASN.1 Type Constructors 12-1 OM Data Types 12-2 MH Data Types 16-1 Initial Values for the Elements String A-1 Attribute/Class Mapping B-1 Files Installed from the Client Kit B-2 Files Installed from the MAILbus 400 MTA Base Subset B-3 Files Installed from the Reference Pages Subset C-1 Files Installed on an OpenVMS System C-2 Files on Your System After You have Installed MAILbus 400 MTA Base D-1 Return Values - MH D-2 Return Values - OM