Kopano mit lokalem Betrieb einrichten

Version 20.1 von Jonas Mayer am 2022/05/23 13:40

Voraussetzung:


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/

In diesem Verzeichnis liegen mehrere YAML-Konfigurationsdateien mit Bezug zu Kopano abgespeichert. Für die Einrichtung sind die nachfolgende Dateien von Relevanz: 

kopano-g1.yaml / ldhost.yaml / samba4-ad.yaml

Anpassungen in der kopano-g1.yaml:
Üblicherweise trägt man in der kopano-g1.yaml die gewünschte externe Maildomain sowie Zugangsdaten für das zugehörige Catchall-Postfach der Domain 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

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 kann dem admin die administrativen Rechte zugeteilt. Falls noch andere Benutzer mit administrativen Rechten innerhalb von Kopano ausgestattet 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'

Tipp:
Um Benutzerkonten bei Verwendung des OpenLDAP-Verzeichnisdienst zu Kopano-Admins hochzustufen, muss anders vorgegangen werden.
Wechseln Sie hierzu in den LXC-Container logosrv und aktivieren Sie die Admin-Funktion über folgendes Kommando für alle gewünschten Benutzer:
 

# Das Schlüsselwort NAME durch den Benutzernamen austauschen, der zum Kopano-Admin werden soll (üblicherweise admin)
echo 1 >/var/lds/ldap/ou=users/uid=NAME/zarafaadmin

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

cd /etc/logodidact/
git add *
git commit -am "Kopano für den lokalen Betrieb eingerichtet"

Führen Sie bitte abschließend noch einen prun in den betreffenden LXC-Containern aus (d.h. in allen Container, die durch Anpassungen in den YAML-Dateien Änderungen erhalten).


Weitere Optimierungen können in folgendem Artikel nachgelesen werden.
https://kb.logodidact.com/xwiki/bin/view/Main/Kopano/Allgemein/Optimierungen%20von%20Kopano/