ejabberd 17.09

ejabberd 17.09 is out! This release mostly contains bugfix and adds few improvements.

New feature

New mod_avatar module

The purpose of the module is to cope with legacy and modern XMPP clients posting avatars. It automatically converts vCard based avatars (XEP-0153) to PEP based avatars (XEP-0084) and vice versa.
Also, the module supports conversion between avatar image formats on the fly: this is controlled by convert option. For example, to convert all avatars into PNG format, configure the module as:

mod_avatar:
  convert:
    default: png

In order to convert only webp format to jpeg, set the following:

mod_avatar:
  convert:
    webp: jpeg

Note: the module depends on mod_vcard, mod_vcard_xupdate and mod_pubsub. It’s not working on Linux-armhf and Windows yet. If you compile from sources, ejabberd should be configured with –enable-graphics option.

Updated OpenSSL libraries

Our installers now include OpenSSL 1.0.2l. These libraries are used as a fallback only if you don’t have them on your system, else the system wide version is used.
On Very old Linux systems (Debian wheezy with older glibc for example), ejabberd will fail to load them. In this situation, you have to remove libcrypto and libssl installed in lib/linux-x86_64 of your installer, and ejabberd will use older OpenSSL 1.0.1 from your system. We highly recommend to plan a system upgrade in this case anyway.

Changes

Admin

  • Harden ejabberdctl
  • Fix ejabberdctl quoting when using iex
  • Call earlier deps configure scripts during compilation
  • Fix iexdebug and iexlive commands
  • Quote $PEER in ping command to avoid hostnames containing “-” being interpreted as arithmetic
  • Docker: Sync containers from rroemhild and add instructions in README
  • Use eimp instead of ImageMagick calls for thumbnails creation
  • Add forgotten caching options to the validator
  • Fix ‘make install’ to work with new output from rebar list-deps
  • Rewrite muc_register_nick and muc_unregister_nick to be DB independent
  • WebAdmin: Fix deletion of multiple offline messages

Encryption

  • Add support for XEP-0368 in outgoing s2s: SRV records for XMPP over TLS
  • Deprecate s2s_use_starttls: required_trusted
  • Don’t attempt to access(2) a certificate file
  • Let ‘domain_certfile’ take higher precedence instead of s2s_certfile or c2s_certfile

Databases

  • mysql.sql: Use multi-column index on username/ID
  • Use forked repo of Riak Erlang client to support OTP20

Modules

  • mod_avatar: New module with support for legacy and modern clients
  • mod_block_strangers: Introduce option ‘allow_transports’
  • mod_block_strangers: Block messages from strangers before mod_mam/mod_offline processing
  • mod_http_upload: Don’t ignore ‘custom_headers’
  • mod_muc: Improve presence-error and unavailable of multi-session occupants
  • mod_multicast: Fix start and reading of configured limits
  • mod_mam: Simplify check for anon MUC JID filtering
  • mod_mam: Refuse filtering anon MUC queries by JID
  • mod_privacy: Explicitly match against
  • mod_register: Introduce ‘redirect_url’ option
  • mod_stream_mgmt: Delete ‘c2s_init’ hook
  • mod_vcard_xupdate: Also replace vcard-x-update in direct presences

PubSub

  • Fix get_items/get_item calls
  • Add correct order when requesting all items
  • Implement ‘6.5.7 Requesting the Most Recent Items’
  • Fix RSM support on SQL
  • Add RSM support on mnesia
  • Fix node_options: default options only apply on first plugin
  • Broadcast updated node configuration
  • Enforce controls on publish and delete items

Miscelanea

  • Preserve correct order of deserialized XML elements
  • Suppress push notifications for online clients
  • Extract strings and prepare translation files works again

Feedback

As usual, the release is tagged in the Git source code repository on Github.

The source package and binary installers are available at ejabberd XMPP & MQTT server download page.

If you suspect that you’ve found a bug, please search or fill a bug report on Github.


Let us know what you think 💬


14 thoughts on “ejabberd 17.09

  1. Trying the “old systems procedure” of removing /opt/ejabberd-17.09/lib/linux-x86_64/libcrypto.so.1.0.0 /opt/ejabberd-17.09/lib/linux-x86_64/libssl.so.1.0.0 on an old rhel, this leads to:

    [error] Unable to load crypto library. Failed with error:
    “load_failed, Failed to load NIF library /opt/ejabberd-17.09/lib/crypto-3.7.4/priv/lib/crypto: ‘libcrypto.so.1.0.0: cannot open shared object file: No such file or directory'”

    deleting /opt/ejabberd-17.09/lib/crypto-3.7.4/priv/lib gives
    Unable to load crypto library. Failed with error:
    “load_failed, Failed to load NIF library: ‘/opt/ejabberd-17.09/lib/crypto-3.7.4/priv/lib/crypto.so: cannot open shared object file: No such file or directory'” OpenSSL might not be installed on this system.

    It seems that falling back to system’s OpenSSL has some issues. Any idea how to get past that?

    • You must not remove crypto-3.7.4/priv/lib/crypto.so
      Your system must provide libcrypto.so.1.0.0.

      • My system does provide /usr/lib64/libcrypto.so (via libcrypto.so.1.0.1e) though.

        Prior to that, the error message was:
        Unable to load crypto library. Failed with error:
        “load_failed, Failed to load NIF library /opt/ejabberd-17.09/lib/crypto-3.7.4/priv/lib/crypto: ‘/lib64/libc.so.6: version `GLIBC_2.14’ not found (required by /opt/ejabberd-17.09/lib/linux-x86_64/libcrypto.so.1.0.0)'”

        When I try to symlink, I get:
        ‘/opt/ejabberd-17.09/lib/linux-x86_64/libcrypto.so.1.0.0: version `OPENSSL_1.0.0’ not found (required by /opt/ejabberd-17.09/lib/crypto-3.7.4/priv/lib/crypto.so)'”.
        This system has openssl-1.0.1e-57.el6.x86_64

        It seems I’m stuck in the middle with an obsolete glibc and a not-obsolete-enough openssl :)

  2. I Just installed under CentOS 7. But error log is full of errors. One every couple of seconds.
    [error] External eimp process (pid=1518) has terminated unexpectedly, restarting in a few seconds

    • you likely compiled from sources, then chmod a+rx lib/eimp-1.0.0/priv/bin/eimp fixes the problem

      • Im also experiencing this problem with CentOS 7.4 – unfortunately your suggestion didnt work for me

        • 17.10 installer will include libraries compiled for older glibc, so it will work out of the box.

          • Thanks for your answer – I managed to solve my problem in the meantime…
            A “yum install erlang” from the epel did the job, sorry I don’t know how I missed that!

  3. Señores por favor quiero ayuda urgente !! Tengo correo electrónico de SUCHAT.org y no se donde me lo puedo abrir para revisar mis mensajes

  4. Hello
    I use ubuntu 16.04
    i want to use ejabberd
    -> sudo apt-get install ejabberd
    -> sudo ejabberdctl register admin localhost password
    i got this error : /usr/sbin/ejabberdctl: line 428: 26602 Segmentation fault $EXEC_CMD “$CMD”

    any help please ??

    • Maybe a bit late, but it’s a hard-coded error

      sudo gedit /etc/apparmor.d/usr.sbin.ejabberdctl

      Go to line 36 —
      /bin/su r, and add a “m”, so it’s now
      /bin/su rm,
      Save, quit, and sudo service apparmor restart
      It should now be working fine.

      sudo ejabberdctl register admin localhost test
      User admin@localhost successfully registered

      Hope this could help someone…

      • I mean in the code, not hard-coded.
        Can’t edit, sorry, haven’t paid attention enough

  5. Hi all!
    Problem “External eimp process has terminated unexpectedly, restarting in a few seconds” fixed. Workaround:
    ldd /lib/eimp-1.0.1/priv/bin/eimp
    linux-vdso.so.1 (0x00007ffeccbcc000)
    libwebp.so.7 => not found
    libpng16.so.16 => /usr/lib/libpng16.so.16 (0x00007fd04d587000)
    libjpeg.so.8 => /usr/lib/libjpeg.so.8 (0x00007fd04d31e000)
    libgd.so.3 => not found
    libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fd04d100000)
    libc.so.6 => /usr/lib/libc.so.6 (0x00007fd04cd48000)
    libz.so.1 => /usr/lib/libz.so.1 (0x00007fd04cb31000)
    libm.so.6 => /usr/lib/libm.so.6 (0x00007fd04c7e5000)
    /lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fd04d9ca000)

    pacman -S extra/libwebp extra/gd

    Profit.. :)

Leave a Reply to Marcus Cancel Reply


This site uses Akismet to reduce spam. Learn how your comment data is processed.