# E-MailRelay Readme

## Abstract

E-MailRelay is a simple SMTP proxy and store-and-forward message transfer agent (MTA). When running as a proxy all e-mail messages can be passed through a user-defined program, such as a spam filter, which can drop, re-address or edit messages as they pass through. When running as a store-and-forward MTA incoming messages are stored in a local spool directory, and then forwarded to the next SMTP server on request.

E-MailRelay can also run as a POP3 server. Messages received over SMTP can be automatically dropped into several independent POP3 mailboxes.

E-MailRelay uses the same non-blocking i/o model as Squid and Nginx giving excellent scalability and resource usage.

C++ source code is available for Linux, FreeBSD, MacOS X etc, and Windows. Distribution is under the GNU General Public License V3.

## Quick start

To use E-MailRelay in store-and-forward mode use the --as-server option to start the storage daemon in the background, and then trigger delivery of spooled messages by running with the --as-client option and the address of the target host.

For example, to start a storage daemon listening on port 10025 use a command like this:

    emailrelay --as-server --port 10025 --spool-dir /tmp

And then to forward the spooled mail to smarthost run something like this:

    emailrelay --as-client smarthost:25 --spool-dir /tmp

To get behaviour more like a proxy you can add the --poll option so that messages are forwarded continuously rather than on-demand. This example starts a store-and-forward server that forwards spooled-up e-mail every hour:

    emailrelay --as-server --poll 3600 --forward-to smarthost:25

For a proxy server that forwards each message as it is being received, without any delay, you can use the --as-proxy mode:

    emailrelay --as-proxy smarthost:25

If you want to edit or filter e-mail as it passes through the proxy then specify your pre-processor program with the --filter option, something like this:

    emailrelay --as-proxy smarthost:25 --filter /usr/local/bin/addsig

To run E-MailRelay as a POP server without SMTP use --pop and --no-smtp:

    emailrelay --pop --no-smtp --log --close-stderr

The emailrelay-submit utility can be used to put messages straight into the spool directory so that the POP clients can fetch them.

By default E-MailRelay will always reject connections from remote machines. To allow connections from anywhere use the --remote-clients option, but please check your firewall settings to make sure this cannot be exploited by spammers.

On Windows add --hidden to suppress message boxes and also add --no-daemon if running as a service.

For more information on the command-line options refer to the reference guide or run:

    emailrelay --help --verbose

## Documentation

The following documentation is provided:

- README -- this document
- COPYING -- the GNU General Public License
- INSTALL -- build & install instructions (including the GNU text)
- AUTHORS -- authors, credits and additional copyrights
- userguide.txt -- user guide
- reference.txt -- reference document
- ChangeLog -- change log for releases

Source code documentation will be generated when building from source if doxygen is available.

## Configurations

Recent releases were developed on Ubuntu Linux 12.04 using:

- linux 3.2.0
- gcc 4.6.3
- autoconf 2.68

and on Windows 7 using:

- MSVC 2012
- MinGW 20120426
- OpenSSL 1.0.1c

The code was originally developed on SuSE Linux 7.1 using:

- linux 2.4.10
- gcc 2.95.3
- glibc 2.2.4 (libc.so.6)
- autoconf 2.52

and on Windows 98 using:

- MSVC 6.0

Versions of the code have also been built successfully on:

- MacOS X 10.3.9
- MacOS X 10.5.1 using gcc 4.0.1 on G4 PPC hardware
- FreeBSD 9.2 on Intel hardware
- Linux on Alpha hardware (Debian 2.2)
- Linux on Sparc hardware
- Linux on ARM 11 (Raspberry Pi) hardware
- Linux on RS6000 PPC hardware
- Linux on MIPS embedded hardware using gcc 3.4.6
- Linux using clang++ 3.0
- Linux using intel c++ 6.0
- Linux using intel c++ 10.1
- Solaris 8 using gcc on Sparc hardware
- Solaris 8 using WorkShop 5.0
- Solaris 10
- Windows NT 4.0 using MSVC 6.0
- Windows NT 4.0 using Cygwin (DLL 1.3.22) and gcc 3.2
- Windows NT 4.0 using MinGW 2.0.0 and gcc 3.2
- Windows XP using MinGW 3.1.0 gcc 3.4.2
- Windows Vista

## Feedback

Please feel free to e-mail the author at mailto:graeme_walker@users.sourceforge.net or the SourceForge mailing list mailto:emailrelay-help@lists.sourceforge.net.