Initial commit: Multi-account IMAP sync with OAuth2 support
This commit is contained in:
+69
@@ -0,0 +1,69 @@
|
||||
FROM alpine/git:2.47.2@sha256:062a01ad7a0eb17cff382bc5e26086b4d710e56dfdfdf001109a49b6d9bd378c AS imapsync-source
|
||||
|
||||
ARG IMAPSYNC_REV=93654c6025ff7814f983ab74dd300f9bed9282d9
|
||||
RUN git clone https://github.com/imapsync/imapsync.git /src \
|
||||
&& git -C /src checkout "$IMAPSYNC_REV" \
|
||||
&& test "$(git -C /src rev-parse HEAD)" = "$IMAPSYNC_REV"
|
||||
|
||||
FROM perl:5.38-slim
|
||||
|
||||
LABEL maintainer="Hoelee <[email protected]>"
|
||||
LABEL description="Multi-account IMAP sync with OAuth2 support for Office 365, Hotmail, Outlook.com, and Gmail"
|
||||
|
||||
# Install imapsync + dependencies
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libauthen-ntlm-perl \
|
||||
libdbd-sqlite3-perl \
|
||||
libdist-checkconflicts-perl \
|
||||
libfile-copy-recursive-perl \
|
||||
libemail-address-perl \
|
||||
libhttp-daemon-ssl-perl \
|
||||
libio-compress-perl \
|
||||
libio-socket-inet6-perl \
|
||||
libio-socket-ssl-perl \
|
||||
libio-tee-perl \
|
||||
libjson-pp-perl \
|
||||
libmail-imapclient-perl \
|
||||
libmodule-runtime-perl \
|
||||
libnet-dbus-perl \
|
||||
libnet-dns-perl \
|
||||
libpackage-stash-perl \
|
||||
libpar-dist-perl \
|
||||
libproc-processtable-perl \
|
||||
libproc-simple-perl \
|
||||
libregexp-common-perl \
|
||||
libssl-dev \
|
||||
libtest-fatal-perl \
|
||||
libtest-mock-guard-perl \
|
||||
libtest-nowarnings-perl \
|
||||
libtest-pod-perl \
|
||||
libtest-requires-perl \
|
||||
libtest-simple-perl \
|
||||
libunicode-string-perl \
|
||||
liburi-perl \
|
||||
libwww-perl \
|
||||
cron \
|
||||
msmtp \
|
||||
netcat-openbsd \
|
||||
procps \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install one immutable, verified upstream revision of imapsync and its current
|
||||
# OAuth helper. The old helper URLs no longer exist upstream.
|
||||
COPY --from=imapsync-source /src/imapsync /usr/local/bin/imapsync
|
||||
COPY --from=imapsync-source /src/oauth2/oauth2_imap/oauth2_imap /usr/local/bin/oauth2_imap
|
||||
RUN chmod +x /usr/local/bin/imapsync /usr/local/bin/oauth2_imap
|
||||
|
||||
# Copy entrypoint
|
||||
COPY sync.sh /sync.sh
|
||||
RUN chmod +x /sync.sh
|
||||
|
||||
# Health is liveness plus notification delivery. Sync freshness is exposed by
|
||||
# accountN.last_success / accountN.last_failure files for the chosen schedule.
|
||||
HEALTHCHECK --interval=5m --timeout=10s --start-period=60s --retries=3 \
|
||||
CMD test -f "${LOG_DIR:-/var/log/imapsync}/.heartbeat" && \
|
||||
test ! -f "${LOG_DIR:-/var/log/imapsync}/.notification_failed" && \
|
||||
test "$(cat "${LOG_DIR:-/var/log/imapsync}/.heartbeat")" -gt "$(date -d '5 minutes ago' +%s)" || \
|
||||
{ echo "Health check failed: daemon heartbeat is stale or SMTP notification delivery failed. Check container logs."; exit 1; }
|
||||
|
||||
ENTRYPOINT ["/sync.sh"]
|
||||
Reference in New Issue
Block a user