Here's a problem: there can be multiple milters (in contrast to MeTA1 which leaves multiplexing of milters to a different program, hence simplifying the MTA code):
each milter can add/reject/delete RCPTs and only the last milter "knows" the actual lists of RCPTs. This will be a mess wrt processing PRDR in the MTA: it has to keep track of what each milter "believes" is the list of RCPTs (which is complicated by adding/deleting RCPTs in xxfi_eom()). "Simple" solution: only the last milter is allowed to use PRDR (the MTA could send SMFIP_PRDR only to the last milter to facilitate that). I'll contact some other people to get their input on PRDR in libmilter too.