Dockerfile 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. FROM alpine:3.21
  2. LABEL maintainer="The Infrastructure Company GmbH <info@servercow.de>"
  3. # renovate: datasource=github-releases depName=tianon/gosu versioning=semver-coerced extractVersion=^(?<version>.*)$
  4. ARG GOSU_VERSION=1.16
  5. ENV LANG=C.UTF-8
  6. ENV LC_ALL=C.UTF-8
  7. # Add groups and users before installing Dovecot to not break compatibility
  8. RUN addgroup -g 5000 vmail \
  9. && addgroup -g 401 dovecot \
  10. && addgroup -g 402 dovenull \
  11. && sed -i "s/999/99/" /etc/group \
  12. && addgroup -g 999 sogo \
  13. && addgroup nobody sogo \
  14. && adduser -D -u 5000 -G vmail -h /var/vmail vmail \
  15. && adduser -D -G dovecot -u 401 -h /dev/null -s /sbin/nologin dovecot \
  16. && adduser -D -G dovenull -u 402 -h /dev/null -s /sbin/nologin dovenull \
  17. && apk add --no-cache --update \
  18. bash \
  19. bind-tools \
  20. findutils \
  21. envsubst \
  22. ca-certificates \
  23. curl \
  24. coreutils \
  25. jq \
  26. lua \
  27. lua-cjson \
  28. lua-socket \
  29. lua-sql-mysql \
  30. lua5.3-sql-mysql \
  31. icu-data-full \
  32. mariadb-connector-c \
  33. lua-sec \
  34. mariadb-dev \
  35. glib-dev \
  36. gcompat \
  37. mariadb-client \
  38. perl \
  39. perl-dev \
  40. perl-ntlm \
  41. perl-cgi \
  42. perl-crypt-openssl-rsa \
  43. perl-utils \
  44. perl-crypt-ssleay \
  45. perl-data-uniqid \
  46. perl-dbd-mysql \
  47. perl-dbi \
  48. perl-digest-hmac \
  49. perl-dist-checkconflicts \
  50. perl-encode-imaputf7 \
  51. perl-file-copy-recursive \
  52. perl-file-tail \
  53. perl-io-socket-inet6 \
  54. perl-io-gzip \
  55. perl-io-socket-ssl \
  56. perl-io-tee \
  57. perl-ipc-run \
  58. perl-json-webtoken \
  59. perl-mail-imapclient \
  60. perl-module-implementation \
  61. perl-module-scandeps \
  62. perl-net-ssleay \
  63. perl-package-stash \
  64. perl-package-stash-xs \
  65. perl-par-packer \
  66. perl-parse-recdescent \
  67. perl-lockfile-simple \
  68. libproc2 \
  69. perl-readonly \
  70. perl-regexp-common \
  71. perl-sys-meminfo \
  72. perl-term-readkey \
  73. perl-test-deep \
  74. perl-test-fatal \
  75. perl-test-mockobject \
  76. perl-test-mock-guard \
  77. perl-test-pod \
  78. perl-test-requires \
  79. perl-test-simple \
  80. perl-test-warn \
  81. perl-try-tiny \
  82. perl-unicode-string \
  83. perl-proc-processtable \
  84. perl-app-cpanminus \
  85. procps \
  86. python3 py3-pip python3-dev \
  87. py3-html2text \
  88. linux-headers \
  89. musl-dev \
  90. gcc \
  91. redis \
  92. syslog-ng \
  93. syslog-ng-redis \
  94. syslog-ng-json \
  95. supervisor \
  96. tzdata \
  97. wget \
  98. dovecot \
  99. dovecot-dev \
  100. dovecot-lmtpd \
  101. dovecot-lua \
  102. dovecot-ldap \
  103. dovecot-mysql \
  104. dovecot-sql \
  105. dovecot-submissiond \
  106. dovecot-pigeonhole-plugin \
  107. dovecot-pop3d \
  108. dovecot-fts-flatcurve \
  109. && arch=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) \
  110. && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$arch" \
  111. && chmod +x /usr/local/bin/gosu \
  112. && gosu nobody true
  113. RUN pip install --break-system-packages \
  114. mysql-connector-python \
  115. jinja2 \
  116. redis \
  117. dnspython \
  118. psutil
  119. COPY data/Dockerfiles/bootstrap /bootstrap
  120. COPY data/Dockerfiles/dovecot/trim_logs.sh /usr/local/bin/trim_logs.sh
  121. COPY data/Dockerfiles/dovecot/clean_q_aged.sh /usr/local/bin/clean_q_aged.sh
  122. COPY data/Dockerfiles/dovecot/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf
  123. COPY data/Dockerfiles/dovecot/syslog-ng-redis_slave.conf /etc/syslog-ng/syslog-ng-redis_slave.conf
  124. COPY data/Dockerfiles/dovecot/imapsync /usr/local/bin/imapsync
  125. COPY data/Dockerfiles/dovecot/imapsync_runner.pl /usr/local/bin/imapsync_runner.pl
  126. COPY data/Dockerfiles/dovecot/report-spam.sieve /usr/lib/dovecot/sieve/report-spam.sieve
  127. COPY data/Dockerfiles/dovecot/report-ham.sieve /usr/lib/dovecot/sieve/report-ham.sieve
  128. COPY data/Dockerfiles/dovecot/rspamd-pipe-ham /usr/lib/dovecot/sieve/rspamd-pipe-ham
  129. COPY data/Dockerfiles/dovecot/rspamd-pipe-spam /usr/lib/dovecot/sieve/rspamd-pipe-spam
  130. COPY data/Dockerfiles/dovecot/sa-rules.sh /usr/local/bin/sa-rules.sh
  131. COPY data/Dockerfiles/dovecot/docker-entrypoint.sh /
  132. COPY data/Dockerfiles/dovecot/supervisord.conf /etc/supervisor/supervisord.conf
  133. COPY data/Dockerfiles/dovecot/stop-supervisor.sh /usr/local/sbin/stop-supervisor.sh
  134. COPY data/Dockerfiles/dovecot/quarantine_notify.py /usr/local/bin/quarantine_notify.py
  135. COPY data/Dockerfiles/dovecot/quota_notify.py /usr/local/bin/quota_notify.py
  136. COPY data/Dockerfiles/dovecot/repl_health.sh /usr/local/bin/repl_health.sh
  137. COPY data/Dockerfiles/dovecot/optimize-fts.sh /usr/local/bin/optimize-fts.sh
  138. RUN chmod +x /docker-entrypoint.sh \
  139. /usr/local/sbin/stop-supervisor.sh
  140. CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]