Thanks Nic. I need to specify the IP for these, so will stick with "After=network-online.target".
Re this:
But if you give it a specific IP, and that IP isn't available, cyrus exits.
...I wish it did. But it just fails to bind and then still runs, uselessly... If it failed I'd be able to easily automate that it was not running and send a systemctl restart.
All good, I'll see how it goes with the network-online.target.
On CentOS / RHEL the service unit has the same as your Debian one: After=local-fs.target network.target