Add custom DH parameters
[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     # Optionally use your own Diffie-Hellman-Parameters
137     # Generate the file using "openssl dhparam -out dhparams.pem 4096"
138     dhfile: "/path/to/dhparams.pem"  # Available from version 15.06
139     shaper: c2s_shaper
140     access: c2s
141     # Set the cipher order of the server, in OpenSSL syntax
142     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"
143     # TODO Is this cipher order fine?
144   - 
145     port: 5269
146     module: ejabberd_s2s_in
147   ##
148   ## ejabberd_service: Interact with external components (transports, ...)
149   ##
150   ## - 
151   ##   port: 8888
152   ##   module: ejabberd_service
153   ##   access: all
154   ##   shaper_rule: fast
155   ##   ip: "127.0.0.1"
156   ##   hosts:
157   ##     "icq.example.org":
158   ##       password: "secret"
159   ##     "sms.example.org":
160   ##       password: "secret"
161
162   ##
163   ## ejabberd_stun: Handles STUN Binding requests
164   ##
165   ## - 
166   ##   port: 3478
167   ##   transport: udp
168   ##   module: ejabberd_stun
169
170   ##
171   ## To handle XML-RPC requests that provide admin credentials:
172   ##
173   ## - 
174   ##   port: 4560
175   ##   module: ejabberd_xmlrpc
176   - 
177     port: 5280
178     module: ejabberd_http
179     ## request_handlers:
180     ##   "/pub/archive": mod_http_fileserver
181     web_admin: true
182     http_poll: true
183     http_bind: true
184     ## register: true
185     captcha: true
186     # Enable SSL for web admin
187     certfile: "/path/to/ssl.pem"
188     tls: true
189
190 ##
191 ## s2s_use_starttls: Enable STARTTLS + Dialback for S2S connections.
192 ## Allowed values are: false optional required required_trusted
193 ## You must specify a certificate file.
194 ##
195 s2s_use_starttls: required_trusted
196 # This forbids S2S-connections to servers with selfsigned certs. If you need
197 # that capability, change this setting to "required" to require encryption,
198 # but not authentication
199
200 ##
201 ## s2s_certfile: Specify a certificate file.
202 ##
203 s2s_certfile: "/path/to/ssl.pem"
204
205 ## Custom DH parameters
206 # Generate using "openssl dhparam -out dhparams.pem 4096"
207 s2s_dhfile: "/etc/ejabberd/dhparams.pem"  # Available from version 15.03
208 ## Custom OpenSSL options
209 ##
210 s2s_protocol_options:
211   - "no_sslv3"
212   - "no_tlsv1"
213   - "cipher_server_preference"
214   # Again, prefer our known good cipher ordering to the potentially bad one
215   # of the other server
216
217 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"
218 # TODO Is this cipher order fine?
219
220
221 ##
222 ## domain_certfile: Specify a different certificate for each served hostname.
223 ##
224 ## host_config:
225 ##   "example.org":
226 ##     domain_certfile: "/path/to/example_org.pem"
227 ##   "example.com":
228 ##     domain_certfile: "/path/to/example_com.pem"
229
230 ##
231 ## S2S whitelist or blacklist
232 ##
233 ## Default s2s policy for undefined hosts.
234 ##
235 ## s2s_access: s2s
236
237 ##
238 ## Outgoing S2S options
239 ##
240 ## Preferred address families (which to try first) and connect timeout
241 ## in milliseconds.
242 ##
243 ## outgoing_s2s_families:
244 ##   - ipv4
245 ##   - ipv6
246 ## outgoing_s2s_timeout: 10000
247
248 ###   ==============
249 ###   AUTHENTICATION
250
251 ##
252 ## auth_method: Method used to authenticate the users.
253 ## The default method is the internal.
254 ## If you want to use a different method,
255 ## comment this line and enable the correct ones.
256 ##
257 auth_method: internal
258
259 ##
260 ## Store the plain passwords or hashed for SCRAM:
261 ## auth_password_format: plain
262 auth_password_format: scram
263 # Do not store passwords in plain text.
264
265 ##
266 ## Define the FQDN if ejabberd doesn't detect it:
267 ## fqdn: "server3.example.com"
268
269 ##
270 ## Authentication using external script
271 ## Make sure the script is executable by ejabberd.
272 ##
273 ## auth_method: external
274 ## extauth_program: "/path/to/authentication/script"
275
276 ##
277 ## Authentication using ODBC
278 ## Remember to setup a database in the next section.
279 ##
280 ## auth_method: odbc
281
282 ##
283 ## Authentication using PAM
284 ##
285 ## auth_method: pam
286 ## pam_service: "pamservicename"
287
288 ##
289 ## Authentication using LDAP
290 ##
291 ## auth_method: ldap
292 ##
293 ## List of LDAP servers:
294 ## ldap_servers:
295 ##   - "localhost"
296 ##
297 ## Encryption of connection to LDAP servers:
298 ## ldap_encrypt: none
299 ## ldap_encrypt: tls
300 ##
301 ## Port to connect to on LDAP servers:
302 ## ldap_port: 389
303 ## ldap_port: 636
304 ##
305 ## LDAP manager:
306 ## ldap_rootdn: "dc=example,dc=com"
307 ##
308 ## Password of LDAP manager:
309 ## ldap_password: "******"
310 ##
311 ## Search base of LDAP directory:
312 ## ldap_base: "dc=example,dc=com"
313 ##
314 ## LDAP attribute that holds user ID:
315 ## ldap_uids:
316 ##   - "mail": "%u@mail.example.org"
317 ##
318 ## LDAP filter:
319 ## ldap_filter: "(objectClass=shadowAccount)"
320
321 ##
322 ## Anonymous login support:
323 ##   auth_method: anonymous
324 ##   anonymous_protocol: sasl_anon | login_anon | both
325 ##   allow_multiple_connections: true | false
326 ##
327 ## host_config:
328 ##   "public.example.org":
329 ##     auth_method: anonymous
330 ##     allow_multiple_connections: false
331 ##     anonymous_protocol: sasl_anon
332 ##
333 ## To use both anonymous and internal authentication:
334 ##
335 ## host_config:
336 ##   "public.example.org":
337 ##     auth_method:
338 ##       - internal
339 ##       - anonymous
340
341 ###   ==============
342 ###   DATABASE SETUP
343
344 ## ejabberd by default uses the internal Mnesia database,
345 ## so you do not necessarily need this section.
346 ## This section provides configuration examples in case
347 ## you want to use other database backends.
348 ## Please consult the ejabberd Guide for details on database creation.
349
350 ##
351 ## MySQL server:
352 ##
353 ## odbc_type: mysql
354 ## odbc_server: "server"
355 ## odbc_database: "database"
356 ## odbc_username: "username"
357 ## odbc_password: "password"
358 ##
359 ## If you want to specify the port:
360 ## odbc_port: 1234
361
362 ##
363 ## PostgreSQL server:
364 ##
365 ## odbc_type: pgsql
366 ## odbc_server: "server"
367 ## odbc_database: "database"
368 ## odbc_username: "username"
369 ## odbc_password: "password"
370 ##
371 ## If you want to specify the port:
372 ## odbc_port: 1234
373 ##
374 ## If you use PostgreSQL, have a large database, and need a
375 ## faster but inexact replacement for "select count(*) from users"
376 ##
377 ## pgsql_users_number_estimate: true
378
379 ##
380 ## ODBC compatible or MSSQL server:
381 ##
382 ## odbc_type: odbc
383 ## odbc_server: "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"
384
385 ##
386 ## Number of connections to open to the database for each virtual host
387 ##
388 ## odbc_pool_size: 10
389
390 ##
391 ## Interval to make a dummy SQL request to keep the connections to the
392 ## database alive. Specify in seconds: for example 28800 means 8 hours
393 ##
394 ## odbc_keepalive_interval: undefined
395
396 ###   ===============
397 ###   TRAFFIC SHAPERS
398
399 shaper:
400   ##
401   ## The "normal" shaper limits traffic speed to 1000 B/s
402   ##
403   normal: 1000
404
405   ##
406   ## The "fast" shaper limits traffic speed to 50000 B/s
407   ##
408   fast: 50000
409
410 ##
411 ## This option specifies the maximum number of elements in the queue
412 ## of the FSM. Refer to the documentation for details.
413 ##
414 max_fsm_queue: 1000
415
416 ###.   ====================
417 ###'   ACCESS CONTROL LISTS
418 acl:
419   ##
420   ## The 'admin' ACL grants administrative privileges to XMPP accounts.
421   ## You can put here as many accounts as you want.
422   ##
423   ## admin:
424   ##   user:
425   ##     - "aleksey": "localhost"
426   ##     - "ermine": "example.org"
427   ##
428   ## Blocked users
429   ##
430   ## blocked:
431   ##   user:
432   ##     - "baduser": "example.org"
433   ##     - "test"
434
435   ## Local users: don't modify this.
436   ##
437   local: 
438     user_regexp: ""
439
440   ##
441   ## More examples of ACLs
442   ##
443   ## jabberorg:
444   ##   server:
445   ##     - "jabber.org"
446   ## aleksey:
447   ##   user:
448   ##     - "aleksey": "jabber.ru"
449   ## test:
450   ##   user_regexp: "^test"
451   ##   user_glob: "test*"
452
453   ##
454   ## Loopback network
455   ##
456   loopback:
457     ip:
458       - "127.0.0.0/8"
459
460   ##
461   ## Bad XMPP servers
462   ##
463   ## bad_servers:
464   ##   server:
465   ##     - "xmpp.zombie.org"
466   ##     - "xmpp.spam.com"
467
468 ##
469 ## Define specific ACLs in a virtual host.
470 ##
471 ## host_config:
472 ##   "localhost":
473 ##     acl:
474 ##       admin:
475 ##         user:
476 ##           - "bob-local": "localhost"
477
478 ###   ============
479 ###   ACCESS RULES
480 access:
481   ## Maximum number of simultaneous sessions allowed for a single user:
482   max_user_sessions: 
483     all: 10
484   ## Maximum number of offline messages that users can have:
485   max_user_offline_messages: 
486     admin: 5000
487     all: 100
488   ## This rule allows access only for local users:
489   local: 
490     local: allow
491   ## Only non-blocked users can use c2s connections:
492   c2s: 
493     blocked: deny
494     all: allow
495   ## For C2S connections, all users except admins use the "normal" shaper
496   c2s_shaper: 
497     admin: none
498     all: normal
499   ## All S2S connections use the "fast" shaper
500   s2s_shaper: 
501     all: fast
502   ## Only admins can send announcement messages:
503   announce: 
504     admin: allow
505   ## Only admins can use the configuration interface:
506   configure: 
507     admin: allow
508   ## Admins of this server are also admins of the MUC service:
509   muc_admin: 
510     admin: allow
511   ## Only accounts of the local ejabberd server can create rooms:
512   muc_create: 
513     local: allow
514   ## All users are allowed to use the MUC service:
515   muc: 
516     all: allow
517   ## Only accounts on the local ejabberd server can create Pubsub nodes:
518   pubsub_createnode: 
519     local: allow
520   ## In-band registration allows registration of any possible username.
521   ## To disable in-band registration, replace 'allow' with 'deny'.
522   register: 
523     all: allow
524   # TODO: If you are running a private server, change this to "deny"
525   # You will still be able to manually register new users
526
527   ## Only allow to register from localhost
528   trusted_network: 
529     loopback: allow
530   ## Do not establish S2S connections with bad servers
531   ## s2s: 
532   ##   bad_servers: deny
533   ##   all: allow
534
535 ## By default the frequency of account registrations from the same IP
536 ## is limited to 1 account every 10 minutes. To disable, specify: infinity
537 ## registration_timeout: 600
538
539 ##
540 ## Define specific Access Rules in a virtual host.
541 ##
542 ## host_config:
543 ##   "localhost":
544 ##     access:
545 ##       c2s:
546 ##         admin: allow
547 ##         all: deny
548 ##       register:
549 ##         all: deny
550
551 ###   ================
552 ###   DEFAULT LANGUAGE
553
554 ##
555 ## language: Default language used for server messages.
556 ##
557 language: "en"
558
559 ##
560 ## Set a different default language in a virtual host.
561 ##
562 ## host_config:
563 ##   "localhost":
564 ##     language: "ru"
565
566 ###   =======
567 ###   CAPTCHA
568
569 ##
570 ## Full path to a script that generates the image.
571 ##
572 ## captcha_cmd: "/lib/ejabberd/priv/bin/captcha.sh"
573
574 ##
575 ## Host for the URL and port where ejabberd listens for CAPTCHA requests.
576 ##
577 ## captcha_host: "example.org:5280"
578
579 ##
580 ## Limit CAPTCHA calls per minute for JID/IP to avoid DoS.
581 ##
582 ## captcha_limit: 5
583
584 ###   =======
585 ###   MODULES
586
587 ##
588 ## Modules enabled in all ejabberd virtual hosts.
589 ##
590 modules: 
591   mod_adhoc: {}
592   mod_announce: # recommends mod_adhoc
593     access: announce
594   mod_blocking: {} # requires mod_privacy
595   mod_caps: {}
596   mod_carboncopy: {}
597   mod_client_state:
598     drop_chat_states: true
599     queue_presence: false
600   mod_configure: {} # requires mod_adhoc
601   mod_disco: {}
602   ## mod_echo: {}
603   mod_irc: {}
604   mod_http_bind: {}
605   ## mod_http_fileserver:
606   ##   docroot: "/var/www"
607   ##   accesslog: "/var/log/ejabberd/access.log"
608   mod_last: {}
609   mod_muc: 
610     ## host: "conference.@HOST@"
611     access: muc
612     access_create: muc_create
613     access_persistent: muc_create
614     access_admin: muc_admin
615   ## mod_muc_log: {}
616   mod_offline: 
617     access_max_user_messages: max_user_offline_messages
618   mod_ping: {}
619   ## mod_pres_counter:
620   ##   count: 5
621   ##   interval: 60
622   mod_privacy: {}
623   mod_private: {}
624   ## mod_proxy65: {}
625   mod_pubsub: 
626     access_createnode: pubsub_createnode
627     ## reduces resource comsumption, but XEP incompliant
628     ignore_pep_from_offline: true
629     ## XEP compliant, but increases resource comsumption
630     ## ignore_pep_from_offline: false
631     last_item_cache: false
632     plugins: 
633       - "flat"
634       - "hometree"
635       - "pep" # pep requires mod_caps
636   mod_register: 
637     ##
638     ## Protect In-Band account registrations with CAPTCHA.
639     ##
640     ## captcha_protected: true
641
642     ##
643     ## Set the minimum informational entropy for passwords.
644     ##
645     ## password_strength: 32
646
647     ##
648     ## After successful registration, the user receives
649     ## a message with this subject and body.
650     ##
651     welcome_message: 
652       subject: "Welcome!"
653       body: |-
654         Hi.
655         Welcome to this XMPP server.
656
657     ##
658     ## When a user registers, send a notification to
659     ## these XMPP accounts.
660     ##
661     ## registration_watchers:
662     ##   - "admin1@example.org"
663
664     ##
665     ## Only clients in the server machine can register accounts
666     ##
667     ip_access: trusted_network
668
669     ##
670     ## Local c2s or remote s2s users cannot register accounts
671     ##
672     ## access_from: deny
673
674     access: register
675   mod_roster: {}
676   mod_shared_roster: {}
677   mod_stats: {}
678   mod_time: {}
679   mod_vcard: {}
680   mod_version: {}
681
682 ##
683 ## Enable modules with custom options in a specific virtual host
684 ##
685 ## host_config:
686 ##   "localhost":
687 ##     modules:
688 ##       mod_echo:
689 ##         host: "mirror.localhost"
690
691 ### Local Variables:
692 ### mode: yaml
693 ### End:
694 ### vim: set filetype=yaml tabstop=8