Re-added old config, restructured config files into subfolders
[ach-master.git] / src / configuration / IM / ejabberd / 14.12 / ejabberd.yml
1 ###
2 ###               ejabberd configuration file
3 ###
4 ###
5
6 ### The parameters used in this configuration file are explained in more detail
7 ### in the ejabberd Installation and Operation Guide.
8 ### Please consult the Guide in case of doubts, it is included with
9 ### your copy of ejabberd, and is also available online at
10 ### http://www.process-one.net/en/ejabberd/docs/
11
12 ### The configuration file is written in YAML.
13 ### Refer to http://en.wikipedia.org/wiki/YAML for the brief description.
14 ### However, ejabberd treats different literals as different types:
15 ###
16 ### - unquoted or single-quoted strings. They are called "atoms".
17 ###   Example: dog, 'Jupiter', '3.14159', YELLOW
18 ###
19 ### - numeric literals. Example: 3, -45.0, .0
20 ###
21 ### - quoted or folded strings.
22 ###   Examples of quoted string: "Lizzard", "orange".
23 ###   Example of folded string:
24 ###   > Art thou not Romeo,
25 ###     and a Montague?
26
27 ###   =======
28 ###   LOGGING
29
30 ##
31 ## loglevel: Verbosity of log files generated by ejabberd.
32 ## 0: No ejabberd log at all (not recommended)
33 ## 1: Critical
34 ## 2: Error
35 ## 3: Warning
36 ## 4: Info
37 ## 5: Debug
38 ##
39 loglevel: 3
40
41 ##
42 ## rotation: Describe how to rotate logs. Either size and/or date can trigger
43 ## log rotation. Setting count to N keeps N rotated logs. Setting count to 0
44 ## does not disable rotation, it instead rotates the file and keeps no previous
45 ## versions around. Setting size to X rotate log when it reaches X bytes.
46 ## To disable rotation set the size to 0 and the date to ""
47 ## Date syntax is taken from the syntax newsyslog uses in newsyslog.conf.
48 ## Some examples:
49 ##  $D0     rotate every night at midnight
50 ##  $D23    rotate every day at 23:00 hr
51 ##  $W0D23  rotate every week on Sunday at 23:00 hr
52 ##  $W5D16  rotate every week on Friday at 16:00 hr
53 ##  $M1D0   rotate on the first day of every month at midnight
54 ##  $M5D6   rotate on every 5th day of the month at 6:00 hr
55 ##
56 log_rotate_size: 10485760
57 log_rotate_date: ""
58 log_rotate_count: 1
59
60 ##
61 ## overload protection: If you want to limit the number of messages per second
62 ## allowed from error_logger, which is a good idea if you want to avoid a flood
63 ## of messages when system is overloaded, you can set a limit.
64 ## 100 is ejabberd's default.
65 log_rate_limit: 100
66
67 ##
68 ## watchdog_admins: Only useful for developers: if an ejabberd process
69 ## consumes a lot of memory, send live notifications to these XMPP
70 ## accounts.
71 ##
72 ## watchdog_admins:
73 ##   - "bob@example.com"
74
75
76 ###   ================
77 ###   SERVED HOSTNAMES
78
79 ##
80 ## hosts: Domains served by ejabberd.
81 ## You can define one or several, for example:
82 ## hosts: 
83 ##   - "example.net"
84 ##   - "example.com"
85 ##   - "example.org"
86 ##
87 hosts:
88   - "localhost"
89
90 ##
91 ## route_subdomains: Delegate subdomains to other XMPP servers.
92 ## For example, if this ejabberd serves example.org and you want
93 ## to allow communication with an XMPP server called im.example.org.
94 ##
95 ## route_subdomains: s2s
96
97 ###   ===============
98 ###   LISTENING PORTS
99
100 ##
101 ## listen: The ports ejabberd will listen on, which service each is handled
102 ## by and what options to start it with.
103 ##
104 listen: 
105   - 
106     port: 5222
107     module: ejabberd_c2s
108     ##
109     ## If TLS is compiled in and you installed a SSL
110     ## certificate, specify the full path to the
111     ## file and uncomment these lines:
112     ##
113     certfile: "/path/to/ssl.pem"
114     starttls: true
115     ##
116     ## To enforce TLS encryption for client connections,
117     ## use this instead of the "starttls" option:
118     ##
119     starttls_required: true
120     ##
121     ## Custom OpenSSL options
122     ##
123     protocol_options:
124       # Disable SSLv3 because it is insecure
125       - "no_sslv3"
126       # Disable TLSv1 to prevent downgrade attacks
127       - "no_tlsv1"
128       # Jabber clients tend to have bad cipher orders, see
129       # https://blog.thijsalkema.de/me/blog//blog/2013/09/02/the-state-of-tls-on-xmpp-3/
130       # In order to force them to use the best available setting, which is not
131       # always at the top of their list, we enforce the server cipher order
132       # using the setting "cipher_server_preference"
133       # The cipher order is defined using the "ciphers" option (see below)
134       - "cipher_server_preference"
135     max_stanza_size: 65536
136     shaper: c2s_shaper
137     access: c2s
138     # Set the cipher order of the server, in OpenSSL syntax
139     ciphers: "EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA256:EECDH:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA128-SHA:AES128-SHA"
140     # TODO Is this cipher order fine?
141   - 
142     port: 5269
143     module: ejabberd_s2s_in
144   ##
145   ## ejabberd_service: Interact with external components (transports, ...)
146   ##
147   ## - 
148   ##   port: 8888
149   ##   module: ejabberd_service
150   ##   access: all
151   ##   shaper_rule: fast
152   ##   ip: "127.0.0.1"
153   ##   hosts:
154   ##     "icq.example.org":
155   ##       password: "secret"
156   ##     "sms.example.org":
157   ##       password: "secret"
158
159   ##
160   ## ejabberd_stun: Handles STUN Binding requests
161   ##
162   ## - 
163   ##   port: 3478
164   ##   transport: udp
165   ##   module: ejabberd_stun
166
167   ##
168   ## To handle XML-RPC requests that provide admin credentials:
169   ##
170   ## - 
171   ##   port: 4560
172   ##   module: ejabberd_xmlrpc
173   - 
174     port: 5280
175     module: ejabberd_http
176     ## request_handlers:
177     ##   "/pub/archive": mod_http_fileserver
178     web_admin: true
179     http_poll: true
180     http_bind: true
181     ## register: true
182     captcha: true
183     # Enable SSL for web admin
184     certfile: "/path/to/ssl.pem"
185     tls: true
186
187 ##
188 ## s2s_use_starttls: Enable STARTTLS + Dialback for S2S connections.
189 ## Allowed values are: false optional required required_trusted
190 ## You must specify a certificate file.
191 ##
192 s2s_use_starttls: required_trusted
193 # This forbids S2S-connections to servers with selfsigned certs. If you need
194 # that capability, change this setting to "required" to require encryption,
195 # but not authentication
196
197 ##
198 ## s2s_certfile: Specify a certificate file.
199 ##
200 s2s_certfile: "/path/to/ssl.pem"
201
202 ## Custom OpenSSL options
203 ##
204 s2s_protocol_options:
205   - "no_sslv3"
206   - "no_tlsv1"
207   - "cipher_server_preference"
208   # Again, prefer our known good cipher ordering to the potentially bad one
209   # of the other server
210
211 s2s_ciphers: "EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA256:EECDH:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA128-SHA:AES128-SHA"
212 # TODO Is this cipher order fine?
213
214
215 ##
216 ## domain_certfile: Specify a different certificate for each served hostname.
217 ##
218 ## host_config:
219 ##   "example.org":
220 ##     domain_certfile: "/path/to/example_org.pem"
221 ##   "example.com":
222 ##     domain_certfile: "/path/to/example_com.pem"
223
224 ##
225 ## S2S whitelist or blacklist
226 ##
227 ## Default s2s policy for undefined hosts.
228 ##
229 ## s2s_access: s2s
230
231 ##
232 ## Outgoing S2S options
233 ##
234 ## Preferred address families (which to try first) and connect timeout
235 ## in milliseconds.
236 ##
237 ## outgoing_s2s_families:
238 ##   - ipv4
239 ##   - ipv6
240 ## outgoing_s2s_timeout: 10000
241
242 ###   ==============
243 ###   AUTHENTICATION
244
245 ##
246 ## auth_method: Method used to authenticate the users.
247 ## The default method is the internal.
248 ## If you want to use a different method,
249 ## comment this line and enable the correct ones.
250 ##
251 auth_method: internal
252
253 ##
254 ## Store the plain passwords or hashed for SCRAM:
255 ## auth_password_format: plain
256 auth_password_format: scram
257 # Do not store passwords in plain text.
258
259 ##
260 ## Define the FQDN if ejabberd doesn't detect it:
261 ## fqdn: "server3.example.com"
262
263 ##
264 ## Authentication using external script
265 ## Make sure the script is executable by ejabberd.
266 ##
267 ## auth_method: external
268 ## extauth_program: "/path/to/authentication/script"
269
270 ##
271 ## Authentication using ODBC
272 ## Remember to setup a database in the next section.
273 ##
274 ## auth_method: odbc
275
276 ##
277 ## Authentication using PAM
278 ##
279 ## auth_method: pam
280 ## pam_service: "pamservicename"
281
282 ##
283 ## Authentication using LDAP
284 ##
285 ## auth_method: ldap
286 ##
287 ## List of LDAP servers:
288 ## ldap_servers:
289 ##   - "localhost"
290 ##
291 ## Encryption of connection to LDAP servers:
292 ## ldap_encrypt: none
293 ## ldap_encrypt: tls
294 ##
295 ## Port to connect to on LDAP servers:
296 ## ldap_port: 389
297 ## ldap_port: 636
298 ##
299 ## LDAP manager:
300 ## ldap_rootdn: "dc=example,dc=com"
301 ##
302 ## Password of LDAP manager:
303 ## ldap_password: "******"
304 ##
305 ## Search base of LDAP directory:
306 ## ldap_base: "dc=example,dc=com"
307 ##
308 ## LDAP attribute that holds user ID:
309 ## ldap_uids:
310 ##   - "mail": "%u@mail.example.org"
311 ##
312 ## LDAP filter:
313 ## ldap_filter: "(objectClass=shadowAccount)"
314
315 ##
316 ## Anonymous login support:
317 ##   auth_method: anonymous
318 ##   anonymous_protocol: sasl_anon | login_anon | both
319 ##   allow_multiple_connections: true | false
320 ##
321 ## host_config:
322 ##   "public.example.org":
323 ##     auth_method: anonymous
324 ##     allow_multiple_connections: false
325 ##     anonymous_protocol: sasl_anon
326 ##
327 ## To use both anonymous and internal authentication:
328 ##
329 ## host_config:
330 ##   "public.example.org":
331 ##     auth_method:
332 ##       - internal
333 ##       - anonymous
334
335 ###   ==============
336 ###   DATABASE SETUP
337
338 ## ejabberd by default uses the internal Mnesia database,
339 ## so you do not necessarily need this section.
340 ## This section provides configuration examples in case
341 ## you want to use other database backends.
342 ## Please consult the ejabberd Guide for details on database creation.
343
344 ##
345 ## MySQL server:
346 ##
347 ## odbc_type: mysql
348 ## odbc_server: "server"
349 ## odbc_database: "database"
350 ## odbc_username: "username"
351 ## odbc_password: "password"
352 ##
353 ## If you want to specify the port:
354 ## odbc_port: 1234
355
356 ##
357 ## PostgreSQL server:
358 ##
359 ## odbc_type: pgsql
360 ## odbc_server: "server"
361 ## odbc_database: "database"
362 ## odbc_username: "username"
363 ## odbc_password: "password"
364 ##
365 ## If you want to specify the port:
366 ## odbc_port: 1234
367 ##
368 ## If you use PostgreSQL, have a large database, and need a
369 ## faster but inexact replacement for "select count(*) from users"
370 ##
371 ## pgsql_users_number_estimate: true
372
373 ##
374 ## ODBC compatible or MSSQL server:
375 ##
376 ## odbc_type: odbc
377 ## odbc_server: "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"
378
379 ##
380 ## Number of connections to open to the database for each virtual host
381 ##
382 ## odbc_pool_size: 10
383
384 ##
385 ## Interval to make a dummy SQL request to keep the connections to the
386 ## database alive. Specify in seconds: for example 28800 means 8 hours
387 ##
388 ## odbc_keepalive_interval: undefined
389
390 ###   ===============
391 ###   TRAFFIC SHAPERS
392
393 shaper:
394   ##
395   ## The "normal" shaper limits traffic speed to 1000 B/s
396   ##
397   normal: 1000
398
399   ##
400   ## The "fast" shaper limits traffic speed to 50000 B/s
401   ##
402   fast: 50000
403
404 ##
405 ## This option specifies the maximum number of elements in the queue
406 ## of the FSM. Refer to the documentation for details.
407 ##
408 max_fsm_queue: 1000
409
410 ###.   ====================
411 ###'   ACCESS CONTROL LISTS
412 acl:
413   ##
414   ## The 'admin' ACL grants administrative privileges to XMPP accounts.
415   ## You can put here as many accounts as you want.
416   ##
417   ## admin:
418   ##   user:
419   ##     - "aleksey": "localhost"
420   ##     - "ermine": "example.org"
421   ##
422   ## Blocked users
423   ##
424   ## blocked:
425   ##   user:
426   ##     - "baduser": "example.org"
427   ##     - "test"
428
429   ## Local users: don't modify this.
430   ##
431   local: 
432     user_regexp: ""
433
434   ##
435   ## More examples of ACLs
436   ##
437   ## jabberorg:
438   ##   server:
439   ##     - "jabber.org"
440   ## aleksey:
441   ##   user:
442   ##     - "aleksey": "jabber.ru"
443   ## test:
444   ##   user_regexp: "^test"
445   ##   user_glob: "test*"
446
447   ##
448   ## Loopback network
449   ##
450   loopback:
451     ip:
452       - "127.0.0.0/8"
453
454   ##
455   ## Bad XMPP servers
456   ##
457   ## bad_servers:
458   ##   server:
459   ##     - "xmpp.zombie.org"
460   ##     - "xmpp.spam.com"
461
462 ##
463 ## Define specific ACLs in a virtual host.
464 ##
465 ## host_config:
466 ##   "localhost":
467 ##     acl:
468 ##       admin:
469 ##         user:
470 ##           - "bob-local": "localhost"
471
472 ###   ============
473 ###   ACCESS RULES
474 access:
475   ## Maximum number of simultaneous sessions allowed for a single user:
476   max_user_sessions: 
477     all: 10
478   ## Maximum number of offline messages that users can have:
479   max_user_offline_messages: 
480     admin: 5000
481     all: 100
482   ## This rule allows access only for local users:
483   local: 
484     local: allow
485   ## Only non-blocked users can use c2s connections:
486   c2s: 
487     blocked: deny
488     all: allow
489   ## For C2S connections, all users except admins use the "normal" shaper
490   c2s_shaper: 
491     admin: none
492     all: normal
493   ## All S2S connections use the "fast" shaper
494   s2s_shaper: 
495     all: fast
496   ## Only admins can send announcement messages:
497   announce: 
498     admin: allow
499   ## Only admins can use the configuration interface:
500   configure: 
501     admin: allow
502   ## Admins of this server are also admins of the MUC service:
503   muc_admin: 
504     admin: allow
505   ## Only accounts of the local ejabberd server can create rooms:
506   muc_create: 
507     local: allow
508   ## All users are allowed to use the MUC service:
509   muc: 
510     all: allow
511   ## Only accounts on the local ejabberd server can create Pubsub nodes:
512   pubsub_createnode: 
513     local: allow
514   ## In-band registration allows registration of any possible username.
515   ## To disable in-band registration, replace 'allow' with 'deny'.
516   register: 
517     all: allow
518   # TODO: If you are running a private server, change this to "deny"
519   # You will still be able to manually register new users
520
521   ## Only allow to register from localhost
522   trusted_network: 
523     loopback: allow
524   ## Do not establish S2S connections with bad servers
525   ## s2s: 
526   ##   bad_servers: deny
527   ##   all: allow
528
529 ## By default the frequency of account registrations from the same IP
530 ## is limited to 1 account every 10 minutes. To disable, specify: infinity
531 ## registration_timeout: 600
532
533 ##
534 ## Define specific Access Rules in a virtual host.
535 ##
536 ## host_config:
537 ##   "localhost":
538 ##     access:
539 ##       c2s:
540 ##         admin: allow
541 ##         all: deny
542 ##       register:
543 ##         all: deny
544
545 ###   ================
546 ###   DEFAULT LANGUAGE
547
548 ##
549 ## language: Default language used for server messages.
550 ##
551 language: "en"
552
553 ##
554 ## Set a different default language in a virtual host.
555 ##
556 ## host_config:
557 ##   "localhost":
558 ##     language: "ru"
559
560 ###   =======
561 ###   CAPTCHA
562
563 ##
564 ## Full path to a script that generates the image.
565 ##
566 ## captcha_cmd: "/lib/ejabberd/priv/bin/captcha.sh"
567
568 ##
569 ## Host for the URL and port where ejabberd listens for CAPTCHA requests.
570 ##
571 ## captcha_host: "example.org:5280"
572
573 ##
574 ## Limit CAPTCHA calls per minute for JID/IP to avoid DoS.
575 ##
576 ## captcha_limit: 5
577
578 ###   =======
579 ###   MODULES
580
581 ##
582 ## Modules enabled in all ejabberd virtual hosts.
583 ##
584 modules: 
585   mod_adhoc: {}
586   mod_announce: # recommends mod_adhoc
587     access: announce
588   mod_blocking: {} # requires mod_privacy
589   mod_caps: {}
590   mod_carboncopy: {}
591   mod_client_state:
592     drop_chat_states: true
593     queue_presence: false
594   mod_configure: {} # requires mod_adhoc
595   mod_disco: {}
596   ## mod_echo: {}
597   mod_irc: {}
598   mod_http_bind: {}
599   ## mod_http_fileserver:
600   ##   docroot: "/var/www"
601   ##   accesslog: "/var/log/ejabberd/access.log"
602   mod_last: {}
603   mod_muc: 
604     ## host: "conference.@HOST@"
605     access: muc
606     access_create: muc_create
607     access_persistent: muc_create
608     access_admin: muc_admin
609   ## mod_muc_log: {}
610   mod_offline: 
611     access_max_user_messages: max_user_offline_messages
612   mod_ping: {}
613   ## mod_pres_counter:
614   ##   count: 5
615   ##   interval: 60
616   mod_privacy: {}
617   mod_private: {}
618   ## mod_proxy65: {}
619   mod_pubsub: 
620     access_createnode: pubsub_createnode
621     ## reduces resource comsumption, but XEP incompliant
622     ignore_pep_from_offline: true
623     ## XEP compliant, but increases resource comsumption
624     ## ignore_pep_from_offline: false
625     last_item_cache: false
626     plugins: 
627       - "flat"
628       - "hometree"
629       - "pep" # pep requires mod_caps
630   mod_register: 
631     ##
632     ## Protect In-Band account registrations with CAPTCHA.
633     ##
634     ## captcha_protected: true
635
636     ##
637     ## Set the minimum informational entropy for passwords.
638     ##
639     ## password_strength: 32
640
641     ##
642     ## After successful registration, the user receives
643     ## a message with this subject and body.
644     ##
645     welcome_message: 
646       subject: "Welcome!"
647       body: |-
648         Hi.
649         Welcome to this XMPP server.
650
651     ##
652     ## When a user registers, send a notification to
653     ## these XMPP accounts.
654     ##
655     ## registration_watchers:
656     ##   - "admin1@example.org"
657
658     ##
659     ## Only clients in the server machine can register accounts
660     ##
661     ip_access: trusted_network
662
663     ##
664     ## Local c2s or remote s2s users cannot register accounts
665     ##
666     ## access_from: deny
667
668     access: register
669   mod_roster: {}
670   mod_shared_roster: {}
671   mod_stats: {}
672   mod_time: {}
673   mod_vcard: {}
674   mod_version: {}
675
676 ##
677 ## Enable modules with custom options in a specific virtual host
678 ##
679 ## host_config:
680 ##   "localhost":
681 ##     modules:
682 ##       mod_echo:
683 ##         host: "mirror.localhost"
684
685 ### Local Variables:
686 ### mode: yaml
687 ### End:
688 ### vim: set filetype=yaml tabstop=8