diff options
author | 2018-06-15 08:57:17 +0000 | |
---|---|---|
committer | 2018-06-15 08:57:17 +0000 | |
commit | fceb4d40e4ff3130159c6e4510281c2d5b3744d5 (patch) | |
tree | 2b279d8d623dfe3ab77b714ccdf8f18a5aa8092e | |
parent | Remove BACKWARDS flag here as well. (diff) | |
download | wireguard-openbsd-fceb4d40e4ff3130159c6e4510281c2d5b3744d5.tar.xz wireguard-openbsd-fceb4d40e4ff3130159c6e4510281c2d5b3744d5.zip |
the %{sender} variable should expand to the MAIL FROM address, so in the
case of a mailer daemon, this is an empty string, not '@'
introduce %{mbox.from} which is the From separator line representation
of a sender, usually an email address or MAILER-DAEMON if sender is empty
ok eric@
-rw-r--r-- | usr.sbin/smtpd/mda_variables.c | 16 | ||||
-rw-r--r-- | usr.sbin/smtpd/parse.y | 8 | ||||
-rw-r--r-- | usr.sbin/smtpd/smtpd.conf.5 | 11 |
3 files changed, 25 insertions, 10 deletions
diff --git a/usr.sbin/smtpd/mda_variables.c b/usr.sbin/smtpd/mda_variables.c index 8a82b38ea35..a23112c71e8 100644 --- a/usr.sbin/smtpd/mda_variables.c +++ b/usr.sbin/smtpd/mda_variables.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mda_variables.c,v 1.3 2018/06/04 15:57:46 gilles Exp $ */ +/* $OpenBSD: mda_variables.c,v 1.4 2018/06/15 08:57:17 gilles Exp $ */ /* * Copyright (c) 2011-2017 Gilles Chehade <gilles@poolp.org> @@ -116,18 +116,24 @@ mda_expand_token(char *dest, size_t len, const char *token, if (snprintf(tmp, sizeof tmp, "%s@%s", dlv->sender.user, dlv->sender.domain) >= (int)sizeof tmp) return 0; + if (strcmp(tmp, "@") == 0) + (void)strlcpy(tmp, "", sizeof tmp); string = tmp; } else if (!strcasecmp("rcpt", rtoken)) { if (snprintf(tmp, sizeof tmp, "%s@%s", dlv->rcpt.user, dlv->rcpt.domain) >= (int)sizeof tmp) return 0; + if (strcmp(tmp, "@") == 0) + (void)strlcpy(tmp, "", sizeof tmp); string = tmp; } else if (!strcasecmp("dest", rtoken)) { if (snprintf(tmp, sizeof tmp, "%s@%s", dlv->dest.user, dlv->dest.domain) >= (int)sizeof tmp) return 0; + if (strcmp(tmp, "@") == 0) + (void)strlcpy(tmp, "", sizeof tmp); string = tmp; } else if (!strcasecmp("sender.user", rtoken)) @@ -152,6 +158,14 @@ mda_expand_token(char *dest, size_t len, const char *token, string = mda_command; replace = 0; } + else if (!strcasecmp("mbox.from", rtoken)) { + if (snprintf(tmp, sizeof tmp, "%s@%s", + dlv->sender.user, dlv->sender.domain) >= (int)sizeof tmp) + return 0; + if (strcmp(tmp, "@") == 0) + (void)strlcpy(tmp, "MAILER-DAEMON", sizeof tmp); + string = tmp; + } else return 0; diff --git a/usr.sbin/smtpd/parse.y b/usr.sbin/smtpd/parse.y index 4e98a6343da..29eea52189b 100644 --- a/usr.sbin/smtpd/parse.y +++ b/usr.sbin/smtpd/parse.y @@ -1,4 +1,4 @@ -/* $OpenBSD: parse.y,v 1.211 2018/06/04 15:57:46 gilles Exp $ */ +/* $OpenBSD: parse.y,v 1.212 2018/06/15 08:57:17 gilles Exp $ */ /* * Copyright (c) 2008 Gilles Chehade <gilles@poolp.org> @@ -589,7 +589,7 @@ dispatcher_local: MBOX { dispatcher->u.local.requires_root = 1; dispatcher->u.local.user = xstrdup("root"); - asprintf(&dispatcher->u.local.command, "/usr/libexec/mail.local -f %%{sender} %%{user.username}"); + asprintf(&dispatcher->u.local.command, "/usr/libexec/mail.local -f %%{mbox.from} %%{user.username}"); } dispatcher_local_options | MAILDIR { asprintf(&dispatcher->u.local.command, "/usr/libexec/mail.maildir"); @@ -615,11 +615,11 @@ MBOX { } dispatcher_local_options | LMTP STRING { asprintf(&dispatcher->u.local.command, - "/usr/libexec/mail.lmtp -f %%{sender} -d %s %%{user.username}", $2); + "/usr/libexec/mail.lmtp -f \"%%{sender}\" -d %s %%{user.username}", $2); } dispatcher_local_options | LMTP STRING RCPT_TO { asprintf(&dispatcher->u.local.command, - "/usr/libexec/mail.lmtp -f %%{sender} -d %s %%{dest}", $2); + "/usr/libexec/mail.lmtp -f \"%%{sender}\" -d %s %%{dest}", $2); } dispatcher_local_options | MDA STRING { asprintf(&dispatcher->u.local.command, diff --git a/usr.sbin/smtpd/smtpd.conf.5 b/usr.sbin/smtpd/smtpd.conf.5 index 349f88e5648..62e24d51fbe 100644 --- a/usr.sbin/smtpd/smtpd.conf.5 +++ b/usr.sbin/smtpd/smtpd.conf.5 @@ -1,4 +1,4 @@ -.\" $OpenBSD: smtpd.conf.5,v 1.194 2018/06/13 13:30:31 jmc Exp $ +.\" $OpenBSD: smtpd.conf.5,v 1.195 2018/06/15 08:57:17 gilles Exp $ .\" .\" Copyright (c) 2008 Janne Johansson <jj@openbsd.org> .\" Copyright (c) 2009 Jacek Masiulaniec <jacekm@dobremiasto.net> @@ -17,7 +17,7 @@ .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .\" -.Dd $Mdocdate: June 13 2018 $ +.Dd $Mdocdate: June 15 2018 $ .Dt SMTPD.CONF 5 .Os .Sh NAME @@ -660,9 +660,9 @@ may use format specifiers which are expanded before delivery or relaying. The following formats are currently supported: .Bl -column %{user.directory} -offset indent -.It %{sender} Ta sender email address -.It %{sender.user} Ta user part of the sender email address -.It %{sender.domain} Ta domain part of the sender email address +.It %{sender} Ta sender email address, may be empty string +.It %{sender.user} Ta user part of the sender email address, may be empty +.It %{sender.domain} Ta domain part of the sender email address, may be empty .It %{rcpt} Ta recipient email address .It %{rcpt.user} Ta user part of the recipient email address .It %{rcpt.domain} Ta domain part of the recipient email address @@ -671,6 +671,7 @@ The following formats are currently supported: .It %{dest.domain} Ta domain part after expansion .It %{user.username} Ta local user .It %{user.directory} Ta home directory of the local user +.It %{mbox.from} Ta name used in mbox From separator lines .It %{mda} Ta mda command, only available for mda wrappers .El .Pp |