我正在尝试在VPS服务器(Digital Ocean,FreeBSD Droplet)上设置ejabberd XMPP服务器。我已经启动了ejabberd服务,并且能够登录开发人员控制台,注册用户并登录。我现在遇到的问题是我无法添加好友"或者启动任何s2s连接,因为我得到503服务不可用错误。
这是我试图向我的朋友帐户发送好友请求的调试输出(我用&#34取代了他的真实句柄; HANDLE"):
(ejabberd@localhost)1> 13:46:03.468 [debug] Received XML on stream = <<"<presence to='HANDLE@jabb3r.org' type='subscribe'/>">>
13:46:03.471 [debug] sending to process <0.1148.0>
13:46:03.473 [debug] route
from {jid,<<"admin">>,<<"vsydorov.me">>,<<>>,<<"admin">>,<<"vsydorov.me">>,<<>>}
to {jid,<<"admin">>,<<"vsydorov.me">>,<<"12836165211442403246588688">>,<<"admin">>,<<"vsydorov.me">>,<<"12836165211442403246588688">>}
packet {xmlel,<<"iq">>,[{<<"id">>,<<"push4236684536">>},{<<"type">>,<<"set">>}],[{xmlel,<<"query">>,[{<<"xmlns">>,<<"jabber:iq:roster">>}],[{xmlel,<<"item">>,[{<<"ask">>,<<"subscribe">>},{<<"subscription">>,<<"none">>},{<<"jid">>,<<"HANDLE@jabb3r.org">>}],[{xmlel,<<"group">>,[],[{xmlcdata,<<"Buddies">>}]}]}]}]}
13:46:03.473 [debug] local route
from {jid,<<"admin">>,<<"vsydorov.me">>,<<>>,<<"admin">>,<<"vsydorov.me">>,<<>>}
to {jid,<<"admin">>,<<"vsydorov.me">>,<<"12836165211442403246588688">>,<<"admin">>,<<"vsydorov.me">>,<<"12836165211442403246588688">>}
packet {xmlel,<<"iq">>,[{<<"id">>,<<"push"...>>},{<<"type">>,<<...>>}],[{xmlel,<<...>>,...}]}
13:46:03.473 [debug] session manager
from {jid,<<"admin">>,<<"vsydorov.me">>,<<>>,<<"admin">>,<<"vsydorov.me">>,<<>>}
to {jid,<<"admin">>,<<"vsydorov.me">>,<<"12836165211442403246588688">>,<<"admin">>,<<"vsydorov.me">>,<<"12836165211442403246588688">>}
packet {xmlel,<<"iq">>,[{<<"id">>,<<"push"...>>},{<<"type">>,<<...>>}],[{xmlel,<<...>>,...}]}
13:46:03.473 [debug] sending to process <0.1148.0>
13:46:03.473 [debug] route
from {jid,<<"admin">>,<<"vsydorov.me">>,<<>>,<<"admin">>,<<"vsydorov.me">>,<<>>}
to {jid,<<"HANDLE">>,<<"jabb3r.org">>,<<>>,<<"HANDLE">>,<<"jabb3r.org">>,<<>>}
packet {xmlel,<<"presence">>,[{<<"to">>,<<"HANDLE@jabb3r.org">>},{<<"type">>,<<"subscribe">>}],[]}
13:46:03.474 [debug] s2s manager
from {jid,<<"admin">>,<<"vsydorov.me">>,<<>>,<<"admin">>,<<"vsydorov.me">>,<<>>}
to {jid,<<"HANDLE">>,<<"jabb3r.org">>,<<>>,<<"HANDLE">>,<<"jabb3r.org">>,<<>>}
packet {xmlel,<<"presence">>,[{<<"to">>,<<"blac"...>>},{<<"type">>,<<...>>}],[]}
13:46:03.474 [debug] Finding connection for {<<"vsydorov.me">>,<<"jabb3r.org">>}
13:46:03.474 [debug] route
from {jid,<<"HANDLE">>,<<"jabb3r.org">>,<<>>,<<"HANDLE">>,<<"jabb3r.org">>,<<>>}
to {jid,<<"admin">>,<<"vsydorov.me">>,<<>>,<<"admin">>,<<"vsydorov.me">>,<<>>}
packet {xmlel,<<"presence">>,[{<<"type">>,<<"error">>},{<<"from">>,<<"HANDLE@jabb3r.org">>}],[{xmlel,<<"error">>,[{<<"code">>,<<"503">>},{<<"type">>,<<"cancel">>}],[{xmlel,<<"service-unavailable">>,[{<<"xmlns">>,<<"urn:ietf:params:xml:ns:xmpp-stanzas">>}],[]}]}]}
13:46:03.475 [debug] local route
from {jid,<<"HANDLE">>,<<"jabb3r.org">>,<<>>,<<"HANDLE">>,<<"jabb3r.org">>,<<>>}
to {jid,<<"admin">>,<<"vsydorov.me">>,<<>>,<<"admin">>,<<"vsydorov.me">>,<<>>}
packet {xmlel,<<"presence">>,[{<<"type">>,<<"erro"...>>},{<<"from">>,<<...>>}],[{xmlel,<<...>>,...}]}
13:46:03.475 [debug] session manager
from {jid,<<"HANDLE">>,<<"jabb3r.org">>,<<>>,<<"HANDLE">>,<<"jabb3r.org">>,<<>>}
to {jid,<<"admin">>,<<"vsydorov.me">>,<<>>,<<"admin">>,<<"vsydorov.me">>,<<>>}
packet {xmlel,<<"presence">>,[{<<"type">>,<<"erro"...>>},{<<"from">>,<<...>>}],[{xmlel,<<...>>,...}]}
13:46:03.475 [debug] session manager
from {jid,<<"HANDLE">>,<<"jabb3r.org">>,<<>>,<<"HANDLE">>,<<"jabb3r.org">>,<<>>}
to {jid,<<"admin">>,<<"vsydorov.me">>,<<"12836165211442403246588688">>,<<"admin">>,<<"vsydorov.me">>,<<"12836165211442403246588688">>}
packet {xmlel,<<"presence">>,[{<<"type">>,<<"erro"...>>},{<<"from">>,<<...>>}],[{xmlel,<<...>>,...}]}
13:46:03.475 [debug] sending to process <0.1148.0>
13:46:03.476 [debug] broadcast
{item,{<<"HANDLE">>,<<"jabb3r.org">>,<<>>},none}
13:46:03.476 [debug] roster changed for <<"admin">>
13:46:03.476 [debug] Send XML on stream = <<"<iq from='admin@vsydorov.me' to='admin@vsydorov.me/12836165211442403246588688' id='push4236684536' type='set'><query xmlns='jabber:iq:roster'><item ask='subscribe' subscription='none' jid='HANDLE@jabb3r.org'><group>Buddies</group></item></query></iq>">>
13:46:03.477 [debug] Send XML on stream = <<"<presence from='HANDLE@jabb3r.org' to='admin@vsydorov.me/12836165211442403246588688' type='error'><error code='503' type='cancel'><service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></presence>">>
13:46:03.512 [debug] Received XML on stream = <<"<iq type='result' id='push4236684536'/>">>
13:46:03.513 [debug] route
from {jid,<<"admin">>,<<"vsydorov.me">>,<<"12836165211442403246588688">>,<<"admin">>,<<"vsydorov.me">>,<<"12836165211442403246588688">>}
to {jid,<<"admin">>,<<"vsydorov.me">>,<<>>,<<"admin">>,<<"vsydorov.me">>,<<>>}
packet {xmlel,<<"iq">>,[{<<"type">>,<<"result">>},{<<"id">>,<<"push4236684536">>}],[]}
13:46:03.513 [debug] local route
from {jid,<<"admin">>,<<"vsydorov.me">>,<<"12836165211442403246588688">>,<<"admin">>,<<"vsydorov.me">>,<<"12836165211442403246588688">>}
to {jid,<<"admin">>,<<"vsydorov.me">>,<<>>,<<"admin">>,<<"vsydorov.me">>,<<>>}
packet {xmlel,<<"iq">>,[{<<"type">>,<<"resu"...>>},{<<"id">>,<<...>>}],[]}
13:46:03.513 [debug] session manager
from {jid,<<"admin">>,<<"vsydorov.me">>,<<"12836165211442403246588688">>,<<"admin">>,<<"vsydorov.me">>,<<"12836165211442403246588688">>}
to {jid,<<"admin">>,<<"vsydorov.me">>,<<>>,<<"admin">>,<<"vsydorov.me">>,<<>>}
packet {xmlel,<<"iq">>,[{<<"type">>,<<"resu"...>>},{<<"id">>,<<...>>}],[]}
起初我虽然我的DNS表错了,但我检查并重新检查它并且反复 - 它是正确的。
_xmpp-client._tcp.vsydorov.me. 1800 IN SRV 5 0 5222 vsydorov.me.
_xmpp-server._tcp.vsydorov.me. 1800 IN SRV 5 0 5269 vsydorov.me.
_jabber._tcp.vsydorov.me. 1800 IN SRV 5 0 5269 vsydorov.me.
我不能自己谷歌解决这个问题 - 我现在已经连续两天尝试了。
这是ejabberd服务器的.yml配置:
loglevel: 5
log_rotate_size: 10485760
log_rotate_date: ""
log_rotate_count: 1
log_rate_limit: 100
hosts:
route_subdomains: s2s
listen:
-
port: 5222
module: ejabberd_c2s
certfile: "/usr/local/etc/ejabberd/ejabberd.pem"
starttls: true
max_stanza_size: 65536
shaper: c2s_shaper
access: c2s
-
port: 5269
module: ejabberd_s2s_in
-
port: 8888
module: ejabberd_service
access: all
shaper_rule: fast
ip: "127.0.0.1"
hosts:
"icq.example.org":
password: "secret"
"sms.example.org":
password: "secret"
-
port: 3478
transport: udp
module: ejabberd_stun
-
port: 4560
module: ejabberd_xmlrpc
-
port: 5280
module: ejabberd_http
request_handlers:
"/websocket": ejabberd_http_ws
web_admin: true
http_bind: true
captcha: true
s2s_use_starttls: optional
s2s_certfile: "/usr/local/etc/ejabberd/ejabberd.pem"
host_config:
"vsydorov.me":
domain_certfile: "/usr/local/etc/ejabberd/ejabberd.pem"
s2s_access: s2s
outgoing_s2s_families:
- ipv4
- ipv6
outgoing_s2s_timeout: 10000
auth_method: internal
auth_password_format: scram
shaper:
normal: 1000
fast: 50000
max_fsm_queue: 1000
acl:
admin:
user:
- "admin": "vsydorov.me"
local:
user_regexp: ""
loopback:
ip:
- "127.0.0.0/8"
access:
max_user_sessions:
all: 10
max_user_offline_messages:
admin: 5000
all: 100
local:
local: allow
c2s:
blocked: deny
all: allow
c2s_shaper:
admin: none
all: normal
s2s_shaper:
all: fast
announce:
admin: allow
configure:
admin: allow
muc_admin:
admin: allow
muc_create:
local: allow
muc:
all: allow
pubsub_createnode:
local: allow
register:
all: allow
trusted_network:
loopback: allow
language: "en"
modules:
mod_adhoc: {}
mod_announce: # recommends mod_adhoc
access: announce
mod_blocking: {} # requires mod_privacy
mod_caps: {}
mod_carboncopy: {}
mod_client_state:
drop_chat_states: true
queue_presence: false
mod_configure: {} # requires mod_adhoc
mod_disco: {}
mod_irc: {}
mod_http_bind: {}
mod_last: {}
mod_muc:
access: muc
access_create: muc_create
access_persistent: muc_create
access_admin: muc_admin
mod_offline:
access_max_user_messages: max_user_offline_messages
mod_ping: {}
mod_privacy: {}
mod_private: {}
mod_pubsub:
access_createnode: pubsub_createnode
ignore_pep_from_offline: true
last_item_cache: false
plugins:
- "flat"
- "hometree"
- "pep" # pep requires mod_caps
mod_register:
welcome_message:
subject: "Welcome!"
body: |-
Hi.
Welcome to Vlad's XMPP server.
ip_access: trusted_network
access: register
mod_roster: {}
mod_shared_roster: {}
mod_stats: {}
mod_time: {}
mod_vcard: {}
mod_version: {}
答案 0 :(得分:1)
可怕的磨难结束了 - 我找到了罪魁祸首。不知何故,在我的配置中评论了三条非常重要的行。
在&#34;访问&#34;部分:
## Do not establish S2S connections with bad servers
## s2s:
## bad_servers: deny
## all: allow
我取消注释了它们,现在一切正常。谈论无信息的日志!
以下是最终配置:
###
###' 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/
### The configuration file is written in YAML.
### Refer to http://en.wikipedia.org/wiki/YAML for the brief description.
### However, ejabberd treats different literals as different types:
###
### - unquoted or single-quoted strings. They are called "atoms".
### Example: dog, 'Jupiter', '3.14159', YELLOW
###
### - numeric literals. Example: 3, -45.0, .0
###
### - quoted or folded strings.
### Examples of quoted string: "Lizzard", "orange".
### Example of folded string:
### > Art thou not Romeo,
### and a Montague?
###. =======
###' LOGGING
##
## 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: 5
##
## rotation: Describe how to rotate logs. Either size and/or date can trigger
## log rotation. Setting count to N keeps N rotated logs. Setting count to 0
## does not disable rotation, it instead rotates the file and keeps no previous
## versions around. Setting size to X rotate log when it reaches X bytes.
## To disable rotation set the size to 0 and the date to ""
## Date syntax is taken from the syntax newsyslog uses in newsyslog.conf.
## Some examples:
## $D0 rotate every night at midnight
## $D23 rotate every day at 23:00 hr
## $W0D23 rotate every week on Sunday at 23:00 hr
## $W5D16 rotate every week on Friday at 16:00 hr
## $M1D0 rotate on the first day of every month at midnight
## $M5D6 rotate on every 5th day of the month at 6:00 hr
##
log_rotate_size: 10485760
log_rotate_date: ""
log_rotate_count: 1
##
## overload protection: If you want to limit the number of messages per second
## allowed from error_logger, which is a good idea if you want to avoid a flood
## of messages when system is overloaded, you can set a limit.
## 100 is ejabberd's default.
log_rate_limit: 100
##
## watchdog_admins: Only useful for developers: if an ejabberd process
## consumes a lot of memory, send live notifications to these XMPP
## accounts.
##
## watchdog_admins:
## - "bob@example.com"
###. ===============
###' NODE PARAMETERS
##
## net_ticktime: Specifies net_kernel tick time in seconds. This options must have
## identical value on all nodes, and in most cases shouldn't be changed at all from
## default value.
##
## net_ticktime: 60
###. ================
###' SERVED HOSTNAMES
##
## hosts: Domains served by ejabberd.
## You can define one or several, for example:
## hosts:
## - "example.net"
## - "example.com"
## - "example.org"
##
hosts:
- "vsydorov.me"
##
## 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:
-
port: 5222
module: ejabberd_c2s
##
## If TLS is compiled in and you installed a SSL
## certificate, specify the full path to the
## file and uncomment these lines:
##
certfile: "/usr/local/etc/ejabberd/ejabberd.pem"
## starttls: true
##
## To enforce TLS encryption for client connections,
## use this instead of the "starttls" option:
##
starttls_required: true
##
## Custom OpenSSL options
##
## protocol_options:
## - "no_sslv3"
## - "no_tlsv1"
max_stanza_size: 65536
shaper: c2s_shaper
access: c2s
-
port: 5269
module: ejabberd_s2s_in
##
## ejabberd_service: Interact with external components (transports, ...)
##
-
port: 8888
module: ejabberd_service
access: all
shaper_rule: fast
ip: "127.0.0.1"
hosts:
"icq.example.org":
password: "secret"
"sms.example.org":
password: "secret"
##
## ejabberd_stun: Handles STUN Binding requests
##
-
port: 3478
transport: udp
module: ejabberd_stun
##
## To handle XML-RPC requests that provide admin credentials:
##
-
port: 4560
module: ejabberd_xmlrpc
-
port: 5280
module: ejabberd_http
request_handlers:
"/websocket": ejabberd_http_ws
## "/pub/archive": mod_http_fileserver
web_admin: true
http_bind: true
## register: true
captcha: true
###. ==================
###' S2S GLOBAL OPTIONS
##
## 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: required
##
## s2s_certfile: Specify a certificate file.
##
s2s_certfile: "/usr/local/etc/ejabberd/ejabberd.pem"
## Custom OpenSSL options
##
## s2s_protocol_options:
## - "no_sslv3"
## - "no_tlsv1"
##
## domain_certfile: Specify a different certificate for each served hostname.
##
host_config:
"vsydorov.me":
domain_certfile: "/usr/local/etc/ejabberd/ejabberd.pem"
##
## S2S whitelist or blacklist
##
## Default s2s policy for undefined hosts.
##
s2s_access: s2s
##
## Outgoing S2S options
##
## Preferred address families (which to try first) and connect timeout
## in milliseconds.
##
outgoing_s2s_families:
- ipv4
- ipv6
outgoing_s2s_timeout: 10000
###. ==============
###' 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
##
## Store the plain passwords or hashed for SCRAM:
## auth_password_format: plain
auth_password_format: scram
##
## Define the FQDN if ejabberd doesn't detect it:
## fqdn: "server3.example.com"
##
## 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:
##
## odbc_type: mysql
## odbc_server: "server"
## odbc_database: "database"
## odbc_username: "username"
## odbc_password: "password"
##
## If you want to specify the port:
## odbc_port: 1234
##
## PostgreSQL server:
##
## odbc_type: pgsql
## odbc_server: "server"
## odbc_database: "database"
## odbc_username: "username"
## odbc_password: "password"
##
## If you want to specify the port:
## odbc_port: 1234
##
## 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
##
## SQLite:
##
## odbc_type: sqlite
## odbc_database: "/path/to/database.db"
##
## ODBC compatible or MSSQL server:
##
## odbc_type: odbc
## 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
shaper:
##
## The "normal" shaper limits traffic speed to 1000 B/s
##
normal: 1000
##
## The "fast" shaper limits traffic speed to 50000 B/s
##
fast: 50000
very_fast: 500000
very_very_fast: 1000000
##
## 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
acl:
##
## The 'admin' ACL grants administrative privileges to XMPP accounts.
## You can put here as many accounts as you want.
##
admin:
user:
- "admin": "vsydorov.me"
##
## Blocked users
##
## blocked:
## user:
## - "baduser": "example.org"
## - "test"
## Local users: don't modify this.
##
local:
user_regexp: ""
##
## More examples of ACLs
##
## jabberorg:
## server:
## - "jabber.org"
## aleksey:
## user:
## - "aleksey": "jabber.ru"
## test:
## user_regexp: "^test"
## user_glob: "test*"
##
## Loopback network
##
loopback:
ip:
- "127.0.0.0/8"
##
## Bad XMPP servers
##
## bad_servers:
## server:
## - "xmpp.zombie.org"
## - "xmpp.spam.com"
##
## Define specific ACLs in a virtual host.
##
## host_config:
## "localhost":
## acl:
## admin:
## user:
## - "bob-local": "localhost"
###. ============
###' ACCESS RULES
access:
## Maximum number of simultaneous sessions allowed for a single user:
max_user_sessions:
all: 10
## Maximum number of offline messages that users can have:
max_user_offline_messages:
admin: 5000
all: 100
## This rule allows access only for local users:
local:
local: allow
# all: allow
## Only non-blocked users can use c2s connections:
c2s:
blocked: deny
all: allow
## For C2S connections, all users except admins use the "normal" shaper
c2s_shaper:
admin: none
all: very_fast
## All S2S connections use the "fast" shaper
s2s_shaper:
all: very_very_fast
## Only admins can send announcement messages:
announce:
admin: allow
## Only admins can use the configuration interface:
configure:
admin: allow
## Admins of this server are also admins of the MUC service:
muc_admin:
admin: allow
## Only accounts of the local ejabberd server can create rooms:
muc_create:
local: allow
## All users are allowed to use the MUC service:
muc:
all: allow
## Only accounts on the local ejabberd server can create Pubsub nodes:
pubsub_createnode:
local: allow
## In-band registration allows registration of any possible username.
## To disable in-band registration, replace 'allow' with 'deny'.
register:
all: allow
## Only allow to register from localhost
trusted_network:
loopback: allow
## Do not establish S2S connections with bad servers
s2s:
bad_servers: deny
all: allow
## 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: 600
##
## Define specific Access Rules in a virtual host.
##
## host_config:
## "localhost":
## access:
## c2s:
## admin: allow
## all: deny
## register:
## all: deny
###. ================
###' 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"
###. =======
###' CAPTCHA
##
## Full path to a script that generates the image.
##
## captcha_cmd: "/lib/ejabberd/priv/bin/captcha.sh"
##
## Host for the URL and port where ejabberd listens for CAPTCHA requests.
##
## captcha_host: "example.org:5280"
##
## Limit CAPTCHA calls per minute for JID/IP to avoid DoS.
##
## captcha_limit: 5
###. =======
###' MODULES
##
## Modules enabled in all ejabberd virtual hosts.
##
modules:
mod_adhoc: {}
## mod_admin_extra: {}
mod_announce: # recommends mod_adhoc
access: announce
mod_blocking: {} # requires mod_privacy
mod_caps: {}
mod_carboncopy: {}
mod_client_state:
drop_chat_states: true
queue_presence: false
mod_configure: {} # requires mod_adhoc
mod_disco: {}
## mod_echo: {}
mod_irc: {}
mod_http_bind: {}
## mod_http_fileserver:
## docroot: "/var/www"
## accesslog: "/var/log/ejabberd/access.log"
mod_last: {}
mod_muc:
## host: "conference.@HOST@"
access: muc
access_create: muc_create
access_persistent: muc_create
access_admin: muc_admin
## mod_muc_log: {}
## mod_multicast: {}
mod_offline:
access_max_user_messages: max_user_offline_messages
mod_ping: {}
## mod_pres_counter:
## count: 5
## interval: 60
mod_privacy: {}
mod_private: {}
mod_proxy65:
host: "proxy.vsydorov.me"
ip: "0.0.0.0"
hostname: "proxy.vsydorov.me"
port: 7777
access: all
shaper: c2s_shaper
mod_pubsub:
access_createnode: pubsub_createnode
## reduces resource comsumption, but XEP incompliant
ignore_pep_from_offline: true
## XEP compliant, but increases resource comsumption
## ignore_pep_from_offline: false
last_item_cache: false
plugins:
- "flat"
- "hometree"
- "pep" # pep requires mod_caps
mod_register:
##
## Protect In-Band account registrations with CAPTCHA.
##
## captcha_protected: true
##
## 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:
subject: "Welcome!"
body: |-
Hi.
Welcome to Vlad's XMPP server.
##
## 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: trusted_network
##
## Local c2s or remote s2s users cannot register accounts
##
## access_from: deny
access: register
mod_roster: {}
mod_shared_roster: {}
mod_stats: {}
mod_time: {}
mod_vcard: {}
mod_version: {}
##
## Enable modules with custom options in a specific virtual host
##
## host_config:
## "localhost":
## modules:
## mod_echo:
## host: "mirror.localhost"
##
## Enable modules management via ejabberdctl for installation and
## uninstallation of public/private contributed modules
## (enabled by default)
##
allow_contrib_modules: true
###.
###'
### Local Variables:
### mode: yaml
### End:
### vim: set filetype=yaml tabstop=8 foldmarker=###',###. foldmethod=marker: