Kopano mit lokalem Betrieb einrichten

Version 1.1 von Michael Ecer am 2022/05/03 09:26

Voraussetzung: Funktionale Kopano Einrichtung und Anbindung an die MariaDB103

Um Kopano im lokalen Betrieb einzurichten, muss man Anpassungen an Konfigurationsdateien im Puppeteer vornehmen. Dadurch erhalten Benutzer dann username@schule.local als lokale Mailadresse und können untereinander Nachrichten verschicken. 
Wichtig: Im lokalen Betrieb können keine Nachrichten an externe Mailadressen versendet werden. Die Kommunikation ist strikt auf interne Adressen beschränkt.

Um die Anpassungen vorzunehmen wechselt man in den Puppeteer und dort in das Verzeichnis /etc/logodidact/hiera/custom.d/

cd /etc/logodidact/hiera/custom.d/

Hier lassen sich diverse .yaml Konfigurationsdateien finden. Für die Einrichtung sind die Nachfolgenden von Relevanz: 

kopano-g1.yaml / rev-proxy.yaml / mariadb103.yaml / ldhost.yaml / samba4-ad.yaml

Anpassungen in der kopano-g1.yaml:
 I.d.R. trägt man in der kopano-g1.yaml Die Maildomain und Zugangsdaten für das Catchall Postfach ein. Da wir jedoch keine externe Maildomain verwenden, bleiben diese Felder auf den Default-Wert bestehen. 

---
ld_multidrop::ensure: absent

ld_kopano::amavisd_new::configs:
  '@local_domains_maps': "( new_RE( qr'[@.](.*\\.?%{::domain})$'i ) )"

ld_kopano::postfix::configs:
  smtp_generic_maps:
    value: 'hash:%{dir_etc}/smtp_generic_maps.hash'
  sender_dependent_relayhost_maps:
    value: 'pcre:%{dir_etc}/sender_dependent_relayhost_maps_internal.pcre'
  smtp_sender_dependent_authentication:
     value: 'yes'
  smtp_sasl_auth_enable:
    value: 'yes'
  smtp_sasl_password_maps:
    value: 'hash:%{dir_etc}/smtp_sasl_password_maps.hash'
  smtp_sasl_security_options:
    value: 'noanonymous, noplaintext'
  smtp_sasl_tls_security_options:
    value: 'noanonymous'
  smtp_tls_session_cache_database:
    value: 'btree:${data_directory}/smtp_scache'
  smtp_use_tls:
    value: 'yes'
  virtual_mailbox_domains:
    value: 'pcre:%{dir_etc}/virtual_mailbox_domains_internal.pcre'

ld_kopano::postfix::hashes:
  '%{dir_etc}/smtp_generic_maps.hash':
    content: |
      %{header}
      @%{::fqdn} @example.com
  '%{dir_etc}/sender_dependent_relayhost_maps_external.hash':
    content: |
      %{header}
      <> smtp.example.com
      @example.com smtp.example.com
  '%{dir_etc}/smtp_sasl_password_maps.hash':
    content: |
      %{header}
      #user1@example.com user1@example.com:geheim
  '%{dir_etc}/virtual_mailbox_domains_external.hash':
    content: |
      %{header}
      example.com ACCEPT

ld_kopano::postfix::verbose: false

ld_kopano::ldap_type: openldap

ld_kopano::db_server: mariadb103

# Optimierte Z-Push Webserver-Einstellungen für ActiveSync Devices
apache::keepalive: 'On'
apache::keepalive_timeout: '45'
apache::max_keepalive_requests: '500'
apache::mod::prefork::maxclients: '384'
apache::mod::prefork::serverlimit: '384'
nginx::keepalive_timeout: 3600
nginx::keepalive_requests: 500

Anpassungen in der rev-proxy.yaml:

---
# Kopano: KeepAlive Timeout erhöhen für Z-Push / ActiveSync Devices
nginx::keepalive_timeout: 3600
nginx::keepalive_requests: 500

Anpassungen in der mariadb103.yaml:

---
mysql::server::override_options:
  mysqldump:
    max_allowed_packet: '1G'
  mysqld:
    innodb_file_per_table: '1'
    bind-address: '0.0.0.0'
    skip-name-resolve: true
    innodb_large_prefix: '1'
    max_allowed_packet: '256M'
    max_connections: '151'
    query_cache_limit: '2M'
    query_cache_size: '64M'
    thread_stack: '512K'
    tmp_table_size: '64M'
    max_heap_table_size: '64M'
    sort_buffer_size: '2M'
    join_buffer_size: '2M'
    table_open_cache: '500'
    innodb_autoextend_increment: '1000'
    innodb_buffer_pool_size: '1G'
    # The following setting is based on the existing ibdata1 file, check current size and insert it here (rounded to MB)
    # - Hint: Initial value after first installation = 12M
    innodb_data_file_path: 'ibdata1:76M:autoextend'
    innodb_flush_log_at_trx_commit: '2'
    innodb_flush_method: 'O_DSYNC'
    innodb_lock_wait_timeout: '120'
    innodb_log_buffer_size: '8M'
    innodb_log_file_size: '1G'
    innodb_log_files_in_group: '3'
    innodb_read_io_threads: '4'
    innodb_write_io_threads: '4'
    wait_timeout: '28800'

Anpassungen in der ldhost.yaml
Hier wird die Maildomain festgelegt, die Benutzer im Attribut mail unter 
/var/lds/user/username/mail im logosrv erhalten. 

---
# Kopano: Definition einer Maildomain (abweichend zu schule.local), die Benutzer & Gruppen im LDAP-Feld 'mail' erhalten sollen
#ld_legacy::mail::filters:
#   '(zarafaaccount=1)': 'example.com'
# Kopano: Definition von Gruppen, die eine Mailadresse erhalten sollen und dadurch anschreibbar werden
ld_legacy::mail::zarafa_groups:
  - elehrer

Nun fehlen noch die Anpassungen in der samba4-ad.yaml:
Hier wird dem admin die administrativen Rechte zugeteilt. Falls noch andere Benutzer mit administrativen Rechten innerhalb von Kopano vergeben werden sollen, können diese ergänzt werden. 

---
# Kopano: Definition von Benutzern, die administrative Rechte erhalten sollen
# (Einstellung wird nicht benutzt, sofern Kopano an das OpenLDAP angebunden ist, was dem Standard entspricht)
ld_samba4::ad::kopano::admins:
  - 'admin'

Damit die Änderungen sauber übernommen werden, fehlt noch ein Git commit im Puppeteer

git add .

git commit -am "Kopano für den lokalen Betrieb eingerichtet"

und ein prun in den jeweiligen Containern (Alle Container, die durch die .yaml Konfigurationsdateien angesprochen werden)