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.
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 :)
I’m currently having the same issue on a centos 7 server. Have you managed to find a solution?
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!
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
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
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.. :)