
If you are upgrading from a previous version, there is a change in the SQL schemas, please read below. There are no changes in configuration, API commands or hooks.
Contents:
- Changes in SQL schemas
- SASL channel binding changes
- ChangeLog
- Acknowledgments
- Improvements in ejabberd Business Edition
- ejabberd 26.03 download & feedback
Changes in SQL schema
This release adds a new column to the rosterusers table in the SQL database schemas to support roster pre-approval. This task is performed automatically by ejabberd by default.
However, if your configuration file has disabled update_sql_schema toplevel option, you must perform the SQL schema update manually yourself. Those instructions are valid for MySQL, PostgreSQL and SQLite, both default and new schemas:
ALTER TABLE rosterusers ADD COLUMN approved boolean NOT NULL AFTER subscription;
SASL channel binding changes
This version adds the ability to configure the handling of the client flag &aposwanted to use channel-bindings but was not offered one&apos. By default, ejabberd aborts connections that present this flag, as this could indicate the presence of a rogue MITM proxy between the server and the client that strips the exchanged data of information required for this.
This can cause problems for servers that use a proxy server which terminates the TLS connection (i.e. there is a MITM proxy, but it is approved by the server administrator). To handle this situation, we have added code to ignore this flag if the server administrator disables channel binding handling by disabling the -PLUS authentication mechanisms in the configuration file:
disable_sasl_mechanisms:
- SCRAM-SHA-1-PLUS
- SCRAM-SHA-256-PLUS
- SCRAM-SHA-512-PLUS
We also ignore this flag for SASL2 connections if offered authentication methods filtered by available user passwords did disable all -PLUS mechanisms.
ChangeLog
Core
- Fix MySQL authentication for TLS connections that required auth plugin switch
- Improve handling of scram &aposwanted to use channel-bindings but was not offered one&apos flag
- Add ability for mod_options values to depend on other options
- Don&apost fail to classify stand-alone chat states
- Fix some warnings compiling with Erlang/OTP 29 (#4527)
ejabberd_ctl: Document how to set empty lists in ejabberdctl and WebAdminejabberd_http: Add handling ofEtagandIf-Modified-Sinceheaders to files served bymod_http_uploadejabberd_http: Ignore whitespaces at end of host header- SQL: Add ability to mark that column can be null in e_sql_schema
- Tests: Add tests for SASL2
- Tests: Make table cleanup in test more robust
Modules
mod_fast_auth: Offered methods are based on available channel bindingsmod_http_api: Always hide password in log entriesmod_mam: Callstore_mam_messagehook for messages thatuser_mucsub_from_muc_archivewas filtering outmod_mam_sql: Only provide the new XEP-0431fulltextfield, not old customwithtextmod_muc_room: Fix duplicate stanza-id in muc mam responses generated from local history (#4544)mod_muc_room: Fix hook name in commit 7732984 (#4526)mod_pubsub_serverinfo: Don&apost usegen_server:callfor resolving pubsub hostmod_roster: Add support for roster pre-approval (#4512)mod_roster: Fix display of groups in WebAdmin when it&aposs a listmod_roster: in WebAdmin page, first execute SET actions, later GETmod_roster_mnesia: Improve transformation code
mod_invites
- Makefile: Run invites-deps only when files are missing
- Fix path to bootstrap files
- Check at start time the syntax of landing_page option (#4525)
- Send &aposLink&apos http header (#4531)
- Set meta.pre-auth to skip redirect_url if token validated (#4535)
- Many security fixes (#4539)
- Add favicon and change color to match ejabberd branding
- Enable dark mode
- Add support for webchat_url
- Migrate to bootstrap5 and update jquery
- No inline scripts
- Make format csrf token
- Add csrf token to failed post
- Include js/css deps in static dir
- Correct hashes for bootstrap 4.6.2
- Hint at type for landing_page opt
- Many more security fixes (#4538)
- Check CSRF token in register form
- Add integrity hashes to scripts and css
- Comment unused resources
- Add security headers
- Remove debug log of whole query parameters (including pw)
- Don&apost crash on unknown host from http host header
- Make creating invite transactional
- Set overuse limits (#4540)
- Fix broken path when behind proxy with prefix (#4547)
Container and Installers
- Bump Erlang/OTP 28.4.1
- make-binaries: Bump libexpat to 2.7.5
- make-binaries: Bump zlib to 1.3.2
- make-binaries: Enable missing crypto features (#4542)
Translations
- Update Bulgarian translation
- Update Catalan and Spanish translations
- Update Chinese Simplified translation
- Update Czech translation
- Update French translation
- Update German translation
Acknowledgments
We would like to thank the contributions to the source code, documentation, and translation provided for this release by:
- Stefan Strigler for the roster pre-approval feature, sponsored by NLnet
- Stefan Strigler for the improvements in
mod_invites - Holger Weiß for improvements in binary installers
- Mr. EddX for updating the Bulgarian translation
- Sketch6580 for updating the Chinese (Simplified) translation
- ffunk for updating the Czech translation
- Dyxux for updating the French translation
- Stefan Strigler for updating the German translation
And also to all the people contributing in the ejabberd chatroom, issue tracker...
Improvements in ejabberd Business Edition
Customers of the ejabberd Business Edition, in addition to all those improvements and bugfixes, also get the following changes:
- Add p1db backend for mod_auth_fast
- Fix issue when cleaning MAM messages stored in p1db
mod_unreadfixes- Web push fixes
Full Changelog
https://github.com/processone/ejabberd/compare/26.02...26.03
ejabberd 26.03 download & feedback
As usual, the release is tagged in the Git source code repository on GitHub.
The source package and installers are available in ejabberd Downloads page. To check the *.asc signature files, see How to verify ProcessOne downloads integrity.
For convenience, there are alternative download locations like the ejabberd DEB/RPM Packages Repository and the GitHub Release / Tags.
The ecs container image is available in docker.io/ejabberd/ecs and ghcr.io/processone/ecs. The alternative ejabberd container image is available in ghcr.io/processone/ejabberd.
If you consider that you&aposve found a bug, please search or fill a bug report on GitHub Issues.


















