When you restart dovecot, if it won't start up again it's likely the process crashed on startup but left the subsys lockfile in place. This prevents dovecot from starting up again.
If you run
and you see an error mesage like this, then you know the process has crashed and not cleaned up properly:
dovecot dead but subsys locked
Check the /var/log/maillog file (the exact mail log file may vary from Linux/BSD distro to distro) and you'll see something like this:
Oct 24 14:21:57 vps131 dovecot: Killed with signal 15
Oct 24 14:21:57 vps131 dovecot: Dovecot v1.0.rc15 starting up
Oct 24 14:21:58 vps131 dovecot: auth(default): mysql: Unknown connect string: pass
Oct 24 14:21:58 vps131 dovecot: Auth process died too early - shutting down
Oct 24 14:21:58 vps131 dovecot: child 7766 (auth) returned error 89
Oct 24 14:21:58 vps131 dovecot: Temporary failure in creating login processes, slowing down for now
In this instance there was a configuration error and dovecot crashed. It's a shame it doesn't die more gracefully.
The solution is simple. Check /var/lock/subsys and you'll see the dovecot file there. It's simply a matter of doing this:
and then starting dovecot again. Obviously you'll need to work out what the configuration error was and fix it first.