Kopano mit lokalem Betrieb einrichten

Version 8.1 von Christian Germann am 2022/05/20 14:49

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'
  # Einschränken von vordefinierte Absendern auf Empfänger der lokalen Maildomäne

  smtpd_restriction_classes:
    value: 'local_only'
  local_only:
    value: 'check_recipient_access pcre:%{dir_etc}/local_domains.pcre, reject'
  smtpd_recipient_restrictions:
    value: 'check_sender_access pcre:%{dir_etc}/restricted_senders.pcre, permit_mynetworks,permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_recipient, reject_non_fqdn_sender, reject_unknown_recipient_domain, reject_unknown_sender_domain, reject_unauth_destination, reject_unauth_pipelining, reject'


ld_kopano::postfix::hashes:
  '%{dir_etc}/smtp_generic_maps.hash':
    content: |
      %{header}
      # Umschreibung der Absender-Domain bei externem Mailversand
      # (Dummy-Eintrag, durch Empfängerfilterung nicht genutzt)
      @%{::fqdn} @example.com
  '%{dir_etc}/sender_dependent_relayhost_maps_external.hash':
    content: |
      %{header}
      # Bounce-Nachrichten mit Null-Sender via Relayhost versenden
      <> smtp.example.com
      # Mails an externe Empfänger via Relayhost versenden
      @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
  '%{dir_etc}/restricted_senders.pcre':
    content: |
      %{header}
      # Regular Expression Format: Liste an Absendern, deren Versand eingeschränkt wird
      /@(.+?\.)?%{::domain}$/ local_only
  '%{dir_etc}/local_domains.pcre':
    content: |
      %{header}
      # Regular Expression Format: Liste erlaubter Empfängerdomänen für die eingeschränkten Absender
      /@(.+?\.)?%{::domain}$/ OK


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 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)