summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgilles <gilles@openbsd.org>2018-12-11 08:40:56 +0000
committergilles <gilles@openbsd.org>2018-12-11 08:40:56 +0000
commit7ec3fc38e0188d3836cbbdc49162e8abcfbebf06 (patch)
treec9b2e385733f13d38acf2158f1a9b7592ecd3c47
parentremove unnecessary calls to getsockname() (diff)
downloadwireguard-openbsd-7ec3fc38e0188d3836cbbdc49162e8abcfbebf06.tar.xz
wireguard-openbsd-7ec3fc38e0188d3836cbbdc49162e8abcfbebf06.zip
generate an event when a helo name identifies a link
-rw-r--r--usr.sbin/smtpd/lka.c23
-rw-r--r--usr.sbin/smtpd/lka_report.c9
-rw-r--r--usr.sbin/smtpd/mta_report.c12
-rw-r--r--usr.sbin/smtpd/smtp_report.c12
-rw-r--r--usr.sbin/smtpd/smtp_session.c6
-rw-r--r--usr.sbin/smtpd/smtpd.h7
6 files changed, 63 insertions, 6 deletions
diff --git a/usr.sbin/smtpd/lka.c b/usr.sbin/smtpd/lka.c
index f8fc643bd2e..42ff622b599 100644
--- a/usr.sbin/smtpd/lka.c
+++ b/usr.sbin/smtpd/lka.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: lka.c,v 1.221 2018/12/09 17:37:15 gilles Exp $ */
+/* $OpenBSD: lka.c,v 1.222 2018/12/11 08:40:56 gilles Exp $ */
/*
* Copyright (c) 2008 Pierre-Yves Ritschard <pyr@openbsd.org>
@@ -87,6 +87,7 @@ lka_imsg(struct mproc *p, struct imsg *imsg)
const char *command, *response;
const char *ciphers;
const char *address;
+ const char *heloname;
struct sockaddr_storage ss_src, ss_dest;
int filter_phase;
const char *filter_param;
@@ -440,6 +441,16 @@ lka_imsg(struct mproc *p, struct imsg *imsg)
lka_report_smtp_link_disconnect("smtp-in", tm, reqid);
return;
+ case IMSG_SMTP_REPORT_LINK_IDENTIFY:
+ m_msg(&m, imsg);
+ m_get_time(&m, &tm);
+ m_get_id(&m, &reqid);
+ m_get_string(&m, &heloname);
+ m_end(&m);
+
+ lka_report_smtp_link_identify("smtp-in", tm, reqid, heloname);
+ return;
+
case IMSG_SMTP_REPORT_LINK_TLS:
m_msg(&m, imsg);
m_get_time(&m, &tm);
@@ -558,6 +569,16 @@ lka_imsg(struct mproc *p, struct imsg *imsg)
lka_report_smtp_link_disconnect("smtp-out", tm, reqid);
return;
+ case IMSG_MTA_REPORT_LINK_IDENTIFY:
+ m_msg(&m, imsg);
+ m_get_time(&m, &tm);
+ m_get_id(&m, &reqid);
+ m_get_string(&m, &heloname);
+ m_end(&m);
+
+ lka_report_smtp_link_identify("smtp-out", tm, reqid, heloname);
+ return;
+
case IMSG_MTA_REPORT_LINK_TLS:
m_msg(&m, imsg);
m_get_time(&m, &tm);
diff --git a/usr.sbin/smtpd/lka_report.c b/usr.sbin/smtpd/lka_report.c
index a34da65739f..2839cbbf13d 100644
--- a/usr.sbin/smtpd/lka_report.c
+++ b/usr.sbin/smtpd/lka_report.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: lka_report.c,v 1.11 2018/12/06 16:05:04 gilles Exp $ */
+/* $OpenBSD: lka_report.c,v 1.12 2018/12/11 08:40:56 gilles Exp $ */
/*
* Copyright (c) 2018 Gilles Chehade <gilles@poolp.org>
@@ -110,6 +110,13 @@ lka_report_smtp_link_disconnect(const char *direction, time_t tm, uint64_t reqid
}
void
+lka_report_smtp_link_identify(const char *direction, time_t tm, uint64_t reqid, const char *heloname)
+{
+ report_smtp_broadcast(direction, tm,
+ "link-identify|%016"PRIx64"|%s\n", reqid, heloname);
+}
+
+void
lka_report_smtp_link_tls(const char *direction, time_t tm, uint64_t reqid, const char *ciphers)
{
report_smtp_broadcast(direction, tm,
diff --git a/usr.sbin/smtpd/mta_report.c b/usr.sbin/smtpd/mta_report.c
index 099742c45af..ea14d01c40c 100644
--- a/usr.sbin/smtpd/mta_report.c
+++ b/usr.sbin/smtpd/mta_report.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mta_report.c,v 1.3 2018/12/06 16:05:04 gilles Exp $ */
+/* $OpenBSD: mta_report.c,v 1.4 2018/12/11 08:40:56 gilles Exp $ */
/*
* Copyright (c) 2018 Gilles Chehade <gilles@poolp.org>
@@ -59,6 +59,16 @@ mta_report_link_connect(uint64_t qid, const char *rdns, int fcrdns,
}
void
+mta_report_link_identify(uint64_t qid, const char *identity)
+{
+ m_create(p_lka, IMSG_MTA_REPORT_LINK_IDENTIFY, 0, 0, -1);
+ m_add_time(p_lka, time(NULL));
+ m_add_id(p_lka, qid);
+ m_add_string(p_lka, identity);
+ m_close(p_lka);
+}
+
+void
mta_report_link_tls(uint64_t qid, const char *ssl)
{
m_create(p_lka, IMSG_MTA_REPORT_LINK_TLS, 0, 0, -1);
diff --git a/usr.sbin/smtpd/smtp_report.c b/usr.sbin/smtpd/smtp_report.c
index b932d8b30e4..68fe959bc7d 100644
--- a/usr.sbin/smtpd/smtp_report.c
+++ b/usr.sbin/smtpd/smtp_report.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: smtp_report.c,v 1.7 2018/12/06 16:05:04 gilles Exp $ */
+/* $OpenBSD: smtp_report.c,v 1.8 2018/12/11 08:40:56 gilles Exp $ */
/*
* Copyright (c) 2018 Gilles Chehade <gilles@poolp.org>
@@ -59,6 +59,16 @@ smtp_report_link_connect(uint64_t qid, const char *rdns, int fcrdns,
}
void
+smtp_report_link_identify(uint64_t qid, const char *identity)
+{
+ m_create(p_lka, IMSG_SMTP_REPORT_LINK_IDENTIFY, 0, 0, -1);
+ m_add_time(p_lka, time(NULL));
+ m_add_id(p_lka, qid);
+ m_add_string(p_lka, identity);
+ m_close(p_lka);
+}
+
+void
smtp_report_link_tls(uint64_t qid, const char *ssl)
{
m_create(p_lka, IMSG_SMTP_REPORT_LINK_TLS, 0, 0, -1);
diff --git a/usr.sbin/smtpd/smtp_session.c b/usr.sbin/smtpd/smtp_session.c
index 0c389cbf042..b7b5b79d22c 100644
--- a/usr.sbin/smtpd/smtp_session.c
+++ b/usr.sbin/smtpd/smtp_session.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: smtp_session.c,v 1.367 2018/12/11 07:57:31 eric Exp $ */
+/* $OpenBSD: smtp_session.c,v 1.368 2018/12/11 08:40:56 gilles Exp $ */
/*
* Copyright (c) 2008 Gilles Chehade <gilles@poolp.org>
@@ -1694,6 +1694,8 @@ smtp_proceed_helo(struct smtp_session *s, const char *args)
(void)strlcpy(s->helo, args, sizeof(s->helo));
s->flags &= SF_SECURE | SF_AUTHENTICATED | SF_VERIFIED;
+ smtp_report_link_identify(s->id, s->helo);
+
smtp_enter_state(s, STATE_HELO);
smtp_reply(s, "250 %s Hello %s [%s], pleased to meet you",
s->smtpname,
@@ -1709,6 +1711,8 @@ smtp_proceed_ehlo(struct smtp_session *s, const char *args)
s->flags |= SF_EHLO;
s->flags |= SF_8BITMIME;
+ smtp_report_link_identify(s->id, s->helo);
+
smtp_enter_state(s, STATE_HELO);
smtp_reply(s, "250-%s Hello %s [%s], pleased to meet you",
s->smtpname,
diff --git a/usr.sbin/smtpd/smtpd.h b/usr.sbin/smtpd/smtpd.h
index dfb8aac8e5d..4ce139640cf 100644
--- a/usr.sbin/smtpd/smtpd.h
+++ b/usr.sbin/smtpd/smtpd.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: smtpd.h,v 1.586 2018/12/11 07:25:57 eric Exp $ */
+/* $OpenBSD: smtpd.h,v 1.587 2018/12/11 08:40:56 gilles Exp $ */
/*
* Copyright (c) 2008 Gilles Chehade <gilles@poolp.org>
@@ -317,6 +317,7 @@ enum imsg_type {
IMSG_SMTP_REPORT_LINK_CONNECT,
IMSG_SMTP_REPORT_LINK_DISCONNECT,
+ IMSG_SMTP_REPORT_LINK_IDENTIFY,
IMSG_SMTP_REPORT_LINK_TLS,
IMSG_SMTP_REPORT_TX_BEGIN,
IMSG_SMTP_REPORT_TX_MAIL,
@@ -335,6 +336,7 @@ enum imsg_type {
IMSG_MTA_REPORT_LINK_CONNECT,
IMSG_MTA_REPORT_LINK_DISCONNECT,
+ IMSG_MTA_REPORT_LINK_IDENTIFY,
IMSG_MTA_REPORT_LINK_TLS,
IMSG_MTA_REPORT_TX_BEGIN,
IMSG_MTA_REPORT_TX_MAIL,
@@ -1341,6 +1343,7 @@ struct io *lka_proc_get_io(const char *);
void lka_report_smtp_link_connect(const char *, time_t, uint64_t, const char *, int,
const struct sockaddr_storage *, const struct sockaddr_storage *);
void lka_report_smtp_link_disconnect(const char *, time_t, uint64_t);
+void lka_report_smtp_link_identify(const char *, time_t, uint64_t, const char *);
void lka_report_smtp_link_tls(const char *, time_t, uint64_t, const char *);
void lka_report_smtp_tx_begin(const char *, time_t, uint64_t, uint32_t);
void lka_report_smtp_tx_mail(const char *, time_t, uint64_t, uint32_t, const char *, int);
@@ -1465,6 +1468,7 @@ const char *mta_relay_to_text(struct mta_relay *);
void mta_report_link_connect(uint64_t, const char *, int,
const struct sockaddr_storage *, const struct sockaddr_storage *);
void mta_report_link_disconnect(uint64_t);
+void mta_report_link_identify(uint64_t, const char *);
void mta_report_link_tls(uint64_t, const char *);
void mta_report_tx_begin(uint64_t, uint32_t);
void mta_report_tx_mail(uint64_t, uint32_t, const char *, int);
@@ -1547,6 +1551,7 @@ void smtp_collect(void);
void smtp_report_link_connect(uint64_t, const char *, int,
const struct sockaddr_storage *, const struct sockaddr_storage *);
void smtp_report_link_disconnect(uint64_t);
+void smtp_report_link_identify(uint64_t, const char *);
void smtp_report_link_tls(uint64_t, const char *);
void smtp_report_tx_begin(uint64_t, uint32_t);
void smtp_report_tx_mail(uint64_t, uint32_t, const char *, int);