mirror of
https://github.com/bokysan/docker-postfix.git
synced 2025-09-03 21:14:26 +08:00
116 lines
3.1 KiB
Bash
116 lines
3.1 KiB
Bash
#!/bin/sh
|
|
set -e
|
|
|
|
if [ -f /etc/os-release ]; then
|
|
. /etc/os-release
|
|
fi
|
|
|
|
# Installs postfix, opendkim, and other required packages using the
|
|
# Alpine package manager. This function is called when the image is
|
|
# built on an Alpine base image.
|
|
do_alpine() {
|
|
architecture_specific_packages=""
|
|
apk update
|
|
|
|
if [ "$(apk info postfix-pgsql | grep -R '^postfix-pgsql')" != "" ]; then
|
|
architecture_specific_packages="${architecture_specific_packages} postfix-pgsql"
|
|
fi
|
|
if [ "$(apk info postfix-mysql | grep -R '^postfix-mysql')" != "" ]; then
|
|
architecture_specific_packages="${architecture_specific_packages} postfix-mysql"
|
|
fi
|
|
|
|
apk add --upgrade cyrus-sasl cyrus-sasl-static cyrus-sasl-digestmd5 cyrus-sasl-crammd5 cyrus-sasl-login cyrus-sasl-ntlm libsasl
|
|
apk add postfix postfix-pcre postfix-ldap ${architecture_specific_packages}
|
|
apk add opendkim
|
|
apk add --upgrade \
|
|
bash \
|
|
bind-tools \
|
|
ca-certificates \
|
|
jsoncpp \
|
|
libcurl \
|
|
lmdb \
|
|
logrotate \
|
|
musl \
|
|
musl-utils \
|
|
netcat-openbsd \
|
|
opendkim-utils \
|
|
python3 \
|
|
py3-pip \
|
|
rsyslog \
|
|
supervisor \
|
|
tzdata
|
|
}
|
|
|
|
|
|
# Installs postfix, opendkim, and other required packages using the
|
|
# ubuntu/debian package manager. This function is called when the
|
|
# image is built on a ubuntu/debian base image.
|
|
do_ubuntu() {
|
|
architecture_specific_packages=""
|
|
RELEASE_SPECIFIC_PACKAGES=""
|
|
export DEBCONF_NOWARNINGS=yes
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
echo "Europe/Berlin" > /etc/timezone
|
|
apt-get update -y -q
|
|
|
|
if [ "$(apt-cache search --names-only '^postfix-pgsql$')" != "" ]; then
|
|
architecture_specific_packages="${architecture_specific_packages} postfix-pgsql"
|
|
fi
|
|
if [ "$(apt-cache search --names-only '^postfix-mysql$')" != "" ]; then
|
|
architecture_specific_packages="${architecture_specific_packages} postfix-mysql"
|
|
fi
|
|
|
|
apt-get install -y libsasl2-modules sasl2-bin
|
|
apt-get install -y postfix postfix-pcre postfix-ldap ${architecture_specific_packages}
|
|
apt-get install -y opendkim
|
|
local libcurl="libcurl4"
|
|
if [ "$(apt-cache search --names-only '^libcurl4t64$')" != "" ]; then
|
|
libcurl="libcurl4t64"
|
|
fi
|
|
apt-get install -y \
|
|
${libcurl} ${RELEASE_SPECIFIC_PACKAGES} \
|
|
bash \
|
|
ca-certificates \
|
|
colorized-logs \
|
|
cron \
|
|
curl \
|
|
dnsutils \
|
|
libjsoncpp25 \
|
|
logrotate \
|
|
net-tools \
|
|
netcat-openbsd \
|
|
opendkim-tools \
|
|
postfix-lmdb \
|
|
procps \
|
|
python3 \
|
|
python3-pip \
|
|
rsyslog \
|
|
sasl2-bin \
|
|
supervisor \
|
|
tzdata
|
|
apt-get clean
|
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
|
|
}
|
|
|
|
if [ -f /etc/alpine-release ]; then
|
|
do_alpine
|
|
else
|
|
do_ubuntu
|
|
fi
|
|
|
|
# masl is needed for the sasl-xoauth2-tool.
|
|
PIP=pip
|
|
if command -v pip3 > /dev/null 2>&1; then
|
|
PIP=pip3
|
|
fi
|
|
$PIP install --break-system-packages msal
|
|
|
|
# Some services (eg. cron) will complain if this file does not exists, even if it's empty.
|
|
# The file is usually generated by update-locales, which is ran automatically when you do
|
|
# `apt-get install locales`. So instead of adding another package, which at the moment we
|
|
# do not need, we just create a simple empty file instead and hope to keep cron happy.
|
|
mkdir -p /etc/default/
|
|
echo "# File generated by postfix-install.sh" > /etc/default/locale
|
|
|
|
cp -r /etc/postfix /etc/postfix.template
|