Version 2.1.2 released.
Version 2.1.2 of Mosquitto has been released. This is a bugfix release.
Broker:
- Forbid running with
persistence trueand with a persistence plugin at the same time. Closes #3480.
Version 2.1.2 of Mosquitto has been released. This is a bugfix release.
persistence true and with a persistence plugin at the
same time. Closes #3480.Version 2.1.1 of Mosquitto has been released. This is a bugfix release.
MOSQUITTO_UNSAFE_ALLOW_SYMLINKS environment variable to allow the
restrictions on reading files through symlinks to be lifted in safe
environments like kubernetes. Closes #3461.plugin/global_plugin option not allowing space characters.Version 2.1.0 of Mosquitto has been released. This is a feature release.
acl_file option is deprecated in favour of the acl-file plugin, which is
the same code but moved into a plugin. The acl_file option will be removed
in 3.0.password_file option is deprecated in favour of the password-file plugin,
which is the same code but moved into a plugin. The password_file option will
be removed in 3.0.per_listener_settings option is deprecated in favour of the new listener
specific options. The per_listener_settings option will be removed in 3.0.max_packet_size now defaults to 2,000,000 bytes instead of the 256MB MQTT
limit. If you are using payloads that will result in a packet larger than
this, you need to manually set the option to a value that suits your
application.acl_file and password_file will produce an error on invalid input when
reloading the config, causing the broker to quit.allow_duplicate_messages now defaults to true.accept_protocol_versions option to allow limiting which MQTT protocol
versions are allowed for a particular listener.--tls-keylog option which can be used to generate a file that can be
used by wireshark to decrypt TLS traffic for debugging purposes. Closes #1818.disable_client_cert_date_checks option to allow expired client
certificate to be considered valid.bridge_tls_use_os_certs option to allow bridges to be easily configured
to trust default CA certificates. Closes #2473.bridge_receive_maximum option for MQTT v5.0 bridges.bridge_session_expiry_interval option for MQTT v5.0 bridges.websockets_origin option to allow optional enforcement of origin
when a connection attempts an upgrade to WebSockets.global_plugin option, which gives global plugin loaded regardless
of per_listener_settings.global_max_clients option to allow limiting client sessions globally
on the broker.global_max_connections option to allow limiting client connections globally
on the broker.epoll_wait(). This can
reduce the number of process wakeups by 100x on an idle broker.--test-config option which can be used to test a configuration file
before trying to use it in a live broker. Closes #2521.sys_interval seconds, meaning that if set
to 10, for example, updates will be sent at times matching x0 seconds.
Previously update intervals were aligned to the time the broker was started.log_dest android for logging to the Android logd daemon.listener_allow_anonymous option.listener_auto_id_prefix option.persistent_client_expiration.mosquitto_topic_matches_sub_with_pattern(), which can match against
subscriptions with %c and %u patterns for client id / username
substitution.MOSQ_EVT_MESSAGE_OUT.mosquitto_client() function for retrieving a client struct if that
client is connected.MOSQ_ERR_PLUGIN_IGNORE to allow plugins to register basic auth or acl
check callbacks, but still act as though they are not registered. A plugin
that wanted to act as a blocklist for certain usernames, but wasn't carrying
out authentication could return MOSQ_ERR_PLUGIN_IGNORE for usernames not on
its blocklist. If no other plugins were configured, the client would be
authenticated. Using MOSQ_ERR_PLUGIN_DEFER instead would mean the clients
would be denied if no other plugins were configured.mosquitto_client_port() function for plugins.MOSQ_EVT_CONNECT, to allow plugins to know when a client has
successfully authenticated to the broker.MOSQ_EVT_CONNECT.MOSQ_EVT_CLIENT_OFFLINE, to allow plugins to know when a client with a
non-zero session expiry interval has gone offline.MOSQ_EVT_MESSAGE_WRITE callback can now return
MOSQ_ERR_QUOTA_EXCEEDED to have the message be rejected. MQTT v5 clients
using QoS 1 or 2 will receive the quota-exceeded reason code in the
corresponding PUBACK/PUBREC.MOSQ_EVT_TICK is now passed to plugins when per_listener_settings is true.mosquitto_sub_matches_acl(), which can match one topic filter (a
subscription) against another topic filter (an ACL).MOSQ_EVT_CONTROL plugin event is now handled globally
across the broker, so only a single plugin can register for a given $CONTROL
topic.mosquitto_plugin_set_info() to allow plugins to tell the broker their
name and version.listPlugins
command. This is disabled by default, but can be enabled with the
enable_control_api option.mosquitto_plugin_cleanup() if they do not
need to do any of their own cleanup. Callbacks will be unregistered
automatically.mosquitto_set_clientid() to allow plugins to force a client id for a
client.MOSQ_EVT_SUBSCRIBE and MOSQ_EVT_UNSUBSCRIBE events that are called when
subscribe/unsubscribes actually succeed. Allow modifying topic and qos.mosquitto_persistence_location() for plugins to use to find a valid
location for storing persistent data.next_s and next_ms members of the tick event data
struct to set a minimum interval that the broker will wait before calling the
tick callback again.%c and %u patterns for
substituting client id and username respectively, in all ACLs except for
subscribeLiteral and unsubscribeLiteral.MOSQ_OPT_DISABLE_SOCKETPAIR to allow the disabling of the socketpair
feature that allows the network thread to be woken from select() by another
thread when e.g. mosquitto_publish() is called. This reduces the number of
sockets used by each client by two.on_pre_connect() callback to allow clients to update
username/password/TLS parameters before an automatic reconnection.mosquitto_topic_matches_sub_with_pattern(), which can match against
subscriptions with %c and %u patterns for client id / username
substitution.mosquitto_sub_matches_acl(), which can match one topic filter (a
subscription) against another topic filter (an ACL).mosquitto_sub_matches_acl_with_pattern(), which can match one topic
filter (a subscription) against another topic filter (an ACL), with %c and
%u patterns for client id / username substitution.mosquitto_subscribe*() now returns MOSQ_ERR_INVAL if an empty string is
passed as a topic filter.mosquitto_unsubscribe*() now returns MOSQ_ERR_INVAL if an empty string is
passed as a topic filter.mosquitto_property_read_binary/string/string_pair will now set the
name/value parameter to NULL if the binary/string is empty. This aligns the
behaviour with other property functions. Closes #2648.mosquitto_unsubscribe2_v5_callback_set, which provides a callback that
gives access to reason codes for each of the unsubscription requests.mosquitto_property_remove, for removing properties from property
lists.on_ext_auth() callback to allow handling MQTT v5 extended authentication.mosquitto_ext_auth_continue() function to continue an MQTT v5 extended
authentication.-W timeout support to Windows.--insecure option now disables all server certificate verification.-x now sets the clients to use MQTT v5.0.--tls-keylog option which can be used to generate a file that can be
used by wireshark to decrypt TLS traffic for debugging purposes.-f and -s options in mosquitto_rr.--latency option to mosquitto_rr, for printing the request/response
latency.--retain-handling option.%x and %X for printing the payload in hex.--message-rate option to mosquitto_sub, for printing the count of
messages received each second.--retain-handling option.mosquitto_signal for helping send signals to mosquitto on Windows.listPlugins to mosquitto_ctrl.-c, setting the output filename to a dash -
will output the result to stdout.--json output mode do mosquitto_db_dump.WITH_LTO to enable/disable link time optimization.The first release candidate for Mosquitto 2.1.0 is now available for testing. If no release critical issues are reported, this will become 2.1.0 on 2026-01-26.
The source and binary packages are available:
snap refresh --edge mosquitto or snap install --edge mosquitto
For ease of testing there are now some binaries available for testing the upcoming 2.1 release. We would strongly urge everyone using mosquitto to test out these versions and provide feedback if anything doesn't work as you expect.
The version in these binaries is listed as 2.0.99.
There are currently three options available:
For the x86_64 architecture only.
Update to the edge channel to get the test:
snap refresh --channel=edge mosquitto
Revert to normal using:
snap refresh --channel=stable mosquitto
Download the 64-bit installer
The mosquitto docker images are provided the the Official Images program by Docker, it would not be appropriate to put test images there. Given the restrictions Docker Hub places on pull images we are also looking at alternatives. Until the 2.1 release is made, testing images will be available hosted by Cedalo. Cedalo provide a paid version of mosquitto with enterprise features.
Note that the images are produced in a slightly different way to the normal images, so there is some wasted space. This is not representative of the final images.
docker pull registry.cedalo.com/eclipse-mosquitto-2.1-testing/mosquitto:latest
We would like to provide Debian packages, but they are still in progress and we didn't want to delay the other binaries.
Version 2.0.22 of Mosquitto has been released. This is a bugfix release.
log_dest stdout
idle_timeout never occurring for lazy bridges.max_queued_messages = 0 was not treated as unlimited.
Closes #3244.--version exit code and output. Closes #3267.per_listener_settings is set true and the bridge is carrying out topic
remapping. Closes #3261.WITH_OLD_KEEPALIVE. Closes #3250.WITH_EPOLL=no. Closes #3302.max_keepalive. Closes #3226, #3286.mosquitto_loop_start() thread to exit if no
broker was available on the first connection attempt. This has been fixed.
Closes #3258.Tests: - Fix 08-ssl-connect-cert-auth-expired and 08-ssl-connect-cert-auth-revoked tests when running on a single CPU system. Closes #3230.
Version 2.0.21 of Mosquitto has been released. This is a security and bugfix release.
Security: - Fix leak on malicious SUBSCRIBE by authenticated client. Closes [eclipse #248]. - Further fix for CVE-2023-28366.
bind_interface producing an error when used with an interface that has
an IPv6 link-local address and no other IPv6 addresses. Closes #2696.allow_anonymous false not being applied in local only mode. Closes #3198.retain_expiry_interval option to fix expired retained message not
being removed from memory if they are not subscribed to. Closes #3221.-W is used. Closes #3175.-i to specify a clientid as well as
-c. This matches the documentation which states -i. Closes #3219.
Client library:Version 2.0.20 of Mosquitto has been released. This is a bugfix release.
Version 2.0.19 of Mosquitto has been released. This is a security and bugfix release.
persistent_client_expiration
is in use.Version 2.0.18 of Mosquitto has been released. This is a bugfix release.
Broker: - Fix crash on subscribe under certain unlikely conditions. Closes #2885. Closes #2881.
Clients:
- Fix mosquitto_rr not honouring -R. Closes #2893.