OpenSMTPD as MTA relay on OpenBSD 5.1

       229 words, 2 minutes

On my servers, I don’t want mail alerts to stay locally but to be forwarded to root@. There are two ways to do so: either put a .forward file in the home of service user that may send e-mail or configure the local MTA to forward email to root@. Depending on your local MTA, this can be more or less complicated. Usually, I end using sSMTP.

But this time, I want to do it using OpenSMTPD. Here’s how.

First of all, do not expect too much from this article, I’m just concatenating EXAMPLES from smtpd(8) and smtpd.conf(5). Then, since OpenBSD is installed:

  # pkill sendmail
  # vi /etc/mailer.conf
  sendmail        /usr/sbin/smtpctl
  send-mail       /usr/sbin/smtpctl
  mailq           /usr/sbin/smtpctl
  makemap         /usr/libexec/smtpd/makemap
  newaliases      /usr/libexec/smtpd/makemap
  # vi /etc/rc.conf.local
  # vi /etc/mail/smtpd.conf
  listen on lo0
  map "aliases" { source db "/etc/mail/aliases.db" }
  map secrets { source db "/etc/mail/secrets.db" }
  accept for all relay via tls auth "secrets"
  # touch /etc/mail/secrets
  # chmod 640 /etc/mail/secrets
  # chown root:_smtpd /etc/mail/secrets
  # echo " username:password" > /etc/mail/secrets
  # makemap /etc/mail/secrets
  # /etc/rc.d/smtpd start                                                                  

The only “problem” here is that all mail will have an envelope containing the server’s hostname ; which may/will lead to NDR such as “550 (…) Recipient address rejected: Domain not found”. The feature for masquerading e-mail is not yet implemented in OpenSMTPD. But will probably be when OpenBSD 5.2 is released.