Tech Support

Internet Exchange Frequently Asked Questions

Internet Exchange Messaging Server
SMTPC Queuing System

Overview
Each machine running SMTPC is capable of maintaining multiple simultaneous outbound SMTP connections.  The Internet Exchange Messaging Server's SMTPC Module features an innovative approach to queue management that supports server-side ETRN requests and provides a mechanism for message priority handling.   This architecture guarantees not only high throughput, but also the orderly handling of messages of different priorities.   The module comes with the SMTPC Queue Router, which retrieves outgoing messages from the Message Switch and determines whether they should be routed to the Pending Queue or to the Deferred Queue.  A shared message queue structure is designed for these queues, so as to achieve efficient usage of system memory.  Each queue can have one or more queue processors active at a time, each of which will further create multiple SMTPC worker threads to process multiple simultaneous outbound messages and send them to their next destination across the Internet.

Pending Queue
Newly arrived messages that must be sent out immediately are placed in the Pending Queue. These messages are then processed by the Pending Queue Processors, which attempt delivery via SMTP. If the delivery of a message in the Pending Queue is unsuccessful, it is passed on to the Deferred Queue so it can be delivered at a later time. Messages that are destined for intermittently connected hosts with ETRN support, such as dialup accounts, completely bypass the Pending Queue and are sent directly to the Deferred Queue.

The queue run interval for each Pending Queue Processor can be configured by the system administrator. In addition, the administrator can define the maximum number of Pending Queue Processors that run concurrently and the number of messages to be processed by each processor during each queue run. Each Pending Queue Processor is capable of creating multiple threads for handling multiple SMTP sessions.

Deferred Queue
Messages that are intentionally deferred or whose previous delivery attempt(s) have failed are placed in the Deferred Queue. Messages in the Deferred Queue are further grouped into different SMTP domain channels using information in the recipient addresses. This allows server-side ETRN support and prevents deferred messages from delaying the processing of new messages. A message is placed in the Deferred Queue if any of the following conditions is encountered:

  • The destination domain is a predefined ETRN SMTP domain. Dialup SMTP hosts connect to the Internet intermittently, and attempting to deliver messages to such hosts when they are not connected to the Internet will fail.
  • There is a temporary DNS error during the domain name resolution process.
  • A destination host is found but SMTP connection cannot be established.
  • The destination SMTP server issues a temporary SMTP response code.
  • The SMTP connection is aborted prematurely due to network problems.
  • The destination SMTP server did not reply within the configured time.

Messages in the Deferred Queue are processed by the Deferred Queue Processors on a per channel basis. During each scheduled queue run time, one or more Deferred Queue Processors are created for every SMTP domain channel by the SMTPC Module to handle deferred outgoing messages. The messages for each SMTP domain channel are processed according to their message priority weight. SMTPC will attempt to deliver the first message from each SMTP Domain Channel. If the delivery attempt is successful, the Queue Processor will create other child SMTPC threads to deliver subsequent messages. Otherwise, all subsequent messages in the entire channel will remain queued. This approach greatly improves the overall efficiency of resource usage by eliminating unnecessary message delivery attempts.

It is advisable to queue all the messages for a particular domain (such as ETRN domains) before attempting delivery. When an ETRN host is connected, it makes an ETRN request to SMTPD, which notifies SMTPC. SMTPC then starts a Deferred Queue Processor to deliver all queued messages for this domain immediately. Since the messages for this domain are already grouped, this approach ensures less processing time and fast delivery.