Relay email (nullmailer)
Overview
Nullmailer is lightweight and simple MTA (mail transport agent) which allows you to relay local emails to another server. This is useful if you are for in example running a private server at home and just want to relay notifications from cron etc. to your external mailbox via your ISPs mail server. Nullmailer also allows you to rewrite the envelope sender which is needed to pass spam checks that many ISPs are nowadays doing.
Installation
Nullmailer can be found only in the testing
branch. How to Enable the Testing Repository
apk add nullmailer@testing
Configuration
Nullmailer is configured using individual files under /etc/nullmailer/, one file per setting.
When mail is sent to any local user e.g. "root", "me@localhost" etc. then the mail can be sent to some external address or addresses (as a comma separated list) instead:
Contents of /etc/nullmailer/adminaddr
When nullmailer relays mail to remote server then the envelope sender can be overridden because mail is often rejected if the envelope sender contains a non-existent domain like root@localhost.example (note that the envelope sender is not the same as the From: header, which remains root@localhost.example, but that is not typically rejected):
Contents of /etc/nullmailer/allmailfrom
Whenever nullmailer deals with addresses without a hostname or domain then defaulthost and defaultdomain files can be used to set defaults, however this can be also done using one file. So mail From: me and To: me will become From: me@localhost.example and To: me@localhost.example. Note that this applies to headers, which informational only and shown in the mail client. The envelope sender and recipient must still be set correctly using configuration files explained above.
Ideally you would own and control a domain you could use but if not, then set it to a guaranteed non-existing domain like localhost.example. Do not just pick some random non-existing domain because somebody could register it in the future:
Contents of /etc/nullmailer/me
To configure the relay server that mails are sent to, add one line per remote server. Typically this would be your ISPs mail server. Optionally, nullmailer supports different authentication schemes:
Contents of /etc/nullmailer/remotes
Logging
Nullmailer only logs to stdout and stderr which means syslog cannot be used trivially. Instead, it is possible to make OpenRC write stdout and stderr to log files:
Contents of /etc/conf.d/nullmailer
As nullmailer runs as a user of the same name, it cannot create log files by itself. Just create the log files manually instead:
touch /var/log/mail.log /var/log/mail.err chown nullmailer:adm /var/log/mail.log /var/log/mail.err chmod 0640 /var/log/mail.log /var/log/mail.err
Testing
To test configuration just send out few test emails to root and to some existing address, etc.:
echo -e "Subject: Nullmailer testing\n\nSending to root." | sendmail root echo -e "Subject: Nullmailer testing\n\nSending to me." | sendmail me@example.com