From 71db6f4572d44e70ac6c0eba80ed339e6b84b094 Mon Sep 17 00:00:00 2001 From: pfelt Date: Tue, 13 Nov 2007 03:12:13 +0000 Subject: [PATCH] -- round one of fixing up the Received header lines --- src/agents/smtp/smtpd.c | 61 ++++++++++++++++------------------------- 1 file changed, 24 insertions(+), 37 deletions(-) diff --git a/src/agents/smtp/smtpd.c b/src/agents/smtp/smtpd.c index 3a874ef..578dd85 100644 --- a/src/agents/smtp/smtpd.c +++ b/src/agents/smtp/smtpd.c @@ -1249,29 +1249,17 @@ HandleConnection (void *param) } else { snprintf(WithProtocol, 5, "SMTP"); } - - snprintf(Answer, sizeof(Answer), - "Received: from %d.%d.%d.%d (%s%s%s) [%d.%d.%d.%d]\r\n\tby %s with %s (%s %s%s);\r\n\t%s\r\n", - Client->client.conn->socketAddress.sin_addr.s_net, - Client->client.conn->socketAddress.sin_addr.s_host, - Client->client.conn->socketAddress.sin_addr.s_lh, - Client->client.conn->socketAddress.sin_addr.s_impno, - - Client->AuthFrom ? (char *)Client->AuthFrom : "not authenticated", - Client->RemoteHost[0] ? " HELO " : "", - Client->RemoteHost, - - Client->client.conn->socketAddress.sin_addr.s_net, - Client->client.conn->socketAddress.sin_addr.s_host, - Client->client.conn->socketAddress.sin_addr.s_lh, - Client->client.conn->socketAddress.sin_addr.s_impno, - - BongoGlobals.hostname, - WithProtocol, - PRODUCT_NAME, - PRODUCT_VERSION, - Client->client.conn->ssl.enable ? "\r\n\tvia secured & encrypted transport [TLS]" : "", - TimeBuf); + snprintf(Answer, sizeof(Answer), "Received: from %s (%d.%d.%d.%d) by %s\r\n\twith %sSMTP%s%s (bongosmtp Agent); %s\r\n", + Client->RemoteHost, + Client->client.conn->socketAddress.sin_addr.s_net, + Client->client.conn->socketAddress.sin_addr.s_host, + Client->client.conn->socketAddress.sin_addr.s_lh, + Client->client.conn->socketAddress.sin_addr.s_impno, + BongoGlobals.hostname, + (Client->IsEHLO) ? "E" : "", + (Client->client.conn->ssl.enable) ? "S" : "", + (Client->AuthFrom) ? "A" : "", + TimeBuf); NMAPSendCommand(Client->nmap.conn, Answer, strlen(Answer)); /* read all the data to the nmap connection. this function @@ -1680,7 +1668,9 @@ DeliverSMTPMessage (ConnectionStruct * Client, unsigned char *Sender, unsigned int i; BOOL EscapedState = FALSE; unsigned long LastNMAPContact; - unsigned char TimeBuf[80]; + unsigned char TimeBuf[80]; + BOOL ehlo=TRUE; + BOOL tls=FALSE; status = GetAnswer (Client, Reply, sizeof (Reply)); HandleFailure (220); @@ -1700,6 +1690,7 @@ DeliverSMTPMessage (ConnectionStruct * Client, unsigned char *Sender, ConnFlush(Client->remotesmtp.conn); status = GetAnswer (Client, Reply, sizeof (Reply)); HandleFailure (250); + ehlo=FALSE; } else { /* The other server supports ESMTP */ @@ -1722,6 +1713,7 @@ DeliverSMTPMessage (ConnectionStruct * Client, unsigned char *Sender, } ConnFlush(Client->remotesmtp.conn); status = GetAnswer (Client, Reply, sizeof (Reply)); + tls=TRUE; } } @@ -2044,19 +2036,14 @@ DeliverSMTPMessage (ConnectionStruct * Client, unsigned char *Sender, HandleFailure (354); MsgGetRFC822Date(-1, 0, TimeBuf); - snprintf(Answer, sizeof(Answer), "Received: from %d.%d.%d.%d [%d.%d.%d.%d] by %s\r\n\twith NMAP (%s %s); %s\r\n", - Client->client.conn->socketAddress.sin_addr.s_net, - Client->client.conn->socketAddress.sin_addr.s_host, - Client->client.conn->socketAddress.sin_addr.s_lh, - Client->client.conn->socketAddress.sin_addr.s_impno, - Client->client.conn->socketAddress.sin_addr.s_net, - Client->client.conn->socketAddress.sin_addr.s_host, - Client->client.conn->socketAddress.sin_addr.s_lh, - Client->client.conn->socketAddress.sin_addr.s_impno, - BongoGlobals.hostname, - PRODUCT_NAME, - PRODUCT_VERSION, - TimeBuf); + snprintf(Answer, sizeof(Answer), "Received: from %s (%d.%d.%d.%d) by %s\r\n\twith NMAP (bongosmtp Agent); %s\r\n", + BongoGlobals.hostname, /* FIXME: this should eventually refelct the queue agent's ip hostname */ + Client->client.conn->socketAddress.sin_addr.s_net, + Client->client.conn->socketAddress.sin_addr.s_host, + Client->client.conn->socketAddress.sin_addr.s_lh, + Client->client.conn->socketAddress.sin_addr.s_impno, + BongoGlobals.hostname, + TimeBuf); ConnWrite(Client->remotesmtp.conn, Answer, strlen(Answer)); snprintf(Answer, sizeof(Answer), "QRETR %s MESSAGE\r\n", Client->RemoteHost);