[DOCKER][MAIL] Substituted supervisord for s6
This commit is contained in:
parent
def5e06a28
commit
0518bc2c6b
@ -90,6 +90,7 @@ services:
|
|||||||
- ./docker/mail/mail.env
|
- ./docker/mail/mail.env
|
||||||
ports:
|
ports:
|
||||||
- 25:25
|
- 25:25
|
||||||
|
- 110:110
|
||||||
- 143:143
|
- 143:143
|
||||||
- 587:587
|
- 587:587
|
||||||
- 993:993
|
- 993:993
|
||||||
|
2
docker/mail/.gitignore
vendored
Normal file
2
docker/mail/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
mail.env
|
||||||
|
config/*
|
@ -15,9 +15,9 @@ RUN \
|
|||||||
opendkim-tools \
|
opendkim-tools \
|
||||||
openssl \
|
openssl \
|
||||||
postfix \
|
postfix \
|
||||||
|
procps \
|
||||||
rsyslog \
|
rsyslog \
|
||||||
supervisor \
|
s6 \
|
||||||
telnet \
|
|
||||||
&& apt-get autoclean \
|
&& apt-get autoclean \
|
||||||
&& apt-get autoremove
|
&& apt-get autoremove
|
||||||
|
|
||||||
@ -35,8 +35,18 @@ RUN \
|
|||||||
# Copy config files
|
# Copy config files
|
||||||
COPY rootfs/ /
|
COPY rootfs/ /
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
touch /etc/mail/aliases /etc/mail/domains /etc/mail/mailboxes /etc/mail/passwd \
|
||||||
|
&& postmap /etc/mail/aliases && postmap /etc/mail/domains && postmap /etc/mail/mailboxes
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
chmod +x /etc/service/postfix/run \
|
||||||
|
&& chmod +x /etc/service/dovecot/run \
|
||||||
|
&& chmod +x /etc/service/opendkim/run \
|
||||||
|
&& chmod +x /etc/service/rsyslog/run
|
||||||
|
|
||||||
# Expose ports
|
# Expose ports
|
||||||
EXPOSE 110 143 587 993 995
|
EXPOSE 25 110 143 587 993 995
|
||||||
|
|
||||||
# Run start script
|
# Run start script
|
||||||
ENTRYPOINT /usr/bin/start.sh
|
ENTRYPOINT /usr/bin/start.sh
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -1,8 +1,8 @@
|
|||||||
protocols = imap pop3 lmtp
|
protocols = imap pop3 lmtp
|
||||||
|
|
||||||
ssl = yes
|
ssl = yes
|
||||||
ssl_cert = </etc/letsencrypt/live/social.org/fullchain.pem
|
ssl_cert =
|
||||||
ssl_key = </etc/letsencrypt/live/social.org/privkey.pem
|
ssl_key =
|
||||||
ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL
|
ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL
|
||||||
|
|
||||||
listen = *, ::
|
listen = *, ::
|
||||||
|
@ -7,7 +7,5 @@
|
|||||||
::1
|
::1
|
||||||
172.17.0.0/16
|
172.17.0.0/16
|
||||||
fe80::/64
|
fe80::/64
|
||||||
social.org
|
#HOSTNAME
|
||||||
|
|
||||||
#host.example.com
|
|
||||||
#192.168.1.0/24
|
|
||||||
|
@ -5,8 +5,8 @@ command_directory = /usr/sbin
|
|||||||
daemon_directory = /usr/lib/postfix/sbin
|
daemon_directory = /usr/lib/postfix/sbin
|
||||||
data_directory = /var/lib/postfix
|
data_directory = /var/lib/postfix
|
||||||
mail_owner = postfix
|
mail_owner = postfix
|
||||||
myhostname = %MAIL_HOSTNAME%
|
myhostname =
|
||||||
mydomain = %MAIL_HOSTNAME_FQDN%
|
mydomain =
|
||||||
myorigin = $myhostname
|
myorigin = $myhostname
|
||||||
inet_interfaces = all
|
inet_interfaces = all
|
||||||
inet_protocols = all
|
inet_protocols = all
|
||||||
@ -63,8 +63,8 @@ smtpd_sasl_local_domain = $mydomain
|
|||||||
broken_sasl_auth_clients = yes
|
broken_sasl_auth_clients = yes
|
||||||
|
|
||||||
smtpd_tls_security_level = may
|
smtpd_tls_security_level = may
|
||||||
smtpd_tls_key_file = /etc/ssl/mail.key
|
smtpd_tls_key_file =
|
||||||
smtpd_tls_cert_file = /etc/ssl/mail.crt
|
smtpd_tls_cert_file =
|
||||||
smtpd_tls_loglevel = 1
|
smtpd_tls_loglevel = 1
|
||||||
smtpd_tls_session_cache_timeout = 3600s
|
smtpd_tls_session_cache_timeout = 3600s
|
||||||
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_cache
|
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_cache
|
||||||
|
@ -1,46 +0,0 @@
|
|||||||
[unix_http_server]
|
|
||||||
file=/tmp/supervisor.sock
|
|
||||||
|
|
||||||
[supervisord]
|
|
||||||
nodaemon=true
|
|
||||||
user=root
|
|
||||||
loglevel=warn
|
|
||||||
|
|
||||||
[supervisorctl]
|
|
||||||
serverurl=unix:///tmp/supervisor.sock
|
|
||||||
user=root
|
|
||||||
|
|
||||||
[rpcinterface:supervisor]
|
|
||||||
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
|
|
||||||
|
|
||||||
[program:opendkim]
|
|
||||||
autostart=false
|
|
||||||
autorestart=true
|
|
||||||
stdout_logfile=/dev/fd/1
|
|
||||||
stdout_logfile_maxbytes=0
|
|
||||||
redirect_stderr=true
|
|
||||||
command=/usr/sbin/opendkim -x /etc/mail/opendkim/opendkim.conf
|
|
||||||
|
|
||||||
[program:postfix]
|
|
||||||
autostart=false
|
|
||||||
autorestart=true
|
|
||||||
stdout_logfile=/dev/fd/1
|
|
||||||
stdout_logfile_maxbytes=0
|
|
||||||
redirect_stderr=true
|
|
||||||
command=postfix -c /etc/mail/postfix/postfix.conf
|
|
||||||
|
|
||||||
[program:dovecot]
|
|
||||||
autostart=false
|
|
||||||
autorestart=true
|
|
||||||
stdout_logfile=/dev/fd/1
|
|
||||||
stdout_logfile_maxbytes=0
|
|
||||||
redirect_stderr=true
|
|
||||||
command=dovecot -c /etc/mail/dovecot/dovecot.conf
|
|
||||||
|
|
||||||
[program:rsyslog]
|
|
||||||
autostart=false
|
|
||||||
autorestart=true
|
|
||||||
stdout_logfile=/dev/fd/1
|
|
||||||
stdout_logfile_maxbytes=0
|
|
||||||
redirect_stderr=true
|
|
||||||
command=rsyslog -f /etc/mail/rsyslogd/rsyslog.conf
|
|
6
docker/mail/rootfs/etc/service/dovecot/run
Normal file
6
docker/mail/rootfs/etc/service/dovecot/run
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
PID=$(pgrep dovecot)
|
||||||
|
if [ -z $PID ]
|
||||||
|
then
|
||||||
|
exec /usr/sbin/dovecot -c /etc/mail/dovecot/dovecot.conf
|
||||||
|
fi
|
6
docker/mail/rootfs/etc/service/opendkim/run
Normal file
6
docker/mail/rootfs/etc/service/opendkim/run
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
PID=$(pgrep opendkim)
|
||||||
|
if [ -z $PID ]
|
||||||
|
then
|
||||||
|
exec /usr/sbin/opendkim -x /etc/mail/opendkim/opendkim.conf
|
||||||
|
fi
|
6
docker/mail/rootfs/etc/service/postfix/run
Normal file
6
docker/mail/rootfs/etc/service/postfix/run
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
PID=$(pgrep master)
|
||||||
|
if [ -z $PID ]
|
||||||
|
then
|
||||||
|
exec /usr/sbin/postfix start -c /etc/mail/postfix
|
||||||
|
fi
|
6
docker/mail/rootfs/etc/service/rsyslog/run
Normal file
6
docker/mail/rootfs/etc/service/rsyslog/run
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
PID=$(pgrep rsyslog)
|
||||||
|
if [ -z $PID ]
|
||||||
|
then
|
||||||
|
exec /usr/sbin/rsyslogd -f /etc/mail/rsyslogd/rsyslog.conf
|
||||||
|
fi
|
@ -17,15 +17,8 @@ fi
|
|||||||
# Prepare postfix
|
# Prepare postfix
|
||||||
if [ ! -d "/var/mail/$DOMAINNAME" ]
|
if [ ! -d "/var/mail/$DOMAINNAME" ]
|
||||||
then
|
then
|
||||||
touch /etc/mail/aliases /etc/mail/domains /etc/mail/mailboxes /etc/mail/passwd
|
|
||||||
postmap /etc/mail/aliases && postmap /etc/mail/domains && postmap /etc/mail/mailboxes
|
|
||||||
/usr/bin/new-domain.sh "$DOMAINNAME"
|
/usr/bin/new-domain.sh "$DOMAINNAME"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Run services
|
||||||
# Start services
|
s6-svscan /etc/service
|
||||||
rsyslogd -f /etc/mail/rsyslogd/rsyslog.conf
|
|
||||||
/usr/sbin/opendkim -x /etc/mail/opendkim/opendkim.conf
|
|
||||||
/usr/sbin/dovecot -c /etc/mail/dovecot/dovecot.conf
|
|
||||||
/usr/sbin/postfix start -c /etc/mail/postfix
|
|
||||||
supervisord -c /etc/mail/supervisord/supervisord.conf
|
|
||||||
|
@ -12,7 +12,7 @@ else
|
|||||||
domain="${sub_domain}.${domain_root}"
|
domain="${sub_domain}.${domain_root}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat > mail.env <<EOF
|
cat > ./docker/mail/mail.env <<EOF
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
DOMAINNAME=${domain_root}
|
DOMAINNAME=${domain_root}
|
||||||
MAILNAME=${domain}
|
MAILNAME=${domain}
|
||||||
@ -20,18 +20,24 @@ SSL_CERT=/etc/letsencrypt/live/${domain_root}/fullchain.pem
|
|||||||
SSL_KEY=/etc/letsencrypt/live/${domain_root}/privkey.pem
|
SSL_KEY=/etc/letsencrypt/live/${domain_root}/privkey.pem
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
DOMAINNAME="${domain_root}"
|
||||||
|
MAILNAME="${domain}"
|
||||||
|
SSL_CERT="/etc/letsencrypt/live/${domain_root}/fullchain.pem"
|
||||||
|
SSL_KEY="/etc/letsencrypt/live/${domain_root}/privkey.pem"
|
||||||
|
|
||||||
# Config postfix
|
# Config postfix
|
||||||
sed -i -e "s#^\s*myhostname\s*=.*#myhostname = $MAILNAME#" rootfs/etc/mail/postfix/main.cf
|
sed -i -e "s#^\s*myhostname\s*=.*#myhostname = $MAILNAME#" ./docker/mail/config/postfix/main.cf
|
||||||
sed -i -e "s#^\s*mydomain\s*=.*#mydomain = $DOMAINNAME#" rootfs/etc/mail/postfix/main.cf
|
sed -i -e "s#^\s*mydomain\s*=.*#mydomain = $DOMAINNAME#" ./docker/mail/config/postfix/main.cf
|
||||||
sed -i -e "s#^\s*smtpd_tls_cert_file\s*=.*#smtpd_tls_cert_file = $SSL_CERT#" rootfs/etc/mail/postfix/main.cf
|
sed -i -e "s#^\s*smtpd_tls_cert_file\s*=.*#smtpd_tls_cert_file = $SSL_CERT#" ./docker/mail/config/postfix/main.cf
|
||||||
sed -i -e "s#^\s*smtpd_tls_key_file\s*=.*#smtpd_tls_key_file = $SSL_KEY#" rootfs/etc/mail/postfix/main.cf
|
sed -i -e "s#^\s*smtpd_tls_key_file\s*=.*#smtpd_tls_key_file = $SSL_KEY#" ./docker/mail/config/postfix/main.cf
|
||||||
|
|
||||||
# Config dovecot
|
# Config dovecot
|
||||||
sed -i -e "s#^\s*ssl_cert\s*=.*#ssl_cert = <$SSL_CERT#" rootfs/etc/mail/dovecot/dovecot.conf
|
sed -i -e "s#^\s*ssl_cert\s*=.*#ssl_cert = <$SSL_CERT#" ./docker/mail/config/dovecot/dovecot.conf
|
||||||
sed -i -e "s#^\s*ssl_key\s*=.*#ssl_key = <$SSL_KEY#" rootfs/etc/mail/dovecot/dovecot.conf
|
sed -i -e "s#^\s*ssl_key\s*=.*#ssl_key = <$SSL_KEY#" ./docker/mail/config/dovecot/dovecot.conf
|
||||||
sed -i -e "s#^\s*hostname\s*=.*#hostname = $MAILNAME#" rootfs/etc/mail/dovecot/dovecot.conf
|
sed -i -e "s#^\s*postmaster_address\s*=.*#postmaster_address = postmaster@$DOMAINNAME#" ./docker/mail/config/dovecot/dovecot.conf
|
||||||
sed -i -e "s#^\s*postmaster_address\s*=.*#postmaster_address = $POSTMASTER#" rootfs/etc/mail/dovecot/dovecot.conf
|
|
||||||
|
|
||||||
# Config dkim
|
# Config dkim
|
||||||
sed -i -e "s/#HOSTNAME/$MAILNAME/" rootfs/etc/mail/opendkim/TrustedHosts
|
sed -i -e "s/^.*#HOSTNAME/$MAILNAME#HOSTNAME/" ./docker/mail/config/opendkim/TrustedHosts
|
||||||
|
|
||||||
|
# Prepare mail user
|
||||||
|
touch /etc/mail/aliases /etc/mail/domains /etc/mail/mailboxes /etc/mail/passwd
|
||||||
|
Loading…
Reference in New Issue
Block a user