EJABBERD.YML(5) EJABBERD.YML(5) (NAME) ejabberd.yml - ejabberd XMPP (SYNOPSIS) ejabberd.yml (DESCRIPTION) YAML . YAML (indentation) . : Modules () Listeners () Top Level ( ) . . ejabberd.yml : hosts: - example.com - domain.tld loglevel: info ... listen: - port: 5222 module: ejabberd_c2s ... modules: mod_roster: {} ... ( ) ejabberd . ejabberdctl reload-config . : . () host_config append_host_config . (local) . modules auth_method default_db. (global) . loglevel certfiles listen. host_config append_host_config - ejabberd . ejabberd.yml . "" https://github.com/processone/ejabberd/blob/26.07/ejabberd.yml.example . ejabberd . . ejabberd - https://docs.ejabberd.im/admin/configuration . (TOP LEVEL OPTIONS) ejabberd 26.07 . . access_rules: {AccessName: {allow|deny: ACLName|ACLDefinition}} basic.md#access-rules|Access Rules ( ) . ( access ejabberd) . allow deny ACL ( acl ). . : access_rules: configure: allow: admin something: deny: someone allow: all s2s_banned: deny: problematic_hosts deny: banned_forever deny: ip: 222.111.222.111/32 deny: ip: 111.222.111.222/32 allow: all xmlrpc_access: allow: user: peter@example.com allow: user: ivone@example.com allow: user: bot@example.com ip: 10.0.0.0/24 acl: {ACLName: {ACLType: ACLValue}} ../configuration/basic.md#acl|access control lists ( ) : ( JID IP) . ACLName : all none ( ). ACLName access_rules . ACLName {ACLType: ACLValue} . : ip: Network IP Network . node_glob: Pattern node_regexp Pattern Unix . node_regexp: user_regexp@server_regexp JID node user_regexp server server_regexp . resource: Resource JID resource Resource . resource_glob: Pattern resource_regexp Pattern Unix . resource_regexp: Regexp JID resource Regexp . server: Server JID Server . Server IP . server_glob: Pattern server_regexp Pattern Unix . server_regexp: Regexp JID Regexp . user: Username Username "user@server" JID . Username "user" JID Username node server JID ejabberd . user_glob: Pattern user_regexp Pattern Unix . user_regexp: Regexp Regexp "regexp@server" JID node "regexp" server "server" . Regexp "regexp" JID node "regexp" server ejabberd . acme: Options basic.md#acme|ACME SSL ejabberd CA ( " ACME") . Options () : auto: true | false ( ) . true . ca_url: URL URL ACME ACME . https://acme-v02.api.letsencrypt.org/directory - URL Let's Encrypt. cert_type: rsa | ec . ec rsa EC RSA . RSA rsa . contact: [Contact, ...] ( ) ACME . Contact "scheme:address" ( "mailto:user@domain.tld"). ACME . : acme: ca_url: https://acme-v02.api.letsencrypt.org/directory contact: - mailto:admin@domain.tld - mailto:bot@domain.tld auto: true cert_type: rsa allow_contrib_modules: true | false . ../../admin/guide/modules.md#ejabberd-modules|ejabberd-modules . true . allow_multiple_connections: true | false . true resource . . false . anonymous_protocol: login_anon | sasl_anon | both authentication.md#anonymous-login-and-sasl-anonymous|anonymous () : o login_anon . o sasl_anon SASL Anonymous . o both SASL Anonymous . sasl_anon . api_permissions: [Permission, ...] API. ejabberd -> -> ejabberd ReST API -> ../../developer/ejabberd-api/permissions.md|API Permissions . append_host_config: {Host: Options} ../configuration/basic.md#virtual-hosting| . auth_cache_life_time: timeout() cache_life_time . cache_life_time . auth_cache_missed: true | false cache_missed . cache_missed . auth_cache_size: pos_integer() | infinity cache_size . cache_size . auth_external_user_exists_check: true | false : 23.10 . mod_last ( jwt ). . true . auth_method: [mnesia | sql | anonymous | external | jwt | ldap | pam, ...] authentication.md| . . [mnesia] . auth_opts: [Option, ...] ejabberd_auth_http ../../admin/guide/modules.md#ejabberd-contrib|ejabberd-contrib . README . auth_password_format: plain | scram : 20.01 . authentication.md#scram|SCRAM: o plain: . . . : Jabber Non-SASL (XEP-0078) SASL PLAIN SASL DIGEST-MD5 SASL SCRAM-SHA-1/256/512(-PLUS) . o scram: . plain . : SASL PLAIN SASL SCRAM-SHA-1/256/512(-PLUS) . SCRAM auth_scram_hash . plain . auth_password_types_hidden_in_sasl1: [plain | scram_sha1 | scram_sha256 | scram_sha512] : 25.07 . SASL1 . SASL1 SASL2 . SASL1 . auth_scram_hash: sha | sha256 | sha512 authentication.md#scram|SCRAM . . sha . auth_stored_password_types: [plain | scram_sha1 | scram_sha256 | scram_sha512] : 25.03 . . . . auth_scram_hash auth_password_format . []. . auth_use_cache: true | false use_cache . use_cache . c2s_cafile: Path CA PEM . CA JID() subjectAltName . . host_config . listen-options.md#cafile|cafile . c2s_cafile cafile . c2s_ciphers: [Cipher, ...] OpenSSL c2s. : : c2s_ciphers: - HIGH - "!aNULL" - "!eNULL" - "!3DES" - "@STRENGTH" c2s_dhfile: Path DH c2s . "openssl dhparam -out dh.pem 2048" . MODP 2048 256 RFC5114 2.3 . c2s_protocol_options: [Option, ...] SSL c2s. set_options() OpenSSL . : : c2s_protocol_options: - no_sslv3 - cipher_server_preference - no_compression c2s_tls_compression: true | false TLS c2s . false . ca_file: Path CA. . ca_file s2s_cafile . cache_life_time: timeout() . . 1 hour ( ) . ejabberd : auth_cache_life_time oauth_cache_life_time router_cache_life_time sm_cache_life_time. cache_missed: true | false . true ( cache_life_time) . . true . ejabberd : auth_cache_missed oauth_cache_missed router_cache_missed sm_cache_missed. cache_size: pos_integer() | infinity ( !) . . . . . 1000 . ejabberd : auth_cache_size oauth_cache_size router_cache_size sm_cache_size. captcha_cmd: Path | ModuleName : 23.01 . basic.md#captcha|CAPTCHA . @VERSION@ ejabberd XX.YY . @SEMVER@ ejabberd semver ( mix ) XX.YY ( ) . CAPTCHA ejabberd . : CAPTCHA . : ejabberd captcha : captcha_cmd: /opt/ejabberd-@VERSION@/lib/ejabberd-@SEMVER@/priv/bin/captcha.sh captcha_host: String . captcha_url . captcha_limit: pos_integer() | infinity basic.md#captcha|CAPTCHA JID . DoS CAPTCHA . infinity . captcha_url: URL | auto | undefined : 23.04 . URL basic.md#captcha|CAPTCHA . : request_handlers ejabberd_http . auto URL request_handler . undefined URL captcha_host + /captcha . auto . certfiles: [Path, ...] ( wildcard) PEM PEM . ejabberd TLS . TLS ejabberd : ejabberd_c2s ejabberd_http . : ejabberdctl reload-config . : Let's Encrypt "domain.tld" : certfiles: - /etc/letsencrypt/live/domain.tld/fullchain.pem - /etc/letsencrypt/live/domain.tld/privkey.pem cluster_backend: Backend . mnesia . cluster_nodes: [Node, ...] Erlang ejabberd. ejabberd . . default_db: mnesia | sql database.md#default-database| ejabberd. oauth_db_type . db_type . mnesia . default_ram_db: mnesia | redis | sql ( ) ejabberd. router_db_type sm_db_type . ram_db_type . mnesia . define_keyword: {NAME: Value} : 25.03 . ../configuration/file-format.md#macros-and-keywords| . : define_keyword: SQL_USERNAME: "eja.global" host_config: localhost: define_keyword: SQL_USERNAME: "eja.localhost" sql_username: "prefix.@SQL_USERNAME@" define_macro: {NAME: Value} : 25.03 . ../configuration/file-format.md#macros-and-keywords| . : define_macro: DEBUG: debug LOG_LEVEL: DEBUG USERBOB: user: bob@localhost loglevel: LOG_LEVEL acl: admin: USERBOB disable_sasl_mechanisms: [Mechanism, ...] SASL ( DIGEST-MD5 SCRAM-SHA1) . Mechanism . . disable_sasl_scram_downgrade_protection: true | false XEP-0474: SASL SCRAM Downgrade Protection . ( strophejs 1.6.2 ) . MITM . false . domain_balancing: {Domain: Options} ../guide/clustering.md#service-load-balancing| ejabberd . ejabberd . () . Domain Options : component_number: 2..1000 . type: Value stanza . random . : - bare_destination JID ( resource) to - bare_source JID ( resource) from - destination JID to - random - source JID from : domain_balancing: component.domain.tld: type: destination component_number: 5 transport.example.org: type: bare_source ext_api_headers: Headers ( ,) ejabberd ReST . : "". ext_api_http_pool_size: pos_integer() HTTP ReST ejabberd . : 100 . ext_api_path_oauth: Path URI OAUTH ReST . : "/oauth" . ext_api_url: URL URI ReST . : "http://localhost/api" . extauth_pool_name: Name authentication.md#external-script| extauth_pool_Name . . extauth_pool_size: Size authentication.md#external-script| . CPU . extauth_program: Path authentication.md#external-script| . ejabberd . fqdn: Domain SASL DIGEST-MD5 . . hide_sensitive_log_data: true | false ( IP) . false . host_config: {Host: Options} Options ../configuration/basic.md#virtual-hosting| Host . LDAP domain.tld SQL example.org . : hosts: - domain.tld - example.org auth_method: - sql host_config: domain.tld: auth_method: - ldap hosts: [Domain1, Domain2, ...] ../configuration/basic.md#host-names| ( ) ejabberd . . hosts_alias: {Alias: Host} : 25.07 . ejabberd. regexp . ejabberd_http . : hosts: - domain.tld - example.org hosts_alias: xmpp.domain.tld: domain.tld jabber.domain.tld: domain.tld mytest.net: example.org "exa*": example.org include_config_file: [Filename, ...] | {Filename: Options} ../configuration/file-format.md#include-additional-files| Filename. {Filename: Options} Options : allow_only: [OptionName, ...] Filename . . . disallow: [OptionName, ...] Filename . . . install_contrib_modules: [Module, ...] : 23.10 . ../../admin/guide/modules.md#ejabberd-modules|ejabberd-modules . : []. : install_contrib_modules: - mod_tombstones modules: mod_tombstones: {} jwt_auth_only_rule: AccessName ACL authentication.md#jwt-authentication|JWT ejabberd . : (JWT SQL ...) JWT . none . jwt_jid_field: FieldName JID "jid" JWT . authentication.md#jwt-authentication|JWT JID . jwt_key: FilePath authentication.md#jwt-authentication|JWT . : o PEM format - PEM (RSA EC EdDSA ) o JWK (JSON Web Key) - JSON o JWK Set - JSON "keys" ( ) : undefined. language: Language ../configuration/basic.md#default-language| XMPP . XMPP xml:lang . "en" . ldap_backups: [Host, ...] IP DNS LDAP ( ../configuration/ldap.md#ldap-connection| LDAP ). ldap_servers ejabberd . . ejabberd . ldap_base: Base LDAP . : LDAP . ldap_deref_aliases: never | always | finding | searching (alias) . never . ldap_dn_filter: {Filter: FilterAttrs} . LDAP . ldap_filter . "%u" "%d" "%s" "%D" Filter : "%u" JID "%d" ( ) "%s" FilterAttrs "%D" Distinguished Name . . : LDAP : ldap_filter . : ldap_dn_filter: "(&(name=%s)(owner=%D)(user=%u@%d))": [sn] ldap_encrypt: tls | none LDAP TLS . none . : STARTTLS . ldap_filter: Filter LDAP RFC4515. . : "(&(objectClass=shadowAccount)(memberOf=XMPP Users))". : . "uid" . ldap_password: Password (Bind password). . ldap_port: 1..65535 LDAP. 389 636 . ldap_rootdn: RootDN Distinguished Name (Bind). " " . ldap_servers: [Host, ...] IP DNS LDAP ( ../configuration/ldap.md#ldap-connection| LDAP ). ejabberd . [localhost] . ldap_tls_cacertfile: Path CA PEM . TLS . ldap_tls_certfile: Path PEM PEM . TLS LDAP ejabberd . . ldap_tls_depth: Number TLS . = 0 CA = 1 CA = 2 . 2 CA CA CA . 1 . ldap_tls_verify: false | soft | hard LDAP TLS . hard ejabberd . soft ejabberd . false . ldap_uids: [Attr] | {Attr: AttrFormat} LDAP JID Attr LDAP JID AttrFormat "%u" JID . "%u@example.org". [Attr] AttrFormat "%u" . listen: [Options, ...] . listen.md| Listen . log_burst_limit_count: Number : 22.10 . log_burst_limit_window_time . 500 . log_burst_limit_window_time: Number : 22.10 . . 1 . log_modules_fully: [Module, ...] : 23.01 . loglevel . log_rotate_count: Number . 1 ejabberd.log.0 error.log.0 crash.log.0 . log_rotate_size: pos_integer() | infinity ( ) . infinity . 10 : 10485760. loglevel: none | emergency | alert | critical | error | warning | notice | info | debug ../configuration/basic.md#logging| ejabberd. info . : ejabberd (0..5) . . max_fsm_queue: Size FSM ( ) . XML . ( ) FSM ( ) . . . 10000 . modules: {Module: Options} modules.md| . negotiation_timeout: timeout() XMPP. XMPP . 120 . net_ticktime: timeout() tick time net_kernel . Erlang . . . 1 minute . new_sql_schema: true | false : 25.10 . ejabberd 25.10 sql_schema_multihost . . oauth_access: AccessName OAuth . OAuth ejabberd oauth_access . all . oauth_cache_life_time: timeout() cache_life_time OAuth . cache_life_time . oauth_cache_missed: true | false cache_missed OAuth . cache_missed . oauth_cache_rest_failure_life_time: timeout() : 21.01 . OAuth ReST . infinity . oauth_cache_size: pos_integer() | infinity cache_size OAuth . cache_size . oauth_client_id_check: allow | db | deny . db . oauth_db_type: mnesia | sql OAuth. default_db mnesia . oauth_expire: timeout() OAuth . . 4294967 . oauth_use_cache: true | false use_cache OAuth . use_cache . oom_killer: true | false OOM killer ( ). oom_watermark ejabberd OOM killer Erlang . ejabberd s2s . true . oom_queue: Size OOM killer Erlang Size . oom_killer false oom_watermark . oom_watermark: Percent OOM killer ( oom_killer ). Percent OOM killer . 80 . outgoing_s2s_families: [ipv6 | ipv4, ...] : 23.01 . . [ipv6, ipv4] IPv6 IPv4 . ejabberd 23.01 Erlang/OTP 22 . outgoing_s2s_ipv4_address: Address : 20.12 . IPv4 S2S IPv4 "127.0.0.1". undefined . outgoing_s2s_ipv6_address: Address : 20.12 . IPv6 S2S IPv6 "::FFFF:127.0.0.1". undefined . outgoing_s2s_port: 1..65535 s2s SRV . 5269 . outgoing_s2s_timeout: timeout() S2S. 10 . pam_service: Name authentication.md#pam-authentication|PAM . PAM . ejabberd . pam_userinfotype: username | jid ejabberd authentication.md#pam-authentication|PAM : JID . username . pgsql_users_number_estimate: true | false PostgreSQL . false . queue_dir: Directory queue_type file Directory . Mnesia . queue_type: ram | file ejabberd. . ram . file queue_dir . ram . redis_connect_timeout: timeout() database.md#redis|Redis. 1 second . redis_db: Number database.md#redis|Redis. 0 . redis_password: Password database.md#redis|Redis. . redis_pool_size: Number database.md#redis|Redis. 10 . redis_port: 1..65535 database.md#redis|Redis . 6379 . redis_queue_type: ram | file database.md#redis|Redis. queue_type . queue_type ram . redis_server: Host | IP Address | Unix Socket Path : 24.12 . IP database.md#redis|Redis. : "unix:/path/to/socket". localhost . registration_timeout: timeout() mod_register . IP . IP JID . infinity . 600 seconds . replaced_connection_timeout: timeout() : 26.01 . . . resource_conflict: setresource | closeold | closenew : . XMPP Core: 7.7.2.2 . closeold . Jabber Non-SASL (XEP-0078) closeold . rest_proxy: Host : 25.07 . HTTP Connect rest ( ejabberd_oauth_rest) . rest_proxy_password: string() : 25.07 . HTTP Connect rest ( ejabberd_oauth_rest) . rest_proxy_port: 1..65535 : 25.07 . HTTP Connect rest ( ejabberd_oauth_rest) . rest_proxy_username: string() : 25.07 . HTTP Connect rest ( ejabberd_oauth_rest) . router_cache_life_time: timeout() cache_life_time . cache_life_time . router_cache_missed: true | false cache_missed . cache_missed . router_cache_size: pos_integer() | infinity cache_size . cache_size . router_db_type: mnesia | redis | sql . default_ram_db mnesia . router_use_cache: true | false use_cache . use_cache . rpc_timeout: timeout() ejabberd. . 5 . s2s_access: Access basic.md#access-rules| s2s . all s2s / . s2s_cafile: Path CA s2s . ca_file . host_config . s2s_ciphers: [Cipher, ...] OpenSSL s2s. : : s2s_ciphers: - HIGH - "!aNULL" - "!eNULL" - "!3DES" - "@STRENGTH" s2s_dhfile: Path DH s2s . "openssl dhparam -out dh.pem 2048" . 2048 MODP 256 RFC5114 2.3 . s2s_dns_retries: Number DNS. 2 . s2s_dns_timeout: timeout() DNS. 10 . s2s_max_retry_delay: timeout() s2s . 300 (5 ) . s2s_protocol_options: [Option, ...] SSL s2s. set_options() OpenSSL . : : s2s_protocol_options: - no_sslv3 - cipher_server_preference - no_compression s2s_queue_type: ram | file s2s. queue_type . queue_type ram . s2s_timeout: timeout() s2s . 1 . s2s_tls_compression: true | false TLS s2s . false . s2s_use_starttls: true | false | optional | required STARTTLS s2s . false STARTTLS . true optional STARTTLS . required STARTTLS . false ( ). s2s_zlib: true | false zlib ( XEP-0138) . false . : . shaper: {ShaperName: Rate} ../configuration/basic.md#shapers| . ShaperName shaper_rules . Rate Rate . ejabberd . normal 1000 fast 50000 : : shaper: normal: 1000 fast: 50000 shaper_rules: {ShaperRuleName: {Number|ShaperName: ACLName|ACLDefinition}} ../configuration/basic.md#shaper-rules| / . access_rules allow deny ( shaper) . : shaper_rules: connections_limit: 10: user: peter@example.com 100: admin 5: all download_speed: fast: admin slow: anonymous_users normal: all log_days: 30 sm_cache_life_time: timeout() cache_life_time . cache_life_time . sm_cache_missed: true | false cache_missed . cache_missed . sm_cache_size: pos_integer() | infinity cache_size . cache_size . sm_db_type: mnesia | redis | sql . default_ram_db mnesia . sm_use_cache: true | false use_cache . use_cache . sql_connect_timeout: timeout() SQL. 5 . sql_database: DatabaseName | PathSqliteFile : 26.04 . SQL ejabberd . sql_type sqlite : '"@DATABASE_PATH@/sqlite/@HOST@.sqlite" sql_flags: [mysql_alternative_upsert] : 24.02 . SQL . mysql_alternative_upsert upsert MySQL . sql_keepalive_interval: timeout() SQL . keepalive . sql_odbc_driver: Path : 20.12 . ODBC Microsoft SQL Server. sql_type mssql sql_server ODBC . : libtdsodbc.so sql_password: Password SQL. . sql_pool_size: Size SQL ejabberd . 10 . : SQLite 1 . sql_port: 1..65535 SQL . 3306 MySQL 5432 PostgreSQL 1433 MS SQL . SQLite . sql_prepared_statements: true | false : 20.01 . true (prepared statements) . PostgreSQL MySQL . sql_query_timeout: timeout() SQL. 60 . sql_queue_type: ram | file SQL. queue_type . queue_type ram . sql_schema_multihost: true | false : 25.10 . database.md#singlehost-or-multihost| SQL . https://github.com/processone/ejabberd/tree/26.07/sql . . singlehost XMPP ejabberd . multihost XMPP ejabberd . multihost XMPP / . . --enable-sql-schema-multihost ../../admin/install/source.md#configure|./configure . sql_server: Host | IP Address | ODBC Connection String | Unix Socket Path : 24.06 . IP SQL. sql_type mssql odbc ODBC . sql_type mysql pgsql : "unix:/path/to/socket". localhost . sql_ssl: true | false : 20.03 . SSL SQL . MySQL MS SQL PostgreSQL . false . sql_ssl_cafile: Path CA SQL . sql_ssl sql_ssl_verify true . . MS SQL . sql_ssl_certfile: Path SSL SQL . sql_ssl true . ejabberd SQL . MS SQL . sql_ssl_verify: true | false SSL SQL CA sql_ssl_cafile . sql_ssl true . MS SQL . false . sql_start_interval: timeout() SQL . 30 . sql_type: mssql | mysql | odbc | pgsql | sqlite SQL. odbc . sql_username: Username SQL. ejabberd . trusted_proxies: all | [Network1, Network2, ...] HTTP X-Forwarded-For . all IP . . IP ( mod_fail2ban). : X-Forwarded-For IP ejabberd . update_sql_schema: true | false : 24.06 . ejabberd SQL MySQL PostgreSQL SQLite . ejabberd 23.10 24.06 . true . update_sql_schema_timeout: timeout() : 24.07 . SQL. 5 . use_cache: true | false . true . ejabberd auth_use_cache oauth_use_cache router_use_cache sm_use_cache . validate_stream: true | false XML XMPP . : - . false . version: string() ejabberd ejabberd mod_version. . websocket_origin: ignore | URL Origin . ejabberd WebSocket . ignore . URL "https://test.example.org:8081" . websocket_ping_interval: timeout() ( WebSocket ) . . 0 . RFC . . 60 . websocket_timeout: timeout() . 300 . (MODULES) ejabberd 26.07 . . mod_adhoc def:ad-hoc command : XMPP XEP-0050 . XEP-0050: Ad-Hoc Commands . . : report_commands_node: true | false Commands Service Discovery . : false. mod_adhoc_api : 25.03 . (def:API commands) XMPP XEP-0050: Ad-Hoc Commands. mod_adhoc ( ) mod_disco ( ) . : default_version: integer() | string() API . ejabberd API (def:c2s) ejabberd . "24.06" 2 . . : acl: admin: user: jan@localhost api_permissions: "adhoc commands": from: mod_adhoc_api who: admin what: - "[tag:roster]" - "[tag:session]" - stats - status modules: mod_adhoc_api: default_version: 2 mod_admin_extra . : ban_account API: . . . . . push_roster API ( push_roster_all API): roster Windows ejabberd : C:/Program Files/ejabberd . .beam . roster . srg_create API: "' '" . . . : vCard mod_admin_extra : acl: adminextraresource: - resource: "modadminextraf8x,31ad" access_rules: vcard_set: - allow: adminextraresource modules: mod_admin_extra: {} mod_vcard: access_set: vcard_set roster push_roster API: [{<<"bob">>, <<"example.org">>, <<"workers">>, <<"Bob">>}, {<<"mart">>, <<"example.org">>, <<"workers">>, <<"Mart">>}, {<<"Rich">>, <<"example.org">>, <<"bosses">>, <<"Rich">>}]. JID boby@example.org BANNED_ACCOUNT--20080425T21:45:07--2176635--Spammed_rooms ejabberdctl vhost example.org ban_account boby "Spammed rooms" srg_create API : ejabberdctl srg_create g1 example.org "'Group number 1'" this_is_g1 g1 API: ../../developer/ejabberd-api/admin-tags.md#accounts|accounts, ../../developer/ejabberd-api/admin-tags.md#erlang|erlang, ../../developer/ejabberd-api/admin-tags.md#last|last, ../../developer/ejabberd-api/admin-tags.md#private|private, ../../developer/ejabberd-api/admin-tags.md#purge|purge, ../../developer/ejabberd-api/admin-tags.md#roster|roster, ../../developer/ejabberd-api/admin-tags.md#session|session, ../../developer/ejabberd-api/admin-tags.md#shared_roster_group|shared_roster_group, ../../developer/ejabberd-api/admin-tags.md#stanza|stanza, ../../developer/ejabberd-api/admin-tags.md#statistics|statistics, ../../developer/ejabberd-api/admin-tags.md#vcard|vcard mod_admin_update_sql SQL . database.md#singlehost-or-multihost|Singlehost or Multihost . MS SQL MySQL PostgreSQL . update_sql API . . mod_announce (MOTD) . XMPP Ad-Hoc Commands JID . API . . ejabberd . XEP-0050: Ad-Hoc Commands mod_adhoc ( ) mod_disco ( ) . JID JID : o example.org/announce/all: vhost . . ( mod_offline) . o example.org/announce/online: . . o example.org/announce/motd: (MOTD) . ( announce/online). o example.org/announce/motd/update: (MOTD) . . o example.org/announce/motd/delete: (MOTD) JID . JID ejabberd : o example.org/announce/all-hosts/all: o example.org/announce/all-hosts/online: o example.org/announce/all-hosts/motd: MOTD o example.org/announce/all-hosts/motd/update: MOTD o example.org/announce/all-hosts/motd/delete: MOTD : access: AccessName . none ( ). cache_life_time: timeout() cache_life_time . cache_missed: true | false cache_missed . cache_size: pos_integer() | infinity cache_size . db_type: mnesia | sql default_db . use_cache: true | false use_cache . API: ../../developer/ejabberd-api/admin-tags.md#announce|announce mod_antispam : 25.07 . (RTBL) JID / URL . ( [info] ) . : access_spam: Access . allow . none . cache_size: pos_integer() JID URL . . 0 . . 10000 . rtbl_services: [Service] RTBL xmppbl.org . . MUC mod_muc_rtbl . . spam_source_domains spam_source_domains_node . . : rtbl_services: - pubsub.server1.localhost: spam_source_domains_node: actual_custom_pubsub_node spam_domains_file: none | Path . . RTBL . @CONFIG_PATH@ . none . spam_dump_file: false | true | Path . @LOG_PATH@ ejabberd . false . true "@LOG_PATH@/spam_dump_@HOST@.log" . spam_jids_file: none | Path JID JID . JID . JID . JID JID . @CONFIG_PATH@ . none . spam_urls_file: none | Path URL . URL . JID JID . @CONFIG_PATH@ . none . whitelist_domains_file: none | Path . spam_domains_file RTBL ( rtbl_services ) . @CONFIG_PATH@ . none . : modules: mod_antispam: rtbl_services: - xmppbl.org spam_jids_file: "@CONFIG_PATH@/spam_jids.txt" spam_dump_file: "@LOG_PATH@/spam/host-@HOST@.log" mod_auth_fast : 26.07 . XEP-0484: Fast Authentication Streamlining Tokens . : db_type : mnesia | sql : 26.07 . default_db . token_lifetime: timeout() . . token_refresh_age: timeout() . . : modules: mod_auth_fast: token_lifetime: 14days mod_avatar XMPP . XEP-0398: User Avatar to vCard-Based Avatars Conversion . . mod_vcard mod_vcard_xupdate mod_pubsub . : convert: {From: To} : From To . From default - . : . : convert: webp: jpg default: png rate_limit: Number JID . DoS . 10 . mod_block_strangers . / . . . : access: AccessName allow_local_users allow_transports . deny captcha . allow . none . allow_local_users: true | false . true . allow_transports: true | false true JID . true . captcha: true | false CAPTCHA . basic.md#captcha|CAPTCHA . false . drop: true | false . true . log: true | false ( info) ejabberd.log . false . mod_blocking XEP-0191: Blocking Command . mod_privacy . . mod_bosh XMPP over BOSH XEP-0124 XEP-0206 . BOSH Bidirectional-streams Over Synchronous HTTP . XMPP HTTP . XMPP WebSocket XMPP HTTP . : cache_life_time: timeout() cache_life_time . cache_missed: true | false cache_missed . cache_size: pos_integer() | infinity cache_size . json: true | false . max_concat: pos_integer() | infinity bosh . unlimited . max_inactivity: timeout() . 30 . max_pause: pos_integer() ( ) . 120 . prebind: true | false . . false . queue_type: ram | file queue_type . ram_db_type: mnesia | sql | redis default_ram_db . use_cache: true | false use_cache . : listen: - port: 5222 module: ejabberd_c2s - port: 5443 module: ejabberd_http request_handlers: /bosh: mod_bosh modules: mod_bosh: {} mod_caps XEP-0115: Entity Capabilities . PEP ( mod_pubsub ). : cache_life_time: timeout() cache_life_time . cache_missed: true | false cache_missed . cache_size: pos_integer() | infinity cache_size . db_type: mnesia | sql default_db . use_cache: true | false use_cache . mod_carboncopy XEP-0280: Message Carbons . () . . mod_client_state ( XEP-0352: Client State Indication ). . ( ). ( ) . : queue_chat_states: true | false <<>> ( XEP-0085: Chat State Notifications ) . true . queue_pep: true | false PEP . PEP . true . queue_presence: true | false . true . mod_configure : . . XEP-0030: Service Discovery XEP-0050: Ad-Hoc Commands : o s2s o ad-hoc XEP-0133: Service Administration o ad-hoc ejabberd ad-hoc XEP-0133 XEP : o get-user-roster: ad-hoc XEP-0133 : o get-active-users-num o get-idle-users-num o get-active-users o get-idle-users ad-hoc XEP-0133 : o edit-blacklist o edit-whitelist o edit-admin mod_adhoc ( ) mod_disco ( ) . ad-hoc API mod_adhoc_api API . : access: AccessName : . . . configure . : acl: admin: user: sun@localhost access_rules: configure: allow: admin modules: mod_configure: access: configure mod_conversejs : . . XMPP Converse . modules listen -> ejabberd_http -> listen-options.md#request_handlers|request_handlers . mod_bosh listen.md#ejabberd_http_ws|ejabberd_http_ws request_handlers . conversejs_css conversejs_script auto Converse . modules request handler WebAdmin . . ejabberd 21.12 . : bosh_service_url: auto | BoshURL URL BOSH Converse . @HOST@ . auto URL request handler BOSH . auto . conversejs_css: auto | URL URL CSS Converse. @HOST@ . auto . conversejs_options: {Name: Value} : . . Converse . Converse . boolean . conversejs_plugins: [Filename] . conversejs_resources plugins/ . libsignal OMEMO Converse Converse libomemo . Converse "libsignal" URL . [] . conversejs_resources: Path : . . Converse. Converse . conversejs_script: auto | URL URL Converse. @HOST@ . auto . default_domain: Domain JID . @HOST@ . @HOST@ . websocket_url: auto | WebSocketURL URL WebSocket Converse . @HOST@ . auto URL request handler WebSocket . auto . : URL WebSocket Converse: listen: - port: 5280 module: ejabberd_http request_handlers: /bosh: mod_bosh /websocket: ejabberd_http_ws /conversejs: mod_conversejs modules: mod_bosh: {} mod_conversejs: websocket_url: "ws://@HOST@:5280/websocket" Converse URL WebSocket Converse: listen: - port: 443 module: ejabberd_http tls: true request_handlers: /websocket: ejabberd_http_ws /conversejs: mod_conversejs modules: mod_conversejs: conversejs_resources: "/home/ejabberd/conversejs-x.y.z/package/dist" conversejs_plugins: ["libsignal-protocol.min.js"] # File path is: /home/ejabberd/conversejs-x.y.z/package/dist/plugins/libsignal-protocol.min.js Converse modules: mod_conversejs: websocket_url: auto conversejs_options: auto_away: 30 clear_cache_on_logout: true i18n: "pt" locked_domain: "@HOST@" message_archiving: always theme: dracula mod_delegation XEP-0355: Namespace Delegation . (admin mode) . (Namespace delegation) IQ . PEP . : . mod_privilege . : namespaces: {Namespace: Options} . Options : access: AccessName . none . filtering: Attributes . . : . sat-pubsub.example.org mod_pubsub . access_rules: external_pubsub: allow: external_component external_mam: allow: external_component acl: external_component: server: sat-pubsub.example.org modules: mod_delegation: namespaces: urn:xmpp:mam:1: access: external_mam http://jabber.org/protocol/pubsub: access: external_pubsub mod_disco XEP-0030: Service Discovery . XMPP . : extra_domains: [Domain, ...] Service Discovery . . name: Name Service Discovery. XMPP . ejabberd . server_info: [Info, ...] XEP-0157: Contact Addresses for XMPP Services . Info : modules: all | [Module, ...] all ejabberd . name: Name var . XEP-0157 . urls: [URI, ...] URI URL HTTP URI XMPP . : server_info: - modules: all name: abuse-addresses urls: ["mailto:abuse@shakespeare.lit"] - modules: [mod_muc] name: "Web chatroom logs" urls: ["http://www.example.org/muc-logs"] - modules: [mod_disco] name: feedback-addresses urls: - http://shakespeare.lit/feedback.php - mailto:feedback@shakespeare.lit - xmpp:feedback@shakespeare.lit - modules: - mod_disco - mod_vcard name: admin-addresses urls: - mailto:xmpp@shakespeare.lit - xmpp:admins@shakespeare.lit mod_fail2ban IP . C2S . mod_fail2ban . . load balancer . ejabberd load balancer load balancer . ejabberd . : access: AccessName IP . IP allow . AccessName ip . none . c2s_auth_ban_lifetime: timeout() IP C2S. 1 . c2s_max_auth_failures: Number C2S IP. 20 . API: ../../developer/ejabberd-api/admin-tags.md#accounts|accounts mod_host_meta : 22.05 . host-meta XEP-0156: Discovering Alternative XMPP Connection Methods . modules listen -> ejabberd_http -> listen-options.md#request_handlers|request_handlers . listen.md#ejabberd_http|ejabberd_http listen-options.md#tls|tls . : bosh_service_url: undefined | auto | BoshURL URL BOSH . @HOST@ . auto URL BOSH . auto . websocket_url: undefined | auto | WebSocketURL URL WebSocket . @HOST@ . auto URL WebSocket . auto . : listen: - port: 443 module: ejabberd_http tls: true request_handlers: /bosh: mod_bosh /websocket: ejabberd_http_ws /.well-known/host-meta: mod_host_meta /.well-known/host-meta.json: mod_host_meta modules: mod_bosh: {} mod_host_meta: bosh_service_url: "https://@HOST@:5443/bosh" websocket_url: "wss://@HOST@:5443/websocket" mod_http_api ReST ../../developer/ejabberd-api/index.md|ejabberd API JSON . modules listen -> ejabberd_http -> listen-options.md#request_handlers|request_handlers . API N URL request_handlers vN . : /api/v2: mod_http_api. POST URL : http://localhost:5280/api/COMMAND-NAME : default_version: integer() | string() : 24.12 . URL API . ejabberd API ejabberd . "24.06" 2 . . : listen: - port: 5280 module: ejabberd_http request_handlers: /api: mod_http_api modules: mod_http_api: default_version: 2 mod_http_fileserver : docroot .. HTTP . : accesslog: Path Apache. . content_types: {Extension: Type} . . . : : content_types: .avi: video/avi .bmp: image/bmp .bz2: application/x-bzip2 .css: text/css .gif: image/gif .gz: application/x-gzip .html: text/html .ico: image/vnd.microsoft.icon .jar: application/java-archive .jpeg: image/jpeg .jpg: image/jpeg .js: text/javascript .json: application/json .m4a: audio/mp4 .map: application/json .mp3: audio/mpeg .mp4: video/mp4 .mpeg: video/mpeg .mpg: video/mpeg .ogg: application/ogg .pdf: application/pdf .png: image/png .rtf: application/rtf .svg: image/svg+xml .tiff: image/tiff .ttf: font/ttf .txt: text/plain .wav: audio/wav .wasm: application/wasm .webp: image/webp .woff: font/woff .woff2: font/woff2 .xml: application/xml .xpi: application/x-xpinstall .xul: application/vnd.mozilla.xul+xml .xz: application/x-xz .zip: application/zip custom_headers: {Name: Value} HTTP . . default_content_type: Type . application/octet-stream . directory_indices: [Index, ...] DirectoryIndex Apache. HTTP . . docroot: PathDir | {PathURL, PathDir} : .. URL ( listen-options.md#request_handlers|request_handlers) . . : listen: - port: 5280 module: ejabberd_http request_handlers: /pub/content: mod_http_fileserver /share: mod_http_fileserver /: mod_http_fileserver modules: mod_http_fileserver: docroot: /pub/content: /var/service/www /share: /usr/share/javascript /: /var/www must_authenticate_with: [{Username, Hostname}, ...] . : []. : /var/www http://example.org:5280/pub/content/ . ogg png jpg : listen: - port: 5280 module: ejabberd_http request_handlers: /pub/content: mod_http_fileserver modules: mod_http_fileserver: docroot: /var/www accesslog: /var/log/ejabberd/access.log directory_indices: - index.html - main.htm custom_headers: X-Powered-By: Erlang/OTP X-Fry: "It's a widely-believed fact!" content_types: .ogg: audio/ogg .png: image/png default_content_type: text/html mod_http_upload : content_types . . HTTP XEP-0363: HTTP File Upload. URL URL . listen -> ejabberd_http -> listen-options.md#request_handlers|request_handlers . : access: AccessName HTTP . local . . append_module_config : {UploadHost: Options} : . . hosts mod_http_upload . name vcard . append_host_config . : modules: mod_http_upload: hosts: - service1.@HOST@ - service2.@HOST@ name: "Service General" append_module_config: service1.localhost: name: "Service 1" service2.example.net: name: "Service 2" content_types: {Extension: Type} : . . content_types mod_http_fileserver. custom_headers: {Name: Value} HTTP . . dir_mode: Permission docroot . ( chmod(1)) . : "0755". . docroot: Path ( ) . @HOME@ ejabberd @HOST@ . "@HOME@/upload" . external_secret: Text HTTP Upload HTTP . ejabberd HTTP Prosody's mod_http_upload_external: Implementation . . file_mode: Permission . ( chmod(1)) . : "0644". . get_url: URL URL GET . undefined . undefined put_url . @HOST@ . : GET get_url put_url . mod_http_fileserver . host . hosts . hosts: [Host, ...] Jabber . hosts Jabber "upload." . @HOST@ . jid_in_url: node | sha1 node JID ( ) URL GET PUT mod_http_upload . SHA-1 JID . sha1 . max_size: Size . ( ) infinity . 104857600 . name: Name Service Discovery. "HTTP File Upload" . XMPP . put_url: URL URL PUT . @HOST@ . @HOST_URL_ENCODE@ URL . : URL PUT . "https://@HOST@:5443/upload" . rm_on_unregister: true | false . true . secret_length: Length URL GET PUT mod_http_upload . 8 . 40 . service_url . thumbnail: true | false ejabberd (thumbnail) . PUT . false . vcard: vCard vCard XMPP Service Discovery . vCard YAML XML vCard . (attribute) . : # This XML representation of vCard: # # Conferences # # # Elm Street # # # # is translated to: vcard: fn: Conferences adr: - work: true street: Elm Street : listen: - port: 5443 module: ejabberd_http tls: true request_handlers: /upload: mod_http_upload modules: mod_http_upload: docroot: /ejabberd/upload put_url: "https://@HOST@:5443/upload" mod_http_upload_quota (quota) mod_http_upload . mod_http_upload . : access_hard_quota: AccessName << >> (hard quota) JID . JID . . ejabberd (soft quota) ( access_soft_quota ). hard_upload_quota . access_soft_quota: AccessName << >> (soft quota) JID . JID . access_hard_quota . soft_upload_quota . max_days: Days ( ) docroot . infinity . : access_hard_quota access_soft_quota . : shaper_rules: soft_upload_quota: 1000: all # MiB hard_upload_quota: 1100: all # MiB modules: mod_http_upload: {} mod_http_upload_quota: max_days: 100 mod_invites : 26.07. (out-of-band) XMPP . XEP-0379: Pre-Authenticated Roster Subscription XEP-0401: Ad-hoc Account Invitation Generation XEP-0445: Pre-Authenticated In-Band Registration . URI XMPP ad-hoc API ( API generate_invite API generate_invite_with_username) . . easy-xmpp-invitation JoinJabber . . landing_page auto URL https://{{ host }}/invites/{{ invite.token }} (reverse proxy) . ejabberd_http . mod_invites ejabberd_http . . URL HTTPS . . landing_page http://{{ host }}:8080/easy-xmpp-invites/#{{ invite.uri|strip_protocol }} https://invites.joinjabber.org/#{{ invite.uri|strip_protocol }} . : access_create_account: Access Rule Name create account . none . roster (IBR) . ACL admin . : mod_invites: access_create_account: local db_type: mnesia | sql default_db . landing_page: none | auto | LandingPageURLTemplate . URL . host invite.token invite.uri strip_protocol . : http://{{ host }}:8080/easy-xmpp-invites/#{{ invite.uri|strip_protocol }}. auto ejabberd_http mod_invites URL . none . max_invites: pos_integer() | infinity create account . ACL admin . roster . infinity . site_name: Site Name . "My Beautiful Laundrette". . templates_dir: Path . . token_expire_seconds: pos_integer() . 432000 ( : 5 * 24 * 60 * 60). webchat_url: none | auto | Webchat URL : 26.03. URL . . auto mod_conversejs . auto . : roster: listen: - port: 5281 module: ejabberd_http request_handlers: /invites: mod_invites # [...] modules: mod_invites: landing_page: auto admin create account : acl: admin: - user: "my_admin_user@example.com" access_rules: register: allow: admin modules: mod_invites: landing_page: auto mod_register: allow_modules: - mod_invites create account . . acl: local: user_regexp: "" access_rules: create_account_invite: allow: local modules: mod_invites: access_create_account: create_account_invite landing_page: auto mod_register: allow_modules: - mod_invites mod_jidprep XMPP JID RFC 6122: XMPP Address Format . . : access: AccessName . local . mod_last XEP-0012: Last Activity . ejabberd . : cache_life_time: timeout() cache_life_time . cache_missed: true | false cache_missed . cache_size: pos_integer() | infinity cache_size . db_type: mnesia | sql default_db . use_cache: true | false use_cache . mod_legacy_auth XEP-0078: Non-SASL Authentication . . . mod_mam XEP-0313: Message Archive Management XEP-0441: Message Archive Management Preferences . XMPP . Mnesia mod_mam : . SQL . SQLite . : access_preferences: AccessName MAM . all . archive_muc_as_mucsub: true | false : 25.10. groupchat mucsub mucsub . false . assume_mam_usage: true | false ejabberd ( mod_stream_mgmt ) . . true MAM . ejabberd . false . cache_life_time: timeout() cache_life_time . cache_missed: true | false cache_missed . cache_size: pos_integer() | infinity cache_size . clear_archive_on_room_destroy: true | false ( mod_muc ) . true . compress_xml: true | false . SQL . false . db_type: mnesia | sql default_db . default: always | never | roster . always . roster roster . never . . never . request_activates_archiving: true | false true MAM default. . false . use_cache: true | false use_cache . user_mucsub_from_muc_archive: true | false mucsub . mucsub muc . false . API: ../../developer/ejabberd-api/admin-tags.md#mam|mam ../../developer/ejabberd-api/admin-tags.md#purge|purge mod_matrix_gw : .. Matrix. ejabberd 25.03 ejabberd 25.07 ( hydra) ejabberd 25.08. Erlang/OTP 25 . ejabberd 24.02 . : host: Host Jabber . host Jabber "matrix." . @HOST@ . key: string() matrix base64. key_name: string() matrix. leave_timeout: integer() MUC leave Matrix. matrix_domain: Domain Matrix . @HOST@ . @HOST@ . matrix_id_as_jid: true | false true XMPP Jabber user@matrixdomain.tld Matrix @user:matrixdomain.tld Matrix . false Jabber matrix Matrix . Matrix @user:matrixdomain.tld JID user%matrixdomain.tld@matrix.myxmppdomain.tld matrix.myxmppdomain.tld JID host . false . notary_servers: [Server, ...] notary. : listen: - port: 8448 module: ejabberd_http tls: true request_handlers: "/_matrix": mod_matrix_gw modules: mod_matrix_gw: key_name: "key1" key: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" matrix_id_as_jid: true mod_metrics ( grapherl ). : o sm_register_connection o sm_remove_connection o user_send_packet o user_receive_packet o s2s_send_packet o s2s_receive_packet o register_user o remove_user o offline_message . : ip: IPv4Address IPv4 . 127.0.0.1 . port: Port / . 11111 . mod_mix : . .. XEP-0369: Mediated Information eXchange (MIX) . MIX MUC ( mod_muc). : ../../tutorials/mix-010.md|Getting started with MIX mod_mam . : access_create: AccessName MIX. all . db_type: mnesia | sql default_db . host . hosts . hosts: [Host, ...] Jabber . hosts Jabber "mix." . @HOST@ . name: Name Service Discovery. XMPP . Channels . mod_mix_pam XEP-0405: Mediated Information eXchange (MIX): Participant Server Requirements . MIX MIX ( ). mod_mix mod_mix_pam MIX XMPP . : cache_life_time: timeout() cache_life_time . cache_missed: true | false cache_missed . cache_size: pos_integer() | infinity cache_size . db_type: mnesia | sql default_db . use_cache: true | false use_cache . mod_mqtt ../guide/mqtt/index.md|MQTT 3.1.1 5.0 . mod_mqtt modules listen . : access_publish: {TopicFilter: AccessName} . . access_subscribe: {TopicFilter: AccessName} . . cache_life_time: timeout() cache_life_time . cache_missed: true | false cache_missed . cache_size: pos_integer() | infinity cache_size . db_type: mnesia | sql default_db . match_retained_limit: pos_integer() | infinity . 1000 . max_queue: Size . 5000 . max_topic_aliases: 0..65535 . 100 . max_topic_depth: Depth (/) . 8 . queue_type: ram | file queue_type . ram_db_type: mnesia default_ram_db . session_expiry: timeout() MQTT . 0 . 5 . use_cache: true | false use_cache . mod_mqtt_bridge (topics) MQTT . . ejabberd 23.01 . : replication_user: JID . servers: {ServerUrl: {Key: Value}} ServerUrl. URL : mqtt, mqtts (mqtt tls), mqtt5, mqtt5s ( v5), ws, wss, ws5, wss5. : authentication: {AuthKey: AuthValue} AuthKey : username password certfile . mqtts, mqtt5s, wss, wss5 . publish: {LocalTopic: RemoteTopic} publish subscribe . subscribe: {RemoteTopic: LocalTopic} publish subscribe . : modules: mod_mqtt_bridge: replication_user: "mqtt@xmpp.server.com" servers: "mqtt://server.com": authentication: certfile: "/etc/ejabberd/mqtt_server.pem" publish: "localA": "remoteA" # local changes to 'localA' will be replicated on remote server as 'remoteA' "topicB": "topicB" subscribe: "remoteB": "localB" # changes to 'remoteB' on remote server will be stored as 'localB' on local server mod_muc : mod_muc_occupantid 26.02 . (MUC) . . . : o XEP-0045: Multi-User Chat o XEP-0249: Direct MUC Invitations o XEP-0421: Occupant identifiers for semi-anonymous MUCs o XEP-0486: MUC Avatars o Muc/Sub: Multi-User Chat Subscriptions MUC Jabber ID (nickname) MUC . XMPP MUC . . MUC : MUC . . . MUC . : . : access: AccessName . . access_admin: AccessName . none . JID . groupchat JID . access_create: AccessName . all . access_mam: AccessName mam . all . access_persistent: AccessName persistent . all . access_register: AccessName : 23.10 . . all MUC . append_module_config : {MUCHost: Options} : 26.07 . MUC host hosts mod_muc . append_host_config mod_muc . : modules: mod_muc: hosts: - service1.@HOST@ - service2.@HOST@ name: "Service General" append_module_config: service1.localhost: name: "Service 1" service2.example.net: name: "Service 2" cleanup_affiliations_on_start: true | false : 22.05 . (affiliations) . false . db_type: mnesia | sql default_db . default_room_options: Options . XMPP MUC . Options : allow_change_subj: true | false . true . allow_private_messages_from_visitors: anyone | moderators | nobody . anyone . allow_query_users: true | false IQ . true . allow_subscription: true | false ../../developer/xmpp-clients-bots/extensions/muc-sub.md|Multi-User Chat Subscriptions . false . allow_user_invites: true | false . false . allow_visitor_nickchange: true | false . true . allow_visitor_status: true | false . . true . allow_voice_requests: true | false . true . allowpm: anyone | participants | moderators | none . anyone . anonymous: true | false : JID . JID . true . captcha_protected: true | false ( ) CAPTCHA ( basic.md#captcha|CAPTCHA ) . false . description: Room Description . . enable_hats: true | false : 25.10 . XEP-0317: Hats . ejabberd 25.10 ../../tutorials/muc-hats.md|MUC Hats . true . lang: Language . RFC 5646 . . logging: true | false mod_muc_log . false . mam: true | false . mod_mam . false . max_users: Number . 200 . members_by_default: true | false " " . true . members_only: true | false . false . moderated: true | false " " . true . password: Password . password_protected true . . password_protected: true | false . false . persistent: true | false . false . presence_broadcast: [Role] . : moderator, participant, visitor. : : presence_broadcast: - moderator - participant - visitor public: true | false MUC . MUC XMPP . true . public_list: true | false . true . pubsub: PubSub Node URI XMPP Publish/Subscribe . . title: Room Title . . vcard: vCard vCard . mod_muc . . vcard_xupdate: undefined | external | AvatarHash . undefined . voice_request_min_interval: Number . 1800 . hibernation_timeout: infinity | Seconds . infinity . history_size: Size . . . 0 . 20 . . : XMPP (XEP-0313) mod_mam . host . hosts . hosts: [Host, ...] Jabber ID . hosts Jabber ID "conference." . @HOST@ . max_captcha_whitelist: Number : 21.01 . Captcha Whitelist . infinity . max_password: Number : 21.01 . . infinity . max_room_desc: Number . infinity . max_room_id: Number Room ID . infinity . max_room_name: Number . infinity . max_rooms_discoitems: Number Number . 100 . max_user_conferences: Number . 100 . . : . max_users: Number . . 200 . max_users_admin_threshold: Number . 5 . max_users_presence: Number . MUC "" . 1000 . min_message_interval: Number . . . . MUC . 0.4 . . min_presence_interval: Number . . . . MUC . ejabberd . . 4 . name: string() . XEP-0030: Service Discovery . Chatrooms . preload_rooms: true | false . . true . : . queue_type: ram | file queue_type . ram_db_type: mnesia | sql default_ram_db . regexp_room_id: string() Room ID . . room_shaper: none | ShaperName (shaper) MUC . none . user_message_shaper: none | ShaperName (shaper) . none . user_presence_shaper: none | ShaperName (shaper) . none . vcard: vCard vCard XMPP . vCard YAML XML vCard . . : # This XML representation of vCard: # # Conferences # # # Elm Street # # # # is translated to: vcard: fn: Conferences adr: - work: true street: Elm Street mod_muc_admin MUC MUC . WebAdmin . mod_muc . : subscribe_room_many_max_users: Number : 22.05 . API subscribe_room_many . 50 . API: ../../developer/ejabberd-api/admin-tags.md#muc|muc, ../../developer/ejabberd-api/admin-tags.md#muc_room|muc_room, ../../developer/ejabberd-api/admin-tags.md#muc_sub|muc_sub mod_muc_log Multi-User Chat (MUC) HTML . XMPP MUC . : o : JID . o JID HTML ( XMPP URI). o . o /me . o HTML XHTML 1.0 Transitional CSS . o - . o : . o CSS CSS . o URL . o . o . mod_muc . : access_log: AccessName . muc_admin . : muc_admin . cssfile: Path | URL HTML CSS CSS . Path URL . CSS HTML . dirname: room_jid | room_name . room_jid JID . MUC . room_jid . dirtype: subdirs | plain . subdirs . . subdirs . file_format: html | plaintext : html HTML plaintext . html . file_permissions: {mode: Mode, group: Group} : . : : file_permissions: mode: 644 group: 33 outdir: Path HTML . daemon ejabberd . www/muc . spam_prevention: true | false true . true nofollow . timezone: local | universal . local Erlang . UTC . local . top_link: {URL: Text} . : : top_link: /: Home url: URL URL . dirname room_name URL JID URL . . mod_muc_rtbl : 23.04 . (Real-time blocklists) MUC . pubsub https://xmppbl.org . : rtbl_node: PubsubNodeName pubsub . muc_bans_sha256 . rtbl_server: Domain XMPP . xmppbl.org . mod_multicast XEP-0033: Extended Stanza Addressing . : access: Access multicast . : all. host . hosts . hosts: [Host, ...] Jabber ID . hosts Jabber ID vhost "multicast." . @HOST@ vhost . : vhost . limits: Sender: Stanza: Number XEP-0033 . stanza : o sender : local remote. o stanza : message presence. o number infinite . : # Default values: local: message: 100 presence: 100 remote: message: 20 presence: 20 name Info (Service Discovery). "Multicast" . vcard vCard . undefined . : # Only admins can send packets to multicast service access_rules: multicast: - allow: admin # If you want to allow all your users: access_rules: multicast: - allow # This allows both admins and remote users to send packets, # but does not allow local users acl: allservers: server_glob: "*" access_rules: multicast: - allow: admin - deny: local - allow: allservers modules: mod_multicast: host: multicast.example.org access: multicast limits: local: message: 40 presence: infinite remote: message: 150 mod_offline XEP-0160: XEP-0013: . . . presence . API delete_expired_messages API delete_old_messages . : access_max_user_messages: AccessName () . . max_user_offline_messages . bounce_groupchat: true | false . . mod_offline . MUC MucSub bounce MucSub MucSub . false . cache_life_time: timeout() cache_life_time . cache_size: pos_integer() | infinity cache_size . db_type: mnesia | sql default_db . store_empty_body: true | false | unless_chat_state . unless_chat_state ejabberd ( XEP-0085: ). store_groupchat: true | false . false . use_cache: true | false use_cache . use_mam_for_storage: true | false . archive mod_mam spool . XEP-0160 XEP-0313 . MucSub . : ( / ) . false . : : acl: admin: user: - admin1@localhost - admin2@example.org poweruser: user: - bob@example.org - jane@example.org shaper_rules: max_user_offline_messages: - 5000: poweruser - 2000: admin - 100 modules: ... mod_offline: access_max_user_messages: max_user_offline_messages ... API: ../../developer/ejabberd-api/admin-tags.md#offline|offline mod_ping XEP-0199: XMPP Ping keepalive . ejabberd ping . : ping_ack_timeout: timeout() ping . : mod_stream_mgmt ack_timeout . undefined . ping_interval: timeout() ping send_pings true . stanza ping . . send_pings: true | false true ping_interval ping . . false . timeout_action: none | kill ping_ack_timeout ping : kill none . : mod_stream_mgmt - . none . : modules: mod_ping: send_pings: true ping_interval: 4 min timeout_action: kill mod_pres_counter / presence . stanza stanza . : count: Number stanza presence (subscribe unsubscribe subscribed unsubscribed) ( ) interval. stanza . . interval: timeout() . . : modules: mod_pres_counter: count: 5 interval: 30 secs mod_privacy XEP-0016: Privacy Lists . XMPP XEP-0191: Blocking Command mod_blocking . mod_blocking mod_privacy . : cache_life_time: timeout() cache_life_time . cache_missed: true | false cache_missed . cache_size: pos_integer() | infinity cache_size . db_type: mnesia | sql default_db . use_cache: true | false use_cache . mod_private XEP-0049: Private XML Storage . XMPP . XML . (XEP-0048: Bookmarks). XEP-0402: PEP Native Bookmarks API bookmarks_to_pep . : cache_life_time: timeout() cache_life_time . cache_missed: true | false cache_missed . cache_size: pos_integer() | infinity cache_size . db_type: mnesia | sql default_db . use_cache: true | false use_cache . API Tags: ../../developer/ejabberd-api/admin-tags.md#private|private mod_privilege : 24.10 . XEP-0356: Privileged Entity . ( / ). PEP MAM . . mod_privilege . . . : . mod_delegation . : iq: {Namespace: Options} IQ . . Options : both: AccessName IQ get set . none . get: AccessName IQ get . none . set: AccessName IQ set . none . message: Options . . Options : outgoing: AccessName . none . presence: Options . . Options : managed_entity: AccessName . none . roster: AccessName . none . roster: Options . . Options : both: AccessName / . none . get: AccessName . none . set: AccessName . none . : modules: mod_privilege: iq: http://jabber.org/protocol/pubsub: get: all roster: get: all presence: managed_entity: all message: outgoing: all mod_providers : 25.08 . JSON provider API v2 XMPP Providers . ejabberd . . modules listen -> ejabberd_http -> listen-options.md#request_handlers|request_handlers . listen.md#ejabberd_http|ejabberd_http listen-options.md#tls|tls . : alternativeJids: [string()] JID ( XMPP) JID . [] . busFactor: integer() XMPP ( ) -1 . -1 . freeOfCharge: true | false XMPP . false . languages: [string()] . URL @LANGUAGE_URL@ . language : [en]. legalNotice: string() ( ). @LANGUAGE_URL@ . "" . maximumHttpFileUploadStorageTime: integer() ( 0 -1 ). max_days mod_http_upload_quota 0. maximumHttpFileUploadTotalSize: integer() ( (MB) 0 -1 MB). : MB MiB ( 104,857,600 = 100 MiB ~~ 104 MB). XMPP . shaper access_hard_quota mod_http_upload_quota 0. maximumMessageArchiveManagementStorageTime: integer() ( 0 -1 ). 0 . organization: string() XMPP. : company "commercial person" "private person" governmental "non-governmental" "". "" . passwordReset: string() ( ) ( ) ( ) . @LANGUAGE_URL@ . URL mod_register_web request_handler "". professionalHosting: true | false XMPP . false . serverLocations: [string()] /. : []. serverTesting: true | false ( ). false . since: string() XMPP . : "". website: string() . @LANGUAGE_URL@ . "" . : listen: - port: 443 module: ejabberd_http tls: true request_handlers: /.well-known/xmpp-provider-v2.json: mod_providers modules: mod_providers: alternativeJids: ["example1.com", "example2.com"] busFactor: 1 freeOfCharge: true languages: [ag, ao, bg, en] legalNotice: "http://@HOST@/legal/@LANGUAGE_URL@" maximumHttpFileUploadStorageTime: 0 maximumHttpFileUploadTotalSize: 0 maximumMessageArchiveManagementStorageTime: 0 organization: "non-governmental" passwordReset: "http://@HOST@/reset/@LANGUAGE_URL@" professionalHosting: true serverLocations: [ao, bg] serverTesting: true since: "2025-12-31" website: "http://@HOST@/website/@LANGUAGE_URL@" mod_proxy65 XEP-0065: SOCKS5 Bytestreams . ejabberd XMPP . : access: AccessName . all . . append_module_config: {ProxyHost: Options} : 25.xx . hosts mod_proxy65 . name vcard . append_host_config . : modules: mod_proxy65: hosts: - service1.@HOST@ - service2.@HOST@ name: "Service General" append_module_config: service1.localhost: name: "Service 1" service2.example.net: name: "Service 2" auth_type: anonymous | plain SOCKS5. anonymous . plain ejabberd SASL PLAIN . host . hosts . hostname: Host . NAT . @HOST@ . ip . : proxy.mydomain.org, 200.150.100.50. hosts: [Host, ...] Jabber . hosts Jabber "proxy." . @HOST@ . ip: IPAddress . IP DNS 127.0.0.1. max_connections: pos_integer() | infinity . infinity . name: Name . XEP-0030: Service Discovery . "SOCKS5 Bytestreams" . port: 1..65535 . 7777 . ram_db_type: mnesia | redis | sql default_ram_db . recbuf: Size . shaper shaper . 65536 . shaper: Shaper shaper . shaper . none shaper. sndbuf: Size . shaper shaper . 65536 . vcard: vCard vCard XMPP Service Discovery . vCard YAML XML vCard . . : acl: admin: user: admin@example.org proxy_users: server: example.org access_rules: proxy65_access: allow: proxy_users shaper_rules: proxy65_shaper: none: admin proxyrate: proxy_users shaper: proxyrate: 10240 modules: mod_proxy65: host: proxy1.example.org name: "File Transfer Proxy" ip: 200.150.100.1 port: 7778 max_connections: 5 access: proxy65_access shaper: proxy65_shaper recbuf: 10240 sndbuf: 10240 mod_pubsub XEP-0060: Publish-Subscribe . mod_pubsub . PEP (XEP-0163: Personal Eventing via Pubsub) ejabberd mod_caps . : access_createnode: AccessName pubsub acl access . ejabberd pubsub . : all . append_module_config : {PubSubHost: Options} : 26.07 . PubSub hosts mod_pubsub . name vcard . append_host_config . : modules: mod_pubsub: hosts: - service1.@HOST@ - service2.@HOST@ name: "Service General" append_module_config: service1.localhost: name: "Service 1" service2.example.net: name: "Service 2" db_type: mnesia | sql default_db . default_node_config: List of Key:Value . - . . force_node_config: List of Node and the list of its Key:Value . : [] . : force_node_config: ## Avoid buggy clients to make their bookmarks public storage:bookmarks: access_model: whitelist host . hosts . hosts: [Host, ...] Jabber . hosts Jabber "pubsub." . @HOST@ . ignore_pep_from_offline: false | true PEP . true false . pubsub true . last_item_cache: false | true pubsub . true false . pubsub . pubsub . . max_item_expire_node: timeout() | infinity : 21.12 . . : infinity . max_items_node: non_neg_integer() | infinity . : 1000 . max_nodes_discoitems: pos_integer() | infinity discoitem . : 100 . max_subscriptions_node: MaxSubs . : undefined. name: Name . XEP-0030: Service Discovery . vCard User Search . nodetree: Nodetree nodetree . nodetree pubsub : tree. nodetree . o tree nodetree . flat hometree . o virtual nodetree . . virtual nodetree : [flat, pep] [flat] . . virtual nodetree tree nodetree . pep_mapping: List of Key:Value - PEP . node_tune node_pep PEP tune : : modules: ... mod_pubsub: pep_mapping: http://jabber.org/protocol/tune: tune ... plugins: [Plugin, ...] pubsub . . : [flat]. PubSub : type='plugin-name' create . o flat XEP-0060 . o pep (XEP-0163) PubSub . PEP . vcard: vCard vCard XMPP . vCard YAML XML vCard . . : # This XML representation of vCard: # # Conferences # # # Elm Street # # # # is translated to: vcard: fn: Conferences adr: - work: true street: Elm Street : flat flat hometree pep : modules: mod_pubsub: access_createnode: pubsub_createnode max_subscriptions_node: 100 default_node_config: notification_type: normal notify_retract: false max_items: 4 plugins: - flat - pep mod_pubsub db_type sql . flat hometree pep SQL . SQL : modules: mod_pubsub: db_type: sql access_createnode: pubsub_createnode ignore_pep_from_offline: true last_item_cache: false plugins: - flat - pep API Tags: ../../developer/ejabberd-api/admin-tags.md#purge|purge mod_pubsub_serverinfo : 25.07 . XEP-0485: PubSub Server Information S2S Pub/Sub . S2S PubSub . "serverinfo" . . . . S2S . API stop_s2s_connections ejabberd S2S . mod_pubsub mod_disco . : pubsub_host: undefined | string() PubSub S2S . mod_pubsub . hosts mod_pubsub . hosts mod_pubsub . : modules: mod_pubsub_serverinfo: pubsub_host: custom.pubsub.domain.local mod_push XMPP XEP-0357: Push Notifications . APNS FCM . " " . FCM APNS . : cache_life_time: timeout() cache_life_time . cache_missed: true | false cache_missed . cache_size: pos_integer() | infinity cache_size . db_type: mnesia | sql default_db . include_body: true | false | Text true . Text . ( ) . "New message" . include_sender: true | false true JID . false . notify_on: messages | all : 23.10 . messages ( ) . all XMPP . all . use_cache: true | false use_cache . API Tags: ../../developer/ejabberd-api/admin-tags.md#purge|purge mod_push_keepalive ( mod_stream_mgmt ) . . mod_push . : resume_timeout: timeout() . . mod_stream_mgmt . 72 . wake_on_start: true | false true . . false . wake_on_timeout: true | false true resume_timeout . true . mod_register XEP-0077: In-Band Registration . XMPP : o . o . o . registration_timeout . : access: AccessName . deny . . AccessName none In-Band Registration . access_from: AccessName ejabberd s2s c2s . . : s2s . access_remove: AccessName . . allow_modules: all | [Module, ...] : 21.12 . all. all [mod_register, mod_register_web] . captcha_protected: true | false basic.md#captcha|CAPTCHA . false . ip_access: AccessName IP XMPP . AccessName ip . all . password_strength: Entropy . Entropy . . 0 . redirect_url: URL XEP-0077: In-Band Registration: Redirection . registration_watchers: [JID, ...] JID . welcome_message: {subject: Subject, body: Body} . Subject Body . : modules: mod_register: welcome_message: subject: "Welcome!" body: |- Hi! Welcome to this XMPP server mod_register_web : o . o . o . basic.md#captcha|CAPTCHA . captcha_cmd captcha_url . localhost : https://localhost:5280/register/ . / URL . listen -> ejabberd_http -> listen-options.md#request_handlers|request_handlers . modules WebAdmin . mod_register . . : listen: - port: 5280 module: ejabberd_http request_handlers: /register: mod_register_web modules: mod_register: {} mod_roster RFC6121 . XEP-0237: Roster Versioning . : access: AccessName . deny // . all . cache_life_time: timeout() cache_life_time . cache_missed: true | false cache_missed . cache_size: pos_integer() | infinity cache_size . db_type: mnesia | sql default_db . store_current_id: true | false true . false . ejabberd . . versioning true . false . : mod_shared_roster mod_shared_roster_ldap false . use_cache: true | false use_cache . versioning: true | false Roster Versioning / . false . : modules: mod_roster: versioning: true store_current_id: false API: ../../developer/ejabberd-api/admin-tags.md#roster|roster mod_s2s_bidi : 24.10 . XEP-0288: Bidirectional Server-to-Server Connections s2s . . : modules: mod_s2s_bidi: {} mod_s2s_dialback XEP-0220: Server Dialback DNS . DNS DNS PKIX . TLS ( ). : access: AccessName dialback . all . : modules: mod_s2s_dialback: access: allow: server: legacy.domain.tld server: invalid-cert.example.org deny: all mod_scram_upgrade : 24.10 . XEP-0480: SASL Upgrade Tasks . : offered_upgrades: list(sha256, sha512) : modules: mod_scram_upgrade: offered_upgrades: - sha256 - sha512 mod_service_log stanza XMPP . stanza XEP-0297: Stanza Forwarding . : loggers: [Domain, ...] stanza . : modules: mod_service_log: loggers: - xmpp-server.tld - component.domain.tld mod_shared_roster : () . . XMPP . . . . API srg_ API srg_add . : o Label: . o Description: . o Members: JID . @all@ . @online@ . . o Displayed: . vhost groupid@vhost . mod_roster . 503 . : cache_life_time: timeout() cache_life_time . cache_missed: true | false cache_missed . cache_size: pos_integer() | infinity cache_size . db_type: mnesia | sql default_db . use_cache: true | false use_cache . : . : Name: club_members Label: Club Members Description: Members from the computer club Members: member1@example.org, member2@example.org, member3@example.org Displayed Groups: club_members : . . . . : First list: Name: management Label: Management Description: Management Members: manager1@example.org, manager2@example.org Displayed: management, marketing, sales Second list: Name: marketing Label: Marketing Description: Marketing Members: marketeer1@example.org, marketeer2@example.org, marketeer3@example.org Displayed: management, marketing Third list: Name: sales Label: Sales Description: Sales Members: salesman1@example.org, salesman2@example.org, salesman3@example.org Displayed: management, sales mod_shared_roster_ldap ( ) LDAP . mod_shared_roster_ldap mod_roster . mod_roster 503 . . . bind . o : ldap_rfilter ldap_ufilter ldap_gfilter ldap_filter. LDAP . ldap_base . o : ldap_groupattr ldap_groupdesc ldap_memberattr ldap_userdesc ldap_useruid. . o : ldap_auth_check ldap_group_cache_validity ldap_memberattr_format ldap_memberattr_format_re ldap_user_cache_validity. . o : . ldap.md#ldap-connection|LDAP Connection . Flat DIT Deep DIT ldap.md#ldap-examples|Configuration examples . : cache_life_time cache_life_time . cache_missed cache_missed . cache_size cache_size . ldap_auth_check: true | false ( ejabberd) LDAP . false . true . ldap_backups ldap_backups . ldap_base ldap_base . ldap_deref_aliases ldap_deref_aliases . ldap_encrypt ldap_encrypt . ldap_filter AND <> <> . ldap.md#filters|Filters LDAP . ldap_gfilter <> ( <>) . ldap_groupattr ldap_groupdesc ldap_memberattr . . <> . ldap_groupattr . <> <> . cn . ldap_groupdesc . <> . ldap_groupattr . ldap_memberattr . <> . memberUid . objectClass : posixGroup -> memberUid groupOfNames -> member groupOfUniqueNames -> uniqueMember. ldap_memberattr_format globbing ldap_memberattr . %u . User Group Filters . ldap_memberattr_format_re ldap_memberattr . ldap.md#control-parameters|Control Parameters LDAP . ldap_password ldap_password . ldap_port ldap_port . ldap_rfilter <>. << >> . ldap_groupattr . . . ldap_rootdn ldap_rootdn . ldap_servers ldap_servers . ldap_tls_cacertfile ldap_tls_cacertfile . ldap_tls_certfile ldap_tls_certfile . ldap_tls_depth ldap_tls_depth . ldap_tls_verify ldap_tls_verify . ldap_ufilter <> ( ) . ldap_userdesc ldap_useruid . ldap.md#filters|Filters LDAP . ldap_uids ldap_uids . ldap_userdesc . <> . cn . ldap_userjidattr XMPP jid . ( ) jid . ldap_useruid . ldap_memberattr . <> . cn . use_cache use_cache . mod_sic XEP-0279: Server IP Check . IP . . . mod_sip / SIP . . DNS . listen.md#ejabberd_sip|ejabberd_sip ejabberd . : always_record_route: true | false "Record-Route" SIP . NAT/ . true . flow_timeout_tcp: timeout() keep-alive TCP SIP outbound . 2 . flow_timeout_udp: timeout() keep-alive UDP SIP outbound . 29 . record_route: URI always_record_route true SIP outbound ejabberd "Record-Route" URI SIP . URI SIP . routes: [URI, ...] URI SIP SIP . URI SIP . via: [URI, ...] "Via" SIP . SIP . URI "scheme://host:port" "transport" tls tcp udp "host" IP "port" . URI ( "port" "scheme" ). : modules: mod_sip: always_record_route: false record_route: "sip:example.com;lr" routes: - "sip:example.com;lr" - "sip:sip.example.com;lr" flow_timeout_udp: 30 sec flow_timeout_tcp: 1 min via: - tls://sip-tls.example.com:5061 - tcp://sip-tcp.example.com:5060 - udp://sip-udp.example.com:5060 mod_stats XEP-0039: Statistics Gathering . ejabberd : o (users/total). o (users/all-hosts/total). o (users/online). o (users/all-hosts/online). . . . mod_stream_mgmt XEP-0198: Stream Management . XML XMPP . : ack_timeout: timeout() . infinity . 1 . cache_life_time: timeout() cache_life_time . 48 hours . cache_size: pos_integer() | infinity cache_size . max_ack_queue: Size . . infinity . . ( 1000 ). 5000 . max_resume_timeout: timeout() . . . resume_timeout . resume_timeout . queue_type: ram | file queue_type . resend_on_timeout: true | false | if_offline true . . . false ejabberd . if_offline . . . resume_timeout: timeout() () . . max_resume_timeout . 0 . 5 . mod_stun_disco : 20.04 . XMPP STUN/TURN XEP-0215: External Service Discovery . : access: AccessName STUN/TURN . local . credentials_lifetime: timeout() . TURN ejabberd TURN . 12 hours . ejabberd secret ( ). offer_local_services: true | false STUN/TURN ejabberd . TLS services ( ). TURN . true . secret: Text . . TURN ejabberd / services TURN . . . services: [Service, ...] . STUN/TURN ejabberd / . TURN ejabberd secret . STUN/TURN ejabberd REST API For Access To TURN Services . offer_local_services false . host: Host IP STUN/TURN . TLS IP ( DNS ). TLS ( IP) . host . port: 1..65535 STUN/TURN . TLS 3478 TLS 5349 . restricted: true | false . STUN/STUNS false TURN/TURNS true . transport: tcp | udp . TLS udp TLS tcp . type: stun | turn | stuns | turns . TLS stun turn TLS stuns turns . stun . : services: - host: 203.0.113.3 port: 3478 type: stun transport: udp restricted: false - host: 203.0.113.3 port: 3478 type: turn transport: udp restricted: true - host: 2001:db8::3 port: 3478 type: stun transport: udp restricted: false - host: 2001:db8::3 port: 3478 type: turn transport: udp restricted: true - host: server.example.com port: 5349 type: turns transport: tcp restricted: true mod_time XEP-0202: Entity Time . . . mod_vcard vCard vCard XEP-0054: vcard-temp . Jabber vCard . vCard . : allow_return_all: true | false vCard . false . append_module_config : {VcardHost: Options} : 26.07 . hosts mod_vcard . name . append_host_config . : modules: mod_vcard: hosts: - service1.@HOST@ - service2.@HOST@ name: "Service General" append_module_config: service1.localhost: name: "Service 1" service2.example.net: name: "Service 2" cache_life_time: timeout() cache_life_time . cache_missed: true | false cache_missed . cache_size: pos_integer() | infinity cache_size . db_type: mnesia | sql | ldap default_db . host . hosts . hosts: [Host, ...] Jabber . hosts Jabber "vjud." . @HOST@ . matches: pos_integer() | infinity . infinity . 30 . name: Name . XEP-0030: Service Discovery . vCard User Search . search: true | false . hosts name vcard Jabber Service Discovery . false . use_cache: true | false use_cache . vcard: vCard vCard XMPP Service Discovery . vCard YAML XML vCard . . : # This XML representation of vCard: # # # Conferences # # # Elm Street # # # # is translated to: # vcard: fn: Conferences adr: - work: true street: Elm Street ldap: ldap_backups ldap_backups . ldap_base ldap_base . ldap_deref_aliases ldap_deref_aliases . ldap_encrypt ldap_encrypt . ldap_filter ldap_filter . ldap_password ldap_password . ldap_port ldap_port . ldap_rootdn ldap_rootdn . ldap_search_fields: {Name: Attribute, ...} LDAP . Name ( msgs/*.msg ). Attribute LDAP %u . : : User: "%u" "Full Name": displayName "Given Name": givenName "Middle Name": initials "Family Name": sn Nickname: "%u" Birthday: birthDay Country: c City: l Email: mail "Organization Name": o "Organization Unit": ou ldap_search_reported: {SearchField: VcardField}, ...} . SearchField ( msgs/*.msg ). VcardField vCard ldap_vcard_map . : : "Full Name": FN "Given Name": FIRST "Middle Name": MIDDLE "Family Name": LAST "Nickname": NICKNAME "Birthday": BDAY "Country": CTRY "City": LOCALITY "Email": EMAIL "Organization Name": ORGNAME "Organization Unit": ORGUNIT ldap_servers ldap_servers . ldap_tls_cacertfile ldap_tls_cacertfile . ldap_tls_certfile ldap_tls_certfile . ldap_tls_depth ldap_tls_depth . ldap_tls_verify ldap_tls_verify . ldap_uids ldap_uids . ldap_vcard_map: {Name: {Pattern, LDAPattributes}, ...} LDAP vCard . Name vCard RFC 2426 . Pattern %u %d %s . LDAPattributes LDAP . %s LDAP List_of_LDAP_attributes %u JID %d JID . : : NICKNAME: {"%u": []} FN: {"%s": [displayName]} LAST: {"%s": [sn]} FIRST: {"%s": [givenName]} MIDDLE: {"%s": [initials]} ORGNAME: {"%s": [o]} ORGUNIT: {"%s": [ou]} CTRY: {"%s": [c]} LOCALITY: {"%s": [l]} STREET: {"%s": [street]} REGION: {"%s": [st]} PCODE: {"%s": [postalCode]} TITLE: {"%s": [title]} URL: {"%s": [labeleduri]} DESC: {"%s": [description]} TEL: {"%s": [telephoneNumber]} EMAIL: {"%s": [mail]} BDAY: {"%s": [birthDay]} ROLE: {"%s": [employeeType]} PHOTO: {"%s": [jpegPhoto]} mnesia: search_all_hosts: true | false . true . mod_vcard_xupdate vCard . vCard (XEP-0153) . . presence . presence Update Data XEP-0153 . presence ejabberd . vCard presence presence . presence . use_cache false . mod_vcard . XEP-0153 << >> vCard . mod_avatar . : cache_life_time: timeout() cache_life_time . cache_missed: true | false cache_missed . cache_size: pos_integer() | infinity cache_size . use_cache: true | false use_cache . mod_version XEP-0092: Software Version . ejabberd . : show_os: true | false . true . (LISTENERS) ejabberd 26.07 . TODO (AUTHOR) ProcessOne. (VERSION) ejabberd 26.07 . ejabberd . (REPORTING BUGS) https://github.com/processone/ejabberd/issues . (SEE ALSO) : https://github.com/processone/ejabberd/blob/26.07/ejabberd.yml.example : https://ejabberd.im : https://docs.ejabberd.im : https://docs.ejabberd.im/admin/configuration : https://github.com/processone/ejabberd (COPYING) Copyright (c) 2002-2026 ProcessOne. 07/30/2026 EJABBERD.YML(5)