If the IP address was previously successful for a greylisting check and was last queried within timeout_days the check succeeds. Alternatively if one of the supplied triplets of IP address / sender / recipient have previously been seen within resend_window_hours but at least min_resend_minutes ago, the check succeeds and future checks within resend_window_hours for the IP address will succeed. Otherwise the triplet(s) supplied are added to the greylisting database to check against future queries, and the check fails (meaning qmail-smtpd will reject the message).
greydaemon must be started as root but quickly changes its effective user/group id to that specified by username.
greydaemon maintains its database in memory, thus avoiding complicated schemes to manage greylisting data on disk - as well as benefitting from being faster than disk-based approaches. Nevertheless periodic backups of the database are made to disk to enable greydaemon to start with existing greylisting data if greydaemon restarts, such as when the machine is rebooted.
greydaemon listens on IP address ipaddr, port 1999 for incoming UDP queries. 127.0.0.1 (the loopback address) is recommended for ipaddr if greydaemon is to serve queries on the same machine.
At start-up the file savefile is read. This contains the list of currently greylisted addresses; periodically (about every 10 minutes) greydaemon writes a new savefile. Since greydaemon runs as username , savefile and its containing directory should be writeable by username.