[DOCKER][MAIL] Substituted supervisord for s6
This commit is contained in:
		@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user