- Reworked Message-Id: and Received:
authorMatthew Mondor <mmondor@pulsar-zone.net>
Sat, 27 Dec 2008 11:42:13 +0000 (11:42 +0000)
committerMatthew Mondor <mmondor@pulsar-zone.net>
Sat, 27 Dec 2008 11:42:13 +0000 (11:42 +0000)
- stdargs for "unsigned long" now all using %08lX rather than %08X

mmsoftware/mmmail/src/mmsmtpd/mmsmtpd.c
mmsoftware/mmmail/src/mmsmtpd/mmsmtpd.h

index 7902a35..6ad5af2 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mmsmtpd.c,v 1.99 2008/12/26 09:05:20 mmondor Exp $ */
+/* $Id: mmsmtpd.c,v 1.100 2008/12/27 11:42:13 mmondor Exp $ */
 
 /*
  * Copyright (C) 2001-2008, Matthew Mondor
@@ -86,7 +86,7 @@
 
 MMCOPYRIGHT("@(#) Copyright (c) 2001-2007\n\
 \tMatthew Mondor. All rights reserved.\n");
-MMRCSID("$Id: mmsmtpd.c,v 1.99 2008/12/26 09:05:20 mmondor Exp $");
+MMRCSID("$Id: mmsmtpd.c,v 1.100 2008/12/27 11:42:13 mmondor Exp $");
 
 
 
@@ -973,7 +973,7 @@ all_rcpt(clientenv *clenv)
                valid = FALSE;
                reason = RCPT_FLOOD;
                mmsyslog(0, LOGLEVEL,
-                       "%08X Considered flood and rejected (%ld message(s) "
+                       "%08lX Considered flood and rejected (%ld message(s) "
                        "within last %ld minute(s))",
                        clenv->id, LR_POSTS(&hnod->lr), CONF.FLOOD_EXPIRES);
            }
@@ -1473,11 +1473,11 @@ box_filter_allow(clientenv *clenv, const char *toaddr, const char *fromaddr,
 }
 
 
-/* Fills str which should be at least 32 bytes in length with current time */
+/* Fills str which should be at least 38 bytes in length with current time */
 static void
 rfc_time(char *str)
 {
-    /* Thu, 07 Dec 2000 07:36:15 -0000 */
+    /* Thu, 27 Dec 2008 05:54:12 +0000 (UTC) */
     const static char *days[] = {
        "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
     };
@@ -1491,7 +1491,7 @@ rfc_time(char *str)
     secs = time(NULL);
     gtim = gmtime(&secs);
 
-    snprintf(str, 32, "%s, %02d %s %04d %02d:%02d:%02d -0000",
+    snprintf(str, 38, "%s, %02d %s %04d %02d:%02d:%02d +0000 (UTC)",
            days[gtim->tm_wday], gtim->tm_mday, months[gtim->tm_mon],
            gtim->tm_year + 1900, gtim->tm_hour, gtim->tm_min,
            gtim->tm_sec);
@@ -1735,7 +1735,7 @@ endheader:
     ud->header = FALSE;
 
     {
-       char    tline[1024], tdata[32], *cptr, *tptr;
+       char    tline[1024], tdata[64], *cptr, *tptr;
 
        /* Create the headers we consider mendatory if they were not supplied.
         * We append them after all headers that were supplied, this way the
@@ -1750,7 +1750,7 @@ endheader:
        if (!ud->msgid) {
            tptr = cptr;
            iso_time(tdata);
-           cptr += snprintf(cptr, 1023, "Message-Id: <%s.%08lX-%lu@%s>\r\n",
+           cptr += snprintf(cptr, 1023, "Message-Id: <%s.%08lX%02lX@%s>\r\n",
                    tdata, ud->clenv->id, ud->clenv->messages,
                    ud->clenv->iface->hostname);
            ud->h_id = mmstrdup(&tptr[12]);
@@ -1758,7 +1758,8 @@ endheader:
        }
        if (!ud->date) {
            rfc_time(tdata);
-           cptr += snprintf(cptr, 1023 - (cptr - tline), "Date: %s\r\n", tdata);
+           cptr += snprintf(cptr, 1023 - (cptr - tline), "Date: %s\r\n",
+                   tdata);
        }
        if (!ud->from) {
            tptr = cptr;
@@ -1836,32 +1837,32 @@ do_data(clientenv *clenv)
     /* Map results to DATA suitable ones */
     switch (res) {
     case FDBRB_MEM:
-       mmsyslog(0, LOGLEVEL, "%08X * Out of memory", clenv->id);
+       mmsyslog(0, LOGLEVEL, "%08lX * Out of memory", clenv->id);
        err = DATA_INTERNAL;
        REGISTER_ERROR(clenv);
        break;
     case FDBRB_OVERFLOW:
-       mmsyslog(0, LOGLEVEL, "%08X * Message size too large", clenv->id);
+       mmsyslog(0, LOGLEVEL, "%08lX * Message size too large", clenv->id);
        err = DATA_OVERFLOW;
        REGISTER_ERROR(clenv);
        break;
     case FDBRB_TIMEOUT:
-       mmsyslog(0, LOGLEVEL, "%08X * Input timeout", clenv->id);
+       mmsyslog(0, LOGLEVEL, "%08lX * Input timeout", clenv->id);
        if (CONF.STATFAIL_TIMEOUT)
            mmstat(&clenv->pstat, STAT_UPDATE, 1, "mmsmtpd|failed|timeout|%s",
                    clenv->c_ipaddr);
        err = DATA_TIMEOUT;
        break;
     case FDBRB_EOF:
-       mmsyslog(0, LOGLEVEL, "%08X * Unexpected EOF", clenv->id);
+       mmsyslog(0, LOGLEVEL, "%08lX * Unexpected EOF", clenv->id);
        break;
     case CFDBRB_HOPS:
-       mmsyslog(0, LOGLEVEL, "%08X * Too many hops", clenv->id);
+       mmsyslog(0, LOGLEVEL, "%08lX * Too many hops", clenv->id);
        err = DATA_HOPS;
        REGISTER_ERROR(clenv);
        break;
     case CFDBRB_HEADER:
-       mmsyslog(0, LOGLEVEL, "%08X * Forbidden header match", clenv->id);
+       mmsyslog(0, LOGLEVEL, "%08lX * Forbidden header match", clenv->id);
        err = DATA_HEADER;
        REGISTER_ERROR(clenv);
        break;
@@ -1903,13 +1904,16 @@ do_data_received(char *line, size_t len, clientenv *clenv, rcptnode *rnode,
        const char *smtptime)
 {
     (void) snprintf(line, len - 1,
-           "Received: from %s ([%s] HELO=%s)\r\n\tby %s (%s) "
-           "with SMTP\r\n\tid %08lX-%lu for <%s>;\r\n\t%s\r\n",
-           (clenv->c_hostname ? clenv->c_hostname : "(unresolved)"),
-           clenv->c_ipaddr,
+           "Received: from %s (%s [%s%s])\r\n"
+           "\tby %s (%s) with SMTP id %08lX%02lX\r\n"
+           "\tfor <%s>; %s\r\n",
            (clenv->helo != NULL ? clenv->helo : "(unidentified)"),
-           clenv->iface->hostname, DAEMON_VERSION, clenv->id,
-           clenv->messages, rnode->foraddress, smtptime);
+           (clenv->c_hostname != NULL ? clenv->c_hostname : "(unresolved)"),
+           (mm_strchr(clenv->c_ipaddr, ':') != NULL ? "IPv6:" : ""),
+           clenv->c_ipaddr,
+           clenv->iface->hostname, DAEMON_VERSION,
+           clenv->id, clenv->messages,
+           rnode->foraddress, smtptime);
 
     return mm_strlen(line);
 }
@@ -2116,7 +2120,7 @@ static bool
 do_data_file(clientenv *clenv, struct fdbrb_buffer *fdbrb,
     struct validate_udata *ud)
 {
-    char       smtptime[32], recvline[1024];
+    char       smtptime[64], recvline[1024];
     rcptnode   *rnode;
     size_t     recvlen;
     bool       ok;
@@ -2376,11 +2380,11 @@ handleclient(unsigned long id, int fd, clientlistnode *clientlnode,
 
     if (clientlnode->hostname != NULL)
        /* Log user's address and hostname */
-       mmsyslog(1, LOGLEVEL, "%08X Connect: [%s] - (%s)", id, ipaddr,
+       mmsyslog(1, LOGLEVEL, "%08lX Connect: [%s] - (%s)", id, ipaddr,
                clientlnode->hostname);
     else
        /* Log user's address only */
-       mmsyslog(1, LOGLEVEL, "%08X Connect: [%s]", id, ipaddr);
+       mmsyslog(1, LOGLEVEL, "%08lX Connect: [%s]", id, ipaddr);
 
     time_start = time(NULL);
 
@@ -2447,7 +2451,7 @@ handleclient(unsigned long id, int fd, clientlistnode *clientlnode,
                        register int (*func)(clientenv *);
 
                        mmsyslog(nod->command->loglevel, LOGLEVEL,
-                               "%08X < %s", id, buffer);
+                               "%08lX < %s", id, buffer);
 
                        if ((func = states[state].functions[nod->index])
                                != NULL) {
@@ -2468,7 +2472,7 @@ handleclient(unsigned long id, int fd, clientlistnode *clientlnode,
                        }
 
                    } else {
-                       mmsyslog(3, LOGLEVEL, "%08X < %s", id, buffer);
+                       mmsyslog(3, LOGLEVEL, "%08lX < %s", id, buffer);
                        reply(fdb, 500, FALSE,
                                "Syntax error or unknown command, type HELP");
                        REGISTER_ERROR(clenv);
@@ -2527,7 +2531,7 @@ handleclient(unsigned long id, int fd, clientlistnode *clientlnode,
     time_end = time(NULL);
     time_total = time_end - time_start;
     mmsyslog(1, LOGLEVEL,
-            "%08X Closed: [%s] - (Seconds: %lu, Data in: %lld out: %lld, "
+            "%08lX Closed: [%s] - (Seconds: %lu, Data in: %lld out: %lld, "
             "RCPTs: %lu, Messages in: %lu, Status: %s)",
             id, ipaddr, time_total, data_in, data_out, rcpt_in,
             messages_in, MMS_RSTRING(dstatus));
index 6d360b1..5f0c295 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mmsmtpd.h,v 1.47 2008/12/26 08:45:11 mmondor Exp $ */
+/* $Id: mmsmtpd.h,v 1.48 2008/12/27 11:42:13 mmondor Exp $ */
 
 /*
  * Copyright (C) 2001-2008, Matthew Mondor
@@ -68,7 +68,7 @@
 
 /* DEFINITIONS */
 #define DAEMON_NAME    "mmsmtpd"
-#define DAEMON_VERSION "mmmail-0.3.0/mmondor"
+#define DAEMON_VERSION "mmmail-0.3.1/mmondor"
 
 /* Negative states are used by the state swapper, others are real states */
 #define STATE_ERROR    -3