diff --git a/config.legacy/docker-compose.override.yml b/config.legacy/docker-compose.override.yml new file mode 100644 index 00000000..72ca2ea3 --- /dev/null +++ b/config.legacy/docker-compose.override.yml @@ -0,0 +1,178 @@ +version: '3' +services: + kolab: + build: + context: ./docker/kolab/ + args: + DB_KOLAB_DATABASE: kolab + DB_KOLAB_USERNAME: kolab + DB_KOLAB_PASSWORD: ${DB_PASSWORD:?"DB_PASSWORD is missing"} + LDAP_HOST: ldap + LDAP_ADMIN_BIND_DN: ${LDAP_ADMIN_BIND_DN} + LDAP_ADMIN_BIND_PW: ${LDAP_ADMIN_BIND_PW} + LDAP_SERVICE_BIND_PW: ${LDAP_SERVICE_BIND_PW} + IMAP_ADMIN_LOGIN: ${IMAP_ADMIN_LOGIN} + IMAP_ADMIN_PASSWORD: ${IMAP_ADMIN_PASSWORD} + container_name: kolab + privileged: true + restart: on-failure + tty: true + depends_on: + mariadb: + condition: service_healthy + pdns: + condition: service_healthy + ldap: + condition: service_healthy + extra_hosts: + - "kolab.mgmt.com:127.0.0.1" + - "services.${APP_DOMAIN}:172.18.0.4" + environment: + - APP_DOMAIN=${APP_DOMAIN} + - LDAP_HOST=ldap + - LDAP_ADMIN_BIND_DN=${LDAP_ADMIN_BIND_DN} + - LDAP_ADMIN_BIND_PW=${LDAP_ADMIN_BIND_PW} + - LDAP_SERVICE_BIND_PW=${LDAP_SERVICE_BIND_PW} + - DB_HOST=mariadb + - DB_ROOT_PASSWORD=${DB_ROOT_PASSWORD} + - DB_HKCCP_DATABASE=${DB_DATABASE} + - DB_HKCCP_USERNAME=${DB_USERNAME} + - DB_HKCCP_PASSWORD=${DB_PASSWORD:?"DB_PASSWORD is missing"} + - DB_KOLAB_DATABASE=kolab + - DB_KOLAB_USERNAME=kolab + - DB_KOLAB_PASSWORD=${DB_PASSWORD:?"DB_PASSWORD is missing"} + - SSL_CERTIFICATE=${KOLAB_SSL_CERTIFICATE:?"KOLAB_SSL_CERTIFICATE is missing"} + - SSL_CERTIFICATE_FULLCHAIN=${KOLAB_SSL_CERTIFICATE_FULLCHAIN:?"KOLAB_SSL_CERTIFICATE_FULLCHAIN is missing"} + - SSL_CERTIFICATE_KEY=${KOLAB_SSL_CERTIFICATE_KEY:?"KOLAB_SSL_CERTIFICATE_KEY is missing"} + - IMAP_HOST=127.0.0.1 + - IMAP_PORT=11993 + - IMAP_ADMIN_LOGIN=${IMAP_ADMIN_LOGIN} + - IMAP_ADMIN_PASSWORD=${IMAP_ADMIN_PASSWORD} + - MAIL_HOST=127.0.0.1 + - MAIL_PORT=10587 + healthcheck: + interval: 10s + test: "systemctl is-active kolab-init || exit 1" + timeout: 5s + retries: 30 + start_period: 5m + # This makes docker's dns, resolve via pdns for this container. + # Please note it does not affect /etc/resolv.conf + dns: 172.18.0.11 + hostname: kolab.mgmt.com + image: kolab + networks: + kolab: + ipv4_address: 172.18.0.5 + ports: + - "12143:12143" + tmpfs: + - /run + - /tmp + - /var/run + - /var/tmp + volumes: + - ./ext/:/src/:ro + - /etc/letsencrypt/:/etc/letsencrypt/:ro + - ./docker/certs/ca.cert:/etc/pki/tls/certs/ca.cert:ro + - ./docker/certs/ca.cert:/etc/pki/ca-trust/source/anchors/ca.cert:ro + - ./docker/certs/kolab.hosted.com.cert:${KOLAB_SSL_CERTIFICATE:?err} + - ./docker/certs/kolab.hosted.com.chain.pem:${KOLAB_SSL_CERTIFICATE_FULLCHAIN:?err} + - ./docker/certs/kolab.hosted.com.key:${KOLAB_SSL_CERTIFICATE_KEY:?err} + - ./docker/kolab/utils:/root/utils:ro + - /sys/fs/cgroup:/sys/fs/cgroup:ro + - imap:/imapdata + + ldap: + build: + context: ./docker/ldap/ + container_name: kolab-ldap + restart: on-failure + tty: true + hostname: ldap + privileged: true + environment: + - APP_DOMAIN=${APP_DOMAIN} + - LDAP_ADMIN_ROOT_DN=${LDAP_ADMIN_ROOT_DN} + - LDAP_ADMIN_BIND_DN=${LDAP_ADMIN_BIND_DN} + - LDAP_ADMIN_BIND_PW=${LDAP_ADMIN_BIND_PW} + - LDAP_SERVICE_BIND_PW=${LDAP_SERVICE_BIND_PW} + - LDAP_HOSTED_BIND_PW=${LDAP_HOSTED_BIND_PW} + - IMAP_ADMIN_PASSWORD=${IMAP_ADMIN_PASSWORD} + healthcheck: + interval: 10s + test: "systemctl status dirsrv@kolab || exit 1" + timeout: 5s + retries: 30 + start_period: 5m + image: kolab-ldap + networks: + kolab: + ipv4_address: 172.18.0.12 + tmpfs: + - /run + - /tmp + - /var/run + - /var/tmp + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup:ro + - ldap:/ldapdata + roundcube: + build: + context: ./docker/roundcube/ + container_name: kolab-roundcube + hostname: roundcube.hosted.com + restart: on-failure + depends_on: + mariadb: + condition: service_healthy + pdns: + condition: service_healthy + kolab: + condition: service_healthy + environment: + - APP_DOMAIN=${APP_DOMAIN} + - LDAP_HOST=ldap + - LDAP_ADMIN_BIND_DN=${LDAP_ADMIN_BIND_DN} + - LDAP_ADMIN_BIND_PW=${LDAP_ADMIN_BIND_PW} + - LDAP_SERVICE_BIND_PW=${LDAP_SERVICE_BIND_PW} + - LDAP_HOSTED_BIND_PW=${LDAP_HOSTED_BIND_PW} + - DB_HOST=mariadb + - DB_ROOT_PASSWORD=${DB_ROOT_PASSWORD} + - DB_RC_DATABASE=roundcube + - DB_RC_USERNAME=roundcube + - DB_RC_PASSWORD=${DB_PASSWORD:?"DB_PASSWORD is missing"} + - IMAP_PROXY_PROTOCOL=2 + - IMAP_HOST=tls://haproxy + - IMAP_PORT=11143 + - IMAP_PROXY_PROTOCOL=2 + - IMAP_ADMIN_LOGIN=${IMAP_ADMIN_LOGIN} + - IMAP_ADMIN_PASSWORD=${IMAP_ADMIN_PASSWORD} + - MAIL_HOST=tls://kolab + - MAIL_PORT=10587 + haproxy: + build: + context: ./docker/haproxy/ + healthcheck: + interval: 10s + test: "kill -0 $$(cat /var/run/haproxy.pid)" + timeout: 5s + retries: 30 + container_name: kolab-haproxy + restart: on-failure + hostname: haproxy.hosted.com + image: kolab-haproxy + networks: + kolab: + ipv4_address: 172.18.0.6 + tmpfs: + - /run + - /tmp + - /var/run + - /var/tmp + volumes: + - ./docker/certs/:/etc/certs/:ro + - /etc/letsencrypt/:/etc/letsencrypt/:ro +volumes: + ldap: + imap: diff --git a/docker/kolab/Dockerfile b/config.legacy/docker/kolab/Dockerfile similarity index 100% rename from docker/kolab/Dockerfile rename to config.legacy/docker/kolab/Dockerfile diff --git a/docker/kolab/cyrus.conf b/config.legacy/docker/kolab/cyrus.conf similarity index 100% rename from docker/kolab/cyrus.conf rename to config.legacy/docker/kolab/cyrus.conf diff --git a/docker/kolab/guam.conf b/config.legacy/docker/kolab/guam.conf similarity index 100% rename from docker/kolab/guam.conf rename to config.legacy/docker/kolab/guam.conf diff --git a/docker/kolab/imapd.annotations.conf b/config.legacy/docker/kolab/imapd.annotations.conf similarity index 100% rename from docker/kolab/imapd.annotations.conf rename to config.legacy/docker/kolab/imapd.annotations.conf diff --git a/docker/kolab/imapd.conf b/config.legacy/docker/kolab/imapd.conf similarity index 100% rename from docker/kolab/imapd.conf rename to config.legacy/docker/kolab/imapd.conf diff --git a/docker/kolab/kolab-init.service b/config.legacy/docker/kolab/kolab-init.service similarity index 100% rename from docker/kolab/kolab-init.service rename to config.legacy/docker/kolab/kolab-init.service diff --git a/docker/kolab/kolab-init.sh b/config.legacy/docker/kolab/kolab-init.sh similarity index 100% rename from docker/kolab/kolab-init.sh rename to config.legacy/docker/kolab/kolab-init.sh diff --git a/docker/kolab/kolab-setenv.service b/config.legacy/docker/kolab/kolab-setenv.service similarity index 100% rename from docker/kolab/kolab-setenv.service rename to config.legacy/docker/kolab/kolab-setenv.service diff --git a/docker/kolab/kolab.conf b/config.legacy/docker/kolab/kolab.conf similarity index 100% rename from docker/kolab/kolab.conf rename to config.legacy/docker/kolab/kolab.conf diff --git a/docker/kolab/rootfs/etc/postfix/header_checks.inbound b/config.legacy/docker/kolab/rootfs/etc/postfix/header_checks.inbound similarity index 100% rename from docker/kolab/rootfs/etc/postfix/header_checks.inbound rename to config.legacy/docker/kolab/rootfs/etc/postfix/header_checks.inbound diff --git a/docker/kolab/rootfs/etc/postfix/header_checks.internal b/config.legacy/docker/kolab/rootfs/etc/postfix/header_checks.internal similarity index 100% rename from docker/kolab/rootfs/etc/postfix/header_checks.internal rename to config.legacy/docker/kolab/rootfs/etc/postfix/header_checks.internal diff --git a/docker/kolab/rootfs/etc/postfix/header_checks.submission b/config.legacy/docker/kolab/rootfs/etc/postfix/header_checks.submission similarity index 100% rename from docker/kolab/rootfs/etc/postfix/header_checks.submission rename to config.legacy/docker/kolab/rootfs/etc/postfix/header_checks.submission diff --git a/docker/kolab/rootfs/etc/postfix/ldap/local_recipient_maps.cf b/config.legacy/docker/kolab/rootfs/etc/postfix/ldap/local_recipient_maps.cf similarity index 100% rename from docker/kolab/rootfs/etc/postfix/ldap/local_recipient_maps.cf rename to config.legacy/docker/kolab/rootfs/etc/postfix/ldap/local_recipient_maps.cf diff --git a/docker/kolab/rootfs/etc/postfix/ldap/mailenabled_distgroups.cf b/config.legacy/docker/kolab/rootfs/etc/postfix/ldap/mailenabled_distgroups.cf similarity index 100% rename from docker/kolab/rootfs/etc/postfix/ldap/mailenabled_distgroups.cf rename to config.legacy/docker/kolab/rootfs/etc/postfix/ldap/mailenabled_distgroups.cf diff --git a/docker/kolab/rootfs/etc/postfix/ldap/mailenabled_dynamic_distgroups.cf b/config.legacy/docker/kolab/rootfs/etc/postfix/ldap/mailenabled_dynamic_distgroups.cf similarity index 100% rename from docker/kolab/rootfs/etc/postfix/ldap/mailenabled_dynamic_distgroups.cf rename to config.legacy/docker/kolab/rootfs/etc/postfix/ldap/mailenabled_dynamic_distgroups.cf diff --git a/docker/kolab/rootfs/etc/postfix/ldap/mydestination.cf b/config.legacy/docker/kolab/rootfs/etc/postfix/ldap/mydestination.cf similarity index 100% rename from docker/kolab/rootfs/etc/postfix/ldap/mydestination.cf rename to config.legacy/docker/kolab/rootfs/etc/postfix/ldap/mydestination.cf diff --git a/docker/kolab/rootfs/etc/postfix/ldap/transport_maps.cf b/config.legacy/docker/kolab/rootfs/etc/postfix/ldap/transport_maps.cf similarity index 100% rename from docker/kolab/rootfs/etc/postfix/ldap/transport_maps.cf rename to config.legacy/docker/kolab/rootfs/etc/postfix/ldap/transport_maps.cf diff --git a/docker/kolab/rootfs/etc/postfix/ldap/virtual_alias_maps.cf b/config.legacy/docker/kolab/rootfs/etc/postfix/ldap/virtual_alias_maps.cf similarity index 100% rename from docker/kolab/rootfs/etc/postfix/ldap/virtual_alias_maps.cf rename to config.legacy/docker/kolab/rootfs/etc/postfix/ldap/virtual_alias_maps.cf diff --git a/docker/kolab/rootfs/etc/postfix/ldap/virtual_alias_maps_mailforwarding.cf b/config.legacy/docker/kolab/rootfs/etc/postfix/ldap/virtual_alias_maps_mailforwarding.cf similarity index 100% rename from docker/kolab/rootfs/etc/postfix/ldap/virtual_alias_maps_mailforwarding.cf rename to config.legacy/docker/kolab/rootfs/etc/postfix/ldap/virtual_alias_maps_mailforwarding.cf diff --git a/docker/kolab/rootfs/etc/postfix/ldap/virtual_alias_maps_sharedfolders.cf b/config.legacy/docker/kolab/rootfs/etc/postfix/ldap/virtual_alias_maps_sharedfolders.cf similarity index 100% rename from docker/kolab/rootfs/etc/postfix/ldap/virtual_alias_maps_sharedfolders.cf rename to config.legacy/docker/kolab/rootfs/etc/postfix/ldap/virtual_alias_maps_sharedfolders.cf diff --git a/docker/kolab/rootfs/etc/postfix/main.cf b/config.legacy/docker/kolab/rootfs/etc/postfix/main.cf similarity index 100% rename from docker/kolab/rootfs/etc/postfix/main.cf rename to config.legacy/docker/kolab/rootfs/etc/postfix/main.cf diff --git a/docker/kolab/rootfs/etc/postfix/master.cf b/config.legacy/docker/kolab/rootfs/etc/postfix/master.cf similarity index 100% rename from docker/kolab/rootfs/etc/postfix/master.cf rename to config.legacy/docker/kolab/rootfs/etc/postfix/master.cf diff --git a/docker/kolab/rootfs/etc/postfix/transport b/config.legacy/docker/kolab/rootfs/etc/postfix/transport similarity index 100% rename from docker/kolab/rootfs/etc/postfix/transport rename to config.legacy/docker/kolab/rootfs/etc/postfix/transport diff --git a/docker/kolab/utils/01-reverse-etc-hosts.sh b/config.legacy/docker/kolab/utils/01-reverse-etc-hosts.sh similarity index 100% rename from docker/kolab/utils/01-reverse-etc-hosts.sh rename to config.legacy/docker/kolab/utils/01-reverse-etc-hosts.sh diff --git a/docker/kolab/utils/02-write-my.cnf.sh b/config.legacy/docker/kolab/utils/02-write-my.cnf.sh similarity index 100% rename from docker/kolab/utils/02-write-my.cnf.sh rename to config.legacy/docker/kolab/utils/02-write-my.cnf.sh diff --git a/docker/kolab/utils/03-setup-kolab.sh b/config.legacy/docker/kolab/utils/03-setup-kolab.sh similarity index 100% rename from docker/kolab/utils/03-setup-kolab.sh rename to config.legacy/docker/kolab/utils/03-setup-kolab.sh diff --git a/docker/kolab/utils/04-reset-mysql-kolab-password.sh b/config.legacy/docker/kolab/utils/04-reset-mysql-kolab-password.sh similarity index 100% rename from docker/kolab/utils/04-reset-mysql-kolab-password.sh rename to config.legacy/docker/kolab/utils/04-reset-mysql-kolab-password.sh diff --git a/docker/kolab/utils/05-adjust-configs.sh b/config.legacy/docker/kolab/utils/05-adjust-configs.sh similarity index 100% rename from docker/kolab/utils/05-adjust-configs.sh rename to config.legacy/docker/kolab/utils/05-adjust-configs.sh diff --git a/docker/kolab/utils/09-enable-debugging.sh b/config.legacy/docker/kolab/utils/09-enable-debugging.sh similarity index 100% rename from docker/kolab/utils/09-enable-debugging.sh rename to config.legacy/docker/kolab/utils/09-enable-debugging.sh diff --git a/docker/kolab/utils/10-reset-kolab-service-password.sh b/config.legacy/docker/kolab/utils/10-reset-kolab-service-password.sh similarity index 100% rename from docker/kolab/utils/10-reset-kolab-service-password.sh rename to config.legacy/docker/kolab/utils/10-reset-kolab-service-password.sh diff --git a/docker/kolab/utils/101-update-pykolab.sh b/config.legacy/docker/kolab/utils/101-update-pykolab.sh similarity index 100% rename from docker/kolab/utils/101-update-pykolab.sh rename to config.legacy/docker/kolab/utils/101-update-pykolab.sh diff --git a/docker/kolab/utils/103-import-mailbox.sh b/config.legacy/docker/kolab/utils/103-import-mailbox.sh similarity index 100% rename from docker/kolab/utils/103-import-mailbox.sh rename to config.legacy/docker/kolab/utils/103-import-mailbox.sh diff --git a/docker/kolab/utils/11-reset-cyrus-admin-password.sh b/config.legacy/docker/kolab/utils/11-reset-cyrus-admin-password.sh similarity index 100% rename from docker/kolab/utils/11-reset-cyrus-admin-password.sh rename to config.legacy/docker/kolab/utils/11-reset-cyrus-admin-password.sh diff --git a/docker/kolab/utils/23-patch-system.sh b/config.legacy/docker/kolab/utils/23-patch-system.sh similarity index 100% rename from docker/kolab/utils/23-patch-system.sh rename to config.legacy/docker/kolab/utils/23-patch-system.sh diff --git a/docker/kolab/utils/cyrusadmin.sh b/config.legacy/docker/kolab/utils/cyrusadmin.sh similarity index 100% rename from docker/kolab/utils/cyrusadmin.sh rename to config.legacy/docker/kolab/utils/cyrusadmin.sh diff --git a/docker/kolab/utils/extra/00-allow-anonymous-bind.sh b/config.legacy/docker/kolab/utils/extra/00-allow-anonymous-bind.sh similarity index 100% rename from docker/kolab/utils/extra/00-allow-anonymous-bind.sh rename to config.legacy/docker/kolab/utils/extra/00-allow-anonymous-bind.sh diff --git a/docker/kolab/utils/extra/00-disallow-anonymous-bind.sh b/config.legacy/docker/kolab/utils/extra/00-disallow-anonymous-bind.sh similarity index 100% rename from docker/kolab/utils/extra/00-disallow-anonymous-bind.sh rename to config.legacy/docker/kolab/utils/extra/00-disallow-anonymous-bind.sh diff --git a/docker/kolab/utils/extra/10-test-detected-vlv.sh b/config.legacy/docker/kolab/utils/extra/10-test-detected-vlv.sh similarity index 100% rename from docker/kolab/utils/extra/10-test-detected-vlv.sh rename to config.legacy/docker/kolab/utils/extra/10-test-detected-vlv.sh diff --git a/docker/kolab/utils/extra/10d-test-use-detected-vlv.sh b/config.legacy/docker/kolab/utils/extra/10d-test-use-detected-vlv.sh similarity index 100% rename from docker/kolab/utils/extra/10d-test-use-detected-vlv.sh rename to config.legacy/docker/kolab/utils/extra/10d-test-use-detected-vlv.sh diff --git a/docker/kolab/utils/extra/10e-test-use-detected-vlv-with-search.sh b/config.legacy/docker/kolab/utils/extra/10e-test-use-detected-vlv-with-search.sh similarity index 100% rename from docker/kolab/utils/extra/10e-test-use-detected-vlv-with-search.sh rename to config.legacy/docker/kolab/utils/extra/10e-test-use-detected-vlv-with-search.sh diff --git a/docker/kolab/utils/extra/11-test-detected-vlv-with-search.sh b/config.legacy/docker/kolab/utils/extra/11-test-detected-vlv-with-search.sh similarity index 100% rename from docker/kolab/utils/extra/11-test-detected-vlv-with-search.sh rename to config.legacy/docker/kolab/utils/extra/11-test-detected-vlv-with-search.sh diff --git a/docker/kolab/utils/extra/20-disable-access-log.sh b/config.legacy/docker/kolab/utils/extra/20-disable-access-log.sh similarity index 100% rename from docker/kolab/utils/extra/20-disable-access-log.sh rename to config.legacy/docker/kolab/utils/extra/20-disable-access-log.sh diff --git a/docker/kolab/utils/extra/21-enable-access-log.sh b/config.legacy/docker/kolab/utils/extra/21-enable-access-log.sh similarity index 100% rename from docker/kolab/utils/extra/21-enable-access-log.sh rename to config.legacy/docker/kolab/utils/extra/21-enable-access-log.sh diff --git a/docker/kolab/utils/extra/30-enable-audit-log.sh b/config.legacy/docker/kolab/utils/extra/30-enable-audit-log.sh similarity index 100% rename from docker/kolab/utils/extra/30-enable-audit-log.sh rename to config.legacy/docker/kolab/utils/extra/30-enable-audit-log.sh diff --git a/docker/kolab/utils/extra/31-disable-audit-log.sh b/config.legacy/docker/kolab/utils/extra/31-disable-audit-log.sh similarity index 100% rename from docker/kolab/utils/extra/31-disable-audit-log.sh rename to config.legacy/docker/kolab/utils/extra/31-disable-audit-log.sh diff --git a/docker/kolab/utils/extra/settings.sh b/config.legacy/docker/kolab/utils/extra/settings.sh similarity index 100% rename from docker/kolab/utils/extra/settings.sh rename to config.legacy/docker/kolab/utils/extra/settings.sh diff --git a/docker/kolab/utils/injectmimemessage.sh b/config.legacy/docker/kolab/utils/injectmimemessage.sh similarity index 100% rename from docker/kolab/utils/injectmimemessage.sh rename to config.legacy/docker/kolab/utils/injectmimemessage.sh diff --git a/docker/kolab/utils/settings.sh b/config.legacy/docker/kolab/utils/settings.sh similarity index 100% rename from docker/kolab/utils/settings.sh rename to config.legacy/docker/kolab/utils/settings.sh diff --git a/docker/ldap/Dockerfile b/config.legacy/docker/ldap/Dockerfile similarity index 100% rename from docker/ldap/Dockerfile rename to config.legacy/docker/ldap/Dockerfile diff --git a/docker/ldap/init.sh b/config.legacy/docker/ldap/init.sh similarity index 100% rename from docker/ldap/init.sh rename to config.legacy/docker/ldap/init.sh diff --git a/docker/ldap/kolab-init.service b/config.legacy/docker/ldap/kolab-init.service similarity index 100% rename from docker/ldap/kolab-init.service rename to config.legacy/docker/ldap/kolab-init.service diff --git a/docker/ldap/kolab-setenv.service b/config.legacy/docker/ldap/kolab-setenv.service similarity index 100% rename from docker/ldap/kolab-setenv.service rename to config.legacy/docker/ldap/kolab-setenv.service diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/acl.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/acl.inc.php new file mode 100644 index 00000000..e6a6a017 --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/acl.inc.php @@ -0,0 +1,14 @@ + diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/calendar.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/calendar.inc.php new file mode 100644 index 00000000..1a97b475 --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/calendar.inc.php @@ -0,0 +1,73 @@ + 'Kolab Resources', + 'hosts' => getenv('LDAP_HOST'), + 'port' => 389, + 'use_tls' => false, + 'base_dn' => 'dc=hosted,dc=com', + 'user_specific' => true, + 'bind_dn' => '%dn', + 'bind_pass' => '', + 'search_base_dn' => 'dc=hosted,dc=com', + 'search_bind_dn' => 'uid=kolab-service,ou=Special Users,dc=mgmt,dc=com', + 'search_bind_pw' => getenv('LDAP_SERVICE_BIND_PW'), + 'search_filter' => '(&(objectClass=inetorgperson)(mail=%fu))', + 'ldap_version' => 3, + 'filter' => '(|(|(objectclass=groupofuniquenames)(objectclass=groupofurls))(objectclass=kolabsharedfolder))', + 'search_fields' => array('cn'), + 'sort' => array('cn'), + 'scope' => 'sub', + 'fuzzy_search' => true, + 'fieldmap' => array( + // Internal => LDAP + 'name' => 'cn', + 'email' => 'mail', + 'owner' => 'owner', + 'description' => 'description', + 'attributes' => 'kolabdescattribute', + 'members' => 'uniquemember', + // these mappings are required for owner display + 'phone' => 'telephoneNumber', + 'mobile' => 'mobile', + ), + + 'class_type_map' => array( + 'kolabsharedfolder' => 'resource', + 'groupofuniquenames' => 'collection', + ), + + 'groups' => array( + 'name_attr' => 'cn', + ), + ); + + if (file_exists(RCUBE_CONFIG_DIR . '/' . ($_SERVER["HTTP_HOST"] ?? null) . '/' . basename(__FILE__))) { + include_once(RCUBE_CONFIG_DIR . '/' . ($_SERVER["HTTP_HOST"] ?? null) . '/' . basename(__FILE__)); + } + +?> diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/config.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/config.inc.php new file mode 100644 index 00000000..d91a094d --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/config.inc.php @@ -0,0 +1,263 @@ + [ + // 'verify_peer_name' => false, + // 'verify_peer' => false, + // 'allow_self_signed' => true + // ], + // 'proxy_protocol' => getenv('IMAP_PROXY_PROTOCOL') + // ]; + // } + $config['proxy_whitelist'] = getenvlist('PROXY_WHITELIST'); + + // Caching and storage settings + $config['imap_cache'] = 'db'; + $config['imap_cache_ttl'] = '10d'; + $config['messages_cache'] = 'db'; + $config['message_cache_ttl'] = '10d'; + $config['session_storage'] = 'db'; + + // SMTP Server Settings + $config['smtp_server'] = getenv('MAIL_HOST'); + $config['smtp_port'] = getenv('MAIL_PORT'); + $config['smtp_user'] = '%u'; + $config['smtp_pass'] = '%p'; + $config['smtp_helo_host'] = $_SERVER["HTTP_HOST"] ?? null; + // $config['smtp_conn_options'] = Array( + // 'ssl' => Array( + // 'verify_peer_name' => false, + // 'verify_peer' => false, + // 'allow_self_signed' => true + // ) + // ); + + // LDAP Settings + $config['ldap_cache'] = 'db'; + $config['ldap_cache_ttl'] = '1h'; + + // Kolab specific defaults + $config['product_name'] = 'Kolab Groupware'; + $config['quota_zero_as_unlimited'] = false; + $config['login_lc'] = 2; + $config['auto_create_user'] = true; + $config['enable_installer'] = false; + // The SMTP server does not allow empty identities + $config['mdn_use_from'] = true; + + // Plugins + $config['plugins'] = array( + // 'kolab_auth', + 'acl', + 'archive', + 'calendar', + 'jqueryui', + 'kolab_activesync', + 'kolab_addressbook', + 'kolab_config', + //'kolab_delegation', + 'kolab_files', + 'kolab_folders', + 'kolab_notes', + 'kolab_tags', + 'managesieve', + 'newmail_notifier', + 'odfviewer', + 'password', + 'redundant_attachments', + 'tasklist', + // contextmenu must be after kolab_addressbook (#444) + 'contextmenu', +'enigma', + ); + + + // Do not show deleted messages, mark deleted messages as read, + // and flag them as deleted instead of moving them to the Trash + // folder. + $config['skip_deleted'] = true; + $config['read_when_deleted'] = true; + $config['flag_for_deletion'] = true; + $config['delete_always'] = true; + + $config['session_lifetime'] = 180; + $config['password_charset'] = 'UTF-8'; + $config['useragent'] = 'Kolab 16/Roundcube ' . RCUBE_VERSION; + + $config['message_sort_col'] = 'date'; + + $config['spellcheck_engine'] = 'pspell'; + $config['spellcheck_dictionary'] = true; + $config['spellcheck_ignore_caps'] = true; + $config['spellcheck_ignore_nums'] = true; + $config['spellcheck_ignore_syms'] = true; + $config['spellcheck_languages'] = array( + 'da' => 'Dansk', + 'de' => 'Deutsch', + 'en' => 'English', + 'es' => 'Español', + 'fr' => 'Français', + 'it' => 'Italiano', + 'nl' => 'Nederlands', + 'pt' => 'Português', + 'ru' => 'Русский', + 'sv' => 'Svenska' + ); + + $config['undo_timeout'] = 10; + $config['upload_progress'] = 2; + $config['address_template'] = '{street}
{locality} {zipcode}
{country} {region}'; + $config['preview_pane'] = true; + $config['preview_pane_mark_read'] = 0; + + $config['autoexpand_threads'] = 2; + $config['top_posting'] = 0; + $config['sig_above'] = false; + $config['mdn_requests'] = 0; + $config['mdn_default'] = false; + $config['dsn_default'] = false; + $config['reply_same_folder'] = false; + + if (file_exists(RCUBE_CONFIG_DIR . '/' . ($_SERVER["HTTP_HOST"] ?? null) . '/' . basename(__FILE__))) { + include_once(RCUBE_CONFIG_DIR . '/' . ($_SERVER["HTTP_HOST"] ?? null) . '/' . basename(__FILE__)); + } + + // Re-apply mandatory settings here. + + $config['debug_level'] = 1; + $config['devel_mode'] = false; + $config['log_driver'] = 'stdout'; + $config['per_user_logging'] = true; + $config['log_date_format'] = 'd-M-Y H:i:s,u O'; + $config['syslog_id'] = 'roundcube'; + $config['syslog_facility'] = LOG_USER; + $config['smtp_log'] = false; + $config['log_logins'] = true; + $config['log_session'] = false; + $config['sql_debug'] = false; + $config['memcache_debug'] = false; + $config['imap_debug'] = true; + $config['ldap_debug'] = false; + $config['smtp_debug'] = false; + + $config['skin'] = 'kolab'; + $config['skin_include_php'] = false; + $config['mime_magic'] = null; + $config['im_identify_path'] = '/usr/bin/identify'; + $config['im_convert_path'] = '/usr/bin/convert'; + $config['log_dir'] = 'logs/'; + #$config['temp_dir'] = '/var/lib/roundcubemail/'; + + // Some additional default folders (archive plugin) + $config['archive_mbox'] = 'Archive'; + // The Kolab daemon by default creates 'Spam' + $config['junk_mbox'] = 'Spam'; + $config['default_folders'] = array('INBOX', 'Drafts', 'Sent', 'Spam', 'Trash', 'Archive'); + + $config['address_book_type'] = 'ldap'; + $config['autocomplete_min_length'] = 3; + $config['autocomplete_threads'] = 0; + $config['autocomplete_max'] = 15; + $config['ldap_public'] = array( + 'kolab_addressbook' => array( + 'name' => 'Global Address Book', + 'hosts' => Array(getenv('LDAP_HOST')), + 'port' => 389, + 'use_tls' => false, + 'base_dn' => 'dc=hosted,dc=com', + 'user_specific' => true, + 'bind_dn' => '%dn', + 'bind_pass' => '', + 'search_base_dn' => 'dc=hosted,dc=com', + 'search_bind_dn' => 'uid=kolab-service,ou=Special Users,dc=mgmt,dc=com', + 'search_bind_pw' => getenv('LDAP_SERVICE_BIND_PW'), + 'search_filter' => '(&(objectClass=inetorgperson)(mail=%fu))', + 'writable' => false, + 'LDAP_Object_Classes' => array("top", "inetorgperson"), + 'required_fields' => array("cn", "sn", "mail"), + 'LDAP_rdn' => 'uid', + 'ldap_version' => 3, // using LDAPv3 + 'search_fields' => array('displayname', 'mail'), + 'sort' => array('displayname', 'sn', 'givenname', 'cn'), + 'scope' => 'sub', + 'filter' => '(objectClass=inetorgperson)', + 'vlv' => true, + 'vlv_search' => true, + 'fuzzy_search' => true, + 'sizelimit' => '0', + 'timelimit' => '0', + 'fieldmap' => Array( + // Roundcube => LDAP + 'name' => 'displayName', + 'surname' => 'sn', + 'firstname' => 'givenName', + 'middlename' => 'initials', + 'email:primary' => 'mail', + 'email:alias' => 'alias', + 'email:personal' => 'mailalternateaddress', + 'phone:main' => 'telephoneNumber', + 'phone:work' => 'alternateTelephoneNumber', + 'phone:mobile' => 'mobile', + 'phone:work2' => 'blackberry', + 'jobtitle' => 'title', + 'manager' => 'manager', + 'assistant' => 'secretary', + 'photo' => 'jpegphoto' + ), + 'groups' => Array( + 'base_dn' => 'dc=hosted,dc=com', + 'filter' => '(&' . '(|(objectclass=groupofuniquenames)(objectclass=groupofurls))' . '(mail=*))', + 'object_classes' => Array("top", "groupOfUniqueNames"), + 'member_attr' => 'uniqueMember', + ), + ), + ); + + $config['autocomplete_addressbooks'] = Array( + 'kolab_addressbook' + ); + + $config['autocomplete_single'] = true; + + $config['htmleditor'] = 0; + + $config['kolab_http_request'] = Array( + 'ssl_verify_host' => false, + 'ssl_verify_peer' => false, + ); + + @include('kolab_syncroton.inc.php'); + +?> diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/dav.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/dav.inc.php new file mode 100644 index 00000000..257c1ec7 --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/dav.inc.php @@ -0,0 +1,160 @@ +. | + | | + +-------------------------------------------------------------------------+ +*/ + +$config = array(); + +// The HTTP path to the iRony root directory. +// Set to / if the service is registered as document root for a virtual host +$config['base_uri'] = '/iRony/'; + +// User agent string written to kolab storage MIME messages +$config['useragent'] = 'Kolab DAV Server libkolab/' . RCUBE_VERSION; + +// Type of Auth cache. Supported values: 'db', 'apc' and 'memcache'. +// Note: This is only for username canonification map. +$config['kolabdav_auth_cache'] = 'db'; + +// lifetime of the Auth cache, possible units: s, m, h, d, w +$config['kolabdav_auth_cache_ttl'] = '1h'; + +// enable debug console showing the internal function calls triggered +// by http requests. This will write log to /var/log/iRony/console +$config['kolabdav_console'] = false; + +// enable logging of full HTTP payload +// (bitmask of these values: 2 = HTTP Requests, 4 = HTTP Responses) +$config['kolabdav_http_log'] = 0; + +// expose iTip invitations from email inbox in CalDAV scheduling inbox. +// this will make capable CalDAV clients process event invitations and +// as a result, the invitation messages are removed from the email inbox. +// WARNING: this feature is still experimental and not fully implemented. +// See https://git.kolab.org/T93 for details and implementation status. +$config['kolabdav_caldav_inbox'] = false; + +// Enables the CardDAV Directory Gateway Extension by exposing an +// LDAP-based address book in the pricipals address book collection. +// Properties of this option are the same as for $config['ldap_public'] entries. +// NOTE: Mapping of (additional) 'uid' and 'changed' fields is required! +/* +$config['kolabdav_ldap_directory'] = array( + 'name' => 'Global Address Book', + 'hosts' => 'localhost', + 'port' => 389, + 'use_tls' => false, + // If true the base_dn, bind_dn and bind_pass default to the user's credentials. + 'user_specific' => false, + // It's possible to bind with the current user's credentials for individual address books. + // The login name is used to search for the DN to bind with + 'search_base_dn' => 'ou=People,dc=example,dc=org', + 'search_bind_dn' => 'uid=kolab-service,ou=Special Users,dc=example,dc=org', + 'search_bind_pw' => 'Welcome2KolabSystems', + 'search_filter' => '(&(objectClass=inetOrgPerson)(mail=%fu))', + // When 'user_specific' is enabled following variables can be used in base_dn/bind_dn config: + // %fu - The full username provided, assumes the username is an email + // address, uses the username_domain value if not an email address. + // %u - The username prior to the '@'. + // %d - The domain name after the '@'. + // %dc - The domain name hierarchal string e.g. "dc=test,dc=domain,dc=com" + // %dn - DN found by ldap search when search_filter/search_base_dn are used + 'base_dn' => 'ou=People,dc=example,dc=org', + 'bind_dn' => 'uid=kolab-service,ou=Special Users,dc=example,dc=org', + 'bind_pass' => 'Welcome2KolabSystems', + 'ldap_version' => 3, + 'filter' => '(objectClass=inetOrgPerson)', + 'search_fields' => array('displayname', 'mail'), + 'sort' => array('displayname', 'sn', 'givenname', 'cn'), + 'scope' => 'sub', + 'searchonly' => true, // Set to false to enable listing + 'sizelimit' => '1000', + 'timelimit' => '0', + 'fieldmap' => array( + // Roundcube => LDAP + 'name' => 'displayName', + 'surname' => 'sn', + 'firstname' => 'givenName', + 'middlename' => 'initials', + 'prefix' => 'title', + 'email:work' => 'mail', + 'email:other' => 'alias', + 'phone:main' => 'telephoneNumber', + 'phone:work' => 'alternateTelephoneNumber', + 'phone:mobile' => 'mobile', + 'phone:work2' => 'blackberry', + 'street' => 'street', + 'zipcode' => 'postalCode', + 'locality' => 'l', + 'organization' => 'o', + 'jobtitle' => 'title', + 'photo' => 'jpegphoto', + // required for internal handling and caching + 'uid' => 'nsuniqueid', + 'changed' => 'modifytimestamp', + ), +); + +// Expose all resources as an LDAP-based address book in the pricipals address book collection. +// This enables Non-Kolab-Clients to add resources to an event. +// Properties of this option are the same as for $config['kolabdav_ldap_directory'] entries. +$config['kolabdav_ldap_resources'] = array( + 'name' => 'Global Resources', + 'hosts' => 'localhost', + 'port' => 389, + 'use_tls' => false, + 'user_specific' => false, + 'search_base_dn' => 'ou=People,dc=example,dc=org', + 'search_bind_dn' => 'uid=kolab-service,ou=Special Users,dc=example,dc=org', + 'search_bind_pw' => 'Welcome2KolabSystems', + 'search_filter' => '(&(objectClass=inetOrgPerson)(mail=%fu))', + 'base_dn' => 'ou=Resources,dc=example,dc=org', + 'bind_dn' => 'uid=kolab-service,ou=Special Users,dc=example,dc=org', + 'bind_pass' => 'Welcome2KolabSystems', + 'ldap_version' => 3, + 'filter' => '(|(objectclass=groupofuniquenames)(objectclass=groupofurls)(objectclass=kolabsharedfolder))', + 'search_fields' => array('displayname', 'mail'), + 'sort' => array('displayname', 'sn', 'givenname', 'cn'), + 'scope' => 'sub', + 'searchonly' => false, // Set to false to enable listing + 'sizelimit' => '1000', + 'timelimit' => '0', + 'fieldmap' => array( + // Internal => LDAP + 'name' => 'cn', + 'email' => 'mail', + 'owner' => 'owner', + 'description' => 'description', + 'attributes' => 'kolabdescattribute', + 'members' => 'uniquemember', + // these mappings are required for owner display + 'phone' => 'telephoneNumber', + 'mobile' => 'mobile', + ), +); + +*/ + +// Enable caching for LDAP directory data. +// This is recommended with 'searchonly' => false to speed-up sychronization of multiple clients +// $config['kolabdav_ldap_cache'] = 'memcache'; +// $config['kolabdav_ldap_cache_ttl'] = 600; // in seconds diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_activesync.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_activesync.inc.php new file mode 100644 index 00000000..20011256 --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_activesync.inc.php @@ -0,0 +1,7 @@ + not subscribed, 1 => subscribed, 2 => subscribed with alarm +$config['activesync_force_subscriptions'] = array('windowsoutlook15' => array('INBOX' => 1, 'Sent' => 1, 'Trash' => 1, 'Calendar' => 1, 'Contacts' => 1, 'Tasks' => 1)); diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_addressbook.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_addressbook.inc.php new file mode 100644 index 00000000..0f6b8ab6 --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_addressbook.inc.php @@ -0,0 +1,20 @@ + diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_auth.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_auth.inc.php new file mode 100644 index 00000000..013267c7 --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_auth.inc.php @@ -0,0 +1,70 @@ + 'Kolab Auth', + 'hosts' => Array(getenv('LDAP_HOST')), + 'port' => 389, + 'use_tls' => false, + 'user_specific' => true, + 'base_dn' => 'dc=hosted,dc=com', + 'bind_dn' => 'uid=kolab-service,ou=Special Users,dc=mgmt,dc=com', + 'bind_pass' => getenv('LDAP_SERVICE_BIND_PW'), + 'writable' => false, + 'ldap_version' => 3, // using LDAPv3 + 'fieldmap' => Array( + 'name' => 'displayname', + 'email' => 'mail', + 'email:alias' => 'alias', + 'role' => 'nsroledn', + ), + 'sort' => 'displayname', + 'scope' => 'sub', + 'filter' => '(objectClass=*)', + 'fuzzy_search' => true, + 'sizelimit' => '0', + 'timelimit' => '0', + 'groups' => Array( + 'base_dn' => 'dc=hosted,dc=com', + 'filter' => '(|(objectclass=groupofuniquenames)(objectclass=groupofurls))', + 'object_classes' => Array('top', 'groupOfUniqueNames'), + 'member_attr' => 'uniqueMember', + ), + ); + + + // This will overwrite defined filter + $config['kolab_auth_filter'] = '(&' . '(objectclass=inetorgperson)' . '(|(uid=%u)(mail=%fu)(alias=%fu)))'; + + // Use this fields (from fieldmap configuration) to get authentication ID + $config['kolab_auth_login'] = 'email'; + + // Use this fields (from fieldmap configuration) for default identity + $config['kolab_auth_name'] = 'name'; + $config['kolab_auth_alias'] = 'alias'; + $config['kolab_auth_email'] = 'email'; + + if (preg_match('/\/helpdesk-login\//', $_SERVER["REQUEST_URI"] ?? null) ) { + + // Login and password of the admin user. Enables "Login As" feature. + $config['kolab_auth_admin_login'] = getenv('IMAP_ADMIN_LOGIN'); + $config['kolab_auth_admin_password'] = getenv('IMAP_ADMIN_PASSWORD'); + + $config['kolab_auth_auditlog'] = true; + } + + // Administrative role field (from fieldmap configuration) which must be filled with + // specified value which adds privilege to login as another user. + $config['kolab_auth_role'] = 'role'; + $config['kolab_auth_role_value'] = 'cn=kolab-admin,dc=mgmt,dc=com'; + + // Administrative group name to which user must be assigned to + // which adds privilege to login as another user. + $config['kolab_auth_group'] = 'Kolab Helpdesk'; + + if (file_exists(RCUBE_CONFIG_DIR . '/' . ($_SERVER["HTTP_HOST"] ?? null) . '/' . basename(__FILE__))) { + include_once(RCUBE_CONFIG_DIR . '/' . ($_SERVER["HTTP_HOST"] ?? null) . '/' . basename(__FILE__)); + } + +?> diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_delegation.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_delegation.inc.php new file mode 100644 index 00000000..f8358198 --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_delegation.inc.php @@ -0,0 +1,14 @@ + diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_files.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_files.inc.php new file mode 100644 index 00000000..d67cb373 --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_files.inc.php @@ -0,0 +1,30 @@ + diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_folders.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_folders.inc.php new file mode 100644 index 00000000..d64717b0 --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_folders.inc.php @@ -0,0 +1,21 @@ + diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_syncroton.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_syncroton.inc.php new file mode 100644 index 00000000..a72b3555 --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_syncroton.inc.php @@ -0,0 +1,125 @@ + Roundcube contact fields map for GAL search +/* Default: array( + 'alias' => 'nickname', + 'company' => 'organization', + 'displayName' => 'name', + 'emailAddress' => 'email', + 'firstName' => 'firstname', + 'lastName' => 'surname', + 'mobilePhone' => 'phone.mobile', + 'office' => 'office', + 'picture' => 'photo', + 'phone' => 'phone', + 'title' => 'jobtitle', +); +*/ +$config['activesync_gal_fieldmap'] = null; + +// List of device types that will sync the LDAP addressbook(s) as a normal folder. +// For devices that do not support GAL searching, e.g. Outlook. +// Note: To make the LDAP addressbook sources working we need two additional +// fields ('uid' and 'changed') specified in the fieldmap array +// of the LDAP configuration ('ldap_public' option). For example: +// 'uid' => 'nsuniqueid', +// 'changed' => 'modifytimestamp', +// Examples: +// array('windowsoutlook') # enable for Oultook only +// true # enable for all +$config['activesync_gal_sync'] = false; + +// GAL cache. As reading all contacts from LDAP may be slow, caching is recommended. +$config['activesync_gal_cache'] = 'db'; + +// TTL of GAL cache entries. Technically this causes that synchronized +// contacts will not be updated (queried) often than the specified interval. +$config['activesync_gal_cache_ttl'] = '1d'; + +// List of Roundcube plugins +// WARNING: Not all plugins used in Roundcube can be listed here +$config['activesync_plugins'] = array( + 'libcalendaring', + 'libkolab' +); + +// Defines for how many seconds we'll sleep between every +// action for detecting changes in folders. Default: 60 +$config['activesync_ping_timeout'] = 60; + +// Defines maximum Ping interval in seconds. Default: 900 (15 minutes) +$config['activesync_ping_interval'] = 900; + +// We start detecting changes n seconds since the last sync of a folder +// Default: 180 +$config['activesync_quiet_time'] = 0; + +// Defines maximum number of folders in a single Sync/Ping request. Default: 100. +$config['activesync_max_folders'] = 100; + +// When a device is reqistered, by default a set of folders are +// subscribed for syncronization, i.e. INBOX and personal folders with +// defined folder type: +// mail.drafts, mail.wastebasket, mail.sentitems, mail.outbox, +// event, event.default, +// contact, contact.default, +// task, task.default +// This default set can be extended by adding following values: +// 1 - all subscribed folders in personal namespace +// 2 - all folders in personal namespace +// 4 - all subscribed folders in other users namespace +// 8 - all folders in other users namespace +// 16 - all subscribed folders in shared namespace +// 32 - all folders in shared namespace +$config['activesync_init_subscriptions'] = 21; + +// Defines blacklist of devices (device type strings) that do not support folder hierarchies. +// When set to an array folder hierarchies are used on all devices not listed here. +// When set to null an old whitelist approach will be used where we do opposite +// action and enable folder hierarchies only on device types known to support it. +$config['activesync_multifolder_blacklist'] = array(); + +// Blacklist overwrites for specified object type. If set to an array +// it will have a precedence over 'activesync_multifolder_blacklist' list only for that type. +// Note: Outlook does not support multiple folders for contacts, +// in that case use $config['activesync_multifolder_blacklist_contact'] = array('windowsoutlook'); +$config['activesync_multifolder_blacklist_mail'] = null; +$config['activesync_multifolder_blacklist_event'] = null; +$config['activesync_multifolder_blacklist_contact'] = array('windowsoutlook'); +$config['activesync_multifolder_blacklist_note'] = null; +$config['activesync_multifolder_blacklist_task'] = null; + +$config['activesync_protected_folders'] = array('windowsoutlook' => array('INBOX', 'Sent', 'Trash')); + +// Enables adding sender name in the From: header of send email +// when a device uses email address only (e.g. iOS devices) +$config['activesync_fix_from'] = false; diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/libkolab.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/libkolab.inc.php new file mode 100644 index 00000000..76161ce8 --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/libkolab.inc.php @@ -0,0 +1,16 @@ + diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/managesieve.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/managesieve.inc.php new file mode 100644 index 00000000..db2024ee --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/managesieve.inc.php @@ -0,0 +1,31 @@ + Array( + 'verify_peer_name' => false, + 'verify_peer' => false, + 'allow_self_signed' => true + ) + ); + + if (file_exists(RCUBE_CONFIG_DIR . '/' . $_SERVER["HTTP_HOST"] . '/' . basename(__FILE__))) { + include_once(RCUBE_CONFIG_DIR . '/' . $_SERVER["HTTP_HOST"] . '/' . basename(__FILE__)); + } + +?> diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/mimetypes.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/mimetypes.inc.php new file mode 100644 index 00000000..efb4698e --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/mimetypes.inc.php @@ -0,0 +1,56 @@ + 'application/vnd.ms-excel', + 'xlm' => 'application/vnd.ms-excel', + 'xla' => 'application/vnd.ms-excel', + 'xlc' => 'application/vnd.ms-excel', + 'xlt' => 'application/vnd.ms-excel', + 'xlw' => 'application/vnd.ms-excel', + 'pdf' => 'application/pdf', + 'ppt' => 'application/vnd.ms-powerpoint', + 'pps' => 'application/vnd.ms-powerpoint', + 'pot' => 'application/vnd.ms-powerpoint', + 'doc' => 'application/msword', + 'dot' => 'application/msword', + 'odc' => 'application/vnd.oasis.opendocument.chart', + 'otc' => 'application/vnd.oasis.opendocument.chart-template', + 'odf' => 'application/vnd.oasis.opendocument.formula', + 'otf' => 'application/vnd.oasis.opendocument.formula-template', + 'odg' => 'application/vnd.oasis.opendocument.graphics', + 'otg' => 'application/vnd.oasis.opendocument.graphics-template', + 'odi' => 'application/vnd.oasis.opendocument.image', + 'oti' => 'application/vnd.oasis.opendocument.image-template', + 'odp' => 'application/vnd.oasis.opendocument.presentation', + 'otp' => 'application/vnd.oasis.opendocument.presentation-template', + 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', + 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', + 'odt' => 'application/vnd.oasis.opendocument.text', + 'otm' => 'application/vnd.oasis.opendocument.text-master', + 'ott' => 'application/vnd.oasis.opendocument.text-template', + 'oth' => 'application/vnd.oasis.opendocument.text-web', + 'docm' => 'application/vnd.ms-word.document.macroEnabled.12', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12', + 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', + 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12', + 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', + 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', + 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xps' => 'application/vnd.ms-xpsdocument', + 'rar' => 'application/x-rar-compressed', + '7z' => 'application/x-7z-compressed', + 's7z' => 'application/x-7z-compressed', + 'vcf' => 'text/vcard', + 'ics' => 'text/calendar', +]; diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/password.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/password.inc.php new file mode 100644 index 00000000..09808d92 --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/password.inc.php @@ -0,0 +1,155 @@ + diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/recipient_to_contact.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/recipient_to_contact.inc.php new file mode 100644 index 00000000..9d22aeb8 --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/recipient_to_contact.inc.php @@ -0,0 +1,3 @@ + + + + +

Welcome to Kolab Groupware

+

+ Here could be your Message of the Day. +

+ + diff --git a/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/terms.inc.php b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/terms.inc.php new file mode 100644 index 00000000..28b450cb --- /dev/null +++ b/config.legacy/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/terms.inc.php @@ -0,0 +1,22 @@ + diff --git a/config.legacy/src/.env b/config.legacy/src/.env new file mode 100644 index 00000000..4a8a7729 --- /dev/null +++ b/config.legacy/src/.env @@ -0,0 +1,158 @@ +APP_NAME=Kolab +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=https://{{ host }} +APP_PUBLIC_URL=https://{{ host }} +APP_DOMAIN={{ host }} +APP_WEBSITE_DOMAIN={{ host }} +APP_THEME=default +APP_TENANT_ID=5 +APP_LOCALE=en +APP_LOCALES= + +APP_WITH_ADMIN=1 +APP_WITH_RESELLER=1 +APP_WITH_SERVICES=1 +APP_WITH_FILES=1 +APP_WITH_WALLET=0 +APP_WITH_SIGNUP=0 + +APP_LDAP=1 +APP_IMAP=1 + +APP_HEADER_CSP="connect-src 'self'; child-src 'self'; font-src 'self'; form-action 'self' data:; frame-ancestors 'self'; img-src blob: data: 'self' *; media-src 'self'; object-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-eval' 'unsafe-inline'; default-src 'self';" +APP_HEADER_XFO=sameorigin + +ASSET_URL=https://{{ host }} + +WEBMAIL_URL=/roundcubemail/ +SUPPORT_URL=/support + +LOG_CHANNEL=stdout +LOG_SLOW_REQUESTS=5 +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=mysql +DB_DATABASE=kolabdev +DB_HOST=mariadb +DB_PASSWORD={{ admin_password }} +DB_ROOT_PASSWORD={{ admin_password }} +DB_PORT=3306 +DB_USERNAME=kolabdev + +BROADCAST_DRIVER=redis +CACHE_DRIVER=redis + +QUEUE_CONNECTION=redis + +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +OPENEXCHANGERATES_API_KEY="from openexchangerates.org" + +MFA_DSN=mysql://roundcube:{{ admin_password }}@mariadb/roundcube +MFA_TOTP_DIGITS=6 +MFA_TOTP_INTERVAL=30 +MFA_TOTP_DIGEST=sha1 + +IMAP_URI=ssl://kolab:11993 +IMAP_HOST=172.18.0.5 +IMAP_ADMIN_LOGIN=cyrus-admin +IMAP_ADMIN_PASSWORD={{ admin_password }} +IMAP_VERIFY_HOST=false +IMAP_VERIFY_PEER=false + +LDAP_BASE_DN="dc=mgmt,dc=com" +LDAP_DOMAIN_BASE_DN="ou=Domains,dc=mgmt,dc=com" +LDAP_HOSTS=ldap +LDAP_PORT=389 +LDAP_SERVICE_BIND_DN="uid=kolab-service,ou=Special Users,dc=mgmt,dc=com" +LDAP_SERVICE_BIND_PW="{{ admin_password }}" +LDAP_USE_SSL=false +LDAP_USE_TLS=false + +# Administrative +LDAP_ADMIN_BIND_DN="cn=Directory Manager" +LDAP_ADMIN_BIND_PW="{{ admin_password }}" +LDAP_ADMIN_ROOT_DN="dc=mgmt,dc=com" + +# Hosted (public registration) +LDAP_HOSTED_BIND_DN="uid=hosted-kolab-service,ou=Special Users,dc=mgmt,dc=com" +LDAP_HOSTED_BIND_PW="{{ admin_password }}" +LDAP_HOSTED_ROOT_DN="dc=hosted,dc=com" + +COTURN_PUBLIC_IP='{{ public_ip }}' + +MEET_SERVER_URLS=https://{{ host }}/meetmedia/api/ +MEET_SERVER_VERIFY_TLS=false + +MEET_WEBRTC_LISTEN_IP='172.18.0.1' +MEET_PUBLIC_DOMAIN={{ host }} +MEET_TURN_SERVER='turn:172.18.0.1:3478' +MEET_LISTENING_HOST=172.18.0.1 + + +PGP_ENABLE=true +PGP_BINARY=/usr/bin/gpg +PGP_AGENT=/usr/bin/gpg-agent +PGP_GPGCONF=/usr/bin/gpgconf +PGP_LENGTH= + +REDIS_HOST=redis +REDIS_PASSWORD=null +REDIS_PORT=6379 + +OCTANE_HTTP_HOST={{ host }} +SWOOLE_PACKAGE_MAX_LENGTH=10485760 + +MAIL_DRIVER=log +MAIL_MAILER=smtp +MAIL_HOST=smtp.mailtrap.io +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS="noreply@example.com" +MAIL_FROM_NAME="Example.com" +MAIL_REPLYTO_ADDRESS="replyto@example.com" +MAIL_REPLYTO_NAME=null + +DNS_TTL=3600 +DNS_SPF="v=spf1 mx -all" +DNS_STATIC="%s. MX 10 ext-mx01.mykolab.com." +DNS_COPY_FROM=null + +MIX_ASSET_PATH='/' + +PASSWORD_POLICY= + +COMPANY_NAME=kolab.org +COMPANY_ADDRESS= +COMPANY_DETAILS= +COMPANY_EMAIL= +COMPANY_LOGO= +COMPANY_FOOTER= + +VAT_COUNTRIES=CH,LI +VAT_RATE=7.7 + +KB_ACCOUNT_DELETE= +KB_ACCOUNT_SUSPENDED= +KB_PAYMENT_SYSTEM= + +KOLAB_SSL_CERTIFICATE=/etc/pki/tls/certs/kolab.hosted.com.cert +KOLAB_SSL_CERTIFICATE_FULLCHAIN=/etc/pki/tls/certs/kolab.hosted.com.chain.pem +KOLAB_SSL_CERTIFICATE_KEY=/etc/pki/tls/certs/kolab.hosted.com.key + +PROXY_SSL_CERTIFICATE=/etc/certs/imap.hosted.com.cert +PROXY_SSL_CERTIFICATE_KEY=/etc/certs/imap.hosted.com.key + +OPENEXCHANGERATES_API_KEY={{ openexchangerates_api_key }} +FIREBASE_API_KEY={{ firebase_api_key }} + +MINIO_USER=minio +MINIO_PASSWORD=W3lcom32@ph3lia +MINIO_BUCKET=kolab +FILESYSTEM_DISK=minio