# HG changeset patch # User mortenp # Date 1181498702 -36000 # Node ID 436eea81bc20192545d20db45777b9d0aa5509f5 # Parent 3770bb64ea17527c1993678938abc48cc502c81b Changed Message-ID headers to include FQDN (Ansgar Burchardt) diff -r 3770bb64ea17 -r 436eea81bc20 ChangeLog --- a/ChangeLog Thu May 10 02:59:23 2007 +1000 +++ b/ChangeLog Mon Jun 11 04:05:02 2007 +1000 @@ -1,3 +1,4 @@ + o Changed Message-ID headers to include FQDN (Ansgar Burchardt) o Added support for 'discard' keyword in access rules (Sascha Sommer) 1.2.14 o Updated Danish listtexts (Jesper Lund) diff -r 3770bb64ea17 -r 436eea81bc20 include/strgen.h --- a/include/strgen.h Thu May 10 02:59:23 2007 +1000 +++ b/include/strgen.h Mon Jun 11 04:05:02 2007 +1000 @@ -34,7 +34,7 @@ char *mydirname(const char *path); char *mybasename(const char *path); char *cleanquotedp(const char *qpstr); -char *genmsgid(void); +char *genmsgid(const char *fqdn); char *gendatestr(void); #endif /* STRGEN_H */ diff -r 3770bb64ea17 -r 436eea81bc20 src/prepstdreply.c --- a/src/prepstdreply.c Thu May 10 02:59:23 2007 +1000 +++ b/src/prepstdreply.c Mon Jun 11 04:05:02 2007 +1000 @@ -160,6 +160,7 @@ { int infd, outfd; char *listaddr, *listdelim, *myfrom, *tmp, *subject, *retstr = NULL; + char *listfqdn; char *myreplyto, *myto, *str = NULL, *mydate, *mymsgid; tmp = concatstr(3, listdir, "/text/", filename); @@ -177,6 +178,7 @@ listaddr = getlistaddr(listdir); listdelim = getlistdelim(listdir); + listfqdn = genlistfqdn(listaddr); tmp = mygetline(infd); if(strncasecmp(tmp, "Subject:", 8) != 0) { @@ -192,7 +194,7 @@ myfrom = substitute(from, listaddr, listdelim, tokencount, data); myto = substitute(to, listaddr, listdelim, tokencount, data); mydate = gendatestr(); - mymsgid = genmsgid(); + mymsgid = genmsgid(listfqdn); if(replyto) { myreplyto = substitute(replyto, listaddr, listdelim, @@ -216,7 +218,9 @@ if(outfd < 0) { log_error(LOG_ARGS, "Could not open std mail %s", retstr); myfree(str); + myfree(listaddr); myfree(listdelim); + myfree(listfqdn); return NULL; } @@ -226,7 +230,9 @@ if(writen(outfd, str, strlen(str)) < 0) { log_error(LOG_ARGS, "Could not write std mail"); myfree(str); + myfree(listaddr); myfree(listdelim); + myfree(listfqdn); return NULL; } @@ -238,7 +244,9 @@ myfree(tmp); if(writen(outfd, str, strlen(str)) < 0) { myfree(str); + myfree(listaddr); myfree(listdelim); + myfree(listfqdn); log_error(LOG_ARGS, "Could not write std mail"); return NULL; } @@ -248,5 +256,9 @@ fsync(outfd); close(outfd); + myfree(listaddr); + myfree(listdelim); + myfree(listfqdn); + return retstr; } diff -r 3770bb64ea17 -r 436eea81bc20 src/strgen.c --- a/src/strgen.c Thu May 10 02:59:23 2007 +1000 +++ b/src/strgen.c Mon Jun 11 04:05:02 2007 +1000 @@ -259,21 +259,14 @@ return retstr; } -char *genmsgid() +char *genmsgid(const char *fqdn) { - size_t len = 128; - char *s = mymalloc(len), *retstr; - time_t t; - - t = time(NULL); + char buf[256]; - snprintf(s, len-1, "<%ld-%x-mlmmj-%x@%x.plonk", (long int)t, - random_int(), random_int(), random_int()); + snprintf(buf, sizeof(buf), "Message-ID: <%ld-%d-mlmmj-%x@%s>\n", + (long int)time(NULL), (int)getpid(), random_int(), fqdn); - retstr = concatstr(3, "Message-ID: ", s, ">\n"); - myfree(s); - - return retstr; + return mystrdup(buf); } char *gendatestr()