Steven Livingstone | 24 May 17:36 2016

Redis Cluster Mode

Hi - I have managed to set up a 3 node Redis master/master/master
cluster and after a bit of reading, managed to get redis-cli working
with it .... so long as I pass the "-c" flag to enable cluster mode.

However, when I try to use it in ejabberd, i get errors:

 <at> ejabberd_sm_redis:clean_table:204 failed to clean redis table for
server domain.local: {error,<<"MOVED 10777">>}

 <at> ejabberd_sm_redis:set_session:79 failed to set session for redis:
[{ok,<<"1">>},{error,<<"MOVED 10777">>}]

How can I enable cluster mode from the ejabberd redis client? Is this
supported yet?

It feels very strange to me that i need to enable this on the client
side but i assume there is Redis logic to it.

If there is not a way to do it in config, has anyone added a hack to
get this working? I am thinking that HA proxy in the middle could
maybe pass a header to the redis backend to enable this mode ... tho
not sure what that header would need to be.

many thanks,
gerbra | 23 May 01:59 2016

useful links


Here are some useful links that I've chosen just for you, check it out


See you around, gerbra <at>

ejabberd mailing list
ejabberd <at>
Gaurav Jain | 14 May 00:54 2016

ejabberd-16.04 - Warning: behaviour gen_mod undefined


When I build ejabberd-16.04 on Mac-OSX, I get below warnings.

How can I fix these warnings?

Best Regards,


src/mod_vcard_xupdate.erl:10: Warning: behaviour gen_mod undefined

Compiled src/mod_vcard_xupdate.erl

src/mod_vcard.erl:33: Warning: behaviour gen_mod undefined

Compiled src/mod_vcard.erl

src/mod_shared_roster.erl:30: Warning: behaviour gen_mod undefined

Compiled src/mod_shared_roster.erl

src/mod_roster.erl:42: Warning: behaviour gen_mod undefined

Compiled src/mod_roster.erl

src/mod_private.erl:32: Warning: behaviour gen_mod undefined

Compiled src/mod_private.erl

src/mod_privacy.erl:32: Warning: behaviour gen_mod undefined

Compiled src/mod_privacy.erl

src/mod_offline.erl:39: Warning: behaviour gen_mod undefined

Compiled src/mod_offline.erl

src/mod_muc.erl:34: Warning: behaviour gen_mod undefined

Compiled src/mod_muc.erl

src/mod_mam.erl:31: Warning: behaviour gen_mod undefined

Compiled src/mod_mam.erl

src/mod_last.erl:34: Warning: behaviour gen_mod undefined

Compiled src/mod_last.erl

src/mod_irc.erl:32: Warning: behaviour gen_mod undefined

Compiled src/mod_irc.erl

src/mod_carboncopy.erl:32: Warning: behaviour gen_mod undefined

Compiled src/mod_carboncopy.erl

src/mod_caps.erl:36: Warning: behaviour gen_mod undefined

Compiled src/mod_caps.erl

src/mod_blocking.erl:28: Warning: behaviour gen_mod undefined

Compiled src/mod_blocking.erl

src/mod_announce.erl:32: Warning: behaviour gen_mod undefined

ejabberd mailing list
ejabberd <at>
Robert Latko | 13 May 21:59 2016

Using multiple DB's with ejabberd?

Hi all,

I prefer riak as the backend db for ejabberd however there is no pubsub 
implement. My question is kinda academic BUT is it possible to configure 
multiple db's for ejabberd?

./configure --enable-riak --enable-mysql  ?

Then in the ejabberd.yml


and everything else riak?

At the end of the day, mnesia is good enough for the pubsub implement 
however I've got a new developer that is not used to the erlang/mnesia 
paradigm as much as the php/mysql and setting up a sandbox with 
riak/mysql dual db's could be helpful for him to ride the learning curve.

Thanks in advance!!

Jan Olszak | 13 May 09:52 2016

Round-robin routing to multiple resources

Hi there!

I'm trying to use ejabberd as a transport layer between clients and a service.
The service has couple of instances and calls from clients need to be load balanced between those instances.

Is it possible to achieve a simple round-robin "load balancer" that sends stanzas to many resources ( of equal priority)?


ejabberd mailing list
ejabberd <at>
Ricky Gutierrez | 8 May 04:33 2016

history from server

Hi, it is possible that this question was asked many times, but here's
a question I have and I want to solve, now I have a ejabberd 15.x
server with 400 users, the client default use is Jitsi in its latest
version, the problem is that some users to my server ejabberd from
their homes and on their personal computers and there do not load the
message history of the office are connected, they ask me if we can
find a solution, looking for a solution some mention using MySQL odbc,
but not a solution for me, if mysql use with ejabberd xmpp integration
lose my asterisk server, I work very well with the native bd ejabberd
and asterisk, restart the server now if history is lost.

any advice?


Marcelo Terres | 21 Apr 12:57 2016

XyBot - a XMPP bot that allows users to interact with Asterisk


I'm here to invite you all to test another PoC that I developed and
that uses Asterisk and XMPP, called XyBot.

XyBot is a XMPP bot written in python and its main goal is to enable
users to interact with asterisk directly from their XMPP client.

Xybot was built to provide a expandable structure of plugins and
monitoring agents that allows system administrators to develop their
own features.

You can find more informations (including source code for download) in
my blog at

Any doubts or suggestions are welcomed.


Marcelo H. Terres <mhterres <at>>
IM: mhterres <at>
gerbra | 21 Apr 09:30 2016

Fw: new message



Open message


gerbra <at>

ejabberd mailing list
ejabberd <at>
Randy Bush | 17 Apr 06:02 2016

ubuntu cripto

i am lazy/conservative and prefer to run default/vanilla versions.  and
ubuntu 14.04 comes whith a rather old ejabberd package :(

i wanna do the equivalent of

s2s_use_starttls: required
s2s_ciphers: "HIGH:!3DES:!aNULL:!SSLv2: <at> STRENGTH"
  - "no_sslv2"
  - "no_sslv3"


  module: ejabberd_c2s
  ciphers: "HIGH:!3DES:!aNULL:!SSLv2: <at> STRENGTH"
    - "no_sslv2"
    - "no_sslv3"

except i am stuck in erlang

# ejabberdctl convert_to_yaml ejabberd.cfg ejabberd.yml
Error: command "convert_to_yaml" not known.

clue bat appreciated

Marcelo Terres | 14 Apr 10:44 2016

Delivering Asterisk IVR data to softwares using XMPP


I developed a little project (a PoC) to "integrate" Asterisk IVRs with
"other softwares", allowing that data already entered in IVR can be
used in other stages of a customer service, for example.

The main goal is to provide more efficiency and interoperability
between different solutions in a heterogeneous enterprise scenario.

Despite the fact that I started this project to integrate Asterisk
IVRs with customer service softwares, this is a multipurpose project
that can be used with any kind of software that you want.

The project uses the Asterisk's ARI API and XMPP (PubSub) to deliver
the information.

You can find more informations (including source code for download) in
my blog at

Any doubts or suggestions are welcomed.


Marcelo H. Terres <mhterres <at>>
IM: mhterres <at>
Raoul Duke | 9 Apr 20:31 2016

multiple hosts/passwords on external component


I'm trying to configure an external component (jitsi videobridge) and specifically to replicate a working confliguration from prosody, namely:

    component_secret = "ABCDEF"

Component ""
    component_secret = "QWERTY"

based on the example here:

I came up with:

    port: 5347
    module: ejabberd_service
    access: all
        password: "ABCDEF"
        password: "QWERTY"

I had multiple problems with this config:

* I couldn't auth the second component name ( with the associated password no matter what I tried (even using a standalone utility to check the auth only).  I ended up having to use the same password for both to get auth to work.   

Having looked at the code for ejabberd_service.erl

it looks like the state record has a list of hosts mapped to one password.  so I'm not sure how that implementation fits with the example config I referenced (

i.e. there doesn't seem to be a "password per host" concept there.  it just seems there is a "multi hosts to single pasword".

am I (as I expect) just missing something obvious here?

* with the config as above (but both hosts having the same password) I then had problems with the clients of the 2 distinct components (both with distinct TCP connections to port 5347) seeming to get "crossed wires" in their responses i.e. ping response from one stream seeming to go to the other stream.  this reinforces my sense that I've just misunderstood / messed-up the config somehow.

what I ended up doing to get it functional was to put the 2 hosts on distinct ports, i.e. 

    port: 5347
    module: ejabberd_service
    access: all
        password: "ABCDEF"

    port: 5348
    module: ejabberd_service
    access: all
        password: "QWERTY"

while I don't see any particular downsides to this approach (but if you do then please enlighten me) is there a way I can do it as per the docs?

Any clariifcation / help would be much appreciated.


ejabberd mailing list
ejabberd <at>