1
0
mirror of https://blitiri.com.ar/repos/chasquid synced 2025-12-17 14:37:02 +00:00
Files
go-chasquid-smtp/test/Dockerfile
Alberto Bertogli 270a071c1e hooks: Add dkimpy support
This patch adds support in the default hook for using dkimpy for DKIM
signing.

Unfortunately, dkimpy binaries have the same name as driusan/dkim's, so
we need to use --help to disambiguate. It's not pretty but it should
work, and is quite self contained.

Also, for the integration tests, we still need driusan/dkim because
dkimpy lacks the features needed. Specifically, dkimpy's dkimverify
can't be made to use custom DNS, or override the TXT values in any way,
so we can't verify that the generated signature is reasonable.

Thanks to ne9z@github for suggesting this change and providing an
alternative patch in https://github.com/albertito/chasquid/pull/19.
2021-07-21 02:06:20 +01:00

68 lines
2.2 KiB
Docker

# Docker file for creating a docker container that can run the tests.
#
# Create the image:
# docker build -t chasquid-test -f test/Dockerfile .
#
# Run the tests:
# docker run --rm chasquid-test make test
#
# Get a shell inside the image (for debugging):
# docker run -it --entrypoint=/bin/bash chasquid-test
FROM golang:latest
WORKDIR /go/src/blitiri.com.ar/go/chasquid
# Make debconf/frontend non-interactive, to avoid distracting output about the
# lack of $TERM.
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update -q
# Install the required packages for the integration tests.
RUN apt-get install -y -q python3 msmtp
# Install the optional packages for the integration tests.
RUN apt-get install -y -q \
gettext-base dovecot-imapd \
exim4-daemon-light \
haproxy \
python3-dkim
# Install sudo, needed for the docker entrypoint.
RUN apt-get install -y -q sudo
# Prepare exim.
RUN mkdir -p test/t-02-exim/.exim4 \
&& ln -s /usr/sbin/exim4 test/t-02-exim/.exim4
# Prepare msmtp: remove setuid, otherwise HOSTALIASES doesn't work.
RUN chmod g-s /usr/bin/msmtp
# Install binaries for the (optional) DKIM integration test.
RUN go install github.com/driusan/dkim/cmd/dkimsign@latest \
&& go install github.com/driusan/dkim/cmd/dkimverify@latest \
&& go install github.com/driusan/dkim/cmd/dkimkeygen@latest
# Copy into the container. Everything below this line will not be cached.
COPY . .
# Don't run the tests as root: it makes some integration tests more difficult,
# as for example Exim has hard-coded protections against running as root.
RUN useradd -m chasquid && chown -R chasquid:chasquid .
# Update dependencies to the latest versions, and fetch them to the cache.
# The fetch is important because once within the entrypoint, we no longer have
# network access to the outside, so all modules need to be available.
# Do it as chasquid because that is what the tests will run as.
USER chasquid
ENV GOPATH=
RUN go get -v ${GO_GET_ARGS} ./... && go mod download
# Build the minidns server, which will be run from within the entrypoint.
RUN go build -o /tmp/minidns ./test/util/minidns.go
USER root
# Custom entry point, which uses our own DNS server.
ENTRYPOINT ["./test/util/docker_entrypoint.sh"]