Manuel Wildauer

How to send and receive emails with OpenSMTPD

Populate /etc/mail/aliases

echo "root: YOUR_LOCAL_USER" >> /etc/mail/aliases

That means that all emails sent to root are going to YOUR_LOCAL_USER.

If you want you can add some other aliases, like “contact” or “hi”.

echo "contact: YOUR_LOCAL_USER" >> /etc/mail/aliases
echo "hi: YOUR_LOCAL_USER" >> /etc/mail/aliases

After we add all our aliases it’s necessary to run newaliases.

newaliases
/etc/mail/aliases: 70 aliases

Now you should create an SSL certificate like here or use an existing one.

Now we can populate /etc/mail/smtpd.conf and replace example.com with your domain. Everything we want is to receive emails from other for local users and deliver all emails to users mbox => /var/mail/YOUR_LOCAL_USER

table aliases file:/etc/mail/aliases

pki example.com key "/path/to/your/example.com.key"
pki example.com certificate "/path/to/your/exmaple.com.crt"

listen on egress tls pki exmaple.com
listen on egress port 587 hostname example.com tls-require pki example.com auth mask-source

accept from any for domain "example.com" alias <aliases> deliver to mbox
accept from any for local alias <aliases> deliver to mbox
accept from local for any relay

That’s it. OpenSMTPD is listen on port 25 and 587 and accept encrypted connections. The key and certificate location are configured with the pki keyword. And the messages are delivered to system mbox of the user (/var/mail/YOUR_LOCAL_USER).

Populate /etc/mail/mailname with your domain.

echo "example.com">/etc/mail/mailname

Now you can check you configuration smtpd -n and when everything looks ok, you can restart OpenSMTPD rcctl restart smtpd

Check your OpenSMTPD server with telnet

telnet exmaple.com
EHLO exmaple.com
MAIL FROM: <from@somehwere.tld>
RCPT TO: <to@example.com>
DATA
Subject: This is just a test
<- blank line ->
This is a test :)
<- blank line ->
.
QUIT

If it’s says something like 250 2.0.0: 574eff74 Message accepted for delivery, congratulation OpenSMTPD works.