147 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
#
 | 
						||
# SPDX-FileCopyrightText: 2023 Afnic
 | 
						||
#
 | 
						||
# SPDX-License-Identifier: GPL-3.0-or-later
 | 
						||
#
 | 
						||
 | 
						||
FROM alpine:latest AS roundcube-build
 | 
						||
 | 
						||
RUN apk add composer \
 | 
						||
    php81-ctype \
 | 
						||
    php81-dom \
 | 
						||
    php81-ldap \
 | 
						||
    php81-tokenizer \
 | 
						||
    php81-xml \
 | 
						||
    php81-xmlwriter
 | 
						||
 | 
						||
RUN install -d /var/www/roundcubemail
 | 
						||
 | 
						||
ADD https://github.com/roundcube/roundcubemail/releases/download/1.6.1/roundcubemail-1.6.1-complete.tar.gz \
 | 
						||
    /src/roundcube.tar.gz
 | 
						||
RUN tar -C /src --no-same-owner -xf /src/roundcube.tar.gz
 | 
						||
 | 
						||
RUN tar -C /src/roundcubemail-1.6.1 -cf - . | \
 | 
						||
    tar -C /var/www/roundcubemail -xpf -
 | 
						||
 | 
						||
# Plugin authres_status : affichage sympa de l’en-tête Authentication-Results
 | 
						||
RUN composer -d /var/www/roundcubemail -n require pimlie/authres_status
 | 
						||
 | 
						||
FROM alpine:latest
 | 
						||
 | 
						||
COPY var/db/public_suffix_list.dat /var/db/public_suffix_list.dat
 | 
						||
 | 
						||
RUN apk add \
 | 
						||
    apache2 \
 | 
						||
    composer \
 | 
						||
    dovecot \
 | 
						||
    execline \
 | 
						||
    mutt \
 | 
						||
    nano \
 | 
						||
    nano-syntax \
 | 
						||
    opendkim \
 | 
						||
    opendmarc \
 | 
						||
    php81-apache2 \
 | 
						||
    php81-ctype \
 | 
						||
    php81-dom \
 | 
						||
    php81-intl \
 | 
						||
    php81-mbstring \
 | 
						||
    php81-openssl\
 | 
						||
    php81-pdo \
 | 
						||
    php81-pdo_sqlite \
 | 
						||
    php81-session \
 | 
						||
    php81-tokenizer \
 | 
						||
    php81-xml \
 | 
						||
    php81-xmlwriter \
 | 
						||
    postfix \
 | 
						||
    postfix-policyd-spf-perl \
 | 
						||
    s6-overlay \
 | 
						||
    vim
 | 
						||
 | 
						||
# Dependencies for REST API
 | 
						||
RUN apk add \
 | 
						||
    gcc \
 | 
						||
    libc-dev \
 | 
						||
    make \
 | 
						||
    perl-app-cpanminus \
 | 
						||
    perl-clone \
 | 
						||
    perl-config-any \
 | 
						||
    perl-data-optlist \
 | 
						||
    perl-dev \
 | 
						||
    perl-exporter-tiny \
 | 
						||
    perl-extutils-config \
 | 
						||
    perl-extutils-helpers \
 | 
						||
    perl-extutils-installpaths \
 | 
						||
    perl-file-sharedir \
 | 
						||
    perl-file-sharedir-install \
 | 
						||
    perl-file-slurp \
 | 
						||
    perl-file-which \
 | 
						||
    perl-hash-merge-simple \
 | 
						||
    perl-hash-multivalue \
 | 
						||
    perl-http-date \
 | 
						||
    perl-http-headers-fast \
 | 
						||
    perl-import-into \
 | 
						||
    perl-json-maybexs \
 | 
						||
    perl-module-build \
 | 
						||
    perl-module-build-tiny \
 | 
						||
    perl-module-implementation \
 | 
						||
    perl-module-runtime \
 | 
						||
    perl-moo \
 | 
						||
    perl-params-util \
 | 
						||
    perl-params-validate \
 | 
						||
    perl-path-tiny \
 | 
						||
    perl-plack \
 | 
						||
    perl-readonly \
 | 
						||
    perl-ref-util \
 | 
						||
    perl-role-tiny \
 | 
						||
    perl-safe-isa \
 | 
						||
    perl-sub-exporter \
 | 
						||
    perl-sub-install \
 | 
						||
    perl-sub-quote \
 | 
						||
    perl-template-toolkit \
 | 
						||
    perl-type-tiny \
 | 
						||
    perl-yaml
 | 
						||
 | 
						||
RUN cpanm -n -v \
 | 
						||
    Dancer2 \
 | 
						||
    Module::Pluggable::Object
 | 
						||
 | 
						||
COPY --from=roundcube-build --chown=root:www-data \
 | 
						||
    /var/www/roundcubemail /var/www/roundcubemail
 | 
						||
RUN chown apache /var/www/roundcubemail/logs /var/www/roundcubemail/temp
 | 
						||
 | 
						||
RUN install -m 0700 -o apache -g www-data -d /var/db/roundcubemail
 | 
						||
 | 
						||
RUN adduser -D destinataire
 | 
						||
RUN newaliases
 | 
						||
 | 
						||
# TODO faire en sorte que Dovecot logue dans syslog
 | 
						||
 | 
						||
# TODO rendre le mot de passe de destinataire@destinataire.example
 | 
						||
# configurable
 | 
						||
 | 
						||
COPY etc/s6-overlay /etc/s6-overlay
 | 
						||
 | 
						||
COPY etc/postfix /etc/postfix
 | 
						||
 | 
						||
COPY etc/dovecot /etc/dovecot
 | 
						||
 | 
						||
COPY --chmod=0640 --chown=root:www-data \
 | 
						||
    etc/roundcube/config.inc.php /var/www/roundcubemail/config/config.inc.php
 | 
						||
 | 
						||
COPY etc/apache/httpd.conf /etc/apache2/httpd.conf
 | 
						||
 | 
						||
COPY etc/apache/roundcube.conf /etc/apache2/conf.d/roundcube.conf
 | 
						||
 | 
						||
RUN install -m 0700 -o opendkim -g opendkim -d /run/opendkim
 | 
						||
COPY etc/opendkim/opendkim.conf /etc/opendkim/opendkim.conf
 | 
						||
 | 
						||
RUN install -m 0700 -o opendmarc -g root -d /run/opendmarc
 | 
						||
COPY etc/opendmarc/opendmarc.conf /etc/opendmarc/opendmarc.conf
 | 
						||
 | 
						||
RUN doveadm pw -p "PasSecretDuTout" | \
 | 
						||
    awk '{ print "destinataire:" $1 }' > /etc/dovecot/users
 | 
						||
 | 
						||
COPY web-api /src/api
 | 
						||
 | 
						||
ENTRYPOINT ["/init"]
 |