Usando supervisord para controlar o MTA postfix

4

Estou tentando usar o supervisord para controlar o postfix. O método usual é especificar um comando que inicia o daemon, eu uso postfix -c /etc/postfix start . A página man do postfix diz que para parar você substitua start por stop no comando acima.

Eu não vejo uma maneira de especificar outro comando para parar um daemon, apenas um sinal. O master manpage diz que o sinal TERM funcionará como se postfix abort fosse usado, mas fica silencioso ao ser desligado graciosamente por meio de um sinal.

Além disso, o método start / stop do primeiro parágrafo é complicado no que diz respeito ao supervisord. O script executa várias verificações e chama master , qmgr e pickup com master como o líder do grupo de processos. Assim, o supervisord tem um identificador em um PID inútil (um dos quais o script estava sendo executado) e, portanto, não pode usar esse PID para parar o daemon. O que deve ter um identificador é o processo master .

Até onde eu cheguei:

[program:master]
process_name    = master
priority        = 5
directory       = /etc/postfix
command         = /usr/sbin/postfix -c /etc/postfix start
startsecs       = 0
user            = root
stopsignal      = INT

Isso inicia o postfix, mas não pode pará-lo.

    
por alephnull 27.07.2010 / 20:08

3 respostas

4

Minha solução é escrever um script wrapper chamado postfix.sh da seguinte forma:

# call "postfix stop" when exiting
trap "{ echo Stopping postfix; /usr/sbin/postfix stop; exit 0; }" EXIT

# start postfix
/usr/sbin/postfix -c /etc/postfix start
# avoid exiting
sleep infinity   

Depois disso, modifique o supervisord.conf:

[program:postfix]
command=path/to/postfix.sh 
    
por 22.11.2014 / 09:29
1

Acontece que é mais simples usar algo como Monit para monitorar daemons:

Monit is a free open source utility for managing and monitoring, processes, programs, files, directories and filesystems on a UNIX system. Monit conducts automatic maintenance and repair and can execute meaningful causal actions in error situations.

You can use Monit to monitor daemon processes or similar programs running on localhost. Monit is particular useful for monitoring daemon processes, such as those started at system boot time from /etc/init.d/. For instance sendmail, sshd, apache and mysql.

    
por 27.04.2011 / 05:46
1

O mesmo que @Hui Zheng, mas verificando se o posfix está ativo

trap "postfix stop" SIGINT
trap "postfix stop" SIGTERM
trap "postfix reload" SIGHUP

# force new copy of hosts there (otherwise links could be outdated)
cp /etc/hosts /var/spool/postfix/etc/hosts

# start postfix
postfix start

# lets give postfix some time to start
sleep 3

# wait until postfix is dead (triggered by trap)
while kill -0 "'cat /var/spool/postfix/pid/master.pid'"; do
  sleep 5
done

os créditos aqui

    
por 25.02.2016 / 13:49

Tags