The esmtp module

- support for delivering and accepting mail via smtp/emstp over TCP/IP.

Configuration files

esmtpacceptmailfor,esmtpacceptmailfor.dat - lists domains whose mail we accept.

esmtpgreeting - what smtpd announces as its greeting.

esmtphelo - what to announce in my HELO command. Defaults to me.

esmtppercentrelay.dat - a GDBM database file. If address <user%foo@bar> is given, foo must be in percenthack as the key. Which is then rewritten by smtpd as <user@val>, where val is the value of that key in the GDBM file, which can be created by makegdbm.

esmtproutes - If the host being delivered to is found in this file, the value will be used instead of looking up MX or A records. The value is a space/tab separated list of IP addresses or hostnames.

esmtptimeout - general STMP timeout, in seconds. Both smtpd, and the output module will stop after waiting the specific amount for a response from the remote server.

Shared library

rewritedel - if domain is of the form foo@bar, accept delivery for host bar, user foo@bar.

Rewrite functions:

esmtp - compile-time options may be used to specify various kinds of behavior when envelope recipient is being rewritten by submit, including: check for mailbox validity - this involves simply locating any loaded rewritedel function, and failing otherwise (!); or forking and running an external filter!

Input module

courieresmtpd is typically invoked by couriertcpd to handle incoming connections. courieresmtpd is a full-fledged ESMTP server. courieresmtpd reads ESMTP commands and runs submit to process incoming messages.

courieresmtpd reads BOFHNOEXPN and BOFHNOVRFY environment variables to disable the EXPN and VRFY commands.

Output module

The output module reads esmtproutes to check for any hardcoded smarthosts.