Hmm. It appears that clamd survives a Exim restart, but spamd dies.
It also appears that spamd will not start if clamd is already running.
So I restarted Exim, then started spamd, then started clamd. Everything appears to be working now.
Before I was also getting an error in my clamd.log file:
ERROR: bind() error: Address already in use
I am running ClamAV in network mode. I know that SpamAssassin and ClamAV run on different ports, but it appears there was some kind of conflict?