How to Configure a Relay Host

To send outgoing mail through another SMTP server (e.g. a provider or corporate server), configure a relay host.

Steps

1. Create credentials file

Create a file (e.g. sasl_passwd) with:

hostname username:password

Example for relay at mailpit on port 1025:

mailpit user1:password1

Set secure permissions:

chmod 600 sasl_passwd

2. Mount the file into the MTA container

In deploy/compose/mta.yaml (or your compose override), add a volume for the credentials file:

volumes:
  - data-tls:/etc/postfix/tls:ro
  - ./sasl_passwd:/etc/postfix/sasl_passwd_ext:ro

Use the path where the MTA expects it (e.g. /etc/postfix/sasl_passwd_ext).

3. Set environment variables

In .env:

RELAYHOST=[hostname]:port
RELAY_PASSWD_FILE=/etc/postfix/sasl_passwd_ext

Example for Gmail:

RELAYHOST=[smtp.gmail.com]:587
RELAY_PASSWD_FILE=/etc/postfix/sasl_passwd_ext

Credentials file content for Gmail (use an app password):

smtp.gmail.com your-email@gmail.com:your-app-password

Example for Office 365:

RELAYHOST=[smtp.office365.com]:587
RELAY_PASSWD_FILE=/etc/postfix/sasl_passwd_ext
smtp.office365.com your-email@yourdomain.com:your-password

4. Restart the MTA

bin/production.sh up -d mta

(or docker-compose up -d mta).

Verification

Send a test message via webmail and check MTA logs for successful relay (e.g. status=sent).

For reference, see Environment variables reference (Relay section).