Keeping things simple (sendmail - don't need antoher MTA debate!), the question is three-fold:
1) Vilter/Milter - using sendmail to scan incoming messages in realtime.
Pro: Reject messages before being accepted.
Con: Possibility of locking up sendmail daemon; performance hit for large messages.
2) Mainscanner - passing emails to external programs for scanning virus/spam.
Pro: Can be restarted automatically if a scan crashes. Con: Messages are accepted even if invalid.
3) Amavisd - alternative to Mainscanner, same architecture
4) Cyrus - doesn't seem to be a package nor complete port in the tree?
There are a variety of notes available, but not a lot of good information about *why*. Prefer to stay with sendmail as it's in the base install, and we have used SM/MS/ClamAV/SA in the past with some success so there's a little intertia towards that solution.
Any pointers to good resources for details would be greatly appreciated.
Lee