I have adjusted the startup script distributed by Dovecot and saved it as /usr/local/bin/dovecotctl:
#!/bin/bash
### BEGIN INIT INFO
# Provides: dovecot
# Required-Start: $local_fs $remote_fs $network $syslog $time
# Required-Stop: $local_fs $remote_fs $network $syslog
# Should-Start: postgresql mysql slapd winbind
# Should-Stop: postgresql mysql slapd winbind
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Dovecot init script
# Description: Init script for dovecot services
### END INIT INFO
# Example /etc/init.d/dovecot script. Change DAEMON if necessary.
# License is public domain.
DAEMON=/usr/local/dovecot/sbin/dovecot
# Uncomment to allow Dovecot daemons to produce core dumps.
#ulimit -c unlimited
test -x $DAEMON || exit 1
set -e
base_dir=`$DAEMON config -h base_dir`
pidfile=$base_dir/master.pid
if test -f $pidfile; then
running=yes
else
running=no
fi
case "$1" in
start)
echo -n "Starting Dovecot"
$DAEMON
echo "."
;;
stop)
if test $running = yes; then
echo "Stopping Dovecot"
kill `cat $pidfile`
echo "."
else
echo "Dovecot is already stopped."
fi
;;
reload)
if test $running = yes; then
echo -n "Reloading Dovecot configuration"
kill -HUP `cat $pidfile`
echo "."
else
echo "Dovecot isn't running."
fi
;;
restart|force-reload)
echo -n "Restarting Dovecot"
if test $running = yes; then
kill `cat $pidfile`
sleep 1
fi
$DAEMON
echo "."
;;
*)
echo "Usage: dovecotctl {start|stop|reload|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
wget -O /usr/local/bin/dovecotctl https://notes.sagredo.eu/files/qmail/dovecot/dovecotctl chmod +x /usr/local/bin/dovecotctl
Run Dovecot and that's what you should see:
> dovecotctl
Usage: dovecotctl {start|stop|reload|restart|force-reload}
> dovecotctl start
Starting Dovecot.
> ps axfu | grep dovecot
root 372 0.0 0.0 9508 3308 ? Ss Dec18 0:01 /usr/local/dovecot/sbin/dovecot
root 373 0.0 0.0 9324 4108 ? S Dec18 0:00 \_ dovecot/anvil
root 374 0.0 0.0 9296 4068 ? S Dec18 0:01 \_ dovecot/log
root 375 0.0 0.0 55048 12640 ? S Dec18 0:00 \_ dovecot/config
dovecot 457 0.0 0.0 9488 4144 ? S Dec18 0:00 \_ dovecot/stats
vpopmail 348163 0.0 0.0 14424 8496 ? S 09:32 0:00 \_ dovecot/imap-login
vpopmail 348164 0.0 0.0 58768 15028 ? S 09:32 0:00 \_ dovecot/imap postlogin
vpopmail 355245 0.0 0.0 14424 8516 ? S 14:16 0:00 \_ dovecot/imap-login
vpopmail 355246 0.0 0.0 56504 14396 ? S 14:17 0:00 \_ dovecot/imap postlogin
Running Dovecot at boot time
To run Dovecot at boot time simply add a line like this into your rc.local.
/usr/local/bin/dovecotctl start &
If you are in a systemd OS the rc.local file will be saved in /etc/rc.local and you'll have to instruct systemd to launch it at boot. To recall how to do you are invited to have a look at this comment below (tx GoofY).
It is important to setup the rc.local because all the services from now on will be launched at boot time by this script and not by daemontools.
Dovecot under daemontools
If you want to run Dovecot under daemontools look here.


Comments
Creating a rc.local for systemd
GoofY August 2, 2019 12:24 CET
Hi,
Most current Linux systems don't come with a rc.local anymore, to circumvent:
Then:
Reply | Permalink
dovecot under daemontools
Ali Erturk TURKER GoofY February 12, 2023 07:30 CET
It would be even better to use "daemontools" we all love, for the supervision of dovecot IMAP server.
Roberto will definitely want to offer this setup as an alternative to "dovecotctl" script above :-)
Setup is as follows:
1. Create supervise script folders as usual:
2. Create /var/qmail/supervise/dovecot/run script and add:
3. Create /var/qmail/supervise/dovecot/log/run script and add:
4. Create dovecot log directory as usual and arrange permissions:
5. Edit /usr/local/dovecot/etc/dovecot/conf.d/10-logging.conf and make sure that dovecot logs to /dev/stderr,
which will be collected under the log folder we created in step 4:
6- Adjusting qmailctl script for the new setup is pretty easy: Just move the "dovecot" from "servicelist" to "svc list":
7. Create the symbolic under link under /service and enjoy :-)
Reply | Permalink