# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
certificate:
  secretName: {{ .Values.ingress.tls.secretName | quote }}
  request:
    enabled: false

containerSecurityContext:
  allowPrivilegeEscalation: true
  capabilities: {}
  enabled: true
  seccompProfile:
    type: "RuntimeDefault"
  readOnlyRootFilesystem: true
  runAsNonRoot: false
  runAsUser: 0
  runAsGroup: 0
  privileged: true
  seLinuxOptions:
    {{ .Values.seLinuxOptions.postfix | toYaml | nindent 4 }}

global:
  imagePullSecrets:
    {{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}

image:
  registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.postfix.registry | quote }}
  repository: {{ .Values.images.postfix.repository | quote }}
  tag: {{ .Values.images.postfix.tag | quote }}
  imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}

persistence:
  size: {{ .Values.persistence.storages.postfix.size | quote }}
  storageClass: {{ coalesce .Values.persistence.storages.postfix.storageClassName .Values.persistence.storageClassNames.RWO | quote }}

podSecurityContext:
  enabled: true
  fsGroup: 101

postfix:
  amavisHost: ""
  amavisPortIn: ""
  domain: {{ .Values.global.mailDomain | default .Values.global.domain | quote }}
  hostname: "postfix"
  inetProtocols: "ipv4"
  messageSizeLimit: {{ mul .Values.functional.groupware.mail.maxSize 1024 1024 | int | printf "%d" | quote }}
  milterDefaultAction: "tempfail"
  {{- if .Values.apps.dkimpy.enabled }}
  dkimpyHost: "opendesk-dkimpy-milter.{{ .Release.Namespace }}.svc.{{.Values.cluster.networking.domain }}:8892"
  {{- end }}
  minTLSVersion: "TLSv1.2"
  smtpdTLSMandatoryCiphers: "medium"
  rspamdHost: ""
  {{- if .Values.smtp.host }}
  relayHost:
    enabled: true
    host: {{ .Values.smtp.host }}
    port: {{ .Values.smtp.port }}
    authentication:
      username:
        value: {{ .Values.smtp.username }}
      password:
        value: {{ .Values.smtp.password }}
  smtpSASLAuthEnable: "yes"
  {{- else }}
  smtpSASLAuthEnable: "no"
  {{- end }}
  allowRelayNets: false
  smtpTLSSecurityLevel: "encrypt"
  smtpdSASLAuthEnable: "yes"
  smtpdSASLSecurityOptions: {{ .Values.smtp.security.smtpdSASLSecurityOptions | join ", " | quote }}
  smtpSASLSecurityOptions: {{ .Values.smtp.security.smtpSASLSecurityOptions | join ", " | quote }}
  smtpdSASLType: "dovecot"
  smtpdTLSSecurityLevel: "encrypt"
  smtpdTLSCertFile: "/etc/tls/tls.crt"
  smtpdKeyFile: "/etc/tls/tls.key"
  smtpdSASLPath: "inet:dovecot:3659"

  staticAuthDB:
    enabled: false

  ldapTransportMaps: []

  ldapVirtualAliasMaps:
    - host: "ums-ldap-server"
      scheme: "ldap"
      port: 389
      baseDn: "{{ .Values.ldap.baseDn }}"
      bindDn: "uid=ldapsearch_postfix,cn=users,{{ .Values.ldap.baseDn }}"
      password:
        value: {{ .Values.secrets.nubus.ldapSearch.postfix | quote }}
      # ldap filter to find groups with mail address
      queryFilter: "(&(|(objectClass=univentionMailList)(objectClass=posixGroup))(|(mailPrimaryAddress=%s)(mailAlternativeAddress=%s)))"
      # -- use this attribute if the query already returns email addresses of members and no recursive lookup needs to be done
      resultAttribute: ""
      # -- do a recursive search on the specified attribute if found, should be a DN
      specialResultAttribute: "uniqueMember"
      # -- return the following attribute from all found leaves when a recursive search is done
      leafResultAttribute: "mailPrimaryAddress"

  {{- if .Values.antivirus.milter.host }}
  smtpdMilters: "inet:{{ .Values.antivirus.milter.host }}:{{ .Values.antivirus.milter.port }}"
  {{- else }}
  {{- if .Values.apps.clamavDistributed.enabled }}
  smtpdMilters: "inet:clamav-milter:7357"
  {{- else if .Values.apps.clamavSimple.enabled }}
  smtpdMilters: "inet:clamav-simple:7357"
  {{- end }}
  {{- end }}
  virtualMailboxDomains: {{ toYaml (prepend .Values.global.additionalMailDomains (.Values.global.mailDomain | default .Values.global.domain) | uniq) | nindent 4 }}
  virtualTransport: "lmtps:dovecot:24"

podAnnotations:
  intents.otterize.com/service-name: "open-xchange-postfix"
  {{- with .Values.annotations.openxchangePostfix.pod }}
  {{ . | toYaml | nindent 2 }}
  {{- end }}

replicaCount: {{ .Values.replicas.postfix }}

resources:
  {{ .Values.resources.postfix | toYaml | nindent 2 }}

{{- if or (eq (coalesce .Values.service.type.postfix .Values.cluster.service.type) "NodePort") (eq (coalesce .Values.service.type.postfix .Values.cluster.service.type) "LoadBalancer") }}
service:
  annotations:
    {{ .Values.annotations.openxchangePostfix.service | toYaml | nindent 4 }}
  external:
    enabled: true
    type: {{ coalesce .Values.service.type.postfix .Values.cluster.service.type | quote }}
{{- end }}
...
