LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Server (https://www.linuxquestions.org/questions/linux-server-73/)
-   -   MongooseIM (ejabberd) user not authenticated (https://www.linuxquestions.org/questions/linux-server-73/mongooseim-ejabberd-user-not-authenticated-4175504358/)

Train 05-08-2014 02:47 PM

MongooseIM (ejabberd) user not authenticated
 
I installed the latest version of MongooseIM (esl-ejabberd) in Debian-based distro.

I registered a user.

When I try to login from Pidgin or Spark, it says user not authenticated.

Any ideas?

Code:

%%%
%%%              ejabberd configuration file
%%%
%%%'

%%% The parameters used in this configuration file are explained in more detail
%%% in the ejabberd Installation and Operation Guide.
%%% Please consult the Guide in case of doubts, it is included with
%%% your copy of ejabberd, and is also available online at
%%% http://www.process-one.net/en/ejabberd/docs/

%%% This configuration file contains Erlang terms.
%%% In case you want to understand the syntax, here are the concepts:
%%%
%%%  - The character to comment a line is %
%%%
%%%  - Each term ends in a dot, for example:
%%%      override_global.
%%%
%%%  - A tuple has a fixed definition, its elements are
%%%    enclosed in {}, and separated with commas:
%%%      {loglevel, 4}.
%%%
%%%  - A list can have as many elements as you want,
%%%    and is enclosed in [], for example:
%%%      [http_poll, web_admin, tls]
%%%
%%%    Pay attention that list elements are delimited with commas,
%%%    but no comma is allowed after the last list element. This will
%%%    give a syntax error unlike in more lenient languages (e.g. Python).
%%%
%%%  - A keyword of ejabberd is a word in lowercase.
%%%    Strings are enclosed in "" and can contain spaces, dots, ...
%%%      {language, "en"}.
%%%      {ldap_rootdn, "dc=example,dc=com"}.
%%%
%%%  - This term includes a tuple, a keyword, a list, and two strings:
%%%      {hosts, ["jabber.example.net", "im.example.com"]}.
%%%
%%%  - This config is preprocessed during release generation by a tool which
%%%    interprets double curly braces as substitution markers, so avoid this
%%%    syntax in this file (though it's valid Erlang).
%%%
%%%    So this is OK (though arguably looks quite ugly):
%%%      { {s2s_addr, "example-host.net"}, {127,0,0,1} }.
%%%
%%%    And I can't give an example of what's not OK exactly because
%%%    of this rule.
%%%


%%%.  =======================
%%%'  OVERRIDE STORED OPTIONS

%%
%% Override the old values stored in the database.
%%

%%
%% Override global options (shared by all ejabberd nodes in a cluster).
%%
%%override_global.

%%
%% Override local options (specific for this particular ejabberd node).
%%
%%override_local.

%%
%% Remove the Access Control Lists before new ones are added.
%%
%%override_acls.


%%%.  =========
%%%'  DEBUGGING

%%
%% loglevel: Verbosity of log files generated by ejabberd.
%% 0: No ejabberd log at all (not recommended)
%% 1: Critical
%% 2: Error
%% 3: Warning
%% 4: Info
%% 5: Debug
%%
{loglevel, 3}.

%%
%% alarms: an optional alarm handler, subscribed to system events
%% long_gc: minimum GC time in ms for long_gc alarm
%% large_heap: minimum process heap size for large_heap alarm
%% handlers: a list of alarm handlers
%%  - alarms_basic_handler:  logs alarms and stores a brief alarm summary
%%  - alarms_folsom_handler: stores alarm details in folsom metrics
%%
%% Example:
%% {alarms,
%%  [{long_gc, 10000},
%%  {large_heap, 1000000},
%%  {handlers, [alarms_basic_handler,
%%              alarms_folsom_handler]}]
%% }.

%%
%% watchdog_admins: Only useful for developers: if an ejabberd process
%% consumes a lot of memory, send live notifications to these XMPP
%% accounts. Requires alarms (see above).
%%
%%{watchdog_admins, ["bob@example.com"]}.


%%%.  ================
%%%'  SERVED HOSTNAMES

%%
%% hosts: Domains served by ejabberd.
%% You can define one or several, for example:
%% {hosts, ["example.net", "example.com", "example.org"]}.
%%
{hosts, ["itona"] }.

%%
%% route_subdomains: Delegate subdomains to other XMPP servers.
%% For example, if this ejabberd serves example.org and you want
%% to allow communication with an XMPP server called im.example.org.
%%
%%{route_subdomains, s2s}.


%%%.  ===============
%%%'  LISTENING PORTS

%%
%% listen: The ports ejabberd will listen on, which service each is handled
%% by and what options to start it with.
%%
{listen,
 [

  { 5280, mod_bosh, [{num_acceptors, 10}]},

  { 5222, ejabberd_c2s, [

                        %%
                        %% If TLS is compiled in and you installed a SSL
                        %% certificate, specify the full path to the
                        %% file and uncomment this line:
                        %%
                        %%{certfile, "/path/to/ssl.pem"}, starttls,

                        {access, c2s},
                        {shaper, c2s_shaper},
                        {max_stanza_size, 65536}
                      ]},

  { {5288, ws}, mod_websockets, [
                  {host, "itona"},
                  {prefix, "/ws-xmpp"}
            ]},

  %% websockets secure
  % { {5289, wss}, mod_websockets, [
  %                {host, "localhost"},
  %                {prefix, "/ws-xmpp"},
  %                {cert, "priv/server.crt"},
  %                {key, "priv/server.key"},
  %                {key_pass, ""}
  %          ]},
  %%
  %% To enable the old SSL connection method on port 5223:
  %%
  %%{5223, ejabberd_c2s, [
  %%                    {access, c2s},
  %%                    {shaper, c2s_shaper},
  %%                    {certfile, "/path/to/ssl.pem"}, tls,
  %%                    {max_stanza_size, 65536}
  %%                  ]},

  { 5269, ejabberd_s2s_in, [
                          {shaper, s2s_shaper},
                          {max_stanza_size, 131072}
                          ]}

  %%
  %% ejabberd_service: Interact with external components (transports, ...)
  %%
  %%{8888, ejabberd_service, [
  %%                        {access, all},
  %%                        {shaper_rule, fast},
  %%                        {ip, {127, 0, 0, 1}},
  %%                        {hosts, ["icq.example.org", "sms.example.org"],
  %%                        [{password, "secret"}]
  %%                        }
  %%                      ]},

  %%
  %% ejabberd_stun: Handles STUN Binding requests
  %%
  %%{ {3478, udp}, ejabberd_stun, []}

 ]}.

%%
%% s2s_use_starttls: Enable STARTTLS + Dialback for S2S connections.
%% Allowed values are: false optional required required_trusted
%% You must specify a certificate file.
%%
%%{s2s_use_starttls, optional}.

%%
%% s2s_certfile: Specify a certificate file.
%%
%%{s2s_certfile, "/path/to/ssl.pem"}.

%%
%% domain_certfile: Specify a different certificate for each served hostname.
%%
%%{domain_certfile, "example.org", "/path/to/example_org.pem"}.
%%{domain_certfile, "example.com", "/path/to/example_com.pem"}.

%%
%% S2S whitelist or blacklist
%%
%% Default s2s policy for undefined hosts.
%%
{s2s_default_policy, deny }.

%%
%% Allow or deny communication with specific servers.
%%
%%{ {s2s_host, "goodhost.org"}, allow}.
%%{ {s2s_host, "badhost.org"}, deny}.

{outgoing_s2s_port, 5269 }.

%%
%% IP addresses predefined for specific hosts to skip DNS lookups.
%% Ports defined here take precedence over outgoing_s2s_port.
%% Examples:
%%
%% { {s2s_addr, "example-host.net"}, {127,0,0,1} }.
%% { {s2s_addr, "example-host.net"}, { {127,0,0,1}, 5269 } }.
%% { {s2s_addr, "example-host.net"}, { {127,0,0,1}, 5269 } }.

%%
%% Outgoing S2S options
%%
%% Preferred address families (which to try first) and connect timeout
%% in milliseconds.
%%
%%{outgoing_s2s_options, [ipv4, ipv6], 10000}.

%%%.  ==============
%%%'  SESSION BACKEND

%%{sm_backend, {mnesia, []}}.

%%{sm_backend, {redis, [{pool_size, 3}, {worker_config, [{host, "localhost"}, {port, 6379}]}]}}.
{sm_backend, {mnesia, []} }.


%%%.  ==============
%%%'  AUTHENTICATION

%%
%% auth_method: Method used to authenticate the users.
%% The default method is the internal.
%% If you want to use a different method,
%% comment this line and enable the correct ones.
%%
{auth_method, internal }.

%%
%% Authentication using external script
%% Make sure the script is executable by ejabberd.
%%
%%{auth_method, external}.
%%{extauth_program, "/path/to/authentication/script"}.

%%
%% Authentication using ODBC
%% Remember to setup a database in the next section.
%%
%%{auth_method, odbc}.

%%
%% Authentication using PAM
%%
%%{auth_method, pam}.
%%{pam_service, "pamservicename"}.

%%
%% Authentication using LDAP
%%
%%{auth_method, ldap}.
%%
%% List of LDAP servers:
%%{ldap_servers, ["localhost"]}.
%%
%% Encryption of connection to LDAP servers:
%%{ldap_encrypt, none}.
%%{ldap_encrypt, tls}.
%%
%% Port to connect to on LDAP servers:
%%{ldap_port, 389}.
%%{ldap_port, 636}.
%%
%% LDAP manager:
%%{ldap_rootdn, "dc=example,dc=com"}.
%%
%% Password of LDAP manager:
%%{ldap_password, "******"}.
%%
%% Search base of LDAP directory:
%%{ldap_base, "dc=example,dc=com"}.
%%
%% LDAP attribute that holds user ID:
%%{ldap_uids, [{"mail", "%u@mail.example.org"}]}.
%%
%% LDAP filter:
%%{ldap_filter, "(objectClass=shadowAccount)"}.

%%
%% Anonymous login support:
%%  auth_method: anonymous
%%  anonymous_protocol: sasl_anon | login_anon | both
%%  allow_multiple_connections: true | false
%%
%%{host_config, "public.example.org", [{auth_method, anonymous},
%%                                    {allow_multiple_connections, false},
%%                                    {anonymous_protocol, sasl_anon}]}.
%%
%% To use both anonymous and internal authentication:
%%
%%{host_config, "public.example.org", [{auth_method, [internal, anonymous]}]}.


%%%.  ==============
%%%'  DATABASE SETUP

%% ejabberd by default uses the internal Mnesia database,
%% so you do not necessarily need this section.
%% This section provides configuration examples in case
%% you want to use other database backends.
%% Please consult the ejabberd Guide for details on database creation.

%%
%% MySQL server:
%%

%%
%% If you want to specify the port:
%%{odbc_server, {mysql, "server", 1234, "database", "username", "password"}}.

%%
%% PostgreSQL server:
%%
%%{odbc_server, {pgsql, "server", "database", "username", "password"}}.
%%
%% If you want to specify the port:
%%{odbc_server, {pgsql, "server", 1234, "database", "username", "password"}}.
%%
%% If you use PostgreSQL, have a large database, and need a
%% faster but inexact replacement for "select count(*) from users"
%%
%%{pgsql_users_number_estimate, true}.

%%
%% ODBC compatible or MSSQL server:
%%
%%{odbc_server, "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"}.

%%
%% Number of connections to open to the database for each virtual host
%%
%%{odbc_pool_size, 10}.

%%
%% Interval to make a dummy SQL request to keep the connections to the
%% database alive. Specify in seconds: for example 28800 means 8 hours
%%
%%{odbc_keepalive_interval, undefined}.


%%%.  ===============
%%%'  TRAFFIC SHAPERS

%%
%% The "normal" shaper limits traffic speed to 1000 B/s
%%
{shaper, normal, {maxrate, 1000}}.

%%
%% The "fast" shaper limits traffic speed to 50000 B/s
%%
{shaper, fast, {maxrate, 50000}}.

%%
%% This option specifies the maximum number of elements in the queue
%% of the FSM. Refer to the documentation for details.
%%
{max_fsm_queue, 1000}.


%%%.  ====================
%%%'  ACCESS CONTROL LISTS

%%
%% The 'admin' ACL grants administrative privileges to XMPP accounts.
%% You can put here as many accounts as you want.
%%
%%{acl, admin, {user, "alice", "localhost"}}.
{acl, admin, {user, "wolf", "itona"}}.

%%
%% Blocked users
%%
%%{acl, blocked, {user, "baduser", "example.org"}}.
%%{acl, blocked, {user, "test"}}.

%%
%% Local users: don't modify this line.
%%
{acl, local, {user_regexp, ""}}.

%%
%% More examples of ACLs
%%
%%{acl, jabberorg, {server, "jabber.org"}}.
%%{acl, aleksey, {user, "aleksey", "jabber.ru"}}.
%%{acl, test, {user_regexp, "^test"}}.
%%{acl, test, {user_glob, "test*"}}.

%%
%% Define specific ACLs in a virtual host.
%%
%%{host_config, "localhost",
%% [
%%  {acl, admin, {user, "bob-local", "localhost"}}
%% ]
%%}.


%%%.  ============
%%%'  ACCESS RULES

%% Maximum number of simultaneous sessions allowed for a single user:
{access, max_user_sessions, [{10, all}]}.

%% Maximum number of offline messages that users can have:
{access, max_user_offline_messages, [{5000, admin}, {100, all}]}.

%% This rule allows access only for local users:
{access, local, [{allow, local}]}.

%% Only non-blocked users can use c2s connections:
{access, c2s, [{deny, blocked},
              {allow, all}]}.

%% For C2S connections, all users except admins use the "normal" shaper
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.

%% All S2S connections use the "fast" shaper
{access, s2s_shaper, [{fast, all}]}.

%% Admins of this server are also admins of the MUC service:
{access, muc_admin, [{allow, admin}]}.

%% Only accounts of the local ejabberd server can create rooms:
{access, muc_create, [{allow, local}]}.

%% All users are allowed to use the MUC service:
{access, muc, [{allow, all}]}.

%% In-band registration allows registration of any possible username.
%% To disable in-band registration, replace 'allow' with 'deny'.
{access, register, [{deny, all}]}.

%% By default the frequency of account registrations from the same IP
%% is limited to 1 account every 10 minutes. To disable, specify: infinity
{registration_timeout, infinity}.

%%
%% Define specific Access Rules in a virtual host.
%%
%%{host_config, "localhost",
%% [
%%  {access, c2s, [{allow, admin}, {deny, all}]},
%%  {access, register, [{deny, all}]}
%% ]
%%}.


%%%.  ================
%%%'  DEFAULT LANGUAGE

%%
%% language: Default language used for server messages.
%%
{language, "en"}.

%%
%% Set a different default language in a virtual host.
%%
%%{host_config, "localhost",
%% [{language, "ru"}]
%%}.


%%%.  =======
%%%'  MODULES

%%
%% Modules enabled in all ejabberd virtual hosts.
%% For list of possible modules options, check documentation.
%% If module comes in two versions, like mod_last and mod_last_odbc,
%% use only one of them.
%%
{modules,
 [
  {mod_adhoc, []},
  {mod_disco, []},
  {mod_last, []},
%  {mod_last_odbc, []},
  {mod_muc, [
            {host, "muc.@HOST@"},
            {access, muc},
            {access_create, muc_create}
            ]},
  {mod_muc_log,
        [
        {outdir, "/tmp/muclogs"},
        {access_log, muc}
        ]},
%  {mod_offline, [{access_max_user_messages, max_user_offline_messages}]},
  {mod_privacy,  []},
%  {mod_privacy_odbc, []},
  {mod_private,  []},
%  {mod_private_odbc, []},
  {mod_register, [
                  %%
                  %% Set the minimum informational entropy for passwords.
                  %%
                  %%{password_strength, 32},

                  %%
                  %% After successful registration, the user receives
                  %% a message with this subject and body.
                  %%
                  {welcome_message, {""}},

                  %%
                  %% When a user registers, send a notification to
                  %% these XMPP accounts.
                  %%
                  %%{registration_watchers, ["admin1@example.org"]},

                  %%
                  %% Only clients in the server machine can register accounts
                  %%
                  {ip_access, [{allow, "127.0.0.0/8"},
                              {deny, "0.0.0.0/0"}]},

                  %%
                  %% Local c2s or remote s2s users cannot register accounts
                  %%
                  %%{access_from, deny},

                  {access, register}
                ]},
  {mod_roster,  []},
%  {mod_roster_odbc, []},
  {mod_sic, []},
  {mod_vcard, [ {allow_return_all, true},
                {search_all_hosts, true}
                %{matches, 1},
                %{search, true},
                %{host, directory.@HOST@}
              ]},
%  {mod_vcard_odbc, []},
  {mod_metrics, [{port, 8081}]}
  % {mod_websockets, [
  %              {host, "localhost"},
  %              {prefix, "/ws-xmpp"},
  %              {port, 5288},
  %              {ssl_port, 5289}
  %              %%,{cert, "priv/server.crt"}, {key, "priv/server.key"}, {key_pass, ""}
  %          ]}
 ]}.


%%
%% Enable modules with custom options in a specific virtual host
%%
%%{host_config, "localhost",
%% [{ {add, modules},
%%  [
%%    {mod_some_module, []}
%%  ]
%%  }
%% ]}.


%%%.
%%%'

%%% $Id$

%%% Local Variables:
%%% mode: erlang
%%% End:
%%% vim: set filetype=erlang tabstop=8 foldmarker=%%%',%%%. foldmethod=marker:
%%%.


eklavya 05-09-2014 05:39 AM

Is there any firewall enabled? Did you define port there?
Did you open(define) the port 5222 & 5223 in iptables?

Train 05-09-2014 07:21 AM

Quote:

Originally Posted by eklavya (Post 5167621)
Is there any firewall enabled? Did you define port there?
Did you open(define) the port 5222 & 5223 in iptables?

No. I did not do that.

I will add those to IPTables and let you know what my results are.

Train 05-09-2014 09:13 AM

I have edited IPtables with the following.

Code:

ACCEPT    tcp  --  anywhere            anywhere            tcp dpt:xmpp-client
ACCEPT    tcp  --  anywhere            anywhere            tcp dpt:5223

It still shows as not authorized when connecting from a internet connected computer to the server with Pidgin.

eklavya 05-12-2014 12:01 AM

Run these commands in terminal.
Quote:

# sudo iptables -A OUTPUT -p tcp -m state -m tcp --dport 5222 --state NEW -j ACCEPT
# sudo iptables -A OUTPUT -p tcp -m state -m tcp --dport 5223 --state NEW -j ACCEPT
Restart iptables.

Train 05-12-2014 08:56 AM

Quote:

Originally Posted by eklavya (Post 5169105)
Run these commands in terminal.

Restart iptables.

I have done that to no avail.

trevizeatl 08-10-2015 10:06 AM

Quote:

Originally Posted by Train (Post 5169320)
I have done that to no avail.

Hi @Train, did you resolve your issue.

I am facing similar issue and I am not able to find a solution anywhere and any config issues as a matter of fact.


All times are GMT -5. The time now is 08:10 PM.