| Title: Configuration of OpenSMTPD to relay mails to outbound smtp | |
| server | |
| Author: Solène | |
| Date: 06 September 2018 | |
| Tags: openbsd70 openbsd opensmtpd highlight | |
| Description: | |
| In this article I will show how to configure OpenSMTPD, the default | |
| mail server | |
| on OpenBSD, to relay mail sent locally to your smtp server. In pratice, | |
| this | |
| allows to send mail through "localhost" by the right relay, so it makes | |
| also | |
| possible to send mail even if your computer isn't connected to the | |
| internet. | |
| Once connected, opensmtpd will send the mails. | |
| All you need to understand the configuration and write your own one is | |
| in the | |
| man page [smtpd.conf(5)](http://man.openbsd.org/smtpd.conf). This is | |
| only a | |
| highlight on was it possible and how to achieve it. | |
| In OpenBSD 6.4 release, the configuration of opensmtpd changed | |
| drasticaly, now | |
| you have to defines rules and action to do when a mail match the rules, | |
| and you | |
| have to define those actions. | |
| In the following example, we will see two kinds of relay, the first is | |
| through | |
| smtp over the Internet, it's the most likely you will want to setup. | |
| And the | |
| other one is how to relay to a remote server not allowing relaying from | |
| outside. | |
| **/etc/mail/smtpd.conf** | |
| table aliases file:/etc/mail/aliases | |
| table secrets file:/etc/mail/secrets | |
| listen on lo0 | |
| action "relay" relay | |
| action "myserver" relay host smtps://[email protected] auth | |
| <secrets> | |
| action "openbsd" relay host localhost:2525 | |
| match mail-from "@openbsd.org" for any action "openbsd" | |
| match for local action "local" | |
| match for any action "relay" | |
| I defined 2 actions, one from "myserver", it has a label "myrelay" and | |
| we use | |
| `auth <secrets>` to tell opensmtpd it needs authentication. | |
| The other action is "openbsd", it will only relay to localhost on port | |
| 2525. | |
| To use them, I define 2 matching rules of the very same kind. If the | |
| mail that | |
| I want to send match the @domain-name, then choose relay "myserver" or | |
| "openbsd". | |
| The "openbsd" relay is only available when I create a SSH tunnel, | |
| binding the | |
| local port 25 of the remote server to my port 2525, with flags | |
| `-L 2525:127.0.0.1:25`. | |
| For a relay using authentication, the login and passwords must be | |
| defined in | |
| the file **/etc/mail/secrets** like this: `myrelay login:Pa$$W0rd` | |
| [smtpd.conf(5)](http://man.openbsd.org/smtpd.conf) explains creation | |
| of **/etc/mail/secrets** like this: | |
| touch /etc/mail/secrets | |
| chmod 640 /etc/mail/secrets | |
| chown root:_smtpd /etc/mail/secrets | |
| Now, restarts your server. Then if you need to send mails, just use | |
| "mail" | |
| command or localhost as a smtp server. Depending on your From address, | |
| a | |
| different relay will be used. | |
| Deliveries can be checked in **/var/log/maillog** log file. | |
| ### See mails in queue | |
| doas smtpctl show queue | |
| ### Try to deliver now | |
| doas smtpctl schedule all |