FROM debian:9
MAINTAINER kevin@my.walr.us

ENV DEBIAN_DIST stretch
ENV MYSQL_MAJOR 5.7

RUN \
	apt-get update && apt-get install -y curl gnupg 

RUN \
	apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys A4A9406876FCBD3C456770C88C718D3B5072E1F5 && \
	echo "deb http://repo.mysql.com/apt/debian/ ${DEBIAN_DIST} mysql-${MYSQL_MAJOR}" > /etc/apt/sources.list.d/mysql.list && \
	apt-get update && apt-get install -y libmysqlclient20 

RUN \
	echo "postfix postfix/mailname string walri.com" | debconf-set-selections && \
	echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections && \
	apt-get update && apt-get install -y \
		curl \
		libsasl2-modules \
		openssl \
		postfix \
		rsyslog \
		sasl2-bin 

ENV DOVECOT_VERSION 2.2.29.1
ENV PIGEONHOLE_VERSION 0.4.18

ENV DOVECOT_URL=https://dovecot.org/releases/2.2/dovecot-$DOVECOT_VERSION.tar.gz
ENV PIGEONHOLE_URL=https://pigeonhole.dovecot.org/releases/2.2/dovecot-2.2-pigeonhole-$PIGEONHOLE_VERSION.tar.gz

# Builds with default-libmysqlclient-dev but not libmysqlclient-dev

ENV LIBMYSQLCLIENT libmysqlclient-dev
# ENV LIBMYSQLCLIENT default-libmysqlclient-dev

RUN set -x \
	&& apt-get update \
	&& dpkg --get-selections | cut -f 1 | uniq | sort > /tmp/apt-before.lis \
	&& apt-get update && apt-get install -y \
		autoconf \
		file \
		g++ \
		gcc \
		libc-dev \
		make \
		pkg-config \
		${LIBMYSQLCLIENT} \
		libssl-dev \
	&& curl -SL "$DOVECOT_URL" -o dovecot.tar.gz \
	&& mkdir -p /usr/src/dovecot \
	&& tar -xzf dovecot.tar.gz -C /usr/src/dovecot \
	&& rm dovecot.tar.gz \
	&& cd /usr/src/dovecot/dovecot-$DOVECOT_VERSION \
	&& ./configure \
		--prefix=/usr \
		--sysconfdir=/etc \
		--with-mysql \
	&& make \
	&& make install \
	&& groupadd -r dovecot && useradd -r -d /usr/lib/dovecot -s /bin/false -g dovecot dovecot \
	&& groupadd -r dovenull && useradd -r -d /nonexistant -s /bin/false -g dovenull dovenull \
	&& cd / \
	&& curl -SL "$PIGEONHOLE_URL" -o pigeonhole.tar.gz \
	&& mkdir -p /usr/src/pigeonhole \
	&& tar -xzf pigeonhole.tar.gz -C /usr/src/pigeonhole \
	&& rm pigeonhole.tar.gz \
	&& cd /usr/src/pigeonhole/dovecot-2.2-pigeonhole-$PIGEONHOLE_VERSION \
	&& ./configure \
		--with-dovecot=/usr/lib/dovecot \
		--prefix=/usr \
	&& make \
	&& make install \
	&& cd / \
	&& rm -rf /usr/src/dovecot \
	&& rm -rf /usr/src/pigeonhole \
	&& dpkg --get-selections | cut -f 1 | uniq | sort > /tmp/apt-after.lis \
    && diff /tmp/apt-before.lis /tmp/apt-after.lis | grep "^>" | cut -f 2 -d ' ' | xargs apt-get purge -y \
	&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

