]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
Changed Message-ID headers to include FQDN (Ansgar Burchardt)
authormortenp <none@none>
Sun, 10 Jun 2007 18:05:02 +0000 (04:05 +1000)
committermortenp <none@none>
Sun, 10 Jun 2007 18:05:02 +0000 (04:05 +1000)
ChangeLog
include/strgen.h
src/prepstdreply.c
src/strgen.c

index 225024f95da7f56d71e2f5b2657304cdb67d8609..ac7ef047b7d80d02b9880469cd11b1fb48ff0ef6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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)
index 2438e9cf46b9044b097556d52678b30fecb5fc4b..1e623d14c5ef1fa0098c30b1de133efd7fae04c4 100644 (file)
@@ -34,7 +34,7 @@ char *hostnamestr(void);
 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 */
index a70744596b4739ec49cf2dca11a92e68afcd5500..10c372f990bb2f1a7784ba65a62cab99618778ae 100644 (file)
@@ -160,6 +160,7 @@ char *prepstdreply(const char *listdir, const char *filename, const char *from,
 {
        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 @@ char *prepstdreply(const char *listdir, const char *filename, const char *from,
 
        listaddr = getlistaddr(listdir);
        listdelim = getlistdelim(listdir);
+       listfqdn = genlistfqdn(listaddr);
 
        tmp = mygetline(infd);
        if(strncasecmp(tmp, "Subject:", 8) != 0) {
@@ -192,7 +194,7 @@ char *prepstdreply(const char *listdir, const char *filename, const char *from,
        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 @@ char *prepstdreply(const char *listdir, const char *filename, const char *from,
        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 @@ char *prepstdreply(const char *listdir, const char *filename, const char *from,
        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 @@ char *prepstdreply(const char *listdir, const char *filename, const char *from,
                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 @@ char *prepstdreply(const char *listdir, const char *filename, const char *from,
        fsync(outfd);
        close(outfd);
 
+       myfree(listaddr);
+       myfree(listdelim);
+       myfree(listfqdn);
+
        return retstr;
 }
index 5dc65f39aaefad2645aae86762c975bdf84bfefd..e1d85387ebf9fb92fa4b75fba9e3709e35ebe2b8 100644 (file)
@@ -259,21 +259,14 @@ char *cleanquotedp(const char *qpstr)
        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()