"a high-performance interface between mailer (MTA) and content checkers: virus scanners, and/or SpamAssassin. It is written in Perl for maintainability, without paying a significant price for speed. It talks to MTA via (E)SMTP or LMTP, or by using helper programs. Best with Postfix, fine with dual-sendmail setup and Exim v4, works with sendmail/milter, or with any MTA as a SMTP relay."
amavis (as it will be called for the rest of this node so to spare us the l33t-a-like capitalisation) is a powerful, scalable, flexible mail scanner for all modern MTAs.
The amavis source was released to the public on January 17, 1998. The original application was implemented in bash-compliant shell scripts by one Mogens Kjaer and subsequently hacked by Jürgen Quade into a releasable product. That generation of amavis (now referred to as the 0.2x tree) continued its evolution until its last official release in the October of 2000.
Development was forked into amavis-perl, a reimplementation of the ideas of amavis using Perl for better speed. Work on amavis-perl continues to this day, often referred to as just plain amavis: although it retains no code from the original project (besides part of the CREDITS file), amavis-perl remains true to the original project goal, and has even surpassed the original design by some distance.
amavis supports virtually every anti-virus engine available for Linux, HP-UX, Solaris and other operating systems out of the box. It also perfectly integrates Spamassassin for spam checking. It supports LDAP lookup of addresses and aliases, policy-based sanitisation of mail, is able to add disclaimers, and more.
Because it is written in Perl, amavis runs on virtually every platform. Using its SMTP engine it can act as a proxy for any notable MTA. Out of the box it provides full integration with Sendmail, Postfix, Exim and Qmail (with patch). Successful deployments of AMaViS on MDaemon and even Microsoft Exchange have been reported. It's configuration files are straightforward and well commented, making it trivial to deploy any but the most complex configuration.
There is also a daemonised version of AMaViS called amavisd. amavisd listens on a given socket for mail to be piped to it. Unlike amavis which spawns a child process every time a mail is passed through it, amavisd remains in memory, forking as nescessary to accomidate load. This is my preferred deployment method for AMaViS.
amavis (that is amavis-perl and amavisd) are still in active development. The developers are generally swift and merciless when it comes to bugs and exploits. In the past there have been some embarrasing slip ups by the AMaViS team including a showstopper that made any AMaViS mail server an open relay. Since July 2000 there have been no serious security holes that werent due to (and fixed in) Perl itself.