User:David MacQuigg/My sandbox

From Citizendium
< User:David MacQuigg
Revision as of 17:11, 31 October 2008 by imported>David MacQuigg (Test Page)
Jump to navigation Jump to search

Email Fundamentals – Systems Architecture

This article describes the high-level "architecture" of systems for handling Internet mail, and does not discuss the protocols used in a message transfer [Klensin08], the format of the messages [Resnick08], or any of the protocols and services at the "relay-level" of a mail handling system [Crocker08]. The cited references offer a very complete discussion of these related topics. Good elementary discussions can be found in most texts on computer networks [PnD07].

Internet mail has evolved without much central planning to a collection of very diverse and astonishingly complex systems. Like the Internet itself, it is helpful to study these systems the way a biologist would study an organism, or a social scientist the behavior of a group. Who are the Actors in a typical email system? What are their roles and responsibilities in handling the mail? What are their relationships with each other and with users? What are their motivations? How can we build better security systems?

A typical mail handling system has a network of Relays[1], each temporarily storing the message, performing some specialized function, and passing it on to the next Relay using the SMTP protocol. You can tell how many Relays handled a message by looking at the Received lines in the message header. There should be one for each Relay.

Figure 1 shows a typical system with the Relays grouped into functional blocks. In this diagram, we have named the blocks by the role they play in processing a message, and assigned each role to a different Actor (User or Agent). However, each Actor can have multiple blocks, each block can have multiple hosts, and each host can have multiple Relays running as independent daemon processes. A Transmitter might have a dozen Relays, operating in parallel to handle a large mailflow, or widely dispersed to serve users all over the world. An MDA might have a process dedicated to managing a large mailstore, another running a POP/IMAP server, and another providing a webmail interface.

Figure 1 Actors (Users and Agents) and roles (functional blocks) in a typical email system.

To understand a mail handling system, including its security vulnerabilities, we need to focus on the roles and responsibilities of each Actor and the relationships between them. Figure 1 is a simplified model of just one system. There are many other possibilities. We might add a Forwarder between the Receiver and the MDA, or an Open Relay floating in the cloud. We might join two blocks under one Agent. We might add another layer of organization, showing a group of Actors organized as a Mail Receiving Network [Moore05], or an ADMD (Administrative Management Domain) [Crocker08]. Yet another layer could be shown by grouping the Relays according to who controls the equipment.[2]