ejabberd is a high-performance instant messaging server. An instant messaging server allows to transfer presence and status information between users connected to servers and support real-time communications between them.
ejabberd relies on XMPP (eXtensible Messaging and Presence Protocol) a largely-accepted XML protocol standardized by the IETF (The Internet Engineering Task Force). The protocol evolution is handled by the XMPP Standards Foundation (XSF), whose mission is to create the world's best protocols for instant messaging, presence, and other forms of near-real-time communication based on XML.
XMPP protocol main strength is that the protocol is naturally distributed. This means that no unique central server is needed. Instead, organisations can run their own server, each server being able to route message from one user on a given server to another user on another one. This adds the security that was missing to existing public instant messaging systems. Instant messaging with XMPP means that communication between users connected to the same server are kept inside the organisations. Communications between two organisations do not pass through other servers.
XMPP also allows to add gateways, called transports. Those gateways are plugged to an existing XMPP servers and allows its users to communicate with users located on other networks. ejabberd is thus for example compatible with AOL Messenger, ICQ, MSN, et Yahoo Messenger.
Relying on a open protocol allows ejabberd to benefit from a large and dynamic community. Tens of XMPP clients are available and allows clients to connect from nearly all Operating Systems.
ejabberd is a high-performance instant messaging server. It scales naturally to thousands of simultaneous users connected on a single ejabberd node, but it can scale even better by adding more nodes into the ejabberd cluster.
ejabberd cluster feature leads to interesting characteristics:
- A single domain can be served from a cluster of ejabberd server
- Fault-tolerance: When running on a cluster of computers ejabberd database is redundant and keep in sync thanks to a robust distributed transactional database. If a cluster node crash the overall behaviour of the ejabberd domain is not affected and the service is still available.
- Cluster nodes can be added or removed on the fly, without stopping the servers.
ejabberd is one of the most featured XMPP server implementing a very large subset of XMPP Enhancement Proposals (XEPs). ejabberd supports:
- Large XMPP/JEP protocol support (See the Supported protocols list for details).
- Lots of built-in services: Jabber User Directory, Multi-User Chat,IRC transport, Publish and subscribe, HTTP-Polling,...
- Standard-Jabber transport compliance: ejabberd works with various exsting gateways, such as PyAIM-t, PyICQt, PyMSN-t, Yahoo-t, ASP SMS, etc
- Virtual hosting: ejabberd can run several virtual domains from a single ejabberd instance.
- Shared rosters: A special roster can be predefined so that users connected on a given server always have those predefined entries in their contacts list.
- Secure connections: ejabberd supports encryted connections between the clients and the server (It supports STARTTLS, SASL and old SSL)
- External storage support: ejabberd can be plugged to an existing LDAP directory. It can use PostgreSQL database, or other ODBC database, instead of its native distributed database to store its data.
- Discovery support: ejabberd fully supports discovery of features, that can be used to configure services directly for the Instant Messaging client.
- Easy setup: The server runs out of the box and is provided with a web administration console and command-line administration tools. Migration scripts from Jabberd1.4 are provided.
- Distribution and fault-tolerance
- Multi-platform: ejabberd can be run on Microsoft Windows, Linux, MacOSX, Solaris, ... It runs everywhere the Erlang virtual machine is running. Note that you can create heterogenous cluster, i.e. cluster with machine running different Operating Systems.
- Statistics gathering: Statistics can be obtain directly using the XMPP protocol.
- Internationalisation support: Support XMPP XML stream internationalisation and provide multi-lingual web admin interface.
- Full IPv6 support
A more detailled feature list is available from ejabberd community web site.