ejabberd 21.04

The new ejabberd 21.04 release includes many bugfixes and a few improvements. This release includes minor improvements to fully support Erlang/OTP 24 and Rebar3. At the same time, it maintains support back to the old Erlang/OTP 19.3 and Rebar2.

ejabberd 21.04 released

There are no configuration, hooks or API changes that require attention when upgrading. Nonetheless, there’s a new API command (get_user_subscriptions), a new configure option (--enable-lua), and an improvement in the MySQL database definition.

MySQL database definition improvement

We updated the database definition to fix the “specified key was too long” warnings. By default, the new character set and collation (utf8mb4 and utf8mb4_unicode_ci) will only be used with newly created databases. The existing installations don’t need to convert anything.

However, if you feel like it, after you upgrade to ejabberd 21.04, you can apply the following SQL command to convert your existing MySQL database character set to the latest definition:

alter table push_session convert to character set utf8mb4 collate utf8mb4_unicode_ci;
alter table mqtt_pub convert to character set utf8mb4 collate utf8mb4_unicode_ci;

Windows support

As you may have noticed, the last binary installer for Windows is from a year ago. Since then, the recommended method to install ejabberd on Windows is using the ejabberd Docker image, and we’ve just published two tutorials on how to do it:

ejabberd 21.04 download & feedback

As usual, the release is tagged in the Git source code repository on Github.

The source package and binary installers are available at ejabberd XMPP & MQTT server download page.

If you suspect that you’ve found a bug, please search or fill a bug report on Github.

A detailed list of changes

API Commands

  • add_rosteritem/...: Add argument guards to roster commands
  • get_user_subscriptions: New command for MUC/Sub
  • remove_mam_for_user_with_peer: Fix when removing room archive
  • send_message: Fix bug introduced in ejabberd 21.01
  • set_vcard: Return modules errors

Build and setup

  • Allow ejabberd to be compatible as a dependency for an Erlang project using rebar3
  • CAPTCHA: New question/answer-based CAPTCHA script
  • --enable-lua: new configure option for luerl instead of –enable-tools
  • Remove support for HiPE, it was experimental and Erlang/OTP 24 removes it
  • Update sql_query record to handle the Erlang/OTP 24 compiler reports
  • Updated dependencies to fix Dialyzer warnings


  • CAPTCHA: Update FORM_TYPE from captcha to register
  • LDAP: fix eldap certificate verification
  • MySQL: Fix for “specified key was too long”
  • Translations: updated the Esperanto, Greek, and Japanese translations
  • Websocket: Fix PONG responses


  • mod_block_strangers: If stanza is type error, allow it passing
  • mod_caps: Don’t request roster when not needed
  • mod_caps: Skip reading roster in one more case
  • mod_mam: Remove queryid from MAM fin element
  • mod_mqtt: When deregistering XMPP account, close its MQTT sessions
  • mod_muc: Take in account subscriber’s affiliation when checking access to moderated room
  • mod_muc: Use monitors to track online and hard-killed rooms
  • mod_muc: When occupant is banned, remove his subscriptions too
  • mod_privacy: Make fetching roster lazy
  • mod_pubsub: Don’t fail on PEP unsubscribe
  • mod_pubsub: Fix gen_pubsub_node:get_state return value
  • mod_vcard: Obtain and provide photo type in vCard LDAP

Let us know what you think 💬

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.