ejabberd works well using its internal database, but after enabling the native mysql support Reproducible: Always Steps to Reproduce: 1.emerge -av ejabberd; build with ldap mod_irc mod_muc mod_pubsub odbc ssl web zlib 2. build ssl certs 3. insert FQDN in /etc/jabber/ejabberd.cfg in this option: % Host name: {hosts, ["zentela.com"]}. 4. replace references to './ssl.pem' in ejabberd.cfg to '/etc/jabber/ssl.pem' 5. Uncomment in /etc/conf.d/ejabberd EJABBERD_NODE="ejabberd@`hostname -s`" 6. Start ejabberd (ejabberd is now 'working', and you can begin registering users) 7. Add a table for ejabberd to your MySQL db, and make a few changes to /etc/jabber/ejabberd.cfg as per http://support.process-one.net/doc/display/MESSENGER/Using+ejabberd+with+MySQL+native+driver That url provides the DB schema, and gives an example of the few additional lines to edit in ejabberd.cfg. You will also need to compile their native MySQL driver and copy it to /usr/lib/erlang/lib/ejabberd-1.1.4/ebin/. When all is said and done the diff between the default config and the 'should be working' config is: thedude jabber # diff -i ejabberd.cfg.example ejabberd.cfg < {auth_method, internal}. > % {auth_method, internal}. < %{auth_method, odbc}. < %{odbc_server, "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"}. > {auth_method, odbc}. > {odbc_server, {mysql, "localhost", "FQDN_XMPP", "ejabberd", "secret"}}. < {hosts, ["localhost"]}. > {hosts, ["FQDN.com"]}. < starttls, {certfile, "./ssl.pem"}]}, > starttls, {certfile, "/etc/jabber/ssl.pem"}]}, < tls, {certfile, "./ssl.pem"}]}, > tls, {certfile, "/etc/jabber/ssl.pem"}]}, < {s2s_certfile, "./ssl.pem"}. > {s2s_certfile, "/etc/jabber/ssl.pem"}. < {mod_roster, []}, > {mod_roster_odbc, []}, < {mod_vcard, []}, < {mod_offline, []}, > {mod_vcard_odbc, []}, > {mod_offline_odbc, []}, < {mod_last, []}, > {mod_last_odbc, []}, Actual Results: Attempting to register existing user in the db's users table via pidgin: Not Authorized Attempting to register a new user not in db's users table: 409: Conflict Attempting to add a user via ejabberdctl: User "foobarbaz@FQDN.com" already registered at node ejabberd@thedude Expected Results: Expected to be able to register, or add a user, respectively I can connect to my erlang node (process) and try to manually issue a MySQL query like this: ebin # erl -sname node1 ejabberd@thedude Erlang (BEAM) emulator version 5.5.5 [source] [async-threads:0] [kernel-poll:false] Eshell V5.5.5 (abort with ^G) 1> ejabberd_odbc:sql_query("thedude", "select 1"). ** exited: {noproc,{gen_server,call, [ejabberd_odbc_sup_thedude, which_children, infinity]}} ** 2> ... but as you can see that fails. People in the ejabberd community haven't been able to help me but they seem to agree it /should/ be working. The server is a Xen host. I have a sporadic dialog going on with a user of the ejabberd mailing list who is occasionally giving me ideas, to no avail. I also have an ejabberd forum post here: http://www.ejabberd.im/node/2792 ... which details some other things I've tried
This problem is reported against ejabberd-1.4 which was removed from the tree. I think this problem should be solved in 2.x versions of ejabberd (thus closing this bug. If this problems is still reproducible, please, reopen. (Reference for myself): http://www.process-one.net/en/ejabberd/guide_en#htoc34