It's that time again: there's a new Synapse release, fresh out of the oven! Let's take a look at what's inside Synapse 1.64.
introduced a configuration option (
account_threepid_delegates.email) to allow
homeservers to delegate validating the ownership of email addresses to an
external identity server. This validation is used by Synapse when adding an
email address to a Matrix account, or before performing a password reset.
As of Synapse 1.64, this option is deprecated, and Synapse will print a warning if it is used. This is because this option relies on old API endpoints that have since been removed from the Matrix specification.
Synapse can do this validation internally provided it is configured with details
of an SMTP server. Administrators currently relying on
account_threepid_delegates.email should therefore ensure that an SMTP server
is correctly configured, and remove the
option. See the configuration
for more information.
We plan to fully remove this configuration option in Synapse 1.66, which is expected to be released on August 30th.
Note that the equivalent option to validate the ownership of phone numbers
account_threepid_delegates.msisdn) can still be used, though we expect to
deprecate it in a future release of Synapse.
When configuring an SMTP server to use to send out emails to users, server administrators can configure Synapse to use TLS to communicate to that server. Until now, only STARTTLS was supported in this case.
Synapse 1.64 introduces a new
force_tls configuration option in the
will use TLS for the initial connection rather than upgrading via STARTTLS.
See the configuration guide for more information.
A couple of weeks ago, we
memory leak within frozendict, which is
a library that Synapse relies on. This would in turn cause Synapse instances to
slowly leak memory when processing
We highly encourage server administrators who installed Synapse via
upgrade their local version of
frozendict to version 2.3.3 or later, which
includes a fix to this issue. The Docker image
matrixdotorg/synapse and the
Debian packages from
packages.matrix.org already include the updated library.
This version of Synapse introduces support for room version 10! This new room
version enables support for the new
knock_restricted join rule, to allow
knocking into rooms which are otherwise restricted to members of a specific room
(or space). See the Matrix specification about room version
10 for more information.
Additionally, Synapse 1.64 features a new rate limiter to limit the rate of joins to the same room. It is intended as a mitigation against abuse scenarios involving joining a lot of users from different homeservers to a room to then send spam across it. See the configuration guide for more information.
Synapse is a Free and Open Source Software project, and we'd like to extend our thanks to everyone who contributed to this release, including (in no particular order) Beeper, andrewdoh, Thomas Weston, jejo86, villepeh, Jörg Behrmann and Jacek Kuśnierz, as well as anyone helping us make Synapse better by sharing their feedback and reporting issues.
Hey all, it's time for another Synapse release! That's right, Synapse 1.63 is out, let's have a look at it.
Synapse has the ability to report usage statistics to the Matrix.org Foundation (or to another location, if configured to do so). These statistics, such as number of users, number of rooms joined by the server, etc. (they don't feature any identifiable information about users and rooms) help us monitor the health of the public federation.
In this release of Synapse, we have updated our public documentation about this feature to clarify how it works and what exactly is being reported. This documentation can be found right here.
Note that previous documentation and prompts surrounding this feature called it "anonymised" server statistics. This could easily be misinterpreted, as while per-user statistics are not reported, homeserver server names are. We have therefore changed said documentation and prompts to be clearer about what is actually reported.
Note that your homeserver will never report any statistics if the
configuration option is set to
false. Server admins who are curious about
which software is used by the Matrix.org Foundation to record server statistics
can check out panopticon.
This version of Synapse ships with an experimental implementation of MSC3827 which allows filtering public room search results by room type. This feature will enable better discoverability for Matrix Spaces (which are rooms with a specific type, under the hood), as it will enable clients to search specifically for public spaces.
This feature is still experimental as its MSC hasn't completed the MSC process yet, though it is in its final comment period at the time this post is being written. This means a stable implementation will be coming to Synapse very soon, so watch this space!
Synapse 1.63 also includes a new rate limiter to limit invites per issuer. This
rate limiter can be configured using the new
configuration setting, see the
for more information.
See the full changelog for a complete list of changes in this release.
Synapse is a Free and Open Source Software project, and we'd like to extend our thanks to everyone who contributed to this release, including (in no particular order) Beeper, villepeh and Petr Vaněk, as well as anyone helping us make Synapse better by sharing their feedback and reporting issues.
Hey all, Synapse 1.62 is out! Let's have a look inside.
In the past few weeks, the Synapse team has been working with the Matrix.org Trust & Safety team to help module developers build more efficient protections against spam. As a consequence of this work, Synapse 1.62 introduces new ways for modules to communicate the result of actions taken against a specific message or operation through the spam checker module callbacks.
Previously, most spam checker callbacks would be expected to return a boolean
indicating whether a specific operation should be qualified as spam. Starting
from Synapse 1.62, modules are now expected to return either
synapse.module_api.NOT_SPAM (to indicate an action is not spammy), or an error
code that is part of
Note that the previous behaviour is still supported but is now deprecated, and will be removed in a future version of Synapse.
See the upgrade
for a list of the affected callbacks and an example of this change. Note that on
top of the list described there, the
check_event_for_spam callback was also
updated with a similar
in Synapse 1.61.
This release of Synapse includes important performance improvements around syncing, specifically around handling device lists and notifications.
Synapse is a Free and Open Source Software project, and we'd like to extend our thanks to everyone who contributed to this release, including (in no particular order) Beeper, Sami Olmari, Daniel Aloni, Thumbscrew and Hannes Lerchl.
Today we're exceptionally releasing Synapse 1.61.1, which comes as a security release. Server administrators are encouraged to update as soon as possible.
This release fixes a vulnerability with Synapse's URL preview feature. URL previews of some web pages can lead to unbounded recursion, causing the request to either fail, or in some cases crash the running Synapse process.
Homeservers with the
url_preview_enabled configuration option set to
(the default value) are unaffected. Instances with the
configuration option set to
false are also unaffected, as this also disables
the URL preview functionality.
Server administrators who are unable to update Synapse should disable URL
previews by setting
url_preview_enabled: false in their configuration file.
They can also delegate URL preview to a separate, dedicated worker to ensure the
process crashing does not impact other functionality of Synapse.
Please see this security advisory for more information.
Hey everyone! Guess what? Synapse 1.61 is out! Let's have a look at it.
If you are new to Matrix, you might have not heard of the feature referred to as
"groups" or "communities" (depending on the context). This feature allowed
grouping rooms and users to better represent a community, one of which being
+matrix:matrix.org which used to represent the Matrix community. This may
sound similar to Matrix
Spaces, and it would
make sense since Spaces are meant to be a more powerful replacement for groups.
In Synapse 1.56, support for groups was deprecated, with a plan to fully remove it in a later release of Synapse. This has now been done as of Synapse 1.61, and most of the code supporting this feature has now been removed.
Note that this means that administrators of homeservers using workers can remove endpoints related to groups from their reverse proxy configuration. See the upgrade notes for more information.
A common issue we see homeserver administrators struggle with is managing the disk space used by Synapse. A non-negligible part of that disk space usage is dedicated to storing files uploaded by Matrix users, both local and remote.
Up until now Synapse would only provide administrators with limited, manual ways to manage the media store of their homeserver, via the admin API.
As of this release, Synapse now allows administrators to define retention lifetimes for local and remote media. This allows media that hasn't been accessed in a long time to be automatically deleted, therefore freeing up disk space. Server administrators wishing to control media retention more finely can also define different policies for remote and local media.
This feature can be enabled by configuring the
media_retention setting, see
for more information.
This release of Synapse introduces a change in the return value of the
check_event_for_spam spam checker module callback, in order to allow modules
more flexibility in communicating to users why their messages are rejected. This
is part of ongoing improvement works around spam checker callbacks, watch this
space next time for more information!
Synapse is a Free and Open Source Software project, and we'd like to extend our thanks to everyone who contributed to this release, including (in no particular order) Beeper, Dirk Klimpel and Jacek Kuśnierz.
It’s another quarter and therefore another spec release! Matrix 1.2 was released back in February, and while a bit late in the quarter this time around we’ve still got some exciting additions coming to you in this release.
Like last time, the speed of these releases might feel a bit quick for developers: fret not if you’re still working on v1.1 or v1.2 implementations. We’re not expecting that implementations update as soon as a new spec release is published, but rather that the ecosystem gradually update over the course of the next few months. Implementations should be aiming for as close to realtime as they can get though, particularly considering v1.4 is expected to have some large features (more on that later on).
Matrix 1.3 sees 14 MSCs get merged, but we can’t possibly go into detail on them all here. We’ve picked some notable highlights and recommend the full changelog at the bottom for a complete idea of what’s been going on.
It’s no secret that MSC1849-style server-side aggregation of related messages have been in the review backlog for a while. We ended up splitting MSC1849 down into more reviewable chunks like MSC2675, allowing us to finally land the first pieces into Matrix 1.3 today.
In the spec there aren’t currently any defined relationships which make use of aggregations or even the
rel_type described by MSC2674, but we do expect that v1.4 of the spec will have support for at least threads (MSC3440) and edits (MSC2676), filling the gap. For now, we’ve decided that holding aggregations back until v1.4 doesn’t make a lot of sense, so we have launched them into the world as-is for custom relations or for clients & servers to prepare for what’s expected to be coming in v1.4 of the spec.
To further prepare for threads, we’ve also removed some restrictions of rich replies through MSC3676, thus allowing replies to be constructed with non-text messages like images. Check out the new rich replies module for more information.
When we launched restricted rooms in Matrix 1.2 we noted that we forgot to handle a case where someone might want to support both knocking and restricted rooms at the same time. We’ve fixed that with a stop-gap join rule from MSC3787 in room version 10.
knock_restricted join rule allows the room to keep its desire to be restricted whilst also allowing members who do not meet the criteria to knock on the room instead. We’ll likely expand on this sort of mixing of join rules in proposals like MSC3386 down the line, however for now this should cover the gap in support. Next up: figuring out how to make encrypted room history available to these new joiners in a safe way.
Originally planned for this release, MSC3440-style threads are anticipated to be ready for v1.4 (next quarter) with support for notifications and, of course, a whole new way to communicate in a room.
Threads are one of the more complicated features we’ve tried to land in recent history as it has a large impact on a wide variety of the spec: everything from event relationships (fixed in this release) to read receipts to push notifications needs to be worked out to build a system that not only users can understand, but also the developers trying to build it. With this massive surface area we just weren’t comfortable with adding threads to v1.3 as-is, given problems like notifications aren’t yet fully solved.
Alongside threads, we also anticipate that MSC2676-style message editing will be landing in v1.4, finally specifying how to update an event’s contents without having to redact & re-send. Although message editing has been supported for a long time in some clients, we're excited that it will finally become part of the official specification, meaning it can be implemented more widely. Messaging clients are encouraged to give the proposal an early read and possibly even attempt implementation if not already done to help us ensure the system is in a reasonable state for inclusion in the spec, though we do note that feature requests for edits will likely be deferred to a future MSC.
Keep an eye on This Week In Matrix for updates on what v1.4 is expected to include, and how things are progressing.
MSCs are how the spec changes in the way it does - adding, fixing, and maintaining features for the whole ecosystem to use. The blog post can’t cover them all, but that doesn’t make them any less important! Check out the full changelog below, and the Spec Change Proposals page for more information on how these MSCs got merged (hint: they submitted a proposal, which anyone can do - take a look at the Matrix Live episode where Matthew covers the proposal process).
m.megolm.v1.aes-sha2events, and the
m.room_key_requestto-device messages, as per MSC3700. (#1101)
GET /_matrix/client/v3/messagesto allow requesting events from the start or end of the room history, as per MSC3567. (#1002)
knock_restrictedjoin rule in supported room versions, as per MSC3787. (#1099)
m.room.avatarevents is not required. (#987)
typein user-interactive authentication can be omitted. (#989)
Flow informationis explicitly defined when the client-server API is rendered. (#1003)
invitewhere it is not specified in an
matrix-docgithub repository. (#1032)
m.room.message.feedbackper MSC3582. (#1035)
@are in fact reserved. Regressed from #3658. (#1100)
room_idfield from examples of
m.fully_readin room account data. (#3679)
event_matchin push rule conditions. (#3690)
m.login.appservicelogin identifier, instead using
external->leaveare valid transitions. (#3730)
originfield from PDUs. (#998)
matrix-docgithub repository. (#1032)
valid_until_tsis in milliseconds, like other timestamps used in Matrix. (#1055)
X-Matrixsignature validation is the parsed JSON body. (#3727)
No significant changes.
No significant changes.
knock_restrictedjoin rule supported by room version 10 as per MSC3787. (#1099)
m.federateto the authorization rules, as originally intended. (#1103)
No significant changes.