This document describes the process of configuring the OpenSMTPD service as part of the server mail system. The mail system includes the following services: OpenSMTPD, DKIMproxy and Dovecot. But only OpenSMTPD will be considered here. ====== Creation of additional service files ====== First, let's create additional service files for the server, which will contain users, a list of hosts, and so on. And also we will restrict access to them for other users of the system. doas touch /etc/mail/domains doas touch /etc/mail/vusers doas touch /etc/mail/hosts doas touch /etc/mail/passwd doas chmod 640 /etc/mail/domains doas chmod 640 /etc/mail/vusers doas chmod 640 /etc/mail/hosts doas chmod 640 /etc/mail/passwd doas chmod 640 /etc/mail/smtpd.conf ====== Creating a configuration file ====== The next step is to replace the contents of the standard configuration file as here: pki example.com cert "/etc/ssl/example/example.pem" pki example.com key "/etc/ssl/example/private/example.key" smtp max-message-size 5M table aliases file:/etc/mail/aliases table domains file:/etc/mail/domains table hosts file:/etc/mail/hosts table vusers file:/etc/mail/vusers table passwd file:/etc/mail/passwd filter check_rdns phase connect match !rdns junk filter check_fcrdns phase connect match !fcrdns junk listen on lo0 mask-src listen on lo0 port 10028 tag DKIM mask-src listen on egress port 25 tls pki example.com mask-src filter { check_rdns check_fcrdns } listen on egress port 587 tls-require pki grape.ircnow.org auth mask-src filter { check_rdns check_fcrdns } action "local_mail" mbox alias action "relay_dkim" relay host smtp://127.0.0.1:10027 action "relay" relay action "lmtp" lmtp "/var/dovecot/lmtp" rcpt-to virtual match from local for rcpt-to regex "^root@|^abuse@|^security@" action "local_mail" match from local for domain action "lmtp" match tag DKIM for any action "relay" match from local for any action "relay_dkim" match from src for any action "relay_dkim" match from auth for any action "relay_dkim" match from any for domain action "lmtp" ====== Additional files ====== In the first step, we created additional files, now we need to fill them with data. The domains file is used to receive mail. Therefore, it must contain a list of domains from which the server is an endpoint. In our case, this is so: example.com The hosts file is used for relay operation. It contains a list of remote hosts for which you are allowed to relay mail without authorization. In our case, this is so: 10.10.10.10 The vusers file is used to receive mail. It contains a list of mailboxes. This is an example: admin@example.com mailman hostmaster@example.com mailman ircnowguy@example.com mailman The passwd file contains a list of accounts for authorization. This is a possible option: ircnowguy@example.com:$2b$09$hD17XLkUb4doE3bjvn4v1uYVF3/tldQBKvDTcCbDta1a6NZNA1zue ====== Service start ====== doas rcctl stop smtpd doas rm -r /var/spool/smtpd doas rcctl -d start smtpd doas rcctl -d start smtpd doing _rc_parse_conf doing _rc_quirks smtpd_flags empty, using default >< doing rc_check smtpd doing rc_start doing _rc_wait start doing rc_check doing _rc_write_runfile (ok)