MAILbus 400 Application Program Interface Programming

*HyperReader

  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