Hi misc@.
I have a source table for IP-addresses I'd like to use bind to for
outgoing mail with OpenSMTPD. For some reason, I can't add
IPv6-addresses to it.
To give you an idea, without configuration outgoing mail goes out from
partyvan.eu (partyvan.eu [188.126.81.149]). This is unintended and
should instead use mail.partyvan.eu (mail.partyvan.eu [188.126.81.154])
or the equivalent IPv6-address. These are on the same physical server
and shared NIC.
I have an smtpd.conf [1] that looks like this (simplified):
table addresses file:/etc/mail/addresses
mail_host = "mail.partyvan.eu"
pki $mail_host certificate "/etc/ssl/mail.partyvan.eu.chained.pem"
pki $mail_host key "/etc/ssl/private/mail.partyvan.eu.key"
listen on lo0
accept from local for any relay source <addresses> \
hostname $mail_host pki $mail_host
/etc/mail/addresses [2]:
188.126.81.154
2a00:1a28:1510:1::154
However, any IPv6-address in /etc/mail/addresses is an error:
/etc/mail/smtpd.conf:18: invalid configuration file
/etc/mail/addresses for table addresses
This is OK in /etc/mail/addresses:
188.126.81.154
OpenSMTPD would also happily accept this:
188.126.81.154
188.126.81.155
According to table(5), a source table looks like:
192.168.1.2
192.168.1.3
::1
::2
ipv6:::3
ipv6:::4
But none of these are accepted in the addresses table with or without an
IPv4-address:
2a00:1a28:1510:1::154
[2a00:1a28:1510:1::154]
ipv6:2a00:1a28:1510:1::154
::1
So what am I doing wrong?
smtpd.conf(5) is very confusing about some of the syntaxes, such as:
relay [backup [mx]] [as address] [source <source>]
[hostname name] [hostnames <names>] [pki pkiname]
[tls [verify]]
In fact, source <source> makes OpenSMTPD think it's an netaddr table and
won't accept it in the previously mentioned relaying context. I call
this almost certainly to be a bug (in documentation). There were other
similar documentation quirks that I found.
I tried doing something with addrname tables, but mail is still sent out
from the default IP-address on the server which is not what I expected.
By the way, there seems to be no sensible way to make this compact on a
shared NIC:
mail_addr4 = "188.126.81.154"
mail_addr6 = "2a00:1a28:1510:1::154"
listen on $mail_addr4 tls pki $mail_host hostname $mail_host
listen on $mail_addr6 tls pki $mail_host hostname $mail_host
listen on $mail_addr4 port 587 tls-require pki $mail_host \
auth <secrets> hostname $mail_host
listen on $mail_addr6 port 587 tls-require pki $mail_host \
auth <secrets> hostname $mail_host
I thought an addrname table might help with it, but I couldn't find a
way to do it.
This is on OpenBSD 5.9 -stable. Help appreciated.
[1]: https://partyvan.eu/transparency/config/opensmtpd/smtpd.conf
[2]: https://partyvan.eu/transparency/config/opensmtpd/addresses