Eclipse Mosquitto™ is an open source (EPL/EDL licensed) message broker that implements the MQTT protocol versions 3.1 and 3.1.1. MQTT provides a lightweight method of carrying out messaging using a publish/subscribe model. This makes it suitable for "Internet of Things" messaging such as with low power sensors or mobile devices such as phones, embedded computers or microcontrollers like the Arduino.

Mosquitto is an iot.eclipse.org project

Version 1.4.9 released

This is a bugfix release.

Broker

  • Ensure websockets clients that previously connected with clean session set
    to false have their queued messages delivered immediately on reconnecting.
    Closes #5.
  • Reconnecting client with clean session set to false doesn’t start with mid=1
    again.
  • Will topic isn’t truncated by one byte when using a mount_point any more.
  • Network errors are printed correctly on Windows.
  • Fix incorrect $SYS heap memory reporting when using ACLs.
  • Bridge config parameters couldn’t contain a space, this has been fixed.
    Closes #150.
  • Fix saving of persistence messages that start with a ‘/’. Closes #151.
  • Fix reconnecting for bridges that use TLS on Windows. Closes #154.
  • Broker and bridges can now cope with unknown incoming PUBACK, PUBREC,
    PUBREL, PUBCOMP without disconnecting. Closes #57.
  • Fix websockets listeners not being able to bind to an IP address. Closes
    #170.
  • mosquitto_passwd utility now correctly deals with unknown command line
    arguments in all cases. Closes #169.
  • Fix publishing of $SYS/broker/clients/maximum
  • Fix order of #includes in lib/send_mosq.c to ensure struct mosquitto doesn’t
    differ between source files when websockets is being used. Closes #180.
  • Fix possible rare crash when writing out persistence file and a client has
    incomplete messages inflight that it has been denied the right to publish.

Client library

  • Fix the case where a message received just before the keepalive timer
    expired would cause the client to miss the keepalive timer.
  • Return value of pthread_create is now checked.
  • _mosquitto_destroy should not cancel threads that weren’t created by
    libmosquitto. Closes #166.
  • Clients can now cope with unknown incoming PUBACK, PUBREC, PUBREL, PUBCOMP without disconnecting. Closes #57.
  • Fix mosquitto_topic_matches_sub() reporting matches on some invalid
    subscriptions.

Clients

  • Handle some unchecked malloc() calls. Closes #1.

Build

  • Fix string quoting in CMakeLists.txt. Closes #4.
  • Fix building on Visual Studio 2015. Closes #136.

Stickers

To celebrate the new mosquitto logo, stickers are now available:

stickers

If you would like to obtain some stickers for yourself you have two options.

The first is to get in touch and I’ll send you some for a small contribution. This contribution is to cover the cost of the stickers plus postage: (cost of postage)+N*£0.45, where N is the number of sheets of 6 stickers that you want. Cost of postage for a letter can be calculated using the Royal Mail price finder, but should be £1.05 for destinations outside of the UK. Please also consider Paypal fees using a fees calculator to calculate the final sum. So for a single sheet of stickers posted internationally, the cost would be £1.76 including paypal fees. Two sheets would be £2.23.

The second option is to buy a full sticker book through moo.com. This can be done very easily by navigating to http://mosquitto.org/stickers/ This allows you to easily order a sticker book of 90 stickers with either the colour or blue monochrome stickers, or a mix of both.

There is a third option – get in touch to say why you deserve some stickers and maybe we’ll send you some. We’re looking for things that make us say “wow!” If you will be sending your sticker to space, getting mosquitto on television or using MQTT in your Formula 1 technology, these are all things that would exciting to see with a mosquitto sticker in place. If you want to give out stickers at a local IoT related event or similar that’s great, but we’d ask that you make a small donation. It’s only a small cost for you, but there are many people in your situation and it becomes a noticeable cost for the project.

Please do post links of your kit sporting any stickers you use!

The first round of the logo contest has closed and we now need to shortlist 6 designers. A selection of 20 logos have been chosen out of the 100 entrants and you are invited to vote on them and make comments. If you like a particular logo but not the colour, or like an idea behind the logo but not another element then please say so.

The links for voting (please do look at them all) are:

https://en.99designs.fr/logo-design/vote-d8v9u9

https://en.99designs.fr/logo-design/vote-xlduhg

https://99designs.fr/logo-design/vote-n4ynig

Logo contest

We have initiated a paid contest to create a new logo for the Mosquitto project.

If you have graphics design skills or know someone who has,  please head over to the link below to see the design brief and submit your idea.

http://en.99designs.de/logo-design/contests/create-logo-eclipse-mosquitto-open-source-server-internet-605670/brief

 

Repository moved to github

The mosquitto repository is now hosted on github: https://github.com/eclipse/mosquitto This is now the canonical location for mosquitto development work.

Bug reports should also be made on github and the existing bug reports will be migrated over shortly.

The documentation still needs updating with the new location and processes, so please do be patient with regards that.

Contributions can now be made through a github pull request. If you want to contribute a bug fix, please base your work off the “fixes” branch, if you are developing a new feature please use the “develop” branch.

Here’s to a new stage in the mosquitto project!

Version 1.4.8 released

This is a security bugfix release. Any users of the “mount_point” feature are strongly advised to upgrade because versions prior to 1.4.8 allow clients to inject messages outside of their mount_point through the use of a Will.

Broker

  • Wills published by clients connected to a listener with mount_point defined
    now correctly obey the mount point. This was a potential security risk
    because it allowed clients to publish messages outside of their restricted
    mount point. This is only affects brokers where the mount_point option is in
    use. Closes #487178.
  • Fix detection of broken connections on Windows. Closes #485143.
  • Close stdin etc. when daemonised. Closes #485589.
  • Fix incorrect detection of FreeBSD and OpenBSD. Closes #485131.

Client library

  • mosq->want_write should be cleared immediately before a call to SSL_write,
    to allow clients using mosquitto_want_write() to get accurate results.

test6.mosquitto.org

Thanks to a short discussion on irc, test6.mosquitto.org now exists. This is a DNS entry that points to the same address as test.mosquitto.org, but only with an AAAA record. This means that test6.mosquitto.org can be used to test clients using IPv6 and to be sure that IPv6 is actually being used.

Version 1.4.7 released

This is a bugfix release. The changes below include the changes for 1.4.6, which wasn’t announced.

Broker

  • Add support for libwebsockets 1.6.

Client library

  • Fix _mosquitto_socketpair() on Windows, reducing the chance of delays when
    publishing. Closes #483979.

Clients

  • Fix “mosquitto_pub -l” stripping the final character on a line. Closes
    #483981.

If you want to use TLS certificates you’ve generated using the Let’s Encrypt service, this is how you should configure your listener (replace “example.com” with your own domain of course):

First you need a copy of the root certificate. This will either be the ISRG Root X1, or IdenTrust DST Root CA X3. You need to check which of these root CAs signed the intermediate certificate you are using:

openssl x509 -in /etc/letsencrypt/live/example.com/chain.pem -noout -issuer

If your intermediate was issued by the ISRG root then use:

wget https://letsencrypt.org/certs/isrgrootx1.pem

Otherwise you should go to https://www.identrust.com/certificates/trustid/root-download-x3.html to get the DST root certificate. Open a text editor, and paste the contents from that link, surrounding the text with the BEGIN and END lines as below:

-----BEGIN CERTIFICATE-----

pasted content goes here

-----END CERTIFICATE-----

Then, each time after your script to automatically generate your certificates runs you should also run:

cat /etc/letsencrypt/live/example.com/chain.pem /etc/letsencrypt/<your root>.pem > /etc/letsencrypt/live/example.com/chain-ca.pem

Then use the following for your mosquitto.conf:

listener 8883
cafile /etc/letsencrypt/live/example.com/chain-ca.pem
certfile /etc/letsencrypt/live/example.com/cert.pem
keyfile /etc/letsencrypt/live/example.com/privkey.pem

You need to be aware that current versions of mosquitto never update listener settings when running, so when you regenerate the server certificates you will need to completely restart the broker.

Version 1.4.5 released

This is a bugfix release:

Broker

  • Fix possible memory leak if bridge using SSL attempts to connect to a host that is not up.
  • Free unused topic tree elements (fix in 1.4.3 was incomplete). Closes
    #468987.

Clients

  • “mosquitto_pub -l” now no longer limited to 1024 byte lines. Closes #478917.