The mail has the structure:
* #<Mail::Part:39500, Multipart: false, Headers: <MIME-Version: 1.0>, <Content-Type: text/plain; charset=us-ascii>, <Content-Transfer-Encoding: 7bit>, <Content-Disposition: inline>, <Content-ID: <6958bf289b75c_b28a46298091029@forum-01-app.mail>>>
"___…tor-relays mailing list…"
* #<Mail::Part:39520, Multipart: true, Headers: <Content-Type: multipart/signed; boundary="Sig_/gizYC_1dGsAzUHvksdaMIe2"; micalg=pgp-sha256; protocol="application/pgp-signature">, <Content-Transfer-Encoding: 7bit>>
* #<Mail::Part:39540, Multipart: false, Headers: <Content-Type: text/plain; charset=US-ASCII>, <Content-Transfer-Encoding: quoted-printable>>,
"On 02.01.2026…"
* #<Mail::Part:39560, Multipart: false, Headers: <Content-Type: text/plain; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>>,
""
* #<Mail::Part:39580, Multipart: false, Headers: <Content-Type: text/plain; charset=US-ASCII>, <Content-Transfer-Encoding: quoted-printable>>,
"On 02.01.2026…"
* #<Mail::Part:39600, Multipart: false, Headers: <Content-Type: text/plain; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>>,
""
* #<Mail::Part:39620, Multipart: false, Headers: <Content-Type: text/plain; charset=US-ASCII>, <Content-Transfer-Encoding: quoted-printable>>,
"On 02.01.2026…"
* #<Mail::Part:39640, Multipart: false, Headers: <Content-Type: text/plain; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>>,
""
* #<Mail::Part:39660, Multipart: false, Headers: <Content-Type: text/plain; charset=US-ASCII>, <Content-Transfer-Encoding: quoted-printable>>,
"On 02.01.2026…"
* #<Mail::Part:39680, Multipart: false, Headers: <Content-Type: application/pgp-signature>, <Content-Description: Digitale Signatur von OpenPGP>>,
PGP signature
* #<Mail::Part:39700, Multipart: false, Headers: <Content-Type: application/pgp-signature>, <Content-Transfer-Encoding: 7bit>, <Content-Description: Digitale Signatur von OpenPGP>>,
PGP signature
* #<Mail::Part:39720, Multipart: false, Headers: <Content-Type: application/pgp-signature>, <Content-Transfer-Encoding: 7bit>, <Content-Description: Digitale Signatur von OpenPGP>>]
PGP signature
(yes, there’s three copies of the actual content, blank content, and the PGP signature)
That first text/plain part is added by the mailing list software and looks like this:
_______________________________________________
tor-relays mailing list -- tor-relays@lists.torproject.org
To unsubscribe send an email to tor-relays-leave@lists.torproject.org
that’s what Discourse (really, the mail gem via .text_part) is choosing as the content of the message:
> puts mail.text_part.to_s
MIME-Version: 1.0
Content-Type: text/plain;
charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Content-ID: <6958bf289b75c_b28a46298091029@forum-01-app.mail>
_______________________________________________
tor-relays mailing list -- tor-relays@lists.torproject.org
To unsubscribe send an email to tor-relays-leave@lists.torproject.org
and treated as a blank body with an elided signature.
Were it not for this mostly-blank part added by the mailing list, Discourse would have pulled out the following content for the post:
> We received a court order to preserve the data on the system and were
> forbidden from informing the system owner, which was awkward since
> they had informed the system owner...
Which data did they request?
> Since then I've always run my exit on a separate system on it's own
> IP so if there were a legal demand to turn over "the system" it would
> really only be that system. I'm not a lawyer but I don't think docker
> provides enough isolation for that.
Can they deny you to turn the relay off?
If so, you could then operate a new "system" on another IP.
(elided part below)
On 02.01.2026 18:46 Jon via tor-relays <tor-relays@lists.torproject.org> wrote:
--
kind regards
Marco
Send spam to abfall1767375998@stinkedores.dorfdsl.de
I can’t really find fault with Discourse’s mail handling here - if I were called to apportion blame I’d probably start with the mailing list software for effectively adding blank content at the start. That would be better suited at the end, after the real message.
It would have worked with the Mail gem and would also look better in mail clients - here it is in Thunderbird as originally received:
and my “fixed” version (test-fixed.eml.txt (14.3 KB))
with the mailing list signature at the bottom instead of the top:
If you want to see what would have been picked out for post content for a particular IncomingEmail, you can do the following to check:
Email::Receiver.new(IncomingEmail.find(INCOMING_EMAIL_ID).raw).select_body