ClamAV is a Free (GPL) Virus scanner for Linux, Solaris, *BSD, AIX, MacOSX, Cygwin B20 on multiple architectures such as Intel, Alpha, SPARC, Cobalt MIPS boxes, PowerPC and RISC 6000. It started as a C-based reimplementation of the abandoned Java OpenAntiVirus. Signature updates are available in an open FileFormat.
ClamAV comes with a tool called freshclam which updates the virus database automatically: it downloads the database from http://database.clamav.net/ (a round robin record that tries to equally balance the traffic between all the database mirrors) which is split into two files called main.cvd and daily.cvd. daily.cvd is updated frequently and occasionally is merged with main.cvd.
In issue 8/2004 (April 5, 2004), the German computer magazine c't published a comparative review of a number of virus scanners, in which they reported that ClamAV's signature updates are provided far too slowly to adequately cope with the contemporary appearance rate of new mail worms, of which new mutations sometimes follow each other within hours. On the other hand, a lot of people appear to have had experiences to the contrary. That article also mentions that ClamAV lacks "code emulation", an easy way to identify variations of a PolyMorphicVirus.
Anyway, you can see ClamAV's response times by yourself at http://news.gmane.org/gmane.comp.security.virus.clamav.virusdb. I suggest you check them out before you say ClamAV doesn't suit your needs. You could be surprised.
ClamAV can be used by ContentScanners to scan Emails on many MTAs. The ClamAV package includes one written by Nigel Horne for SendMail called clamav-milter. Another one is smtp-vilter. They both use the SendMail "milter" API. Other ContentScanners known to work with ClamAV are Amavis / Amavis-ng, AMaViS-New, Exiscan, MailScanner, QmailScanner.
This wiki page doesn't get much attention. And it is not possible to let you know about you documentation for requested features that are actually already implemented. Therefore, please post your wishes on the ClamAV MailingList instead.