# ActiveSync fuer Conbool Mail (Entscheid 28.09.2026): Z-Push 2.7.6 vor
# Stalwart. Mail per IMAP, Kalender und Aufgaben per CalDAV, Kontakte per
# CardDAV, Versand per Einlieferung auf 587, alles mit den Zugangsdaten des
# Geraets. Z-Push haelt keinen zweiten Datenbestand, nur den Abgleichstand
# je Geraet unter /var/lib/z-push.
#
# Davor steht nginx mit dem Tor im Webmail (lib/activesync-gate.ts): ohne
# dessen Freigabe erreicht keine Anfrage diesen Container. Kein Port nach
# aussen. Bis zum Lizenzvertrag mit Microsoft nur fuer Testmandanten.
#
# Seit :3 (03.10.2026) laeuft PHP in php-fpm hinter Apache statt als mod_php:
# die Zahl der Prozesse kommt aus ZPUSH_MAX_CHILDREN, siehe php-fpm-pool.conf.
#
# Seit :4 fuer die Boxen: ZPUSH_LISTEN legt Adresse und Port fest, weil der
# Container dort im Netz des Servers laeuft; die Startseite von Apache ist aus.
#
# Bau:  docker build -t conbool/activesync:4 onprem/mailstore/activesync

FROM python:3.12-slim AS source
ARG ZPUSH_VERSION=2.7.6
ARG ZPUSH_SHA256=71c6ba3bc1dfcf3819dc5741454eea58db13967cc813497f60fef542e1d87091
RUN python3 -c "import urllib.request as u; u.urlretrieve('https://github.com/Z-Hub/Z-Push/archive/refs/tags/${ZPUSH_VERSION}.tar.gz', '/tmp/z-push.tar.gz')" \
 && echo "${ZPUSH_SHA256}  /tmp/z-push.tar.gz" | sha256sum -c - \
 && tar -xzf /tmp/z-push.tar.gz -C /tmp \
 && mv /tmp/Z-Push-${ZPUSH_VERSION}/src /z-push
COPY configure.py /configure.py
RUN python3 /configure.py /z-push

FROM debian:bookworm-slim
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
      apache2 php8.2-fpm php8.2-cli php8.2-opcache php8.2-imap php8.2-mbstring php8.2-xml php8.2-curl php8.2-soap php8.2-intl \
      php-pear php-mail php-net-smtp libawl-php ca-certificates \
 && rm -rf /var/lib/apt/lists/*
COPY --from=source /z-push /usr/share/z-push
COPY apache-z-push.conf /etc/apache2/conf-enabled/z-push.conf
COPY php-fpm-pool.conf /etc/php/8.2/fpm/pool.d/z-push.conf
COPY entrypoint.sh /entrypoint.sh
RUN mkdir -p /var/lib/z-push /var/log/z-push \
 && chown www-data:www-data /var/lib/z-push /var/log/z-push \
 && printf 'include_path = ".:/usr/share/php:/usr/share/awl/inc"\n' > /etc/php/8.2/cli/conf.d/99-awl.ini \
 && rm -f /etc/php/8.2/fpm/pool.d/www.conf \
 && ln -sf /dev/stdout /var/log/apache2/access.log \
 && ln -sf /dev/stderr /var/log/apache2/error.log \
 && a2dismod -f autoindex status >/dev/null \
 && a2dissite 000-default >/dev/null \
 && a2enmod proxy_fcgi setenvif >/dev/null \
 && php-fpm8.2 --test \
 && apache2ctl configtest \
 && chmod 755 /entrypoint.sh
EXPOSE 80
CMD ["/entrypoint.sh"]
