DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T m

⟦5de17c244⟧ TextFile

    Length: 31462 (0x7ae6)
    Types: TextFile
    Names: »mta.py«

Derivation

└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
    └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« 
        └─⟦e5a54fb17⟧ 
            └─⟦this⟧ »pp-5.0/Tools/mpp88/mta.py« 

TextFile

-- mta.py:


-- @(#) $Header: /cs/research/pp/hubris/pp-beta/Tools/mpp88/RCS/mta.py,v 5.0 90/09/20 16:28:36 pp Exp Locker: pp $
--
-- $Log:	mta.py,v $
-- Revision 5.0  90/09/20  16:28:36  pp
-- rcsforce : 5.0 public release
-- 
--



MTA -- { joint-iso-ccitt mhs-motis(6) mts(3) modules(0) mta-abstract-service(2) }

DEFINITIONS IMPLICIT TAGS ::=

BEGIN

IMPORTS	Token, ProofOfDelivery, Certificates, 
	SecurityContext, SecurityLabel
	FROM Tokens;

ExtensionType ::=
    CHOICE {
        global INTEGER,
        local  OBJECT IDENTIFIER}

Criticality ::=
    BIT STRING {
	for-submission (0),
	for-transfer (1),
	for-delivery (2) } (SIZE (0..ub-bit-options))

ExtensionField ::=
    SEQUENCE {
        type        [0] ExtensionType,
        criticality [1] Criticality OPTIONAL,
        value       [2] EXPLICIT ANY OPTIONAL}
        
Extensions ::=
    SET OF ExtensionField

-- Extension Attributes

ExtensionAttribute ::=
    SEQUENCE {
         type  [0] INTEGER,
         value [1] ANY}

ExtensionAttributes ::=
    SET OF ExtensionAttribute

--	MTS-bind and MTS-unbind

Password ::=
	CHOICE {
		IA5String,
		OCTET STRING
	}

Credentials ::=
	CHOICE {
		simple Password,
		strong StrongCredentials}

StrongCredentials ::= 
	SET {
		bind-token  [0] Token OPTIONAL,
		certificate [1] Certificates OPTIONAL}

MTSBindArgument ::=
	SET {
		user-name	ORAddressAndOptionalDirectoryName OPTIONAL,
		mta-name		[0] MTAName OPTIONAL,
		messages-waiting	[1] MessagesWaiting OPTIONAL,
		password		[2] Password OPTIONAL,
		security-context	[3] SecurityContext OPTIONAL,
		strong-credentials	[4] StrongCredentials OPTIONAL,
		ms-name			[5] MessageStoreName OPTIONAL}

MTSBindResult ::=
	SET {
		user-name	ORAddressAndOptionalDirectoryName OPTIONAL,
		mta-name		[0] MTAName OPTIONAL,
		messages-waiting	[1] MessagesWaiting OPTIONAL,
		password		[2] Password OPTIONAL,
		security-context	[3] SecurityContext OPTIONAL,
		strong-credentials	[4] StrongCredentials OPTIONAL, 
		ms-name			[5] MessageStoreName OPTIONAL}

MTSBindError ::=
	INTEGER {
		busy (0),
		authentication-error (2),
		unacceptable-dialogue-mode (3),
		unacceptable-security-context (4) } 



--	Association Control Parameters

ObjectName ::= CHOICE {
	mTS-user ORAddressAndOptionalDirectoryName,
	mTA [0] MTAName,
	messageStore [5] MessageStoreName}
-- The message store tag should be [1], but this causes conflict.

MessageStoreName ::= SEQUENCE {
		mTS-user ORAddressAndOptionalDirectoryName,
		isMessageStore BOOLEAN }

MessagesWaiting ::= SET {
	urgent [0] DeliveryQueue,
	normal [1] DeliveryQueue,
	non-urgent [2] DeliveryQueue }

DeliveryQueue ::= SET {
	messages [0] INTEGER (0..ub-queue-size),
	octets [1] INTEGER DEFAULT 0 }

InitiatorCredentials ::= CHOICE {
	simple Password,
	strong [0] StrongCredentials }

ResponderCredentials ::= CHOICE {
	simple Password,
	strong[0] StrongCredentials }

Context ::= OBJECT IDENTIFIER

--	Submission Port

MessageSubmissionArgument ::=
	SEQUENCE {
		envelope MessageSubmissionEnvelope,
		content Content }

MessageSubmissionResult ::=
	SET {
		identifier MessageSubmissionIdentifier,
		time [0] MessageSubmissionTime,
		content-identifier ContentIdentifier OPTIONAL,
		extensions [1] Extensions DEFAULT { } }

ProbeSubmissionArgument ::=
		ProbeSubmissionEnvelope

ProbeSubmissionResult ::=
	SET {
		probe-submission-identifier ProbeSubmissionIdentifier,
		probe-submission-time [0] ProbeSubmissionTime,
		content-identifier ContentIdentifier OPTIONAL }


RecipientImproperlySpecifiedParameter ::= 
	SEQUENCE OF 
		ORAddressAndOptionalDirectoryName

SecurityProblem ::= INTEGER (0..ub-security-problems)

--	Submission Port Parameters

MessageSubmissionIdentifier ::= MTSIdentifier

MessageSubmissionTime ::= Time

ProbeSubmissionIdentifier ::= MTSIdentifier

ProbeSubmissionTime ::= Time

Waiting ::= SET {
	waiting-operations [0] Operations DEFAULT { },
	waiting-messages [1] WaitingMessages DEFAULT { },
	waiting-content-types [2] SET SIZE (0..ub-content-types) OF ContentType DEFAULT { },
	waiting-encoded-information-types EncodedInformationTypes OPTIONAL }

Operations ::= BIT STRING {
	probe-submission-or-report-delivery (0),
	message-submission-or-message-delivery (1) } (SIZE (0..ub-bit-options))
	-- holding 'one', not-holding 'zero'

WaitingMessages ::= BIT STRING {
	long-content (0),
	low-priority (1),
	other-security-labels (2) } (SIZE (0..ub-bit-options))

--	Delivery Port

MessageDeliveryArgument ::= 
	SEQUENCE {
		identifier MessageDeliveryIdentifier,
		time MessageDeliveryTime,
		other-fields OtherMessageDeliveryFields,
		content Content }

MessageDeliveryResult ::= ProofOfDelivery

ReportDeliveryArgument ::= 
	SET {
		subject-submission-identifier SubjectSubmissionIdentifier,
		content-identifier ContentIdentifier OPTIONAL,
		content-type ContentType OPTIONAL,
		original-eits OriginalEncodedInformationTypes OPTIONAL,
		extensions [1] Extensions DEFAULT {},
		per-recipient-fields SEQUENCE OF
			 PerRecipientReportDeliveryFields,	
		returned-content [0] Content OPTIONAL }

DeliveryControls ::= Controls

Controls ::= SET {
	restrict [0] BOOLEAN DEFAULT TRUE,
	-- update 'TRUE', remove 'FALSE'
	permissible-operations [1] Operations OPTIONAL,
	permissible-maximum-content-length [2] ContentLength OPTIONAL,
	permissible-lowest-priority Priority OPTIONAL,
	permissible-content-types [4] SET SIZE (1..ub-content-types) OF ContentType OPTIONAL,
	permissible-encoded-information-types EncodedInformationTypes OPTIONAL,
	permissible-security-context [5] SecurityContext OPTIONAL }

--	Note[:| -] The Tags [0], [1] and [2] are altered for the Register operation only.

RecipientCertificate ::= Certificates

--	Administration Port

RegisterArgument  ::= 
	SET {
		user-name UserName OPTIONAL,
		user-address [0] UserAddress OPTIONAL,
		deliverable-encoded-information-types EncodedInformationTypes OPTIONAL,
		deliverable-maximum-content-length [1] EXPLICIT ContentLength OPTIONAL,
		default-delivery-controls [2] EXPLICIT DefaultDeliveryControls OPTIONAL,
		deliverable-content-types [3] SET SIZE (1..ub-content-types) OF ContentType OPTIONAL,
		labels-and-redirections [4] SET SIZE (1..ub-labels-and-redirections) OF 
			LabelAndRedirection OPTIONAL }

ChangeCredentialsArgument ::= 
	SET {
		old-credentials [0] Credentials,
		new-credentials [1] Credentials	-- same CHOICE as for old-credentials -- }


--	Administration Port Parameters

UserName ::= ORAddressAndOptionalDirectoryName

UserAddress ::= CHOICE {
	x121 [0] SEQUENCE {
		x121-address NumericString (SIZE (1..ub-x121-address-length)) OPTIONAL,
		tsap-id PrintableString (SIZE (1..ub-tsap-id-length)) OPTIONAL }

--	, presentation [1] PSAPAddress -- }

-- PSAPAddress ::= PresentationAddress

DefaultDeliveryControls ::= Controls 

LabelAndRedirection ::= SET {
	user-security-label [0] SecurityLabel OPTIONAL,
	recipient-assigned-alternate-recipient [1] RecipientAssignedAlternateRecipient OPTIONAL }

RecipientAssignedAlternateRecipient ::= ORAddressAndOptionalDirectoryName

--	Message Submission Envelope

MessageSubmissionEnvelope ::= SET {
	originator-name OriginatorName,
	original-eits OriginalEncodedInformationTypes OPTIONAL,
	content-type ContentType,
	content-identifier ContentIdentifier OPTIONAL,
	priority Priority DEFAULT normal,
	per-message-indicators PerMessageIndicators DEFAULT {},
	deferred-delivery-time [0] DeferredDeliveryTime OPTIONAL,
	extensions [2] Extensions DEFAULT {},
	per-recipient-fields [1] SEQUENCE SIZE (1..ub-recipients) OF 
		PerRecipientMessageSubmissionFields }

PerMessageSubmissionFields ::= SET {
	originator-name OriginatorName,
	original-encoded-information-types OriginalEncodedInformationTypes OPTIONAL,
	content-type ContentType,
	content-identifier ContentIdentifier OPTIONAL,
	priority Priority DEFAULT normal,
	per-message-indicators PerMessageIndicators DEFAULT { },
	deferred-delivery-time [0] DeferredDeliveryTime OPTIONAL,
	extensions [2] PerMessageSubmissionExtensions DEFAULT { } }
	
PerMessageSubmissionExtensions ::= Extensions

PerRecipientMessageSubmissionFields ::= SET {
	recipient-name RecipientName,
	originator-report-request [0] OriginatorReportRequest,
	explicit-conversion [1] ExplicitConversion OPTIONAL,
	extensions [2] PerRecipientMessageSubmissionExtensions DEFAULT { } }

PerRecipientMessageSubmissionExtensions ::= Extensions

--	Probe Submission Envelope

ProbeSubmissionEnvelope ::= SET {
	originator-name OriginatorName,
	original-eits OriginalEncodedInformationTypes OPTIONAL,
	content-type ContentType,
	content-identifier ContentIdentifier OPTIONAL,
	content-length [0] ContentLength DEFAULT 0,
	per-message-indicators PerMessageIndicators DEFAULT {},
	extensions [2] Extensions DEFAULT {},
	per-recipient-fields [3] SEQUENCE SIZE (1..ub-recipients) OF 
		PerRecipientProbeSubmissionFields }

PerRecipientProbeSubmissionFields ::= SET {
	recipient-name RecipientName,
	originator-report-request [0] OriginatorReportRequest,
	explicit-conversion [1] ExplicitConversion OPTIONAL,
	extensions [2] Extensions DEFAULT { } }

--	Message Delivery Envelope

MessageDeliveryEnvelope ::= SEQUENCE {
	identifier MessageDeliveryIdentifier,
	time MessageDeliveryTime,
	fields OtherMessageDeliveryFields }

OtherMessageDeliveryFields ::= SET {
	content-type DeliveredContentType,
	originator-name OriginatorName,
	original-encoded-information-types [1] OriginalEncodedInformationTypes OPTIONAL,
	priority Priority DEFAULT normal,
	delivery-flags [2] DeliveryFlags OPTIONAL,
	other-recipient-names [3] OtherRecipientNames OPTIONAL,
	this-recipient-name [4] ThisRecipientName,
	originally-intended-recipient-name [5] OriginallyIntendedRecipientName OPTIONAL,
	converted-encoded-information-types [6] ConvertedEncodedInformationTypes OPTIONAL,
	message-submission-time [7] MessageSubmissionTime,
	content-identifier [8] ContentIdentifier OPTIONAL,
	extensions [9] Extensions DEFAULT { } }

--	Report Delivery Envelope

ReportDeliveryEnvelope ::= SET {
	subject-submission-identifier SubjectSubmissionIdentifier,
	content-identifier ContentIdentifier OPTIONAL,
	content-type ContentType OPTIONAL,
	original-eits OriginalEncodedInformationTypes OPTIONAL,
	extensions [1] Extensions DEFAULT {},
	per-recipient-fields SEQUENCE SIZE (1..ub-recipients) OF PerRecipientReportDeliveryFields }

PerReportDeliveryFields ::= SET {
	subject-submission-identifier SubjectSubmissionIdentifier,
	content-identifier ContentIdentifier OPTIONAL,
	content-type ContentType OPTIONAL,
	original-encoded-information-types OriginalEncodedInformationTypes OPTIONAL,
	extensions [1] Extensions DEFAULT { } }

PerRecipientReportDeliveryFields ::= SET {
	actual-recipient-name [0] ActualRecipientName,
	report [1] Report,
	converted-encoded-information-types ConvertedEncodedInformationTypes OPTIONAL,
	originally-intended-recipient-name [2] OriginallyIntendedRecipientName OPTIONAL,
	supplementary-information [3] SupplementaryInformation OPTIONAL,
	extensions [4] Extensions DEFAULT { } }

Report ::= CHOICE {
	delivery [0] DeliveryReport,
	non-delivery [1] NonDeliveryReport }

DeliveryReport ::= SET {
	message-delivery-time [0] MessageDeliveryTime,
	type-of-MTS-user [1] TypeOfMTSUser DEFAULT public }

NonDeliveryReport ::= SET {
	non-delivery-reason-code [0] NonDeliveryReasonCode,
	non-delivery-diagnostic-code [1] NonDeliveryDiagnosticCode OPTIONAL }

--	Envelope Fields

OriginatorName ::= ORAddressAndOrDirectoryName

OriginalEncodedInformationTypes ::= EncodedInformationTypes

-- Should really be a CHOICE
ContentType ::= BuiltInContentType

BuiltInContentType ::= [APPLICATION 6] INTEGER {
	unidentified (0),
	external (1),			-- identified by the object-identifier of the EXTERNAL content
	interpersonal-messaging-1984 (2),
	interpersonal-messaging-1988 (22) } (0..ub-built-in-content-type)

ExternalContentType ::= OBJECT IDENTIFIER

DeliveredContentType ::= ContentType

ContentIdentifier ::= [APPLICATION 10] PrintableString (SIZE (1..ub-content-id-length))

PerMessageIndicators ::= [APPLICATION 8] BIT STRING {
	disclosure-of-recipients (0),		-- disclosure-of-recipients-allowed 'one',
						-- disclosure-of-recipient-prohibited 'zero';
						-- ignored for Probe-submission
	implicit-conversion-prohibited (1),	-- implicit-conversion-prohibited 'one', 
						-- implicit-conversion-allowed 'zero'
	alternate-recipient-allowed (2),		-- alternate-recipient-allowed 'one',
						-- alternate-recipient-prohibited 'zero'
	content-return-request (3)		-- content-return-requested 'one', 
						-- content-return-not-requested 'zero';
						-- ignored for Probe-submission -- } 
	(SIZE (0..ub-bit-options))

RecipientName ::= ORAddressAndOrDirectoryName

OriginatorReportRequest ::= BIT STRING {
	report (3),
	non-delivery-report (4)
	-- at most one bit shall be 'one':
	-- report bit 'one' requests a 'report';
	-- non-delivery-report bit 'one' requests a 'non-delivery-report';
	-- both bits 'zero' requests 'no-report' -- } (SIZE (0..ub-bit-options))

ExplicitConversion ::= INTEGER {
	ia5-text-to-teletex (0),
	teletex-to-telex (1),
	telex-to-ia5-text (2),
	telex-to-teletex (3),
	telex-to-g4-class-1 (4),
	telex-to-videotex (5),
	ia5-text-to-telex (6),
	telex-to-g3-facsimile (7),
	ia5-text-to-g3-facsimile (8),
	ia5-text-to-g4-class-1 (9),
	ia5-text-to-videotex (10),
	teletex-to-ia5-text (11),
	teletex-to-g3-facsimile (12),
	teletex-to-g4-class-1 (13),
	teletex-to-videotex (14),
	videotex-to-telex (15),
	videotex-to-ia5-text (16),
	videotex-to-teletex (17) } (0..ub-integer-options)

DeferredDeliveryTime ::= Time

Priority ::= [APPLICATION 7] ENUMERATED {
	normal (0),
	non-urgent (1),
	urgent (2) }

ContentLength ::= INTEGER (0..ub-content-length)

MessageDeliveryIdentifier ::= MTSIdentifier

MessageDeliveryTime ::= Time

DeliveryFlags ::= BIT STRING {
	implicit-conversion-prohibited (1)	-- implicit-conversion-prohibited 'one', 
						-- implicit-conversion-allowed 'zero' --  } 
	(SIZE (0..ub-bit-options))

OtherRecipientNames ::= SEQUENCE SIZE (1..ub-recipients) OF OtherRecipientName

OtherRecipientName ::= ORAddressAndOrDirectoryName

ThisRecipientName ::= ORAddressAndOrDirectoryName

OriginallyIntendedRecipientName ::= ORAddressAndOrDirectoryName

ConvertedEncodedInformationTypes ::= EncodedInformationTypes

SubjectSubmissionIdentifier ::= MTSIdentifier

TypeOfMTSUser ::= INTEGER {
	public (0),
	private (1),
	ms (2),
	dl (3),
	pdau (4),
	physical-recipient (5),
	other (6) } (0..ub-mts-user-types)

NonDeliveryReasonCode ::= INTEGER {
	transfer-failure (0),
	unable-to-transfer (1),
	conversion-not-performed (2),
	physical-rendition-not-performed (3),
	physical-delivery-not-performed (4),
	restricted-delivery (5),
	directory-operation-unsuccessful (6) } (0..ub-reason-codes)

NonDeliveryDiagnosticCode ::= INTEGER {
	unrecognised-OR-name (0),
	ambiguous-OR-name (1),
	mts-congestion (2),
	loop-detected (3),
	recipient-unavailable (4),
	maximum-time-expired (5),
	encoded-information-types-unsupported (6),
	content-too-long (7),
	conversion-impractical (8),
	implicit-conversion-prohibited (9),
	implicit-conversion-not-subscribed (10),
	invalid-arguments (11),
	content-syntax-error (12),
	size-constraint-violation (13),
	protocol-violation (14),
	content-type-not-supported (15),
	too-many-recipients (16),
	no-bilateral-agreement (17),
	unsupported-critical-function (18),
	conversion-with-loss-prohibited (19),
	line-too-long (20),
	page-split (21),
	pictorial-symbol-loss (22),
	punctuation-symbol-loss (23),
	alphabetic-character-loss (24),
	multiple-information-loss (25),
	recipient-reassignment-prohibited (26),
	redirection-loop-detected (27),
	dL-expansion-prohibited (28),
	no-DL-submit-permission (29),
	dl-expansion-failure (30),
	physical-rendition-attributes-not-supported (31),
	undeliverable-mail-physical-delivery-address-incorrect (32),
	undeliverable-mail-physical-delivery-office-incorrect-or-invalid (33),
	undeliverable-mail-physical-delivery-address-incomplete (34),
	undeliverable-mail-recipient-unknown (35),
	undeliverable-mail-recipient-deceased (36),
	undeliverable-mail-organization-expired (37),
	undeliverable-mail-recipient-refused-to-accept (38),
	undeliverable-mail-recipient-did-not-claim (39),
	undeliverable-mail-recipient-changed-address-permanently (40),
	undeliverable-mail-recipient-changed-address-temporarily (41),
	undeliverable-mail-recipient-changed-temporary-address (42),
	undeliverable-mail-new-address-unknown (43),
	undeliverable-mail-recipient-did-not-want-forwarding (44),
	undeliverable-mail-originator-prohibited-forwarding (45),
	secure-messaging-error (46),
	unable-to-downgrade (47) } (0..ub-diagnostic-codes)

SupplementaryInformation ::= PrintableString (SIZE (1..ub-supplementary-info-length))


--	Common Parameter Types

Content ::= OCTET STRING		-- when the content-type has the integer value external, the value of the
				-- content octet string is the ASN.1 encoding of the external-content;
				-- an external-content is a data type EXTERNAL

MTSIdentifier ::= [APPLICATION 4] SEQUENCE {
	global-domain-identifier GlobalDomainIdentifier,
	local-identifier LocalIdentifier }

LocalIdentifier ::= IA5String (SIZE (1..ub-local-id-length))

GlobalDomainIdentifier ::= [APPLICATION 3] SEQUENCE {
	country-name CountryName,
	administration-domain-name AdministrationDomainName,
	private-domain-identifier PrivateDomainIdentifier OPTIONAL }

PrivateDomainIdentifier ::= CHOICE {
	numeric NumericString (SIZE (1..ub-domain-name-length)),
	printable PrintableString (SIZE (1..ub-domain-name-length)) }

MTAName ::= IA5String (SIZE (1..ub-mta-name-length))

Time ::= UTCTime

--	OR Names

ORAddressAndOrDirectoryName ::= ORName

ORAddressAndOptionalDirectoryName ::= ORName

ORName ::= [APPLICATION 0] SEQUENCE {
	standard-attributes StandardAttributes,
	domain-defined DomainDefinedAttributes OPTIONAL,
	extension-attributes ExtensionAttributes OPTIONAL,
	directory-name [0] Name OPTIONAL }

ORAddress ::= SEQUENCE {
	standard-attributes StandardAttributes,
	domain-defined-attributes DomainDefinedAttributes OPTIONAL,
	-- see also teletex-domain-defined-attributes
	extension-attributes ExtensionAttributes OPTIONAL }

--	Note[:| -] the OR-address is semantically absent from the OR-name if the standard-attribute sequence is
--	empty and the domain-defined-attributes and extension-attributes are both omitted.


--	Standard Attributes

StandardAttributes ::= SEQUENCE {
	country-name CountryName OPTIONAL,
	administration-domain-name AdministrationDomainName OPTIONAL,
	network-address [0] NetworkAddress OPTIONAL,
	-- see also extended-network-address
	terminal-identifier [1] TerminalIdentifier OPTIONAL,
	private-domain-name [2] PrivateDomainName OPTIONAL,
	organization-name [3] OrganizationName OPTIONAL,
	-- see also teletex-organization-name
	numeric-user-identifier [4] NumericUserIdentifier OPTIONAL,
	personal-name [5] PersonalName OPTIONAL,
	organizational-unit-names [6] OrganizationalUnitNames OPTIONAL
	-- see also teletex-organizational-unit-names -- }

CountryName ::= [APPLICATION 1] CHOICE {
	x121-dcc-code NumericString (SIZE (ub-country-name-numeric-length)),
	iso-3166-alpha2-code PrintableString (SIZE (ub-country-name-alpha-length))
}

AdministrationDomainName ::= [APPLICATION 2] CHOICE {
	numeric NumericString (SIZE (0..ub-domain-name-length)),
	printable PrintableString (SIZE (0..ub-domain-name-length))
}

NetworkAddress ::= X121Address

X121Address ::= NumericString (SIZE (1..ub-x121-address-length))

TerminalIdentifier ::= PrintableString (SIZE (1..ub-terminal-id-length))

PrivateDomainName ::= CHOICE {
	numeric NumericString (SIZE (1..ub-domain-name-length)),
	printable PrintableString (SIZE (1..ub-domain-name-length))
}

OrganizationName ::= PrintableString (SIZE (1..ub-organization-name-length))

NumericUserIdentifier ::= NumericString (SIZE (1..ub-numeric-user-id-length))

PersonalName ::= SET {
	surname [0] PrintableString (SIZE (1..ub-surname-length)),
	given-name [1] PrintableString (SIZE (1..ub-given-name-length)) OPTIONAL,
	initials [2] PrintableString (SIZE (1..ub-initials-length)) OPTIONAL,
	generation-qualifier [3] PrintableString (SIZE (1..ub-generation-qualifier-length)) OPTIONAL }

OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units) OF OrganizationUnitName 

OrganizationUnitName ::= PrintableString (SIZE (1..ub-organizational-unit-name-length))


--	Domain-defined Attributes

DomainDefinedAttributes ::= SEQUENCE SIZE (1..ub-domain-defined-attributes) OF DomainDefinedAttribute 

DomainDefinedAttribute ::= SEQUENCE {
	type PrintableString (SIZE (1..ub-domain-defined-attribute-type-length)),
	value PrintableString (SIZE (1..ub-domain-defined-attribute-value-length)) }


--	Encoded Information Types

EncodedInformationTypes ::= [APPLICATION 5] SET {
	built-in-encoded-information-types [0] BuiltInEncodedInformationTypes,
--	non-basic-parameters COMPONENTS OF NonBasicParameters,
	external-encoded-information-types [4] ExternalEncodedInformationTypes OPTIONAL }


--	Built-in Encoded Information Types

BuiltInEncodedInformationTypes ::= BIT STRING {
	undefined (0),
	telex (1),
	ia5-text (2),
	g3-facsimile (3),
	g4-class-1 (4),
	teletex (5),
	videotex (6),
	voice (7),
	sfd (8),
	mixed-mode (9) } (SIZE (0..ub-built-in-encoded-information-types))

--	Non-basic Parameters

NonBasicParameters ::= SET {
	g3-facsimile [1] G3FacsimileNonBasicParameters DEFAULT { },
	teletex [2] TeletexNonBasicParameters DEFAULT { },
	g4-class-1-and-mixed-mode [3] G4Class1AndMixedModeNonBasicParameters OPTIONAL }

G3FacsimileNonBasicParameters ::= BIT STRING {
	two-dimensional (8),
	fine-resolution (9),
	unlimited-length (20),
	b4-length (21),
	a3-width (22),
	b4-width (23),
	uncompressed (30) }			-- as defined in [|CCITT] Recommendation T.30

TeletexNonBasicParameters ::= SET {
	graphic-character-sets [0] TeletexString OPTIONAL,
	control-character-sets [1] TeletexString OPTIONAL,
	page-formats [2] OCTET STRING OPTIONAL,
	miscellaneous-terminal-capabilities [3] TeletexString OPTIONAL,
	private-use [4] OCTET STRING OPTIONAL	-- maximum ub-teletex-private-use-length octets -- }
	-- as defined in [|CCITT] Recommendation T.62

G4Class1AndMixedModeNonBasicParameters ::= PresentationCapabilities

PresentationCapabilities ::= ANY		-- as defined in [|CCITT] Recommendations T.400, T.503 and T.501


--	External Encoded Information Types

ExternalEncodedInformationTypes ::= SET SIZE (1..ub-encoded-information-types) OF 
	ExternalEncodedInformationType

ExternalEncodedInformationType ::= OBJECT IDENTIFIER 

-- END OF MTS 

MTABindArgument ::=
	CHOICE {
		NULL,		-- if no authentication is required
		[1] SET {	-- if authentication is required
			initiator-name	   [0] MTAName,
			initiator-credentials[1] EXPLICIT InitiatorCredentials,
			security-context   [2] SecurityContext OPTIONAL } }

MTABindResult ::=
	CHOICE {
		NULL,		-- if no authentication is required
		[1] SET {	-- if authentication is required
			responder-name	   [0] MTAName,
			responder-credentials[1] EXPLICIT ResponderCredentials
		}
	}

MTABindError ::=
	INTEGER {
		busy (0),
		authentication-error (2),
		unacceptable-dialogue-mode (3),
		unacceptable-security-context (4) } (0..ub-integer-options)


--	Transfer Port

MessageTransferArgument ::=
	SEQUENCE {
		envelope MessageTransferEnvelope,
		content Content }


ReportTransferArgument ::= 
	SEQUENCE {
		envelope ReportTransferEnvelope,
		content ReportTransferContent }


--	Message Transfer Envelope

MessageTransferEnvelope ::= SET {
	message-identifier MessageIdentifier,
	originator-name OriginatorName,
	original-encoded-information-types OriginalEncodedInformationTypes OPTIONAL,
	content-type ContentType,
	content-identifier ContentIdentifier OPTIONAL,
	priority Priority DEFAULT normal,
	per-message-indicators PerMessageIndicators DEFAULT { },
	deferred-delivery-time [0] DeferredDeliveryTime OPTIONAL,
	per-domain-bilateral-information [1] SEQUENCE OF PerDomainBilateralInformation OPTIONAL,
	trace-information TraceInformation,
	extensions [3] Extensions DEFAULT { } ,
	per-recipient-fields [2] SEQUENCE SIZE (1..ub-recipients) OF 
		PerRecipientMessageTransferFields }

PerMessageTransferFields ::= SET {
	message-identifier MessageIdentifier,
	originator-name OriginatorName,
	original-encoded-information-types OriginalEncodedInformationTypes OPTIONAL,
	content-type ContentType,
	content-identifier ContentIdentifier OPTIONAL,
	priority Priority DEFAULT normal,
	per-message-indicators PerMessageIndicators DEFAULT { },
	deferred-delivery-time [0] DeferredDeliveryTime OPTIONAL,
	per-domain-bilateral-information [1] SEQUENCE OF PerDomainBilateralInformation OPTIONAL,
	trace-information TraceInformation,
	extensions [3] Extensions DEFAULT { } }

PerRecipientMessageTransferFields ::= SET {
	recipient-name RecipientName,
	originally-specified-recipient-number [0] OriginallySpecifiedRecipientNumber,
	per-recipient-indicators [1] PerRecipientIndicators,
	explicit-conversion [2] ExplicitConversion OPTIONAL,
	extensions [3] Extensions DEFAULT { } }

--	Probe Transfer Envelope

ProbeTransferEnvelope ::= SET {
	probe-identifier ProbeIdentifier,
	originator-name OriginatorName,
	original-encoded-information-types OriginalEncodedInformationTypes OPTIONAL,
	content-type ContentType,
	content-identifier ContentIdentifier OPTIONAL,
	content-length [0] ContentLength OPTIONAL,
	per-message-indicators PerMessageIndicators DEFAULT { },
	per-domain-bilateral-information [1] SEQUENCE SIZE (1..ub-transfer) OF 
		PerDomainBilateralInformation OPTIONAL,
	trace-information TraceInformation,
	extensions [3] Extensions DEFAULT { },
	per-recipient-fields [2] SEQUENCE SIZE (1..ub-recipients) OF PerRecipientProbeTransferFields }

PerProbeTransferFields ::= SET {
	probe-identifier ProbeIdentifier,
	originator-name OriginatorName,
	original-encoded-information-types OriginalEncodedInformationTypes OPTIONAL,
	content-type ContentType,
	content-identifier ContentIdentifier OPTIONAL,
	content-length [0] ContentLength OPTIONAL,
	per-message-indicators PerMessageIndicators DEFAULT { },
	per-domain-bilateral-information [1] SEQUENCE SIZE (1..ub-transfer) OF 
		PerDomainBilateralInformation OPTIONAL,
	trace-information TraceInformation,
	extensions [3] Extensions DEFAULT { } }

PerRecipientProbeTransferFields ::= SET {
	recipient-name RecipientName,
	originally-specified-recipient-number [0] OriginallySpecifiedRecipientNumber,
	per-recipient-indicators [1] PerRecipientIndicators,
	explicit-conversion [2] ExplicitConversion OPTIONAL,
	extensions [3] Extensions DEFAULT { } }


--	Report Transfer Envelope

ReportTransferEnvelope ::= SET {
	report-identifier ReportIdentifier,
	report-destination-name ReportDestinationName,
	trace-information TraceInformation,
	extensions [1] Extensions DEFAULT { } }

--	Report Transfer Content

ReportTransferContent ::= SET {
	subject-identifier SubjectIdentifier,
	subject-intermediate-trace-information SubjectIntermediateTraceInformation OPTIONAL,
	original-encoded-information-types OriginalEncodedInformationTypes OPTIONAL,
	content-type ContentType OPTIONAL,
	content-identifier ContentIdentifier OPTIONAL,
	returned-content [1] Content OPTIONAL,
	additional-information [2] AdditionalInformation OPTIONAL,
	extensions [3] Extensions DEFAULT { },
	per-recipient-fields [0] SEQUENCE SIZE (1..ub-recipients) OF 
		PerRecipientReportTransferFields }

PerReportTransferFields ::= SET {
	subject-identifier SubjectIdentifier,
	subject-intermediate-trace-information SubjectIntermediateTraceInformation OPTIONAL,
	original-encoded-information-types OriginalEncodedInformationTypes OPTIONAL,
	content-type ContentType OPTIONAL,
	content-identifier ContentIdentifier OPTIONAL,
	returned-content [1] Content OPTIONAL,
	additional-information [2] AdditionalInformation OPTIONAL,
	extensions [3] Extensions DEFAULT { } }

PerRecipientReportTransferFields ::= SET {
	actual-recipient-name [0] ActualRecipientName,
	originally-specified-recipient-number [1] OriginallySpecifiedRecipientNumber,
	per-recipient-indicators [2] PerRecipientIndicators,
	last-trace-information [3] LastTraceInformation,
	originally-intended-recipient-name [4] OriginallyIntendedRecipientName OPTIONAL,
	supplementary-information [5] SupplementaryInformation OPTIONAL,
	extensions [6] Extensions DEFAULT { } }


--	Envelope & Report Content Fields

MessageIdentifier ::= MTSIdentifier

PerDomainBilateralInformation ::= SEQUENCE {
	country-name CountryName,
	domain-information DomainInformation,
	bilateral-information BilateralInformation}

DomainInformation ::=
	CHOICE {
		administration-domain-name AdministrationDomainName,
		private-domain-name AdministrationAndPrivateDomainName}

AdministrationAndPrivateDomainName ::=
	SEQUENCE {
		administration-domain-name [0] AdministrationDomainName,
		private-domain-identifier [1] PrivateDomainIdentifier OPTIONAL}

BilateralInformation ::= ANY  -- maximum ub-bilateral-info octets including all encoding

OriginallySpecifiedRecipientNumber ::= INTEGER (SIZE (1..ub-recipients))

PerRecipientIndicators ::= BIT STRING {
	responsibility (0),
	-- responsible 'one', not-responsible 'zero'
	originating-MTA-report (1),
	originating-MTA-non-delivery-report (2),
	-- either originating-MTA-report, or originating-MTA-non-delivery-report, or both, shall be 'one':
	-- originating-MTA-report bit 'one' requests a 'report';
	-- originating-MTA-non-delivery-report bit 'one' requests a 'non-delivery-report';
	-- both bits 'one' requests an 'audited-report';
	-- bits 0 - 2 'don't care' for Report Transfer Content
	originator-report (3),
	originator-non-delivery-report (4),
	-- at most one bit shall be 'one':
	-- originator-report bit 'one' requests a 'report';
	-- originator-non-delivery-report bit 'one' requests a 'non-delivery-report';
	-- both bits 'zero' requests 'no-report'
	reserved-5 (5),
	reserved-6 (6),
	reserved-7 (7)
	-- reserved- bits 5 - 7 shall be 'zero' -- } (SIZE (8..ub-bit-options))

ProbeIdentifier ::= MTSIdentifier

ReportIdentifier ::= MTSIdentifier

ReportDestinationName ::= ORAddressAndOptionalDirectoryName

SubjectIdentifier ::= MessageOrProbeIdentifier

MessageOrProbeIdentifier ::= MTSIdentifier

SubjectIntermediateTraceInformation ::= TraceInformation

AdditionalInformation ::= ANY  -- maximum ub-additional-info octets including all encoding

ActualRecipientName ::= ORAddressAndOptionalDirectoryName

LastTraceInformation ::= SET {
	arrival-time [0] ArrivalTime,
	converted-encoded-information-types ConvertedEncodedInformationTypes OPTIONAL,
	report [1] EXPLICIT Report }


--	Common Parameter Types

TraceInformation ::= [APPLICATION 9] SEQUENCE SIZE (1..ub-transfers) OF TraceInformationElement

TraceInformationElement ::= SEQUENCE {
	global-domain-identifier GlobalDomainIdentifier,
	domain-supplied-information DomainSuppliedInformation }

DomainSuppliedInformation ::= SET {
	arrival-time [0] ArrivalTime,
	routing-action [2] RoutingAction,
	attempted-domain GlobalDomainIdentifier OPTIONAL,
	deferred-time [1] DeferredTime OPTIONAL,
	converted-encoded-information-types ConvertedEncodedInformationTypes OPTIONAL,
	other-actions [3] OtherActions DEFAULT { } }

AdditionalActions ::= SET {
	deferred-time [1] DeferredTime OPTIONAL,
	converted-encoded-information-types ConvertedEncodedInformationTypes OPTIONAL,
	other-actions [3] OtherActions DEFAULT { } }

RoutingAction ::= ENUMERATED {
	relayed (0),
	rerouted (1) }

DeferredTime ::= Time

ArrivalTime ::= Time

OtherActions ::= BIT STRING {
	redirected (0),
	dl-operation (1) } (SIZE (0..ub-bit-options))

Name ::= ANY -- for now...
END