Planet Jabber

April 11, 2024

Erlang Solutions

Blockchain Tech Deep Dive | Innovating with Erlang and Elixir

We’re back with the latest in our Blockchain series, where we explore in-depth In our first post, we explored the Six Key Principles of Blockchain

In our latest post, we’re making the case for using Erlang,Elixir and the BEAMVM to power your blockchain project.

Blockchain and business needs

Building a robust and scalable blockchain presents many challenges that a research and development team typically needs to address. The often ambitious goals to drive decentralised consensus and governance require unconventional approaches to achieve extra performance and reliability.

Improved Transactions per Second (TPS) is the most common challenge that blockchain-related use cases expose. TPS as the name suggests, is a metric that indicates how quickly a network can execute transactions per second. It is inherently difficult to produce a distributed peer-to-peer (P2P) network that can register transactions into a single data structure.

Guaranteeing consensus while delivering high TPS throughput among a vast number of nodes active on the network is even more challenging. Also, the fact that most public blockchains need to operate in a non-trusted mode requires adequate mechanisms for validation, which implies that contextual data needs to be available on demand. A blockchain should also be able to respond to anomalies such as network connectivity loss, node failure and malicious actors.

All of the above is further complicated by the continuous growth of the blockchain data structure itself, which becomes problematic in terms of storage.

It is clear that, unless businesses are prepared to invest vast amounts of resources, they would benefit from a high-level language and technology that allows them to quickly prototype and amend their code.

The ideal technology should also:

  • Offer a strong network and concurrent capabilities
  • Have technology built with distribution in mind 
  • Offer a friendly paradigm for asynchronous computation
  • Not collapse under heavy load
  • Deliver when traffic exceeds capacity

The Erlang Beam VM (available also in the Elixir syntax) undoubtedly scores high on the above list of desirable features.

Erlang & Elixir’s strengths for blockchain

Fast development

The challenge: Blockchain technology is present in extremely competitive markets. According to Grandview Marketing Analysis report, The global blockchain technology market size was valued at USD 17.46 billion in 2023 and is expected to grow at a compound annual growth rate (CAGR) of 87.7% from 2023 to 2030. 

Grandview Marketing Analysis report

It is critical for organisations operating in them to be able to release new features in time to attract new customers and retain existing ones.

The answer: Both Erlang and Elixir are functional languages, operating at a very high level of abstraction which is ideal for fast prototyping and development of new ideas. By using these languages on top of the Beam VM, developers dramatically increase the speed to market when compared to other lower-level or object-oriented technologies.

Solutions developed in Erlang or Elixir also lead to a significantly smaller code base, which is easier to test and adapt to changes of direction. This is helpful when you proceed to fast prototyping new solutions and when you discover that amendments and upgrades are necessary, which is very typical in blockchain R&D activity. Both languages offer support for unit testing in their standard library. This enables developers to adopt Test Driven approaches ensuring the quality is preserved when modules and libraries get refactored. The common test framework also provides support for distributed tests and can be integrated with Continuous Integration frameworks like Jenkins. Both Erlang and Elixir shells let the programmer flesh out ideas fast and access running nodes for inspection.

Introspection

The challenge: To keep a competitive advantage in a fast-changing market, it is critical for organisations to promptly identify issues and opportunities by extracting relevant information about their running systems so that actions can be taken to upgrade them where appropriate.

The answer: Erlang and Elixir allow connection to an already running system and a status check. This is an extremely useful debugging tool, both in the development and production environment. Statuses of processes can be checked, and deadlocks in the live system can be analysed. Some various metrics and tools can show overload, bottlenecks and other key performance indicators. Enhanced introspection tools such as Erlang Solutions’ Wombat OAM are also helping with the identification of scalability issues when you run performance tests.

Networking

The challenge: Delivering a highly scalable and distributed P2P network is critical for blockchain enterprises. It is important to rely on stable battle-proven network libraries as reliable building blocks for exploiting use case-specific innovative approaches.

The answer: Erlang and Elixir come with strong and easy-to-manage network capabilities. There is a proven record of successful enterprises that rely on the BEAM VM’s networking strengths; including Adroll, WhatsApp, Bleacher Report, Klarna, Bet365 and Ericsson. Most of their use cases have strong analogies with the P2P networking that is required to deliver a distributed blockchain.

Combined with massive concurrency, the networking makes Erlang and Elixir ideal for server applications and means it can handle many clients. The binary and bitstring syntax makes parsing binary protocols particularly easy.

Massively concurrent

The challenge: There is a weakness afflicting Bitcoin and Ethereum where the computation of a block is competitive rather than collaborative. There is the opportunity to drive a collaborative concurrent approach: i.e. via sharding so that each actor can compute a portion of a block.

The answer: The BEAM VM powering Erlang and Elixir provides lightweight processes for applications. These are lightweight so that hundreds of thousands of them can run simultaneously. These processes do not share memory, communication is done over asynchronous messages (unlike goroutines) so there’s no need to synchronise them. The BEAM VM implementation also makes use of all of the available CPUs and cores. This makes Erlang and Elixir ideal for workloads that involve a huge amount of concurrency and consist of mostly independent workflows. This feature is especially useful in addressing the coordinated distribution of portions of work to compute a Merkle Tree of transactions.

High availability and resilience

The challenge: These are the requirements for every type of application and even more so for competitive and highly distributed blockchain networks. The communication and preservation of a state need to be as available as possible to avoid inconsistent states, network forks and disruptions experienced by the users.

The answer: The fault tolerance properties mentioned in the previous paragraph combined with built-in distribution leads to high availability even in cases of hardware malfunction. Erlang and Elixir have the built-in mnesia database system with the ability to replicate data over a cluster of nodes so if one node goes down, the state of the system is not lost.

Erlang and Elixir provide the supervisor pattern to handle errors.

An example of a Supervision Tree, used to build a hierarchical process structure 

Computing is done in multiple processes and if an error occurs and a process crashes, the supervisor is there to handle the situation, restart the computing or take some other measures. This pattern lets the actual code be cleaned as error handling can be implemented elsewhere. As processes are isolated, they do not share memory meaning errors are localised.

Built-in distribution

The challenge: This is highly relevant for trusted or hybrid networks where a central network takes authoritative decisions on top of a broader P2P network. Using the “out of the box” Erlang distribution and proven consistency approaches such as RAFT can be a quick win towards a fast prototype of a blockchain solution.

The answer: Erlang and Elixir provide out-of-the-box tools to run a distributed system. The message-handling functionalities of the system are transparent, so sending a message to a remote process is just as simple as sending it to a local process. There’s no need for convoluted IDLs, naming services or brokers.

Safety and Security

The challenge: Among the security features that both trusted and untrusted blockchain solutions strongly require, is the critical protection of access to the state memory, therefore reducing the exposure to a range of vulnerabilities.

The answer: Erlang and Elixir, just like many high-level languages, do not manipulate memory directly so applications written in Erlang and Elixir are effectively immune to many vulnerabilities like buffer overflows and return-oriented programming. Exploiting these vulnerabilities would require direct access to the memory, but the BEAM VM hides the memory from the application code.

While many business leaders are still trying to figure out how to put the technology to work for maximum ROI, most agree on two things:

  1. Blockchain unlocks vast value potential from optimised business operations.
  2. It’s here to stay.

Unlocking the potential of technology

Talking about blockchain implementation is no longer merely food for thought. Organisations should keep an eye on developments in blockchain tech and start planning how to best use this transformative technology, to unleash trapped value in key operational processes.

It’s clear – blockchain should be on every company’s agenda, regardless of industry.

If you want to start a conversation about engaging us for your project. Just drop the team a line.

The post Blockchain Tech Deep Dive | Innovating with Erlang and Elixir appeared first on Erlang Solutions.

by Erlang Solutions Team at April 11, 2024 09:10

April 07, 2024

The XMPP Standards Foundation

The XMPP Newsletter March 2024

XMPP Newsletter Banner

XMPP Newsletter Banner

The 50th release of the XMPP Newsletter!

This is the 50th release of the XMPP Newsletter since it started in February 2019. We think it is worth to celebrate this achievement and say thanks to all the contributors as well as all our readers! Back at the Summit in Brussels, JC Brand, Nicolas Vérité (Nyco) and Severino Ferrer (S0ul) proposed and initiated the XMPP Newsletter. Since then almost every month there has been a release full of news from the XMPP universe. Hence, we are looking forward to the next releases and invite you to participate in this community effort! We would love to see more contributors as well as more translations of the XMPP Newsletter. Read more about how to help below.

That being said, welcome to the 50th edition of the XMPP Newsletter, great to have you here again! This issue covers the month of March 2024.

XSF Announcements

Welcome to our reapplicants and new members in Q1 2024! If you are interested to join the XMPP Standards Foundation as member, please apply now.

XMPP and Google Summer of Code 2024

The XSF has been accepted as a hosting organisation at GSoC in 2024 again! Currently XMPP project mentors are reviewing the proposals. GSoC project ideas from XMPP-related projects are:

XSF and Google Summer of Code 2024

XSF and Google Summer of Code 2024

XSF Fiscal Hosting Projects

The XSF offers fiscal hosting for XMPP projects. Please apply via Open Collective. For more information, see the announcement blog post. Current projects you can support:

XMPP Events

  • XMPP Italian happy hour [IT]: monthly Italian XMPP web meeting, every third Monday of the month at 7:00 PM local time (online event, with web meeting mode and live streaming).

Talks

  • Last November the Linux Inlaws Podcast hosted Edward and Matt from the XSF Board 2024. The episode has been published recently and can be accessed via archive.org.

Articles

Axel Reimer published an XMPP app decision table. It compares typical instant messaging features of popular XMPP apps and might be a guideline for new users who want to try an XMPP app. The table is available in English and German.

You can now ask all your questions about XMPP Providers in the new support chat. That chat is hosted on an own XMPP server which is set up with the new XMPP Providers Server project. It is a simple, Ansible-based all-in-one server setup that can be used for your own XMPP server as well.

Snikket Hosting is now publicly available! The launch is about providing new ways to get started with Snikket, not replacing the options that are already available. If you are already self-hosting Snikket, or planning to, nothing is changing for you. Though please do donate to support the project, even a little helps!

European Union news:

Software News

Clients and Applications

Servers

Libraries & Tools

  • A new release of go-xmpp 0.1.4.
  • A new release of go-sendxmpp 0.9.0.
  • overpush: A self-hosted, drop-in replacement for Pushover, that uses XMPP as delivery method. It offers the same API for submitting messages, so that existing setups (e.g. Grafana) can continue working and only require changing the API URL. Release article.

Extensions and specifications

The XMPP Standards Foundation develops extensions to XMPP in its XEP series in addition to XMPP RFCs.

Developers and other standards experts from around the world collaborate on these extensions, developing new specifications for emerging practices, and refining existing ways of doing things. Proposed by anybody, the particularly successful ones end up as Final or Active - depending on their type - while others are carefully archived as Deferred. This life cycle is described in XEP-0001, which contains the formal and canonical definitions for the types, states, and processes. Read more about the standards process. Communication around Standards and Extensions happens in the Standards Mailing List (online archive).

Proposed

The XEP development process starts by writing up an idea and submitting it to the XMPP Editor. Within two weeks, the Council decides whether to accept this proposal as an Experimental XEP.

New

  • Version 0.1.0 of XEP-0485 (PubSub Server Information)
    • Promoted to Experimental. (dg)
  • Version 0.1.0 of XEP-0486 (MUC Avatars)
    • Promoted to Experimental (XEP Editor: dg)
  • Version 0.1.0 of XEP-0487 (Host Meta 2 - One Method To Rule Them All)
    • Promoted to Experimental (XEP Editor: dg)
  • Version 0.1.0 of XEP-0488 (MUC Token Invite)
    • Promoted to Experimental (XEP Editor: dg)
  • Version 0.1.0 of XEP-0489 (Reporting Account Affiliations)
    • Promoted to Experimental (XEP Editor: dg)
  • Version 0.1.0 of XEP-0490 (Message Displayed Synchronization)
    • Promoted to Experimental (XEP Editor: dg)

Deferred

If an experimental XEP is not updated for more than twelve months, it will be moved off Experimental to Deferred. If there is another update, it will put the XEP back onto Experimental.

  • No XEPs deferred this month.

Updated

  • Version 1.25.0 of XEP-0001 (XMPP Extension Protocols)
    • Add note that editorial changes do not affect Deferred state (XEP Editor: dg)
  • Version 1.26.0 of XEP-0060 (Publish-Subscribe)
    • Add examples for publishing item without ID (melvo)
  • Version 1.1.1 of XEP-0313 (Message Archive Management)
    • Add XEP-0136 to superseded specifications (gdk)
  • Version 0.5.0 and 0.6.0 of XEP-0333 (Displayed Markers (was: Chat Markers))
    • Remove <received/> to not replicate functionality.
    • Remove <acknowledged/> because it was not implemented in the last 10 years and apparently is not needed.
    • Remove Disco feature. Opting in via <markable/> is enough (dg)
    • Add Business Rule about opportunistic Displayed Markers in 1:1 chats (dg)
  • Version 0.5.0 of XEP-0334 (Message Processing Hints)
    • Incorporate last call feedback from 2017.
    • Differences between this specification and XEP-0079 have been clarified.
    • A note about handling of hints found in error stanzas has been added. (mw)
  • Version 0.4.1 of XEP-0388 (Extensible SASL Profile)
    • Add missing elements to XML Schema
    • Add missing XMPP Registrar Considerations (dg)
  • Version 0.3.0 of XEP-0398 (User Avatar to vCard-Based Avatars Conversion)
    • Add text to explain that both and are valid implementations.
    • Add Security Considerations for both variants (dg)
  • Version 0.4.1 of XEP-0424 (Message Retraction)
    • Fix schema.
    • Add missing for attribute in fallback element (Example 4). (nc)
  • Version of XEP-0425 (Moderated Message Retraction)
    • Remove the dependency on XEP-0422 Message Fastening
    • Rename to ‘Moderated Message Retraction’ and focus only on the retraction use-case
    • Ensure compatibility with clients that only implement XEP-0424
    • Clarify the purpose of the <reason/> element
  • Version 0.3.0 and 0.3.1 of XEP-0447 (Stateless file sharing)
    • Describe how to use for multiple files, with body text, without any source in original message and compatibility with various current deployed protocols. (lmw)
    • Fix example for multiple files. (lmw)

Last Call

Last calls are issued once everyone seems satisfied with the current XEP status. After the Council decides whether the XEP seems ready, the XMPP Editor issues a Last Call for comments. The feedback gathered during the Last Call can help improve the XEP before returning it to the Council for advancement to Stable.

  • XEP-0333: Displayed Markers (was: Chat Markers)
  • XEP-0334: Message Processing Hints
  • XEP-0360: Nonzas (are not Stanzas)
  • XEP-0386: Bind 2
  • XEP-0388: Extensible SASL Profile
  • XEP-0392: Consistent Color Generation

Stable

  • Version 1.0.0 of XEP-0392 (Consistent Color Generation)
    • Accept as Stable as per Council Vote from 2024-03-27. (XEP Editor (dg))

Deprecated

  • No XEP deprecated this month.

Rejected

  • XEP-0360: Nonzas (are not Stanzas)

Spread the news

Please share the news on other networks:

Subscribe to the monthly XMPP newsletter
Subscribe

Also check out our RSS Feed!

Looking for job offers or want to hire a professional consultant for your XMPP project? Visit our XMPP job board.

Newsletter Contributors & Translations

This is a community effort, and we would like to thank translators for their contributions. Volunteers are welcome! Translations of the XMPP Newsletter will be released here (with some delay):

  • English (original): xmpp.org
    • General contributors: Adrien Bourmault (neox), Alexander “PapaTutuWawa”, Arne, cal0pteryx, emus, Federico, Jonas Stein, Kris “poVoq”, Licaon_Kter, Ludovic Bocquet, Mario Sabatino, melvo, MSavoritias (fae,ve), nicola, Simone Canaletti, XSF iTeam
  • French: jabberfr.org and linuxfr.org
    • Translators: Adrien Bourmault (neox), alkino, anubis, Arkem, Benoît Sibaud, mathieui, nyco, Pierre Jarillon, Ppjet6, Ysabeau
  • Italian: notes.nicfab.eu
    • Translators: nicola

Help us to build the newsletter

This XMPP Newsletter is produced collaboratively by the XMPP community. Each month’s newsletter issue is drafted in this simple pad. At the end of each month, the pad’s content is merged into the XSF Github repository. We are always happy to welcome contributors. Do not hesitate to join the discussion in our Comm-Team group chat (MUC) and thereby help us sustain this as a community effort. You have a project and want to spread the news? Please consider sharing your news or events here, and promote it to a large audience.

Tasks we do on a regular basis:

  • gathering news in the XMPP universe
  • short summaries of news and events
  • summary of the monthly communication on extensions (XEPs)
  • review of the newsletter draft
  • preparation of media images
  • translations
  • communication via media accounts

License

This newsletter is published under CC BY-SA license.

April 07, 2024 00:00

April 04, 2024

Ignite Realtime Blog

Smack 4.4.8 released

We are happy to announce the release of Smack 4.4.8, our XMPP-client library for JVMs and Android. For a high-level overview of what’s changed in Smack 4.4.8, check out Smack’s changelog

Smack 4.4.8 contains mostly small fixes. However, we fixed one nasty bug in Smack’s reactor causing an, potentially endless, busy loop. Smack’s new connection infrastrucutre makes heavy use of the reactor, that enables tausands of connections being served by only a handful of threads.

As always, this Smack patchlevel release is API compatible within the same major-minor version series (4.4) and all Smack releases are available via Maven Central.

We would like to use this occasion to point at that Smack now ships with a NOTICE file. Please note that this adds some requirements when using Smack as per the Apache License 2.0. The content of Smack’s NOTICE file can conveniently be retrieved using Smack.getNoticeStream().

1 post - 1 participant

Read full topic

by Flow at April 04, 2024 17:04

Erlang Solutions

A Guide to RabbitMQ

Looking to learn more about the basics of RabbitMQ? This powerful message broker plays a key role in modern, distributed systems. 

This post will break down its fundamentals and highlight its importance in the world of modern, distributed systems.

An introduction to RabbitMQ

RabbitMQ emerged from the need to create a scalable, robust messaging system that was able to handle high volumes of communications between applications, all while maintaining both data and performance. 

It is now a popular open-source messaging broker, with queue software written in Erlang. One of its key strengths is its ability to support and adhere to Application Programming Interface (API) protocols, for example, AMQP, HTTP AND STOMP. 

What are APIs you ask? 

They define the rules and conventions that allow for the interaction and communication of different software. For developers, APIs are the go-between that allows them to access a software or services functionality, without the need for a full understanding of the ins and outs of that particular system. 

In turn, these protocols offer a standard method of transmitting commands and data. The result? Seamless integration and interoperability between different systems.

Let’s circle back to one previously mentioned protocol, the Advanced Message Queuing Protocol or AMQP. This protocol was made to ensure that messages are reliably delivered between applications, no matter where the platform it is running on is located. AMQP has precise rules for the delivery, formatting and confirmation of messages. This ensures that every message sent through an AMQP-based system, like RabbitMQ, reaches its intended location.

Here’s an illustration better explaining the AMQP system:

Source: The Heart of RabbitMQ

What is RabbitMQ used for?

Developers use RabbitMQ to efficiently process high-throughput and reliable background jobs and facilitate the integration and communication between applications. It is also great at managing complex routing to consumers by integrating various applications and services.

RabbitMQ is also a great solution for web servers that require a rapid-request response. It also effectively distributes workloads between workers, handling over 20,000 messages per second. It can manage background jobs and longer-running tasks, for example, PDF conversion and file scanning.

How does RabbitMQ work?

Think of RabbitMQ as a middleman. It collects messages from a producer (publisher) and passes them on to receivers (consumers). Using a messaging queue, it then holds messages until the consumers can process them. 

Here’s a better overview of these core systems:

Producer (publisher)It sends messages to a queue for processing by consumers.
QueueWhere messages are transferred and stored until they can be processed.
Consumer (receiver)It receives messages from queues and uses them for other defined tasks.
ExchangeThe entry point for the messaging broker. It uses routing rules to determine which queues should receive the message.
BrokerA messaging system that stores produced data. Another application can connect to it using specific details, like parameters or connection strings, to receive and use that data.
ChannelChannels offer a lightweight connection to a broker via a shared Transmission Control Protocol (TCP) connection.

Source: RabbitMQ tutorials

Key features of RabbitMQ

As one of the most powerful and flexible messaging systems, RabbitMQ offers several key features, including:

Security: Various security features in RabbitMQ are designed to protect systems from unauthorised access and potential data breaches. With authentication and authorisation support, administrators can control which users or applications have access to certain queues or exchanges. It also supports SSL/TLS encryption, to ensure clear communication between brokers and clients.

Reliability: Reliable message delivery by supporting features, such as message acknowledgement and persistent message storage.

Scalable and fault-tolerant: RabbitMQ provides features for building scalable and fault-tolerant messaging systems. It also supports clustering, whereby adding more nodes to the cluster allows the system to handle higher message volumes. It’s then able to distribute the workload across multiple nodes, making for efficient utilisation of resources. In the case of a node failure, other nodes in the cluster can continue to handle messages without interruption.

Extended features: RabbitMQ is not limited to the AMQP protocol, but is very versatile and can support a host of others, such as MQTT and STOMP.

Enterprise and the Cloud: RabbitMQ is lightweight and easy to deploy on the public as well as private clouds using pluggable authentication authorisation.

Tools and Plugins: RabbitMQ offers a host of tools and plugins, ideal for integration and wider support.

Common use cases for RabbitMQ

We’ve already highlighted the versatility of RabbitMQ in modern distributed systems. With its robust features and flexible architecture, here are some most common use cases:

Legacy applications: RabbitMQ integrates with legacy systems by using available or custom plugins. You can connect consumer apps to legacy apps for example, connecting JMS apps using the Java Message Service (JMS) plug-in and JMS client library. 

Distributed systems: RabbitMQ serves as a messaging infrastructure in distributed systems. It fosters asynchronous communication between different components, facilitating the scalability and decoupling of the system.

IoT applications: When used in Internet of Things (IoT) applications, RabbitMQ can handle the exchange of messages between devices and backend systems, allowing for reliable and efficient communication, control and real-time monitoring of IoT devices.

Chat applications: For real-time communication in chat applications, RabbitMQ manages messaging exchanges between users, facilitating group chat and instant messaging functionalities. 

Task/job queues: RabbitMQ manages task queues and distributes work across multiple workers. This means that tasks are processed efficiently and at scale, reducing bottlenecks and utilising resources. 

Event-driven architectures: RabbitMQ is great for carrying out event-driven architectures.

It allows various system components to respond to events and seamlessly interact with each other. 
Microservices communication: A common use of RabbitMQ is enabling asynchronous and reliable communication between microservices. Messages are delivered, even if some services are unavailable.

To conclude 

As businesses seek to adopt distributed architectures and microservices-based applications, RabbitMQ remains a go-to choice for improved adaptability and seamless integration across systems. If you’d like to discuss how RabbitMQ can improve your applications, get in touch with the Erlang Solutions team.

The post A Guide to RabbitMQ appeared first on Erlang Solutions.

by Erlang Solutions Team at April 04, 2024 12:20

Isode

Harrier 4.0 – New Capabilities

Harrier is our Military Messaging client. It provides a modern, secure web UI that supports SMTP, STANAG 4406 and ACP 127. Harrier allows authorised users to access role-based mailboxes and respond as a role within an organisation rather than as an individual.

You can find out more about Harrier here.

Server Administration and Monitoring

Harrier 4.0 adds a Web interface for server administrators to configure Harrier. Key points:

  • Secure bootstrap
  • Sensible defaulting of parameters to facilitate startup
  • Per domain and global configuration options
  • Security features, including TLS, HSM, S/MIME and Security Labels/Security Policy
  • Full configuration of all Harrier options and capabilities

In addition to configuration, the Web user interface provides a monitoring capability to show server activity and key operational parameters.

UI Enhancements

A number of improvements made to the Harrier UI including:

  • Variable size compose windows, retaining user preferences and stacking multiple windows
  • HTML Message editing:
    • Font bold/italic/underline/colour
    • Lists and Bullets
    • Reply to HTML messages
  • Undo and redo in message editor
  • Organizations in from selection has configurable default and alphabetic sort.
  • Active role shown on browser tab. Facilitates working with multiple roles in different tabs.
  • Extended message search capabilities to include:
    • Filter by precedence
    • Free text search in choice of: body; subject; SIC; action; info; from

Security Enhancements

The following security enhancements added:

  • Per domain S/MIME signing policy (never/if possible/always). Model is administrator choice rather than user selection.
  • Policy control of using S/MIME header signing.
  • Policy choice to alert users to unsigned messages.
  • Policy choice to allow encryption.
  • Policy choice of encryption by enveloping or triple wrap.
  • Message Decrypt on initial access. The primary goal of S/MIME encryption is end to end protection. Some clients leave messages encrypted, which can lead to problems over time if keys become unavailable or are changed. Decryption prevents these issues. Note that for triple wrap, the inner signature is retained.

Other Enhancements

  • Server option to force user confirmation of message send (audit logged). Important in some scenarios to confirm message responsibility.
  • Option to configure multiple address books in different directories.
  • Revalidation of recipients before message release.
  • Timezone option to be Zulu or Local.

by admin at April 04, 2024 11:33

April 01, 2024

ProcessOne

ejabberd 24.02

🚀 Introducing ejabberd 24.02: A Huge Release!

ejabberd 24.02 has just been release and well, this is a huge release with 200 commits and more in the libraries. We’ve packed this update with a plethora of new features, significant improvements, and essential bug fixes, all designed to supercharge your messaging infrastructure.


🌐 Matrix Federation Unleashed: Imagine seamlessly connecting with Matrix servers – it’s now possible! ejabberd breaks new ground in cross-platform communication, fostering a more interconnected messaging universe. We have still some ground to cover and for that we are waiting for your feedback.
🔐 Cutting-Edge Security with TLS 1.3 & SASL2: In an era where security is paramount, ejabberd steps up its game. With support for TLS 1.3 and advanced SASL2 protocols, we increase the overall security for all platform users.
🚀 Performance Enhancements with Bind 2: Faster connection times, especially crucial for mobile network users, thanks to Bind 2 and other performance optimizations.
🔄 User gains better control over on their messages: The new support for XEP-0424: Message Retraction allows users to manage their message history and remove something they posted by mistake.
🔧 Optimized server pings by relying on an existing mechanism coming from XEP-0198
📈 Streamlined API Versioning: Our refined API versioning means smoother, more flexible integration for your applications.
🧩 Enhanced Elixir, Mix and Rebar3 Support

If you upgrade ejabberd from a previous release, please review those changes:

A more detailed explanation of those topics and other features:

Matrix federation

ejabberd is now able to federate with Matrix servers. Detailed instructions to setup Matrix federation with ejabberd will be detailed in another post.

Here is a quick summary of the configuration steps:

First, s2s must be enabled on ejabberd. Then define a listener that uses mod_matrix_gw:

listen:
  -
    port: 8448
    module: ejabberd_http
    tls: true
    certfile: "/opt/ejabberd/conf/server.pem"
    request_handlers:
      "/_matrix": mod_matrix_gw

And add mod_matrix_gw in your modules:

modules:
  mod_matrix_gw:
    matrix_domain: "domain.com"
    key_name: "somename"
    key: "yourkeyinbase64"

Support TLS 1.3, Bind 2, SASL2

Support for XEP-0424 Message Retraction

With the new support for XEP-0424: Message Retraction, users of MAM message archiving can control their message archiving, with the ability to ask for deletion.

Support for XEP-0198 pings

If stream management is enabled, let mod_ping trigger XEP-0198 <r/>equests rather than sending XEP-0199 pings. This avoids the overhead of the ping IQ stanzas, which, if stream management is enabled, are accompanied by XEP-0198 elements anyway.

Update the SQL schema

The table archive has a text column named origin_id (see commit 975681). You have two methods to update the SQL schema of your existing database:

If using MySQL or PosgreSQL, you can enable the option update_sql_schema and ejabberd will take care to update the SQL schema when needed: add in your ejabberd configuration file the line update_sql_schema: true

If you are using other database, or prefer to update manually the SQL schema:

  • MySQL default schema:
ALTER TABLE archive ADD COLUMN origin_id text NOT NULL DEFAULT '';
ALTER TABLE archive ALTER COLUMN origin_id DROP DEFAULT;
CREATE INDEX i_archive_username_origin_id USING BTREE ON archive(username(191), origin_id(191));
  • MySQL new schema:
ALTER TABLE archive ADD COLUMN origin_id text NOT NULL DEFAULT '';
ALTER TABLE archive ALTER COLUMN origin_id DROP DEFAULT;
CREATE INDEX i_archive_sh_username_origin_id USING BTREE ON archive(server_host(191), username(191), origin_id(191));
  • PostgreSQL default schema:
ALTER TABLE archive ADD COLUMN origin_id text NOT NULL DEFAULT '';
ALTER TABLE archive ALTER COLUMN origin_id DROP DEFAULT;
CREATE INDEX i_archive_username_origin_id ON archive USING btree (username, origin_id);
  • PostgreSQL new schema:
ALTER TABLE archive ADD COLUMN origin_id text NOT NULL DEFAULT '';
ALTER TABLE archive ALTER COLUMN origin_id DROP DEFAULT;
CREATE INDEX i_archive_sh_username_origin_id ON archive USING btree (server_host, username, origin_id);
  • MSSQL default schema:
ALTER TABLE [dbo].[archive] ADD [origin_id] VARCHAR (250) NOT NULL;
CREATE INDEX [archive_username_origin_id] ON [archive] (username, origin_id)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON);
  • MSSQL new schema:
ALTER TABLE [dbo].[archive] ADD [origin_id] VARCHAR (250) NOT NULL;
CREATE INDEX [archive_sh_username_origin_id] ON [archive] (server_host, username, origin_id)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON);
  • SQLite default schema:
ALTER TABLE archive ADD COLUMN origin_id text NOT NULL DEFAULT '';
CREATE INDEX i_archive_username_origin_id ON archive (username, origin_id);
  • SQLite new schema:
ALTER TABLE archive ADD COLUMN origin_id text NOT NULL DEFAULT '';
CREATE INDEX i_archive_sh_username_origin_id ON archive (server_host, username, origin_id);

Authentication workaround for Converse.js and Strophe.js

This ejabberd release includes support for XEP-0474: SASL SCRAM Downgrade Protection, and some clients may not support it correctly yet.

If you are using Converse.js 10.1.6 or older, Movim 0.23 Kojima or older, or any other client based in Strophe.js v1.6.2 or older, you may notice that they cannot authenticate correctly to ejabberd.

To solve that problem, either update to newer versions of those programs (if they exist), or you can enable temporarily the option disable_sasl_scram_downgrade_protection in the ejabberd configuration file ejabberd.yml like this:

disable_sasl_scram_downgrade_protection: true

Support for API versioning

Until now, when a new ejabberd release changed some API command (an argument renamed, a result in a different format…), then you had to update your API client to the new API at the same time that you updated ejabberd.

Now the ejabberd API commands can have different versions, by default the most recent one is used, and the API client can specify the API version it supports.

In fact, this feature was implemented seven years ago, included in ejabberd 16.04, documented in ejabberd Docs: API Versioning… but it was never actually used!

This ejabberd release includes many fixes to get API versioning up to date, and it starts being used by several commands.

Let’s say that ejabberd 23.10 implemented API version 0, and this ejabberd 24.02 adds API version 1. You may want to update your API client to use the new API version 1… or you can continue using API version 0 and delay API update a few weeks or months.

To continue using API version 0:
– if using ejabberdctl, use the switch --version 0. For example: ejabberdctl --version 0 get_roster admin localhost
– if using mod_http_api, in ejabberd configuration file add v0 to the request_handlers path. For example: /api/v0: mod_http_api

Check the details in ejabberd Docs: API Versioning.

ejabberd commands API version 1

When you want to update your API client to support ejabberd API version 1, those are the changes to take into account:
– Commands with list arguments
– mod_http_api does not name integer and string results
– ejabberdctl with list arguments
– ejabberdctl list results

All those changes are described in the next sections.

Commands with list arguments

Several commands now use list argument instead of a string with separators (different commands used different separators: ; : \\n ,).

The commands improved in API version 1:
add_rosteritem
oauth_issue_token
send_direct_invitation
srg_create
subscribe_room
subscribe_room_many

For example, srg_create in API version 0 took as arguments:

{"group": "group3",
 "host": "myserver.com",
 "label": "Group3",
 "description": "Third group",
 "display": "group1\\ngroup2"}

now in API version 1 the command expects as arguments:

{"group": "group3",
 "host": "myserver.com",
 "label": "Group3",
 "description": "Third group",
 "display": ["group1", "group2"]}

mod_http_api not named results

There was an incoherence in mod_http_api results when they were integer/string and when they were list/tuple/rescode…: the result contained the name, for example:

$ curl -k -X POST -H "Content-type: application/json" -d '{}' "http://localhost:5280/api/get_loglevel/v0"
{"levelatom":"info"}

Staring in API version 1, when result is an integer or a string, it will not contain the result name. This is now coherent with the other result formats (list, tuple, …) which don’t contain the result name either.

Some examples with API version 0 and API version 1:

$ curl -k -X POST -H "Content-type: application/json" -d '{}' "http://localhost:5280/api/get_loglevel/v0"
{"levelatom":"info"}

$ curl -k -X POST -H "Content-type: application/json" -d '{}' "http://localhost:5280/api/get_loglevel"
"info"

$ curl -k -X POST -H "Content-type: application/json" -d '{"name": "registeredusers"}' "http://localhost:5280/api/stats/v0"
{"stat":2}

$ curl -k -X POST -H "Content-type: application/json" -d '{"name": "registeredusers"}' "http://localhost:5280/api/stats"
2

$ curl -k -X POST -H "Content-type: application/json" -d '{"host": "localhost"}' "http://localhost:5280/api/registered_users/v0"
["admin","user1"]

$ curl -k -X POST -H "Content-type: application/json" -d '{"host": "localhost"}' "http://localhost:5280/api/registered_users"
["admin","user1"]

ejabberdctl with list arguments

ejabberdctl now supports list and tuple arguments, like mod_http_api and ejabberd_xmlrpc. This allows ejabberdctl to execute all the existing commands, even some that were impossible until now like create_room_with_opts and set_vcard2_multi.

List elements are separated with , and tuple elements are separated with :.

Relevant commands:
add_rosteritem
create_room_with_opts
oauth_issue_token
send_direct_invitation
set_vcard2_multi
srg_create
subscribe_room
subscribe_room_many

Some example uses:

ejabberdctl add_rosteritem user1 localhost testuser7 localhost NickUser77l gr1,gr2,gr3 both
ejabberdctl create_room_with_opts room1 conference.localhost localhost public:false,persistent:true
ejabberdctl subscribe_room_many user1@localhost:User1,admin@localhost:Admin room1@conference.localhost urn:xmpp:mucsub:nodes:messages,u

ejabberdctl list results

Until now, ejabberdctl returned list elements separated with ;. Now in API version 1 list elements are separated with ,.

For example, in ejabberd 23.10:

$ ejabberdctl get_roster admin localhost
jan@localhost jan   none    subscribe       group1;group2
tom@localhost tom   none    subscribe       group3

Since this ejabberd release, using API version 1:

$ ejabberdctl get_roster admin localhost
jan@localhost jan   none    subscribe       group1,group2
tom@localhost tom   none    subscribe       group3

it is still possible to get the results in the old syntax, using API version 0:

$ ejabberdctl --version 0 get_roster admin localhost
jan@localhost jan   none    subscribe       group1;group2
tom@localhost tom   none    subscribe       group3

ejabberdctl help improved

ejabberd supports around 200 administrative commands, and probably you consult them in the ejabberd Docs -> API Reference page, where all the commands documentation is perfectly displayed…

The ejabberdctl command-line script already allowed to consult the commands documentation, consulting in real-time your ejabberd server to show you exactly the commands that are available. But it lacked some details about the commands. That has been improved, and now ejabberdctl shows all the information, including arguments description, examples and version notes.

For example, the connected_users_vhost command documentation as seen in the ejabberd Docs site is equivalently visible using ejabberdctl:

$ ejabberdctl help connected_users_vhost
  Command Name: connected_users_vhost

  Arguments: host::binary : Server name

  Result: connected_users_vhost::[ sessions::string ]

  Example: ejabberdctl connected_users_vhost "myexample.com"
           user1@myserver.com/tka
           user2@localhost/tka

  Tags: session

  Module: mod_admin_extra

  Description: Get the list of established sessions in a vhost

Experimental support for Erlang/OTP 27

Erlang/OTP 27.0-rc1 was recently released, and ejabberd can be compiled with it. If you are developing or experimenting with ejabberd, it would be great if you can use Erlang/OTP 27 and report any problems you find. For production servers, it’s recommended to stick with Erlang/OTP 26.2 or any previous version.

In this sense, the rebar and rebar3 binaries included with ejabberd are also updated: now they support from Erlang 24 to Erlang 27. If you want to use older Erlang versions from 20 to 23, there are compatible binaries available in git: rebar from ejabberd 21.12 and rebar3 from ejabberd 21.12.

Of course, if you have rebar or rebar3 already installed in your system, it’s preferable if you use those ones, because probably they will be perfectly compatible with whatever erlang version you have installed.

Installers and ejabberd container image

The binary installers now include the recent and stable Erlang/OTP 26.2.2 and Elixir 1.16.1. Many other dependencies were updated in the installers, the most notable is OpenSSL that has jumped to version 3.2.1.

The ejabberd container image and the ecs container image have gotten all those version updates, and also Alpine is updated to 3.19.

By the way, this container image already had support to run commands when the container starts… And now you can setup the commands to allow them fail, by prepending the character !.

Summary of compilation methods

When compiling ejabberd from source code, you may have noticed there are a lot of possibilities. Let’s take an overview before digging in the new improvements:

  • Tools to manage the dependencies and compilation:
    • Rebar: it is nowadays very obsolete, but still does the job of compiling ejabberd
    • Rebar3: the successor of Rebar, with many improvements and plugins, supports hex.pm and Elixir compilation
    • Mix: included with the Elixir programming language, supports hex.pm, and erlang compilation
  • Installation methods:
    • make install: copies the files to the system
    • make prod: prepares a self-contained OTP production release in _build/prod/, and generates a tar.gz file. This was previously named make rel
    • make dev: prepares quickly an OTP development release in _build/dev/
    • make relive: prepares the barely minimum in _build/relive/ to run ejabberd and starts it
  • Start scripts and alternatives:
    • ejabberdctl with erlang shell: start/foreground/live
    • ejabberdctl with elixir shell: iexlive
    • ejabberd console/start (this script is generated by rebar3 or mix, and does not support ejabberdctl configurable options)

For example:
– the CI dynamic tests use rebar3, and Runtime tries to test all the possible combinations
– ejabberd binary installers are built using: mix + make prod
container images are built using: mix + make prod too, and started with ejabberdctl foreground

Several combinations didn’t work correctly until now and have been fixed, for example:
mix + make relive
mix + make prod/dev + ejabberdctl iexlive
mix + make install + ejabberdctl start/foregorund/live
make uninstall buggy has an experimental alternative: make uninstall-rel
rebar + make prod with Erlang 26

Use Mix or Rebar3 by default instead of Rebar to compile ejabberd

ejabberd uses Rebar to manage dependencies and compilation since ejabberd 13.10 4d8f770. However, that tool is obsolete and unmaintained since years ago, because there is a complete replacement:

Rebar3 is supported by ejabberd since 20.12 0fc1aea. Among other benefits, this allows to download dependencies from hex.pm and cache them in your system instead of downloading them from git every time, and allows to compile Elixir files and Elixir dependencies.

In fact, ejabberd can be compiled using mix (a tool included with the Elixir programming language) since ejabberd 15.04 ea8db99 (with improvements in ejabberd 21.07 4c5641a)

For those reasons, the tool selection performed by ./configure will now be:
– If --with-rebar=rebar3 but Rebar3 not found installed in the system, use the rebar3 binary included with ejabberd
– Use the program specified in option: --with-rebar=/path/to/bin
– If none is specified, use the system mix
– If Elixir not found, use the system rebar3
– If Rebar3 not found, use the rebar3 binary included with ejabberd

Removed Elixir support in Rebar

Support for Elixir 1.1 was added as a dependency in commit 01e1f67 to ejabberd 15.02. This allowed to compile Elixir files. But since Elixir 1.4.5 (released Jun 22, 2017) it isn’t possible to get Elixir as a dependency… it’s nowadays a standalone program. For that reason, support to download old Elixir 1.4.4 as a dependency has been removed.

When Elixir support is required, better simply install Elixir and use mix as build tool:

./configure --with-rebar=mix

Or install Elixir and use the experimental Rebar3 support to compile Elixir files and dependencies:

./configure --with-rebar=rebar3 --enable-elixir

Added Elixir support in Rebar3

It is now possible to compile ejabberd using Rebar3 and support Elixir compilation. This compiles the Elixir files included in ejabberd’s lib/ path. There’s also support to get dependencies written in Elixir, and it’s possible to build OTP releases including Elixir support.

It is necessary to have Elixir installed in the system, and configure the compilation using --enable-elixir. For example:

apt-get install erlang erlang-dev elixir
git clone https://github.com/processone/ejabberd.git ejabberd
cd ejabberd
./autogen.sh
./configure --with-rebar=rebar3 --enable-elixir
make
make dev
_build/dev/rel/ejabberd/bin/ejabberdctl iexlive

Elixir versions supported

Elixir 1.10.3 is the minimum supported, but:
– Elixir 1.10.3 or higher is required to build an OTP release with make prod or make dev
– Elixir 1.11.4 or higher is required to build an OTP release if using Erlang/OTP 24 or higher
– Elixir 1.11.0 or higher is required to use make relive
– Elixir 1.13.4 with Erlang/OTP 23.0 are the lowest versions tested by Runtime

For all those reasons, if you want to use Elixir, it is highly recommended to use Elixir 1.13.4 or higher with Erlang/OTP 23.0 or higher.

make rel is renamed to make prod

When ejabberd started to use Rebar2 build tool, that tool could create an OTP release, and the target in Makefile.in was conveniently named make rel.

However, newer tools like Rebar3 and Elixir’s Mix support creating different types of releases: production, development, … In this sense, our make rel target is nowadays more properly named make prod.

For backwards compatibility, make rel redirects to make prod.

New make install-rel and make uninstall-rel

This is an alternative method to install ejabberd in the system, based in the OTP release process. It should produce exactly the same results than the existing make install.

The benefits of make install-rel over the existing method:
– this uses OTP release code from rebar/rebar3/mix, and consequently requires less code in our Makefile.in
make uninstall-rel correctly deletes all the library files

This is still experimental, and it would be great if you are able to test it and report any problem; eventually this method could replace the existing one.

Just for curiosity:
– ejabberd 13.03-beta1 got support for make uninstall was added
ejabberd 13.10 introduced Rebar build tool and code got more modular
– ejabberd 15.10 started to use the OTP directory structure for ‘make install’, and this broke make uninstall

Acknowledgments

We would like to thank the contributions to the source code, documentation, and translation provided for this release by:

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:

Push

  • Fix clock issue when signing Apple push JWT tokens
  • Share Apple push JWT tokens between nodes in cluster
  • Increase allowed certificates chain depth in GCM requests
  • Use x:oob data as source for image delivered in pushes
  • Process only https urls in oob as images in pushes
  • Fix jid in disable push iq generated by GCM and Webhook service
  • Add better logging for TooManyProviderTokenUpdated error
  • Make get_push_logs command generate better error if mod_push_logger not available
  • Add command get_push_logs that can be used to retrieve info about recent pushes and errors reported by push services
  • Add support for webpush protocol for sending pushes to safari/chrome/firefox browsers

MAM

  • Expand mod_mam_http_access API to also accept range of messages

MUC

  • Update mod_muc_state_query to fix subject_author room state field
  • Fix encoding of config xdata in mod_muc_state_query

PubSub

  • Allow pubsub node owner to overwrite items published by other persons (p1db)

ChangeLog

This is a more detailed list of changes in this ejabberd release:

Core

  • Added Matrix gateway in mod_matrix_gw
  • Support SASL2 and Bind2
  • Support tls-server-end-point channel binding and sasl2 codec
  • Support tls-exporter channel binding
  • Support XEP-0474: SASL SCRAM Downgrade Protection
  • Fix presenting features and returning results of inline bind2 elements
  • disable_sasl_scram_downgrade_protection: New option to disable XEP-0474
  • negotiation_timeout: Increase default value from 30s to 2m
  • mod_carboncopy: Teach how to interact with bind2 inline requests

Other

  • ejabberdctl: Fix startup problem when having set EJABBERD_OPTS and logger options
  • ejabberdctl: Set EJABBERD_OPTS back to "", and use previous flags as example
  • eldap: Change logic for eldap tls_verify=soft and false
  • eldap: Don’t set fail_if_no_peer_cert for eldap ssl client connections
  • Ignore hints when checking for chat states
  • mod_mam: Support XEP-0424 Message Retraction
  • mod_mam: Fix XEP-0425: Message Moderation with SQL storage
  • mod_ping: Support XEP-0198 pings when stream management is enabled
  • mod_pubsub: Normalize pubsub max_items node options on read
  • mod_pubsub: PEP nodetree: Fix reversed logic in node fixup function
  • mod_pubsub: Only care about PEP bookmarks options when creating node from scratch

SQL

  • MySQL: Support sha256_password auth plugin
  • ejabberd_sql_schema: Use the first unique index as a primary key
  • Update SQL schema files for MAM’s XEP-0424
  • New option sql_flags: right now only useful to enable mysql_alternative_upsert

Installers and Container

  • Container: Add ability to ignore failures in execution of CTL_ON_* commands
  • Container: Update to Erlang/OTP 26.2, Elixir 1.16.1 and Alpine 3.19
  • Container: Update this custom ejabberdctl to match the main one
  • make-binaries: Bump OpenSSL 3.2.1, Erlang/OTP 26.2.2, Elixir 1.16.1
  • make-binaries: Bump many dependency versions

Commands API

  • print_sql_schema: New command available in ejabberdctl command-line script
  • ejabberdctl: Rework temporary node name generation
  • ejabberdctl: Print argument description, examples and note in help
  • ejabberdctl: Document exclusive ejabberdctl commands like all the others
  • Commands: Add a new muc_sub tag to all the relevant commands
  • Commands: Improve syntax of many commands documentation
  • Commands: Use list arguments in many commands that used separators
  • Commands: set_presence: switch priority argument from string to integer
  • ejabberd_commands: Add the command API version as a tag vX
  • ejabberd_ctl: Add support for list and tuple arguments
  • ejabberd_xmlrpc: Fix support for restuple error response
  • mod_http_api: When no specific API version is requested, use the latest

Compilation with Rebar3/Elixir/Mix

  • Fix compilation with Erlang/OTP 27: don’t use the reserved word ‘maybe’
  • configure: Fix explanation of --enable-group option (#4135)
  • Add observer and runtime_tools in releases when --enable-tools
  • Update “make translations” to reduce build requirements
  • Use Luerl 1.0 for Erlang 20, 1.1.1 for 21-26, and temporary fork for 27
  • Makefile: Add install-rel and uninstall-rel
  • Makefile: Rename make rel to make prod
  • Makefile: Update make edoc to use ExDoc, requires mix
  • Makefile: No need to use escript to run rebar|rebar3|mix
  • configure: If --with-rebar=rebar3 but rebar3 not system-installed, use local one
  • configure: Use Mix or Rebar3 by default instead of Rebar2 to compile ejabberd
  • ejabberdctl: Detect problem running iex or etop and show explanation
  • Rebar3: Include Elixir files when making a release
  • Rebar3: Workaround to fix protocol consolidation
  • Rebar3: Add support to compile Elixir dependencies
  • Rebar3: Compile explicitly our Elixir files when --enable-elixir
  • Rebar3: Provide proper path to iex
  • Rebar/Rebar3: Update binaries to work with Erlang/OTP 24-27
  • Rebar/Rebar3: Remove Elixir as a rebar dependency
  • Rebar3/Mix: If dev profile/environment, enable tools automatically
  • Elixir: Fix compiling ejabberd as a dependency (#4128)
  • Elixir: Fix ejabberdctl start/live when installed
  • Elixir: Fix: FORMATTER ERROR: bad return value (#4087)
  • Elixir: Fix: Couldn’t find file Elixir Hex API
  • Mix: Enable stun by default when vars.config not found
  • Mix: New option vars_config_path to set path to vars.config (#4128)
  • Mix: Fix ejabberdctl iexlive problem locating iex in an OTP release

Full Changelog

https://github.com/processone/ejabberd/compare/23.10…24.02

ejabberd 24.02 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’ve found a bug, please search or fill a bug report on GitHub Issues.

The post ejabberd 24.02 first appeared on ProcessOne.

by Jérôme Sautret at April 01, 2024 14:59

March 30, 2024

Snikket

Security notice: Snikket not affected by CVE-2024-3094

A security vulnerability was intentionally added to a widely used open-source project known as ‘xz’. This project is packaged in many operating systems, and a lot of software depends upon it. The vulnerability has been assigned the identifier CVE-2024-3094.

Systems with the vulnerable package may allow an attacker to gain unauthorized access to the system via SSH, if your system’s SSH server was linked to the affected packages.

Thankfully, the vulnerability was discovered before it reached most operating systems. However if you are using a pre-release version of any Debian or Red Hat distribution, you may be affected and should install the available security updates and check for any signs of unauthorized access.

Snikket server

The Snikket server software builds upon Debian base images. We can confirm that Snikket uses the stable Debian release, and does not have the vulnerable packages.

Snikket Hosting

The Snikket Hosting platform is run on Debian servers. We also use the stable Debian release, and can confirm this vulnerability has not affected our service.

More information

Although the vulnerability does not affect Snikket itself, always ensure you install all available security updates for your host system to keep it secure.

by Snikket Team (team@snikket.org) at March 30, 2024 09:00

XMPP Providers

yourdata.forsale

Listed since Jan 9, 2024  ·  Website: unknown
Service
Cost: unknown
No legal notice available
Bus factor: unknown
Organization: unknown
Server
Server / Data location: unknown
Professional hosting: unknown
No green hosting
Server software: ejabberd 23.10

Account

You can register on this provider directly via:
An email address is not required for registration
A CAPTCHA must be solved for registration
You cannot reset your password
Messages are stored for an unknown time or less than 1 day

File Sharing (HTTP Upload)

Allows to share files up to 40 MB
Shared files are stored up to an unknown size or less than 1 MB
Stores files for an unknown time or less than 1 day
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email -
Chat -
Group chat -

Provider Category

D

Categories explained
Why not category "A"
  • No support via XMPP chat or email
  • Not free of charge or unknown
  • Legal notice is missing
  • Shared files are stored for an unknown time or less than 1 day
  • Shared files are stored up to an unknown size or less than 1 MB
  • Messages are stored for an unknown time or less than 1 day
  • No professional hosting or unknown
  • Server location is unknown
  • Provider is too young or not listed long enough
yourdata.forsale badge
Embed badge

 This provider does not offer a Provider File.

Latest change: Jan 30, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

yax.im

Available since Nov 17, 2013  ·  Website: EN
Service
Cost: Free of charge
Legal notice: EN
Bus factor: 3 persons
Organization: Non-governmental
Server
Server / Data location: 🇩🇪
Professional hosting
No green hosting
Server software: Prosody 0.12 nightly build 212 (2023-10-27, 24070d47a6e7)

Account

You can register on this provider directly via:
An email address is not required for registration
No CAPTCHA must be solved for registration
You cannot reset your password
Messages are stored for 14 days

File Sharing (HTTP Upload)

Allows to share files up to 80 MB
Shared files are stored up to 500 MB
Stores files for 30 days
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email -
Chat -
Group chat -

Provider Category

D

Categories explained
Why not category "A"
  • No support via XMPP chat or email
yax.im badge
Embed badge

 This provider offers a Provider File.

Latest change: Feb 12, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

xmpp.jp

Listed since Jan 16, 2024  ·  Website: unknown
Service
Cost: unknown
No legal notice available
Bus factor: unknown
Organization: unknown
Server
Server / Data location: unknown
Professional hosting: unknown
No green hosting
Server software: XMPP.JP 1

Account

You can register on this provider via a web browser 
Register (EN)
An email address is not required for registration
No CAPTCHA must be solved for registration
You cannot reset your password
Messages are stored for an unknown time or less than 1 day

File Sharing (HTTP Upload)

Allows to share files up to an unknown size or less than 1 MB
Shared files are stored up to an unknown size or less than 1 MB
Stores files for an unknown time or less than 1 day
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email EN
Chat -
Group chat -

Provider Category

D

Categories explained
Why not category "A"
  • Not free of charge or unknown
  • Registration via XMPP apps is not supported (at any time)
  • Legal notice is missing
  • Sharing files is allowed up to an unknown size or less than 1 MB
  • Shared files are stored for an unknown time or less than 1 day
  • Shared files are stored up to an unknown size or less than 1 MB
  • Messages are stored for an unknown time or less than 1 day
  • No professional hosting or unknown
  • Server location is unknown
  • Provider is too young or not listed long enough
xmpp.jp badge
Embed badge

 This provider does not offer a Provider File.

Latest change: Feb 4, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

xmpp.is

Available since May 19, 2015  ·  Website: EN

Alternative Addresses

xmpp.chat xmpp.co xmpp.cx xmpp.fi xmpp.si xmpp.xyz
Service
Cost: Free of charge
Legal notice: EN
Bus factor: unknown
Organization: Company
Server
Server / Data locations: 🇷🇴 | 🇺🇸
Professional hosting
Green hosting
Server software: Prosody 0.12.4

Account

You can register on this provider via a web browser 
Register (EN)
An email address is not required for registration
No CAPTCHA must be solved for registration
You can reset your password: EN
Messages are stored for 30 days

File Sharing (HTTP Upload)

Allows to share files up to 10 MB
Shared files are stored up to an unlimited size
Stores files for 7 days
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email -
Chat -
Group chat -

Provider Category

D

Categories explained
Why not category "A"
  • No support via XMPP chat or email
  • Registration via XMPP apps is not supported (at any time)
  • Sharing files is not allowed up to a size that is large enough
xmpp.is badge
Embed badge

 This provider offers a Provider File.

Latest change: Feb 3, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

xmpp.earth

Available since Aug 1, 2022  ·  Website: EN
Service
Cost: Free of charge
Legal notice: EN
Bus factor: 2 persons
Organization: Non-governmental
Server
Server / Data locations: 🇩🇪 | 🇸🇪
Professional hosting
Green hosting
Server software: unknown

Account

You can register on this provider directly via:
An email address is not required for registration
No CAPTCHA must be solved for registration
You cannot reset your password
Messages are stored for 365 days

File Sharing (HTTP Upload)

Allows to share files up to 52 MB
Shared files are stored up to 10240 MB
Stores files for 7 days
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email -
Chat -
Group chat EN

Provider Category

A

Categories explained
xmpp.earth badge
Embed badge

 This provider offers a Provider File.

Latest change: Feb 1, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

worlio.com

Available since Mar 7, 2023  ·  Website: EN
Service
Cost: Free of charge
Legal notice: EN
Bus factor: 1 person
Organization: Company
Server
Server / Data location: 🇺🇸
Professional hosting
No green hosting
Server software: Prosody 0.12.4

Account

You can register on this provider via a web browser 
Register (EN)
An email address is not required for registration
No CAPTCHA must be solved for registration
You can reset your password: EN
Messages are stored for 7 days

File Sharing (HTTP Upload)

Allows to share files up to 67 MB
Shared files are stored up to 1073 MB
Stores files for 7 days
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email EN
Chat -
Group chat EN

Provider Category

B

Categories explained
Why not category "A"
  • Registration via XMPP apps is not supported (at any time)
worlio.com badge
Embed badge

 This provider offers a Provider File.

Latest change: Mar 17, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

wiuwiu.de

Listed since Jun 30, 2017  ·  Website: DE | EN
Service
Cost: Free of charge
Legal notice: DE | EN
Bus factor: unknown
Organization: unknown
Server
Server / Data location: 🇩🇪
No professional hosting
Green hosting
Server software: Prosody 0.12.3

Account

You can register on this provider via a web browser 
Register (EN)
An email address is not required for registration
No CAPTCHA must be solved for registration
You cannot reset your password
Messages are stored for 30 days

File Sharing (HTTP Upload)

Allows to share files up to an unknown size or less than 1 MB
Shared files are stored up to an unknown size or less than 1 MB
Stores files for 30 days
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email -
Chat -
Group chat -

Provider Category

D

Categories explained
Why not category "A"
  • No support via XMPP chat or email
  • Registration via XMPP apps is not supported (at any time)
  • Sharing files is allowed up to an unknown size or less than 1 MB
  • Shared files are stored up to an unknown size or less than 1 MB
  • No professional hosting or unknown
wiuwiu.de badge
Embed badge

 This provider does not offer a Provider File.

Latest change: Jan 30, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

uuxo.net

Available since Jan 1, 2024  ·  Website: DE
Service
Cost: Free of charge
No legal notice available
Bus factor: 1 person
Organization: Private person
Server
Server / Data location: 🇩🇪
No professional hosting
Green hosting
Server software: Prosody 0.12.4

Account

You can register on this provider directly via:
An email address is not required for registration
No CAPTCHA must be solved for registration
You cannot reset your password
Messages are stored for 30 days

File Sharing (HTTP Upload)

Allows to share files up to an unknown size or less than 1 MB
Shared files are stored up to 200 MB
Stores files for 7 days
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email -
Chat -
Group chat -

Provider Category

D

Categories explained
Why not category "A"
  • No support via XMPP chat or email
  • Legal notice is missing
  • Sharing files is allowed up to an unknown size or less than 1 MB
  • No professional hosting or unknown
  • Provider is too young or not listed long enough
uuxo.net badge
Embed badge

 This provider offers a Provider File.

Latest change: Mar 27, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

trung.fun

Listed since Dec 19, 2023  ·  Website: unknown
Service
Cost: unknown
No legal notice available
Bus factor: unknown
Organization: unknown
Server
Server / Data location: unknown
Professional hosting: unknown
No green hosting
Server software: Prosody trunk nightly build 1882 (2024-03-20, a688947fab1e)

Account

You cannot register on this provider (at any time)
An email address is not required for registration
No CAPTCHA must be solved for registration
You cannot reset your password
Messages are stored for an unknown time or less than 1 day

File Sharing (HTTP Upload)

Allows to share files up to 104 MB
Shared files are stored up to an unknown size or less than 1 MB
Stores files for an unknown time or less than 1 day
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email -
Chat -
Group chat EN

Provider Category

D

Categories explained
Why not category "A"
  • Not free of charge or unknown
  • Registration is not available (at any time)
  • Legal notice is missing
  • Shared files are stored for an unknown time or less than 1 day
  • Shared files are stored up to an unknown size or less than 1 MB
  • Messages are stored for an unknown time or less than 1 day
  • No professional hosting or unknown
  • Server location is unknown
  • Provider is too young or not listed long enough
trung.fun badge
Embed badge

 This provider does not offer a Provider File.

Latest change: Mar 23, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

trashserver.net

Available since Jan 1, 2012  ·  Website: DE | EN
Service
Cost: Free of charge
Legal notice: DE | EN
Bus factor: 1 person
Organization: Private person
Server
Server / Data location: 🇩🇪
Professional hosting
Green hosting
Server software: ejabberd 24.02

Account

You can register on this provider directly via:
An email address is not required for registration
A CAPTCHA must be solved for registration
You cannot reset your password
Messages are stored for 28 days

File Sharing (HTTP Upload)

Allows to share files up to 104 MB
Shared files are stored up to an unlimited size
Stores files for 28 days
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email EN
Chat -
Group chat -

Provider Category

A

Categories explained
trashserver.net badge
Embed badge

 This provider offers a Provider File.

Latest change: Mar 9, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

tchncs.de

Listed since Dec 31, 2023  ·  Website: unknown
Service
Cost: unknown
No legal notice available
Bus factor: unknown
Organization: unknown
Server
Server / Data location: unknown
Professional hosting: unknown
Green hosting
Server software: Prosody 0.12.4

Account

You cannot register on this provider (at any time)
An email address is not required for registration
No CAPTCHA must be solved for registration
You cannot reset your password
Messages are stored for an unknown time or less than 1 day

File Sharing (HTTP Upload)

Allows to share files up to 10 MB
Shared files are stored up to an unknown size or less than 1 MB
Stores files for an unknown time or less than 1 day
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email -
Chat -
Group chat -

Provider Category

D

Categories explained
Why not category "A"
  • No support via XMPP chat or email
  • Not free of charge or unknown
  • Registration is not available (at any time)
  • Legal notice is missing
  • Sharing files is not allowed up to a size that is large enough
  • Shared files are stored for an unknown time or less than 1 day
  • Shared files are stored up to an unknown size or less than 1 MB
  • Messages are stored for an unknown time or less than 1 day
  • No professional hosting or unknown
  • Server location is unknown
  • Provider is too young or not listed long enough
tchncs.de badge
Embed badge

 This provider does not offer a Provider File.

Latest change: Feb 18, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

sure.im

Available since Dec 31, 2009  ·  Website: EN
Service
Cost: Free of charge
Legal notice: EN
Bus factor: unknown
Organization: unknown
Server
Server / Data location: 🇺🇸
Professional hosting
Green hosting
Server software: Tigase 8.4.0-SNAPSHOT-b12455/5a9e2568

Account

You can register on this provider directly via:
An email address is required for registration
A CAPTCHA must be solved for registration
You can reset your password: EN
Messages are stored for 365 days

File Sharing (HTTP Upload)

Allows to share files up to 20 MB
Shared files are stored up to an unlimited size
Stores files for 365 days
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email EN
Chat -
Group chat EN EN

Provider Category

A

Categories explained
sure.im badge
Embed badge

 This provider does not offer a Provider File.

Latest change: Jan 30, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

suchat.org

Available since Jun 11, 2012  ·  Website: ES
Service
Cost: Free of charge
Legal notice: ES
Bus factor: 1 person
Organization: Private person
Server
Server / Data location: 🇪🇸
Professional hosting
Green hosting
Server software: ejabberd 24.2.0

Account

You can register on this provider directly via: You can register on this provider via a web browser 
Register (EN)
An email address is not required for registration
A CAPTCHA must be solved for registration
You can reset your password: ES
Messages are stored for 14 days

File Sharing (HTTP Upload)

Allows to share files up to 104 MB
Shared files are stored up to 500 MB
Stores files for 30 days
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email EN
Chat EN
Group chat EN

Provider Category

A

Categories explained
suchat.org badge
Embed badge

 This provider offers a Provider File.

Latest change: Mar 9, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

step.im

Available since Feb 18, 2011  ·  Website: JA
Service
Cost: Free of charge
Legal notice: JA
Bus factor: 1 person
Organization: Private person
Server
Server / Data location: 🇯🇵
No professional hosting
No green hosting
Server software: ejabberd 23.10-1~bpo12+1

Account

You can register on this provider directly via:
An email address is not required for registration
A CAPTCHA must be solved for registration
You cannot reset your password
Messages are stored for 63 days

File Sharing (HTTP Upload)

Allows to share files up to an unknown size or less than 1 MB
Shared files are stored up to 1000 MB
Stores files for 63 days
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email EN
Chat EN
Group chat -

Provider Category

D

Categories explained
Why not category "A"
  • Sharing files is allowed up to an unknown size or less than 1 MB
  • No professional hosting or unknown
step.im badge
Embed badge

 This provider offers a Provider File.

Latest change: Feb 3, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

redlibre.es

Available since Jul 9, 2023  ·  Website: ES
Service
Cost: Free of charge
Legal notice: ES
Bus factor: 1 person
Organization: Private person
Server
Server / Data location: 🇪🇸
Professional hosting
Green hosting
Server software: ejabberd 24.2.0

Account

You can register on this provider directly via:
An email address is not required for registration
A CAPTCHA must be solved for registration
You can reset your password: ES
Messages are stored for 14 days

File Sharing (HTTP Upload)

Allows to share files up to 104 MB
Shared files are stored up to 500 MB
Stores files for 30 days
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email EN
Chat EN
Group chat EN

Provider Category

C

Categories explained
Why not category "A"
  • Provider is too young or not listed long enough
redlibre.es badge
Embed badge

 This provider offers a Provider File.

Latest change: Mar 9, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

projectsegfau.lt

Available since Feb 7, 2023  ·  Website: EN
Service
Cost: Free of charge
Legal notice: EN
Bus factor: 2 persons
Organization: Private person
Server
Server / Data locations: 🇮🇳 | 🇨🇭
Professional hosting
No green hosting
Server software: ejabberd 24.2.0

Account

You can register on this provider directly via:
An email address is not required for registration
A CAPTCHA must be solved for registration
You can reset your password: EN
Messages are stored for an unlimited time

File Sharing (HTTP Upload)

Allows to share files up to 104 MB
Shared files are stored up to an unlimited size
Stores files for an unlimited time
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email -
Chat EN
Group chat -

Provider Category

A

Categories explained
projectsegfau.lt badge
Embed badge

 This provider offers a Provider File.

Latest change: Mar 29, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

pimux.de

Available since Jan 31, 2016  ·  Website: EN
Service
Cost: Free of charge
Legal notice: EN
Bus factor: 1 person
Organization: Private person
Server
Server / Data location: 🇩🇪
Professional hosting
Green hosting
Server software: Prosody 0.12.4

Account

You can register on this provider via a web browser 
Register (EN)
An email address is not required for registration
No CAPTCHA must be solved for registration
You cannot reset your password
Messages are stored for 30 days

File Sharing (HTTP Upload)

Allows to share files up to 1073 MB
Shared files are stored up to an unlimited size
Stores files for 30 days
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email EN
Chat EN
Group chat -

Provider Category

B

Categories explained
Why not category "A"
  • Registration via XMPP apps is not supported (at any time)
pimux.de badge
Embed badge

 This provider offers a Provider File.

Latest change: Feb 3, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00

nixnet.services

Available since Jan 8, 2019  ·  Website: EN

Alternative Addresses

paranoid.network linux.monster pwned.life
Service
Cost: Free of charge
Legal notice: EN
Bus factor: 2 persons
Organization: Private person
Server
Server / Data location: 🇩🇪
Professional hosting
Green hosting
Server software: ejabberd 24.2.0

Account

You can register on this provider directly via: You can register on this provider via a web browser 
Register (EN)
An email address is not required for registration
A CAPTCHA must be solved for registration
You cannot reset your password
Messages are stored for an unlimited time

File Sharing (HTTP Upload)

Allows to share files up to 100 MB
Shared files are stored up to 1000 MB
Stores files for 14 days
Compatibility / Security
Compatibility 100
Security (C2S) unknown
Security (S2S) unknown
Contact
Email EN
Chat EN
Group chat EN

Provider Category

A

Categories explained
nixnet.services badge
Embed badge

 This provider offers a Provider File.

Latest change: Mar 9, 2024 · Something changed?

Providers are checked for updates on a daily basis.

Badge copied!

March 30, 2024 00:00