## MailFront

# Protocol: smtp

The SMTP protocol module has the following features:

- Handles RFC 2554 SMTP authentication. Note that the require-auth plugin and/or the relayclient plugin will need to be loaded to make use of this authentication.
- Automatically handles either bare NL or RFC 821 / RFC 2821 compliant CR/NL end-of-line conventions.
- Will drop connections on inactivity or too many errors.
- All error responses are logged.
- Handles (ignores) RFC 1869 extended parameters on the `RCPT TO:` and `MAIL FROM:` commands.
- Configurable initial greeting.
- Supports RFC 1870 SMTP Service Extension for Message Size Declaration.

## Configuration

`$MAXNOTIMPL`
  The maximum number of unimplemented commands (resulting in a "`500 Not implemented.`" response) allowed in a session before dropping the connection. No default.
`$SESSION_TIMEOUT`
  The number of seconds from the start of the session after which to drop the connection. Defaults to 86400 seconds (24 hours).
`$SMTPGREETING`
  The greeting text to send on startup. If not set, the greeting is generated based on the domain name in `${$PROTO}LOCALHOST` set by the invoking UCSPI server such as tcpserver.
`$TIMEOUT`
  The number of seconds of inactivity after which to drop connections. Defaults to 1200 seconds (20 minutes).
`$TLS_CERTFILE`
  The filename containing the TLS certificate and any intermediate certificates used to sign it. The file contents must be in PEM format. This setting is required for operation `STARTTLS` or SMTPS mode.
`$TLS_COMPAT`
  Disable certain (security) features in TLS in order to maintain maximum compatibility with buggy clients.
`$TLS_DH_PARAMS`
  The filename containing the Diffie-Hellman key exchange parameters, as generated by `openssl dhparam` or `certtool --generate-dh-params`. If not specified, default parameters are used.
`$TLS_IMMEDIATE`
  If set, this plugin will switch to TLS mode on startup (if possible, see below). This is primarily useful for running mailfront as a SMTP submission server on TCP port 465 (SMTPS).
`$TLS_KEYFILE`
  The filename containing the private key for to the certificate. The file contents must be in PEM format. If unset, it defaults to the value of `$TLS_CERTFILE`.
`$TLS_PRIORITY`
  The GnuTLS priority string, which specifies the TLS session's handshake algorithms and options. See the manual page for more details on possible values. Defaults to "`NORMAL`", which represents all the known to be secure ciphersuites.