]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Feature] Add own routine to generate a message id
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 20 Dec 2016 17:39:17 +0000 (17:39 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 20 Dec 2016 17:39:17 +0000 (17:39 +0000)
src/libmime/message.c
src/libmime/mime_headers.c
src/libmime/mime_headers.h

index 4b2330ed22ecdc1c509a79ca7d5d5345a533d7b3..4fdc8ab55876726e42ed89307ab5559dd5feaafd 100644 (file)
@@ -573,7 +573,7 @@ rspamd_message_from_data (struct rspamd_task *task, const guchar *start,
        part->parsed_data.len = len;
 
        /* Generate message ID */
-       mid = g_mime_utils_generate_message_id ("localhost.localdomain");
+       mid = rspamd_mime_message_id_generate ("localhost.localdomain");
        rspamd_mempool_add_destructor (task->task_pool,
                        (rspamd_mempool_destruct_t) g_free, mid);
        task->message_id = mid;
index 0c47988def336b842f324996af3640c734f887bd..7cfe3112c5604ea792ffd8edb20648ceef06c1fc 100644 (file)
@@ -18,6 +18,7 @@
 #include "smtp_parsers.h"
 #include "mime_encoding.h"
 #include "task.h"
+#include "contrib/libottery/ottery.h"
 
 static void
 rspamd_mime_header_add (struct rspamd_task *task,
@@ -601,3 +602,21 @@ rspamd_mime_header_encode (const gchar *in, gsize len)
 
        return out;
 }
+
+gchar *
+rspamd_mime_message_id_generate (const gchar *fqdn)
+{
+       GString *out;
+       guint64 rnd, clk;
+
+       out = g_string_sized_new (strlen (fqdn) + 22);
+       rnd = ottery_rand_uint64 ();
+       clk = rspamd_get_calendar_ticks () * 1e6;
+
+       rspamd_printf_gstring (out, "%*bs.%*bs@%s",
+                       (gint)sizeof (guint64) - 3, (guchar *)&clk,
+                       (gint)sizeof (guint64), (gchar *)&rnd,
+                       fqdn);
+
+       return g_string_free (out, FALSE);
+}
index 1310c0b758391de0dc2d5bfb87ed1fe28bb6a0d4..06d40c51631dfa9a991e45787cc6d6862df0b578 100644 (file)
@@ -66,4 +66,11 @@ gchar * rspamd_mime_header_decode (rspamd_mempool_t *pool, const gchar *in,
  */
 gchar * rspamd_mime_header_encode (const gchar *in, gsize len);
 
+/**
+ * Generate new unique message id
+ * @param fqdn
+ * @return
+ */
+gchar * rspamd_mime_message_id_generate (const gchar *fqdn);
+
 #endif /* SRC_LIBMIME_MIME_HEADERS_H_ */