This diff is against amavis-ng-0.1.6.3.
I found that the x-header functionality present in 0.1.4.1 in Milter.pm was gone in 0.1.6.3, due to a change in amavis-milter (addition of -x option to enable x-header generation) and changed Milter.pm to add the -x option to the command line when it calls amavis-milter.
I also found that the FPROTD.pm module didn't work as it was, because the question mark (?) component of the URL for the GET request to f-protd was missing.
Also, the f-protd manual page (F-Prot for Linux Enterprise Business v3.13) says:
"The daemon binds itself to a port in the range 10200-10204 (inclusive) on the loopback address. ... The daemon is designed to automatically update itself by exec()'ing its own binary when a new version is in place. The newly exec()'ed copy is forced to bind to another port since the outdated process stays alive for about half a minute. This is done to guarantee that there is always at least one daemon available at any given time. Clients are expected to cycle through the port range to find a live daemon when the one they were previously using dies."
So, I modified F-PROTD.pm to try connecting to each port in the range [(port portion of) $cfg_fprotd_socket] to port + 4 (five ports inclusive, per the manual page.)
I have verified that f-protd does behave the way the manual page suggests, and that my modifications to f-protd work as expected, picking the first available port, and failing if none of the five are available.
Have been running with these changes for a couple of days without problems.