Receiver Policy Framework (RPF)
Author: Kazu Yamamoto
The latest version
Receiver Policy Framework (RPF) is a Milter program to change actions of e-mail receiver side according to results of the anti-spam technologies.
It supports IP/Domain based filtering, SPF(Sender Policy Framework), SenderID, DomainKeys, and DKIM.
RPF provides a language to describe policy. Here is an example:
// #ip connect { accept: #ip == 127.0.0.1; continue; } // #spf, #mail_from mail_from { accept: #spf == pass; continue; } // #from, #pra, #sender_id, #dkim_from, #domainkeys_from, // #sig_dkim, #sig_domainkeys header { accept: #sender_id == pass; reject: #mail_from == "yahoo.com" && #sig_domainkeys == No; continue; } // #dkim, #domainkeys body { accept: #dkim == pass; accept: #domainkeys == pass; continue; }
RPF is implemented against solve the dilemma of the anti-spam technologies. That is, SPF/Sender-ID is strong against ML but weak against forwarding while DomainKeys/DKIM is strong against forwarding but weak against ML. So, e-mail receiver would implement policy such that either result of SPF/Sender-ID or that of DomainKeys/DKIM is PASS, the server accepts the message.
RPF is written in Haskell without using libmilter. Comments, requests, and/or bug reports should be posted to github.