blob: 205847f53b46ed9ec837ed033e52ffdc90063908 [file] [log] [blame]
Matthias Andreas Benkard9dabdab2024-03-06 13:12:09 +01001FROM alpine:3.19
2LABEL maintainer "The Infrastructure Company GmbH GmbH <info@servercow.de>"
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +01003
Matthias Andreas Benkard9dabdab2024-03-06 13:12:09 +01004# renovate: datasource=github-releases depName=tianon/gosu versioning=semver-coerced extractVersion=^(?<version>.*)$
Matthias Andreas Benkardd63fe562023-11-18 13:18:30 +01005ARG GOSU_VERSION=1.16
Matthias Andreas Benkard9dabdab2024-03-06 13:12:09 +01006
7ENV LANG C.UTF-8
8ENV LC_ALL C.UTF-8
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +01009
Matthias Andreas Benkardd63fe562023-11-18 13:18:30 +010010
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +010011# Add groups and users before installing Dovecot to not break compatibility
Matthias Andreas Benkard9dabdab2024-03-06 13:12:09 +010012RUN addgroup -g 5000 vmail \
13 && addgroup -g 401 dovecot \
14 && addgroup -g 402 dovenull \
15 && sed -i "s/999/99/" /etc/group \
16 && addgroup -g 999 sogo \
17 && addgroup nobody sogo \
18 && adduser -D -u 5000 -G vmail -h /var/vmail vmail \
19 && adduser -D -G dovecot -u 401 -h /dev/null -s /sbin/nologin dovecot \
20 && adduser -D -G dovenull -u 402 -h /dev/null -s /sbin/nologin dovenull \
21 && apk add --no-cache --update \
22 bash \
23 bind-tools \
24 findutils \
25 envsubst \
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +010026 ca-certificates \
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +010027 curl \
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +010028 jq \
Matthias Andreas Benkard9dabdab2024-03-06 13:12:09 +010029 lua \
30 lua-cjson \
Matthias Andreas Benkard8f915942021-08-16 10:57:25 +020031 lua-socket \
Matthias Andreas Benkard9dabdab2024-03-06 13:12:09 +010032 libssl-dev \
33 lua-sql-mysql \
34 lua5.3-sql-mysql \
35 icu-data-full \
36 mariadb-connector-c \
37 gcompat \
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +010038 mariadb-client \
Matthias Andreas Benkard9dabdab2024-03-06 13:12:09 +010039 perl \
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 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community/ \
68 libproc \
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 \
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +010085 procps \
Matthias Andreas Benkard9dabdab2024-03-06 13:12:09 +010086 python3 \
87 py3-mysqlclient \
88 py3-html2text \
89 py3-jinja2 \
90 py3-redis \
91 redis \
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +010092 syslog-ng \
Matthias Andreas Benkard9dabdab2024-03-06 13:12:09 +010093 syslog-ng-redis \
94 syslog-ng-json \
95 supervisor \
96 tzdata \
Matthias Andreas Benkard8f915942021-08-16 10:57:25 +020097 wget \
Matthias Andreas Benkard9dabdab2024-03-06 13:12:09 +010098 dovecot \
99 dovecot-dev \
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +0100100 dovecot-lmtpd \
Matthias Andreas Benkard9dabdab2024-03-06 13:12:09 +0100101 dovecot-lua \
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +0100102 dovecot-ldap \
103 dovecot-mysql \
Matthias Andreas Benkard9dabdab2024-03-06 13:12:09 +0100104 dovecot-sql \
105 dovecot-submissiond \
106 dovecot-pigeonhole-plugin \
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +0100107 dovecot-pop3d \
Matthias Andreas Benkard9dabdab2024-03-06 13:12:09 +0100108 dovecot-fts-solr \
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
114# RUN cpan LockFile::Simple
Matthias Andreas Benkardd63fe562023-11-18 13:18:30 +0100115# imapsync dependencies
116RUN cpan Crypt::OpenSSL::PKCS12
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +0100117
118COPY trim_logs.sh /usr/local/bin/trim_logs.sh
119COPY clean_q_aged.sh /usr/local/bin/clean_q_aged.sh
120COPY syslog-ng.conf /etc/syslog-ng/syslog-ng.conf
121COPY syslog-ng-redis_slave.conf /etc/syslog-ng/syslog-ng-redis_slave.conf
122COPY imapsync /usr/local/bin/imapsync
Matthias Andreas Benkard8f915942021-08-16 10:57:25 +0200123COPY imapsync_runner.pl /usr/local/bin/imapsync_runner.pl
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +0100124COPY report-spam.sieve /usr/lib/dovecot/sieve/report-spam.sieve
125COPY report-ham.sieve /usr/lib/dovecot/sieve/report-ham.sieve
126COPY rspamd-pipe-ham /usr/lib/dovecot/sieve/rspamd-pipe-ham
127COPY rspamd-pipe-spam /usr/lib/dovecot/sieve/rspamd-pipe-spam
128COPY sa-rules.sh /usr/local/bin/sa-rules.sh
129COPY maildir_gc.sh /usr/local/bin/maildir_gc.sh
130COPY docker-entrypoint.sh /
131COPY supervisord.conf /etc/supervisor/supervisord.conf
132COPY stop-supervisor.sh /usr/local/sbin/stop-supervisor.sh
133COPY quarantine_notify.py /usr/local/bin/quarantine_notify.py
134COPY quota_notify.py /usr/local/bin/quota_notify.py
135COPY repl_health.sh /usr/local/bin/repl_health.sh
136
137ENTRYPOINT ["/docker-entrypoint.sh"]
138CMD exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf