diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-07-02 11:33:25 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-07-02 11:33:25 +0200 |
commit | 0207fc55ee236d8c57a9896ebd4defc4d55369ce (patch) | |
tree | 32f3db3c75cc4fd65107ceddc7bde5ec8068a919 /common/mailpreprocessor.cpp | |
parent | 7fdd62dad9bbbeaf2d6577f504704e9f1f51477a (diff) | |
download | sink-0207fc55ee236d8c57a9896ebd4defc4d55369ce.tar.gz sink-0207fc55ee236d8c57a9896ebd4defc4d55369ce.zip |
Generate globally unique messageids without leaking the hostname
Diffstat (limited to 'common/mailpreprocessor.cpp')
-rw-r--r-- | common/mailpreprocessor.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/common/mailpreprocessor.cpp b/common/mailpreprocessor.cpp index 3d5dc65..8a00b02 100644 --- a/common/mailpreprocessor.cpp +++ b/common/mailpreprocessor.cpp | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <QDir> | 23 | #include <QDir> |
24 | #include <QTextDocument> | 24 | #include <QTextDocument> |
25 | #include <QGuiApplication> | 25 | #include <QGuiApplication> |
26 | #include <QUuid> | ||
26 | #include <KMime/KMime/KMimeMessage> | 27 | #include <KMime/KMime/KMimeMessage> |
27 | 28 | ||
28 | #include "pipeline.h" | 29 | #include "pipeline.h" |
@@ -113,13 +114,13 @@ void MailPropertyExtractor::updatedIndexedProperties(Sink::ApplicationDomain::Ma | |||
113 | //The rest should never change, unless we didn't have the headers available initially. | 114 | //The rest should never change, unless we didn't have the headers available initially. |
114 | auto messageId = msg->messageID(true)->identifier(); | 115 | auto messageId = msg->messageID(true)->identifier(); |
115 | if (messageId.isEmpty()) { | 116 | if (messageId.isEmpty()) { |
116 | //reuse an existing messageis (on modification) | 117 | //reuse an existing messageid (on modification) |
117 | auto existing = mail.getMessageId(); | 118 | const auto existing = mail.getMessageId(); |
118 | if (existing.isEmpty()) { | 119 | if (existing.isEmpty()) { |
119 | auto tmp = KMime::Message::Ptr::create(); | 120 | auto tmp = KMime::Message::Ptr::create(); |
120 | auto header = tmp->messageID(true); | 121 | //Genereate a globally unique messageid that doesn't leak the local hostname |
121 | header->generate("kube.kde.org"); | 122 | messageId = QString{"<" + QUuid::createUuid().toString().mid(1, 36).remove('-') + "@sink>"}.toLatin1(); |
122 | messageId = header->as7BitString(); | 123 | tmp->messageID(true)->fromUnicodeString(messageId, "utf-8"); |
123 | SinkWarning() << "Message id is empty, generating one: " << messageId; | 124 | SinkWarning() << "Message id is empty, generating one: " << messageId; |
124 | } else { | 125 | } else { |
125 | messageId = existing; | 126 | messageId = existing; |