71 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/bash
 | 
						|
POSTFIX='/usr/sbin/postfix'
 | 
						|
MONITOR_INTERVAL=10 # seconds
 | 
						|
 | 
						|
exec 2>&1
 | 
						|
 | 
						|
if [[ ! -d /state/envdir ]]; then
 | 
						|
    mkdir -p /state/envdir
 | 
						|
    chown mastodon:mastodon /state/envdir
 | 
						|
fi
 | 
						|
 | 
						|
if [[ ! -e /state/envdir/WEB_DOMAIN ]]; then
 | 
						|
    if [[ -n "$WEB_DOMAIN" ]]; then
 | 
						|
        echo "$WEB_DOMAIN" > /state/envdir/WEB_DOMAIN
 | 
						|
    else
 | 
						|
        hostname --fqdn > /state/envdir/WEB_DOMAIN
 | 
						|
    fi
 | 
						|
    chown mastodon:mastodon /state/envdir/*
 | 
						|
fi
 | 
						|
 | 
						|
cat /etc/postfix/main.cf | grep -v '^myhostname' > /etc/postfix/main.new
 | 
						|
rm /etc/postfix/main.cf
 | 
						|
echo "myhostname = $(cat /state/envdir/WEB_DOMAIN)" >> /etc/postfix/main.cf
 | 
						|
echo "myorigin = $(cat /state/envdir/WEB_DOMAIN)" >> /etc/postfix/main.cf
 | 
						|
cat /etc/postfix/main.new >> /etc/postfix/main.cf
 | 
						|
rm /etc/postfix/main.new
 | 
						|
 | 
						|
running() {
 | 
						|
  pkill -0 master
 | 
						|
}
 | 
						|
 | 
						|
start() {
 | 
						|
  echo "postfix starting..."
 | 
						|
  /etc/init.d/postfix start
 | 
						|
}
 | 
						|
 | 
						|
stop() {
 | 
						|
  if running; then
 | 
						|
    echo Stopping
 | 
						|
    /etc/init.d/postfix stop
 | 
						|
  fi
 | 
						|
}
 | 
						|
 | 
						|
reload() {
 | 
						|
  echo Reloading
 | 
						|
  /etc/init.d/postfix reload
 | 
						|
}
 | 
						|
 | 
						|
check() {
 | 
						|
  echo Checking
 | 
						|
  "$POSTFIX" check
 | 
						|
}
 | 
						|
 | 
						|
status() {
 | 
						|
  "$POSTFIX" status
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
trap 'echo INT; stop; exit' INT
 | 
						|
trap 'echo QUIT; stop; exit' QUIT
 | 
						|
trap 'echo TERM; stop; exit' TERM
 | 
						|
trap 'echo STOP; stop' STOP
 | 
						|
trap 'echo HUP; reload' HUP
 | 
						|
trap 'echo USR1; check' USR1
 | 
						|
trap 'echo USR2; status' USR2
 | 
						|
 | 
						|
while :; do
 | 
						|
  running || start
 | 
						|
  sleep $MONITOR_INTERVAL
 | 
						|
done
 |