Hello, I've come up with a simple patch to change the generated
Message-IDs. Currently they're like:
{UNIX-time}.{Evolution PID}.{Mail Counter since Evolution
Start}@{Machine Name}

I've simply taken it, computed the SHA512, put it in BASE64 and then I
append @evolution.gnome.org

Message-id:
<alo-zywa3vbqywsp0a8fb3qzu-2r36dmqn7dxtpyvq9vbsoslp0urdkwy9ceyt654zmgbj_byk19gt-3czm...@evolution.gnome.org>

Comments, critics or simple rejection are welcome. Feel free to change
or improve the patch, which is GPL'd.

I've worked on gnome-2-32 branch.

Have a nice day!
venom00


diff --git a/camel/camel-mime-utils.c b/camel/camel-mime-utils.c
index 8e51497..952c2af 100644
--- a/camel/camel-mime-utils.c
+++ b/camel/camel-mime-utils.c
@@ -56,6 +56,9 @@
 #endif
 #include "camel-utf8.h"
 
+#include <nss/sechash.h>
+#include <glib.h>
+
 #ifdef G_OS_WIN32
 #ifdef gmtime_r
 #undef gmtime_r
@@ -4398,6 +4401,9 @@ camel_header_msgid_generate (void)
        gint retval;
        struct addrinfo *ai = NULL, hints = { 0 };
        static gchar *cached_hostname = NULL;
+       guchar hash[SHA512_LENGTH];
+       gchar *base64_hash = NULL;
+       gint i = 0;
 
        if (!cached_hostname) {
                retval = gethostname (host, sizeof (host));
@@ -4417,7 +4423,23 @@ camel_header_msgid_generate (void)
        COUNT_LOCK ();
        msgid = g_strdup_printf ("%d.%d.%d.camel@%s", (gint) time (NULL),
getpid (), count++, cached_hostname);
        COUNT_UNLOCK ();
-
+       
+       HASH_HashBuf(HASH_AlgSHA512, hash, (guchar *) msgid, strlen(msgid));
+       g_free(msgid);
+       base64_hash = g_base64_encode(hash, sizeof (hash));
+
+       base64_hash[sizeof(hash)*8/6+1] = '\0';
+       for (i = 0; i < strlen(base64_hash); i++) {
+               if (base64_hash[i] == '/') {
+                       base64_hash[i] = '_';
+               } else if (base64_hash[i] == '+') {
+                       base64_hash[i] = '-';
+               }
+       }
+         
+       msgid = g_strdup_printf ("%s@%s", base64_hash, "evolution.gnome.org");
+       g_free(base64_hash);
+       
        if (ai)
                camel_freeaddrinfo(ai);
 
diff --git a/camel/camel-mime-utils.c b/camel/camel-mime-utils.c
index 8e51497..952c2af 100644
--- a/camel/camel-mime-utils.c
+++ b/camel/camel-mime-utils.c
@@ -56,6 +56,9 @@
 #endif
 #include "camel-utf8.h"
 
+#include <nss/sechash.h>
+#include <glib.h>
+
 #ifdef G_OS_WIN32
 #ifdef gmtime_r
 #undef gmtime_r
@@ -4398,6 +4401,9 @@ camel_header_msgid_generate (void)
 	gint retval;
 	struct addrinfo *ai = NULL, hints = { 0 };
 	static gchar *cached_hostname = NULL;
+	guchar hash[SHA512_LENGTH];
+	gchar *base64_hash = NULL;
+	gint i = 0;
 
 	if (!cached_hostname) {
 		retval = gethostname (host, sizeof (host));
@@ -4417,7 +4423,23 @@ camel_header_msgid_generate (void)
 	COUNT_LOCK ();
 	msgid = g_strdup_printf ("%d.%d.%d.camel@%s", (gint) time (NULL), getpid (), count++, cached_hostname);
 	COUNT_UNLOCK ();
-
+	
+	HASH_HashBuf(HASH_AlgSHA512, hash, (guchar *) msgid, strlen(msgid));
+	g_free(msgid);
+	base64_hash = g_base64_encode(hash, sizeof (hash));
+
+	base64_hash[sizeof(hash)*8/6+1] = '\0';
+	for (i = 0; i < strlen(base64_hash); i++) {
+		if (base64_hash[i] == '/') {
+			base64_hash[i] = '_';
+		} else if (base64_hash[i] == '+') {
+			base64_hash[i] = '-';
+		}
+	}
+	  
+	msgid = g_strdup_printf ("%s@%s", base64_hash, "evolution.gnome.org");
+	g_free(base64_hash);
+	
 	if (ai)
 		camel_freeaddrinfo(ai);
 
_______________________________________________
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers

Reply via email to