Article URL: https://piegames.de/dumps/a-week-in-matrix/ Comments URL: https://news.ycombinator.com/item?id=49130295 Points: 67 # Comments: 35

A user accidentally writes in the room of a Matrix space, resulting in every member of that space getting a notification. Matrix spaces are just regular rooms, and the fallback for old clients which don't support spaces is to render them as completely regular chat rooms. On the other side, new clients that do support spaces have very confusing UI when people start chatting in them, because that's not supposed to happen. (Yet, most clients don't adjust the room permissions in spaces to disallow people to chat in there. That would be too easy.) I figure out how to get Element Web to display the space as a regular room in order to inspect it (it's in the devtools), give myself admin permissions and adjust the room's permissions to disallow chatting in the space room. A user reports a spurious ban on the forum, saying they got banned from our Matrix space and have no idea why. A quick Draupnir query for the user handle shows nothing of interest. After some tring around, I query Draupnir for the domain of the user handle instead. Indeed, it finds one entry: Apparently, someone on a moderation list our space is subscribed to banned the user's domain (it looks like it might be a single-user personal instance). I am not in the room !foQLZposNt3iEpkl5O:example.org, which I assume is the policy room from which the ban is coming, and Matrix annoyingly won't tell me its title. But it seems to be public, so I try to join it to find out. My homeserver chokes a little while trying to join me, WARN conduwuit_api::client::sync::v3::joined: timeline for newly joined room is empty, but it then asks another server to backfill the timeline, and then I only have to "clear cache and reload" my client (which will incidentally also mark all my chats as unread, which I'll have to manually clear again afterwards) and I'm in. The room is one of those community-pooled policy rooms, full of messages of type m.policy.rule.user originating from both mods and moderation bots, which ban people and servers with sometimes very explicit usernames. I search for the domain of the affected user, but Element will only search through messages of type m.messages and thus the search comes in blank. The usual workaround for when the search doesn't work is to export the chat as HTML, then grep through it in the hope that the relevant message is in the exported range. Luckily, the room export indeed includes all message types, and grepping for the domain gives me seven hits. It turns out, the homeserver of the affected user accidentally had had open registrations at some point in the past, with the expected consequences. Mystery solved. Getting this info took me roughly 40 minutes. It should have been two at most. Postscriptum: Two weeks later, I get contacted by that user again, they still struggle with being banned. All I can see is that their domain is still on the ban list. I can't find an easy way of making local overrides to the ban list, so there is little we can do but to unsubscribe from the entire ban list, which would potentially expose the entire community to spam and abuse. While onboarding a new person to our Matrix space, they don't seem to be able to see one of the rooms, despite being "suggested" for that space. After them manually joining that room, it does show up in the space's room list. The issue can be reproduced from various accounts on different homeservers.