Import_mbox.sh funktioniert nicht mit E-Mails von Samsung-Telefonen, die über einen Listserver-Server gesendet wurden

Ein seltsames Problem ist in meinem Testaufbau aufgetreten, bei dem ich E-Mails auf meinen Discourse-Server kopiere und das Skript import_mbox.sh ausführe, um diese E-Mails zu integrieren. Die ursprünglichen E-Mails stammen von einer Mailingliste.

Ich habe festgestellt, dass, wenn Personen Samsung-Telefone benutzen und auf eine frühere E-Mail der Mailingliste antworten, und ich versuche, diese resultierende E-Mail in Discourse zu importieren, der neue Inhalt nicht extrahiert wird, sondern nur eine Duplikat der ursprünglichen E-Mail angezeigt wird, aber so gekennzeichnet ist, als hätte die antwortende Person sie geschrieben.

Wenn ich die problematische Roh-E-Mail in das Feld “Emails/Advanced Test” kopiere und einfüge, ist dasselbe Problem vorhanden. Wenn ich die E-Mail kürze und mehrere von Samsung hinzugefügte Teile entferne, scheint es zu funktionieren.

Ich kann hier keine Kopien der E-Mails einfügen, die dies auslösen, da sie vertraulich sind. E-Mails, die nicht importiert werden, enthalten Abschnitte wie diese (und es gibt keinen menschenlesbaren Inhalt - alles ist in Base64-Kodierung):

[gekürzte Header hier]
Content-Type: multipart/alternative;
	boundary="--_com.samsung.android.email_341310020171250"

----_com.samsung.android.email_341310020171250
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset=UTF-8

VGhlIGxlZ2lzbGF0aW9uI[gekürzt]
[...]
[gekürzt]X19fX19fX19fX18NCg==
----_com.samsung.android.email_341310020171250
Content-Type: multipart/related;
	boundary="--_com.samsung.android.email_341310031317791"

Sie müssen also import_mbox.sh ändern, um die E-Mail zu kürzen und den Samsung-Unsinn zu entfernen.

Es könnte ein Problem sein, das im Kern gelöst werden könnte, da diese Nachrichten wahrscheinlich fehlschlagen, wenn sie per E-Mail verarbeitet werden (aber ich habe den Code in letzter Zeit nicht angesehen, daher weiß ich es nicht). In jedem Fall wird die schnellste Lösung wahrscheinlich darin bestehen, das Importskript für diese Nachrichten zu ändern.

Oder vielleicht erkennt jemand dies als Problem im Kern und behebt es.

1 „Gefällt mir“

Nach weiterer Recherche scheint es, dass die Samsung Mail-App einen Plain-Text-Teil und einen HTML-Teil kodiert, die jeweils in Base64 kodiert sind. Ich habe festgestellt, dass, wenn ich eine Leerzeile zwischen den beiden Kodierungen einfüge, der Mail-Filter korrekt funktioniert. Möglicherweise fügt Samsung keine Leerzeile ein, wo es sollte, oder der Mail-Filter findet den Plain-Text/HTML-Textteil nicht richtig und erkennt nicht, dass er, sobald er den HTML-Teil gefunden hat, weiß, wo der Header davon endet und der Nachrichteninhalt beginnt.

Ich habe versucht, die ursprüngliche E-Mail von Gmail (über Original anzeigen) zu kopieren und dieselbe Nachricht auch aus Thunderbird zu exportieren, mit denselben Ergebnissen.

Von Samsung generierte E-Mails scheinen Folgendes am Ende der Header zu haben:

Content-Type: multipart/alternative;

	boundary="--_com.samsung.android.email_396413402758380"

----_com.samsung.android.email_396413402758380
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset=UTF-8

WWVz[hier steht die base64-kodierte Plain-Text-Nachricht]

und das endet mit

[mehr base64-kodierte Daten hier]19fDQo=
----_com.samsung.android.email_396413402758380
Content-Transfer-Encoding: base64
Content-Type: text/html; charset=UTF-8

PGh0b[erneut base64-Kodierung, diesmal kodiert die HTML-Version derselben Nachricht]

und das endet mit

[mehr base64-kodierte Daten]NCg==
----_com.samsung.android.email_396413402758380--

Wenn ich nun den mittleren Teil ändere, indem ich eine Leerzeile hinzufüge (nach dem Teil “email_396413402758380”), funktioniert alles perfekt!

[mehr base64-kodierte Daten hier]19fDQo=
----_com.samsung.android.email_396413402758380

Content-Transfer-Encoding: base64
Content-Type: text/html; charset=UTF-8

PGh0b[erneut base64-Kodierung, diesmal kodiert die HTML-Version derselben Nachricht]

Deutet dies auf einen Fehler im Importeur hin?

Für mich deutet es auf einen Fehler in Samsungs Mailer hin. Aber ich weiß es nicht, und es spielt keine Rolle, wessen Fehler es ist.

Der einfachste Weg, dies zu beheben, ist jedoch, ein gsub im Import-Skript hinzuzufügen, das die von Ihnen beschriebene Leerzeile hinzufügt.

Es ist wahrscheinlich einfacher, eine Zeile vor Content-Transfer-Encoding: base64 einzufügen.

Hoffentlich wird das nichts anderes kaputt machen.

Aber Gerhard schreibt gerade eine bessere Antwort…

1 „Gefällt mir“

Nun, in diesem Fall würde ich sagen, dass es entweder ein Fehler in der mail gem, die wir zum Parsen von E-Mails verwenden, oder ein Fehler in der Samsung-App ist. Nach kurzem Blick auf die RFCs würde ich sagen, dass es wahrscheinlich ein Fehler im Parser ist.

Könnten Sie vielleicht ein vollständiges Beispiel für eine solche problematische E-Mail bereitstellen? Vielleicht könnten Sie einen der Autoren Ihrer vertraulichen E-Mails bitten, Ihnen eine nicht vertrauliche E-Mail zu senden?

2 „Gefällt mir“

Ich habe versucht, eine E-Mail zu erstellen, indem ich Base64 dekodiert, die Wortwahl geändert und dann wieder kodiert habe, und dabei etwas anderes Interessantes entdeckt.

Das Entfernen eines Leerzeichens mitten in der ursprünglichen Nachricht kann dazu führen, dass die darüber geschriebene Antwort korrekt extrahiert wird.

In diesem Beispiel, in der Mitte der Base64-kodierten HTML-Nachricht, wenn ich eine Zeile finde, die ein [Leerzeichen] vor einem /div enthält, und diese entferne, also ändere

21  20:17  (GMT+00:00) </div><div>To: LIST@LISTS

zu

21  20:17  (GMT+00:00)</div><div>To: LIST@LISTS

durch das Entfernen des [Leerzeichens] vor dem /div, dann wieder in Base64 kodieren und in das Nachrichten-Testfeld in den Admin-Einstellungen einfügen, dann funktioniert der Filter.

Ich könnte eine E-Mail per Direktnachricht senden, wenn das hilft?

Hier ist eine erfundene E-Mail, die meiner Meinung nach das Problem demonstriert. Wenn Sie sich den HTML-Teil ansehen, gibt es eine Antwort auf eine frühere Nachricht. Der Importeur scheint nicht erkennen zu können, wo die ursprüngliche Nachricht begonnen hat.

From someone@gmail
Delivered-To: someone@gmail
Importance: Normal
MIME-Version: 1.0
Message-ID: <E1mt6gg-00H2OV-6N@relay01.mail.eu.clara.net>
Date: Fri, 3 Dec 2021 11:25:05 +0000
From: someone <someone@somewhere.net>
Subject: Re: Example e-mail
To: <LIST@LISTSERV>
In-Reply-To: <007301d7e834$c268a3e0$4739eba0$@sslmc.co.uk>
Precedence: list
Content-Type: multipart/alternative;
	boundary="--_com.samsung.android.email_7076959834053910"

----_com.samsung.android.email_7076959834053910
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset=UTF-8

WWVzIGFuZCB3ZSBhcmUgZ2V0dGluZyBsb3RzIGluIEFCQyBhbmQgdXJnZW50IGNhcmUsIGFsb25n
IHdpdGggdmFjY2luYXRpb24gc2lkZSBlZmZlY3RzIGZyb20gZmx1ICsgYm9vc3Rlci4gQXBwYXJl
bnRseSBERUYxMTEgY2FuJ3QgZGVhbCB3aXRoIHRoaXMgc29ydCBvZiBxdWVyeS4gTG9va2luZyBn
b29kIGZvciBYbWFzIGFuZCBOWSB3ZWVrICAgIDIyMjIKClNhbQoKRHIgU2FtIFNtaXRoeSAKCgot
LS0tLS0tLSBPcmlnaW5hbCBtZXNzYWdlIC0tLS0tLS0tCkZyb206IFNvdXRoIFNvdXRocyBYWVog
PGVucXVpcnlAU1NYWVouQ08uVUs+CkRhdGU6IDAzLzEyLzIwMjEgMTA6NTkgKEdNVCswMDowMCkK
VG86IExJU1RTQExJU1RTRVJWLkFCQy5PUkcuVUsKU3ViamVjdDogZXZlcnl0aGluZyBsYW5kcyBi\nYWNrIGF0IG91ciBkb29yIQoKUHJhY3RpY2VzIHJlcG9ydGluZyB0byBnZXQgIDIgb3IgMyBxdWVy
aWVzL2RheSBmcm9tIHBhdGllbnRzIHJlZ2FyZGluZyBmaXZlcyB2YWNjaW5lIGlzc3VlcyB3aG8g
aGF2ZSBiZWVuIHJlZmVycmVkIHRvIHRoZWlyIEdQIGJ5IFhZWiAxMjMgb3IgdGhlIE5CUy4gIFRo
ZXNlIHF1ZXJpZXMgaW5jbHVkZSBzY2hlZHVsaW5nIGRvc2VzIGZvciBpbW11bm9zdXBwcmVzc2Vk
IHB0cyBhcyB3ZWxsIGFzIHBoYXJtYWNldXRpY2FsIHF1ZXN0aW9ucy4gIA==
----_com.samsung.android.email_7076959834053910
Content-Transfer-Encoding: base64
Content-Type: text/html; charset=UTF-8

PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPjwvaGVhZD48Ym9keSBkaXI9ImF1dG8iPjxkaXYgZGlyPSJh
dXRvIj5ZZXMgYW5kIHdlIGFyZSBnZXR0aW5nIGxvdHMgaW4gQUJDIGFuZCB1cmdlbnQgY2FyZSwg
YWxvbmcgd2l0aCB2YWNjaW5hdGlvbiBzaWRlIGVmZmVjdHMgZnJvbSBmbHUgKyBib29zdGVyLiBB
cHBhcmVudGx5IERFRjExMSBjYW4ndCBkZWFsIHdpdGggdGhpcyBzb3J0IG9mIHF1ZXJ5LiBMb29r
aW5nIGdvb2QgZm9yIFhtYXMgYW5kIE5ZIHdlZWsmbmJzcDsgJm5ic3A7IDIyMjI8L2Rpdj48ZGl2
IGRpcj0iYXV0byI+PGJyPjwvZGl2PjxkaXYgZGlyPSJhdXRvIj5TYW08L2Rpdj48ZGl2IGRpcj0i
YXV0byI+PGJyPjwvZGl2PjxkaXYgaWQ9ImNvbXBvc2VyX3NpZ25hdHVyZSIgZGlyPSJhdXRvIj48
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD1VVEYtOCI+RHIgU2FtIFNtaXRoeSZuYnNwOzwvZGl2PjxkaXYgZGlyPSJhdXRvIj48YnI+PC9k
aXY+PGRpdiBkaXI9ImF1dG8iPjxicj48L2Rpdj48ZGl2IGFsaWduPSJsZWZ0IiBkaXI9ImF1dG8i
IHN0eWxlPSJmb250LXNpemU6MTAlO2NvbG9yOiMzMDAwMDAwIj48ZGl2Pi0tLS0tLS0tIE9yaWdpbmFs
IG1lc3NhZ2UgLS0tLS0tLS08L2Rpdj48ZGl2PkZyb206IFNvdXRoIFNvdXRocyBYWZeroJmx0O2Vu
cXVpcnlAU1NYWVouQ08uVUsmZ3Q7IDwvZGl2PjxkaXY+RGF0ZTogMDMvMTIvMjAyMSAxMDo1OSAg
KEdNVCswMDowMCkgPC9kaXY+PGRpdi5UbzogTElTVEhTTEk1VFNFUlYuQUJDLk9SRy5VSyA8L2Rk
aXY+PGRpdj5TdWJqZWN0OiBldmVyeXRoaW5nIGxhbmRzIGJhY2sgYXQgb3VyIGRvb3IhIDwvZGl2
PjxkaXY+PGJyPjwvZGl2PjwvZGl2PGRpdiBjbGFzcz0iV29yZFNlY3Rpb24xIj48cCBjbGFzcz0i
TXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Jm5ic3A7QXJpYWwmbmJzcDskcXVv
dDtzYW5zLXNlcmlmJnF1b3Q7Ij5QcmFjdGljZXM3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3
MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3MjA3

Dieses Problem scheint auch Nachrichten von anderen Mailclients zu betreffen, wie ich jetzt feststelle. Ich kann die E-Mails, die die Fehler verursachen, nicht öffentlich posten, damit alle sie ansehen können, wäre aber gerne bereit, sie jemandem privat zu zeigen.

Meine aktuelle Einrichtung ist, dass ich Discourse auf einem Heimserver installiert habe. E-Mails an eine Mailingliste werden an mich gesendet (was an ein Gmail-Konto geht). Wenn ein „An:“-Filter mit dem Namen der Mailingliste übereinstimmt, habe ich Gmail so eingestellt, dass eine Kopie der E-Mail an mailinglist@mydiscoursedomain.org.uk weitergeleitet wird. Discourse hat eine Kategorie, die so eingestellt ist, dass sie eine Mailingliste spiegelt, die nach dieser E-Mail sucht.

Das gleiche Problem tritt auch auf, wenn ich das Skript import_mbox.sh verwende, nachdem ich E-Mails manuell kopiert habe. Es muss also der Teil des Codes sein, der nach dem neuen Teil der Nachricht sucht, der durcheinandergerät.

Gibt es eine Möglichkeit, Discourse alle zuvor gespeicherten importierten E-Mails durchlaufen zu lassen und zu versuchen, sie mit dem Plain-Text-Teil der ursprünglichen E-Mails neu zu formatieren, falls dies eine vorübergehende Lösung für das obige Problem darstellt? Vor dem Import war es so eingestellt, dass der HTML-Teil verwendet wurde. Beim Herumschnüffeln mit ‘rails c’ kann ich sehen, dass jeder Beitrag den vollständigen Text der eingehenden Nachrichten zu enthalten scheint (einschließlich E-Mail-Header). Ich habe versucht, ‘rake posts:rebuild’ auszuführen, nachdem ich die HTML-Option deaktiviert hatte, und während er sich langsam durch alle Nachrichten arbeitet, bin ich mir nicht sicher, ob sich etwas geändert hat. Ich habe zum Beispiel versucht, die Option “Trimmed Content anzeigen” ein- und auszuschalten, aber das kleine Kästchen mit den drei Punkten scheint nach Abschluss des Rake-Vorgangs immer noch bei den Beiträgen vorhanden zu sein.