summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgilles <gilles@openbsd.org>2018-06-15 08:57:17 +0000
committergilles <gilles@openbsd.org>2018-06-15 08:57:17 +0000
commitfceb4d40e4ff3130159c6e4510281c2d5b3744d5 (patch)
tree2b279d8d623dfe3ab77b714ccdf8f18a5aa8092e
parentRemove BACKWARDS flag here as well. (diff)
downloadwireguard-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.c16
-rw-r--r--usr.sbin/smtpd/parse.y8
-rw-r--r--usr.sbin/smtpd/smtpd.conf.511
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