docker-kolab icon indicating copy to clipboard operation
docker-kolab copied to clipboard

OpenDKIM doesn't start properly

Open danbo opened this issue 7 years ago • 1 comments

# restart the container
user@server# docker restart kolab

# enter container
user@server# docker exec -it kolab /bin/bash

# see if opendkim is listening
user@server# netstat -l --numeric | grep 8891
(nothing)
[root@kolab /]#

# check for process - wrapper is there but opendkim is not started

[root@kolab /]# ps aux | grep opendkim
root       174  0.0  0.0  11368  1252 ?        S    00:57   0:00 /bin/bash /bin/service-wrapper.sh opendkim /var/log/maillog opendkim.*\[.*\]:
root       348  0.0  0.0   6508    72 ?        S    00:57   0:00 grep opendkim.*\[.*\]:
root       985  0.0  0.0   8036  1944 ?        S+   00:58   0:00 grep opendkim

# kill and let supervisor restart it

[root@kolab /]# kill 174

# check for process again - running

[root@kolab /]# ps aux | grep opendkim
root       348  0.0  0.0   6508    72 ?        S    00:57   0:00 grep opendkim.*\[.*\]:
root      1002  0.6  0.1  11368  2444 ?        S    00:58   0:00 /bin/bash /bin/service-wrapper.sh opendkim /var/log/maillog opendkim.*\[.*\]:
opendkim  1018  0.0  0.2  95444  4864 ?        Ssl  00:58   0:00 /usr/sbin/opendkim -x /etc/opendkim.conf -P /var/run/opendkim/opendkim.pid
root      1021  0.0  0.0   6508   528 ?        S    00:58   0:00 grep opendkim.*\[.*\]:
root      1025  0.0  0.0   8036  2000 ?        S+   00:58   0:00 grep opendkim

# check for listening - now it looks to be up

[root@kolab /]# netstat -l --numeric | grep 8891
tcp        0      0 127.0.0.1:8891              0.0.0.0:*                   LISTEN

danbo avatar Oct 12 '17 05:10 danbo

Looks like this only happens when the container is restarted and because upon container shutdown opendkim's pid is not removed, so presumably when it's starting, thinks it's already running and doesn't actually start.

If I delete the pid file and restart the container, it starts as expected.

Not sure why it's not getting deleted as expected. Tried a few things, they didn't work, so I ended up with a hack in supervisord.conf where I force delete the pid before starting the service, ie

[program:opendkim]
command=/bin/service-wrapper.sh         opendkim    '/var/log/maillog'      'opendkim.*\[.*\]:'

turned into

[program:opendkim]
command=/bin/bash -c "rm -f /var/run/opendkim/opendkim.pid && /bin/service-wrapper.sh         opendkim    '/var/log/maillog'      'opendkim.*\[.*\]:'"

... until we figure out a better way.

Now it always starts up as expected upon container restart.

danbo avatar Oct 12 '17 06:10 danbo