Introduction

PyMail is a simple SMTP server for use in a private network domain connected to the Internet. SMTP servers handle mail traffic in the standardized SMTP (Simple Mail Transfer Protocol) protocol. They take mail from user’s mail programs (Mail User Agent or MUA) and forward it to their destination’s mail server (Mail Transfer Agent or MTA) on one side and receive mail from other mail servers and deliver it to a mail box where the user’s mail program can find it and present it to the user on the other side.

PyMail does not try to handle every possible case. Instead it handles the most common scenarios as efficiently as possible, requiring only a simple configuration file.

Why yet another SMTP server?

There are already many mail server implementations around, so why another one?

All today’s existing mail servers try to handle every possible scenario and use a very flexible configuration for this. The configuration, the essential part in setting up a mail server, grows extremely complex in these implementations. It’s almost like having to program the server. For most small domains connected to the Internet, this complexity is inadequate. There are only four possible scenarios in a simple domain to handle, one of them actually unusual and thus optional. These four cases can be depicted in the following table:

  To Private Domain To Internet
From Private Domain Deliver mail to another local mailbox Transfer mail to another mail server in the Internet
From Internet Receive mail from mail server in the Internet and deliver to a local mailbox Relay mail for an external user to another mail server in the Internet. Unusual

There is not a complex configuration necessary to describe these four (or even three) scenarios. Trying to setup a configuration for the most common mail servers to handle this turns out to be a major nightmare. Not so with PyMail.