The central unifying construct in IMTA is the channel. A channel is some form of connection with another system or group of systems. Here, system is being used quite loosely and may mean another computer system, mail system, user agent, or gateway. The actual hardware connection or software transfer, or both, may vary widely from one channel to the next. Only the IMTA manager needs to know anything about IMTA's channels. Users are never aware of the existence of channels and only see a single, uniform interface regardless of how messages reach their destination.
Each channel consists of one or more channel programs and an outgoing message queue for storing messages that are destined to be sent to one or more of the systems associated with the channel. Channel programs perform two functions:
![]() |
Transmit messages to other systems, deleting them from their queue after they are sent |
![]() |
Accept messages from other systems, placing (enqueuing) them into channel queues |
Note - While a channel program only removes messages from its own queue, it can enqueue messages to any queue, including its own.
A channel program that initiates a transfer to another system or another channel on its own is called a "master" program, while a program that accepts transfers initiated by another system is called a "slave" program. A channel may be served by a master program, a slave program, or both. Either type of program may or may not be bidirectional; the direction in which a message is traveling may have nothing to do with the type of program that handles it.