Specification & Reference Sheets

ejabberd offers one of the most comprehensive feature sets of any instant messaging servers.

Send by email

ejabberd offers one of the most comprehensive feature sets among instant messaging servers. Built on the robust foundation of the eXtensible Messaging and Presence Protocol (XMPP), it integrates a vast range of XMPP Extension Protocols (XEPs) to support diverse use cases. Additionally, the ejabberd Business Edition (eBE) extends functionality with high-level features tailored for enterprise needs.

This page provides an overview of the supported protocols, extensions, and features, and emphasizes those that are exclusive to ejabberd Business Edition. To help you select the right ejabberd version for your needs, it highlights the key differences between the standard open-source edition and ejabberd Business Edition.

Core XMPP Specifications

RFC Title Description Community Server (eCS) Business Edition (eBE)
RFC-3920 XMPP: Core XMPP Core mechanisms and routing ✔ ✔
RFC-3921 XMPP: Instant Messaging and Presence XMPP IM and presence ✔ ✔
RFC-6120 XMPP: Core XMPP Core mechanisms and routing (update) ✔ ✔
RFC-6121 XMPP: Instant Messaging and Presence XMPP IM and presence (update) ✔ ✔
RFC-6122 XMPP: Address Format Format for user and services addresses ✔ ✔

Common XMPP Extensions

RFC Title Description Community Server (eCS) Business Edition (eBE)
XEP-0004 Data Forms Queries and responses between entities, with forms ✔ ✔
XEP-0012 Last Activity Date of the last activity of an entity before going offline ✔ ✔
XEP-0013 Flexible Offline Message Retrieval Filter offline messages, to prevent storm when reconnecting ✔ ✔
XEP-0016 Privacy Lists Personal rules to prevent spam and abuse, and protect privacy (for example invisibility) ✔ ✔
XEP-0022 Message Events Request and respond to events relating to the delivery, display, and composition of messages ✔ ✔
XEP-0023 Message Expiration Expiry time of offline message ✔ ✔
XEP-0030 Service Discovery To query entity's features and capabilities ✔ ✔
XEP-0033 Extended Stanza Addressing To send messages to multiple recepients, like email's to:, cc: and bcc: lists ✔ ✔
XEP-0039 Statistics Gathering To query statistics of services ✔ ✔
XEP-0045 Multi-User Chat For conferences with multiple users, with a large number of features (privacy, security, invitations, etc.) ✔ ✔
XEP-0048 Bookmarks Store bookmarks to MUC rooms and web pages ✔ ✔
XEP-0049 Private XML Storage For server-side storage of simple XML like config options ✔ ✔
XEP-0050 Ad-Hoc Commands Sequences of forms (like wizards) for automated data exchange (human to machine, machine to machine) ✔ ✔
XEP-0054 vcard-temp For vCards (business cards) storage and queries ✔ ✔
XEP-0055 Jabber Search Forms dedicated to search ✔ ✔
XEP-0059 Result Set Management Paging of large results sets ✔ ✔
XEP-0060 Publish-Subscribe Publish and subscribe pattern applied to XMPP ✔ ✔
XEP-0065 SOCKS5 Bytestreams Relay for file transfers ✔ ✔
XEP-0077 In-band Registration For account creations, from the XMPP client ✔ ✔
XEP-0078 Non-SASL Authentication Authentication method ✔ ✔
XEP-0082 XMPP Date and Time Profiles Standard 08601 for dates ✔ ✔
XEP-0085 Chat State Notifications Typing indicator ✔ ✔
XEP-0086 Error Condition Mappings Error codes definition ✔ ✔
XEP-0092 Software Version Discovery of software release numbers ✔ ✔
XEP-0100 Gateway Interaction Interoperability with private communities : Microsoft MSN/WLM, Yahoo! Messenger, ICQ, AOL IM, IRC, Twitter ✔ ✔
XEP-0106 JID Escaping Ability to use email address as user name ✔ ✔
XEP-0114 Jabber Component Protocol Plugin-like interface for server-side software components ✔ ✔
XEP-0115 Entity Capabilities Discovery of client capabilities ✔ ✔
XEP-0124 Bidirectional-streams Over Synchronous HTTP (BOSH) Long polling technique for web clients (HTTP Binding) ✔ ✔
XEP-0133 Service Administration Server message broadcast and client-side server configuration ✔ ✔
XEP-0138 Stream Compression Limit bandwith consumption used by XMPP protocole ✔ ✔
XEP-0153 vCard-Based Avatars Communicating user avatar information ✔ ✔
XEP-0156 Discovering Alternative XMPP Connection Methods Discover alternative methods of connecting to an XMPP server via Web Host Metadata Link format ✔ ✔
XEP-0157 Contact Addresses for XMPP Services Discover server admin contact detail ✔ ✔
XEP-0158 CAPTCHA Forms Additional security to prevent bot massive operations ✔ ✔
XEP-0160 Best Practices for Handling Offline Messages Best practices to be followed by Jabber/XMPP servers in handling messages sent to recipients who are offline ✔ ✔
XEP-0163 Personal Eventing Protocol Personal events like location, mood, activity, etc. ✔ ✔
XEP-0170 Recommended Order of Stream Feature Negotiation Recommended order for negotiation of XMPP stream features ✔ ✔
XEP-0175 Best Practices for Use of SASL ANONYMOUS Authentication method for user without account ✔ ✔
XEP-0176 Jingle ICE-UDP Transport Method Technique for NAT traversal, see STUN and TURN(VoIP and binary exchanges) ✔ ✔
XEP-0178 Best Practices for Use of SASL EXTERNAL Authentication method ✔ ✔
XEP-0185 Dialback Key Generation and Validation Method for generating and validating the keys used in the XMPP server dialback protocol ✔ ✔
XEP-0191 Simple Communication Blocking Simple messages blocker ✔ ✔
XEP-0198 Stream Management XMPP protocol extension for active management of an XML stream between two XMPP entities ✔ ✔
XEP-0199 XMPP Ping A ping technique specific to XMPP ✔ ✔
XEP-0202 Entity Time To query one's entity local time ✔ ✔
XEP-0203 Delayed Delivery Offline message timestamp ✔ ✔
XEP-0205 Best Practices to Discourage Denial of Service Attacks Best Practices to Discourage Denial of Service Attacks plus other protection mechanisms ✔ ✔
XEP-0206 XMPP Over BOSH For web-based client, long-polling technique ✔ ✔
XEP-0215 External Service Discovery Discovery of extra-services addresses (TURN,...) ✔ ✔
XEP-0220 Server Dialback Workflow to use when dialbacking ✔ ✔
XEP-0223 Persistent Storage of Private Data via PubSub Use PubSub to store private information ✔ ✔
XEP-0227 Portable Import/Export Format for XMPP-IM Servers Import/Export for server data ✔ ✔
XEP-0231 Bits of Binary Lightweight method for including small data in an XMPP stanza ✔ ✔
XEP-0237 Roster Versioning Reduce bandwidth consumption by limiting contact details download ✔ ✔
XEP-0248 PubSub Collection Nodes Broadcast of pubsub event in a network of pubsub interdependent nodes ✔ ✔
XEP-0249 Direct MUC Invitations Method for inviting a contact to a multi-user chat room directly, instead of sending the invitation through the chat room ✔ ✔
XEP-0279 Server IP Check Client can ask server its IP address mostly for VoIP services ✔ ✔
XEP-0280 Message Carbons Send copy of your own messages to other connected resources ✔ ✔
XEP-0288 Bidirectional Server-to-Server Connections Protocol for using server-to-server connections in a bidirectional way such that stanzas are sent and received on the same TCP connection ✔ ✔
XEP-0313 Message Archive Management Protocol to query and control an archive of messages stored on a server ✔ ✔
XEP-0317 Hats More extensible model for roles and affiliations in Multi-User Chat rooms ✔ ✔
XEP-0328 JID Preparation and Validation Service A way for an XMPP entity to request another entity to prepare and validate a given JID ✔ ✔
XEP-0334 Message Processing Hints A way to include hints to entities routing or receiving a message ✔ ✔
XEP-0352 Client State Indication A way for the client to indicate its active/inactive state ✔ ✔
XEP-0355 Namespace Delegation A way for XMPP server to delegate treatments for a namespace to an other entity ✔ ✔
XEP-0356 Privileged Entity A way for XMPP entities to have a privileged access to some other entities data ✔ ✔
XEP-0357 Push Notifications A way for an XMPP servers to deliver information for use in push notifications to mobile and other devices ✔ ✔
XEP-0359 Unique and Stable Stanza IDs Generate unique and stable IDs for messages. ✔ ✔
XEP-0363 HTTP File Upload Protocol to request permissions from another entity to upload a file to a specific path on an HTTP server ✔ ✔
XEP-0368 SRV records for XMPP over TLS Procedure to look up client and server SRV records (for direct TLS connections) in addition to weights/priorities ✔ ✔
XEP-0369 Mediated Information eXchange (MIX) Exchange of information among multiple users through a mediating service ✔ ✔
XEP-0379 XEP-0379: Pre-Authenticated Roster Subscription Facilitate onboarding of new XMPP IM contacts with pre-authenticated roster links ✔ ✔
XEP-0384 OMEMO Encryption End-to-end encryption in one-to-one chats and MUC rooms ✔ ✔
XEP-0386 Bind 2 Ssingle-request replacement for several activities an XMPP client needs to do at startup ✔ ✔
XEP-0388 Extensible SASL Profile Replacement for the SASL profile documented in RFC 6120 which allows for greater extensibility ✔ ✔
XEP-0398 User Avatar to vCard-Based Avatars Conversion Method for using PEP based avatars and vCard based avatars in parallel by having the user’s server do a conversion between the two ✔ ✔
XEP-0401 Ad-hoc Account Invitation Generation Facilitate onboarding for XMPP IM newcomers with invitations to account registration. ✔ ✔
XEP-0402 PEP Native Bookmarks Syntax and storage profile for keeping a list of chatroom bookmarks on the server ✔ ✔
XEP-0405 Mediated Information eXchange (MIX): Participant Server Requirements Specify behaviour of an XMPP server to which MIX Clients connect in order to enable correct operation of these clients in conjunction with a MIX server ✔ ✔
XEP-0410 MUC Self-Ping (Schrödinger's Chat) Allow clients to check whether they are still joined to a chatroom ✔ ✔
XEP-0411 Bookmarks Conversion Method to migrate to PEP based bookmarks without loosing compatibility with client that still use Private XML ✔ ✔
XEP-0421 Anonymous unique occupant identifiers for MUCs Method that allows clients to identify a MUC participant across reconnects and renames ✔ ✔
XEP-0424 Message Retraction Method for indicating that a message should be retracted ✔ ✔
XEP-0425 Moderated Message Retraction Method for groupchat moderators to retract messages of other users ✔ ✔
XEP-0431 Full Text Search in MAM Extend MAM to perform full text searching ✔ ✔
XEP-0440 SASL Channel-Binding Type Capability Allow servers to annouce their supported SASL channel-binding types to clients ✔ ✔
XEP-0441 Message Archive Management Preferences Protocol to control a user's archiving preferences. ✔ ✔
XEP-0445 Pre-Authenticated In-Band Registration Extend In-Band Registration protocol to support invitation tokens. ✔ ✔
XEP-0474 SASL SCRAM Downgrade Protection A way to secure the SASL and SASL2 handshakes against method and channel-binding downgrades ✔ ✔
XEP-0480 SASL Upgrade Tasks A way to upgrade to newer SASL mechanisms using SASL2 tasks ✔ ✔
XEP-0484 Fast Authentication Streamlining Tokens Allow clients fully authenticated stream establishment within a single round-trip ✔ ✔
XEP-0485 PubSub Server Information Data format whereby basic information of an XMPP domain can be expressed and exposed over PubSub ✔ ✔
XEP-0486 MUC Avatars How to publish and retrieve avatars in rooms ✔ ✔

Business-Edition XMPP Extensions

RFC Title Description Community Server (eCS) Business Edition (eBE)
XEP-0020 Feature Negotiation Discovery of component feature ✘ ✔
XEP-0142 Workgroup Queues Enables a user to communicate with a representative of an organization, department, or workgroup ✘ ✔
XEP-0172 User Nickname Nickname metadata ✘ ✔
XEP-0225 Component Connections New protocol to connect components to XMPP servers ✘ ✔
XEP-0256 Last Activity in Presence Method for determining the last time that an XMPP entity was active ✘ ✔

External IETF Specifications (non-XMPP)

RFC Title Description Community Server (eCS) Business Edition (eBE)
RFC-5802 Salted Challenge Response (SCRAM) SASL and GSS-API Mechanism Secure authentication methods SCRAM only
RFC-5766 Session Traversal Utilities for NAT (STUN) Technique for easier binary session parameters negotiation ✔ ✔
RFC-5766 Traversal Using Relays around NAT (TURN) Technique for binary data relay ✘ ✔
RFC-5245 Interactive Connectivity Establishment (ICE) Technique mixing STUN and TURN ✘ ✔
RFC-6455 The WebSocket protocol For web-based clients, real time bidirectional in-browser protocol ✔ ✔

Performance and Scalability

RFC Title Description Community Server (eCS) Business Edition (eBE)
P1-Spec Clustering Unique clustering mode with no single point of failure. This is true active - active service for scalability and fault-tolerance ✔ ✔
P1-Spec Consistent hash clustering Low latency, higher performance clustering method to build large scale platform ✘ ✔

Security

RFC Title Description Community Server (eCS) Business Edition (eBE)
P1-Spec Traffic shapers Comprehensive policy for limiting, managing, and optimizing incoming traffic bandwidth on the server ✔ ✔

Mobile

RFC Title Description Community Server (eCS) Business Edition (eBE)
P1-Spec Out-of-reception state Mechanism to keep connection state on the server side, independently of the current network state ✘ ✔
P1-Spec Fast reconnect ("rebind") Mechanism to reattach to an existing session when mobile is getting reconnected on the network ✘ ✔
P1-Spec GCM & Firebase push Message notification for Android devices ✘ ✔
P1-Spec Apple push Message notification for iOS devices ✘ ✔
P1-Spec Acknowledgements and replay Message reliability: no message can be lost even under network inconsistencies ✘ ✔
P1-Spec End-to-end traceability Message indicator (status: sent, delivered, offline, which server has been reached...) ✘ ✔
P1-Spec Multi-device and archiving Message replication and synchronization across devices ✘ ✔