This is the reason for making ddgrey.
It acts as a normal greylisting daemon, being queried over a UNIX domain socket from a MTA, and answering if a mail should be allowed, deferred or denied.
It can also get reports from the MTA (currently by reading exim4 log files) about spam classification and suspect activities, and receive reports from spamtraps, spam reporting aliases and ddgrey servers on other hosts (normally on your other MX servers).
Using this information, ddgrey can adjust the greylisting delay for a specific sender host from no greylist at all, to a long delay or outright blacklisting.
The purpose of this is to allow legitimate email through faster, and to delay more spam based on combined IP reputation before possibly processing in spamassassin.
Early beta - I have been using this live on my own servers (exim4, Debian) for half a year, but I would appreciate feedback if the instructions are actually usable and if it works on other system configurations.
Written in perl with nonblocking single-thread IO. Only normal perl modules used; SQLite for storage.
Download: https://github.com/perericr/ddgrey