From: Vsevolod Stakhov Date: Tue, 20 Dec 2016 17:39:17 +0000 (+0000) Subject: [Feature] Add own routine to generate a message id X-Git-Tag: 1.5.0~525 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c220a5f224447b6707e7fdab042f51629efcc7ba;p=thirdparty%2Frspamd.git [Feature] Add own routine to generate a message id --- diff --git a/src/libmime/message.c b/src/libmime/message.c index 4b2330ed22..4fdc8ab558 100644 --- a/src/libmime/message.c +++ b/src/libmime/message.c @@ -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; diff --git a/src/libmime/mime_headers.c b/src/libmime/mime_headers.c index 0c47988def..7cfe3112c5 100644 --- a/src/libmime/mime_headers.c +++ b/src/libmime/mime_headers.c @@ -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); +} diff --git a/src/libmime/mime_headers.h b/src/libmime/mime_headers.h index 1310c0b758..06d40c5163 100644 --- a/src/libmime/mime_headers.h +++ b/src/libmime/mime_headers.h @@ -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_ */