On 2023/11/28 14:38:05 +0100, Tassilo Philipp <[email protected]>
wrote:
> Hi,
>
> I stumbled across an issue when trying to send mail with opensmtpd by
> submitting via the unix domain socket, when requesting any kind of DSN,
> (e.g. mailwrapper(8) based sendmail command's -N param).
>
> Such mail gets refused by smtpd when the unix domain socket in use is
> the default one, instead of an explicitly specified one in
> smtpd.conf(5).
> Explicitly specifying 'listen on socket' in the config works.
>
> The man page implies that having this listen line in the config or not
> should come down to the same, but that isn't the case. The default
> creates a socket that doesn't advertise any DSN extension, whereas
> specifying it explicitly, does.
>
> At first I thought this might be intentional, however, with an explicit
> config, it's not possible to disable DSNs, as the 'listen on socket'
> line doesn't support any no-dsn option, which exists for other listeners.
>
> Find attached a one-line patch that makes the socket created by default
> behave the same way as when specifying it via the config, explicitly. I
> think the no-dsn option should also be available for such listeners,
> however I don't know exactly if this is wanted, so I left that out for
> now.
>
> Thanks
This has been committed, together with the addition of `no-dsn' for
`listen on socket'.
Thank you!
> --- ./usr.sbin/smtpd/parse.y.orig 2023-11-28 14:12:34.578898000 +0100
> +++ ./usr.sbin/smtpd/parse.y 2023-11-28 14:12:41.349092000 +0100
> @@ -3136,6 +3136,7 @@
> /* If the socket listener was not configured, create a default one. */
> if (!conf->sc_sock_listener) {
> memset(&listen_opts, 0, sizeof listen_opts);
> + listen_opts.flags |= F_EXT_DSN;
> create_sock_listener(&listen_opts);
> }
>