toddr / Razor2-Client-Agent

Mirror sourceforge perl project razor. We now consider the parent project to be dead
http://razor.sourceforge.net/
Artistic License 2.0
4 stars 6 forks source link

Razor Client doesn't work on IPv6-only hosts #12

Open mss opened 2 years ago

mss commented 2 years ago

While migrating my existing SpamAssassin config to an IPv6 only VM I ran into the odd error

razor2: razor2 check failed: Network is unreachable razor2: razor2 had unknown error during get_server_info at /usr/share/perl5/Mail/SpamAssassin/Plugin/Razor2.pm line 186. at /usr/share/perl5/Mail/SpamAssassin/Plugin/Razor2.pm line 329.

Same when I tried a the discovery via razor-admin:

# sudo -u debian-spamd razor-admin --create --discover -d
 Razor-Log: Computed razorhome from env: /var/lib/spamassassin/.razor
 Razor-Log: Found razorhome: /var/lib/spamassassin/.razor
 Razor-Log: No /var/lib/spamassassin/.razor/razor-agent.conf found, skipping.
 Razor-Log: read_file: 2 items read from /etc/razor/razor-agent.conf
 Razor-Log:  -create will force complete discovery
 Razor-Log:  -discover will force complete discovery
Jun 19 17:35:18.851205 admin[82968]: [ 2] [bootup] Logging initiated LogDebugLevel=9 to stdout
Jun 19 17:35:18.851308 admin[82968]: [ 6] Not creating razorhome /var/lib/spamassassin/.razor, already exists
Jun 19 17:35:18.851344 admin[82968]: [ 5] No /var/lib/spamassassin/.razor/razor-agent.conf found, skipping.
Jun 19 17:35:18.851469 admin[82968]: [ 5] read_file: 2 items read from /etc/razor/razor-agent.conf
Jun 19 17:35:18.851555 admin[82968]: [ 5] computed razorhome=/var/lib/spamassassin/.razor, conf=/etc/razor/razor-agent.conf, ident=/var/lib/spamassassin/.razor/identity
Jun 19 17:35:18.851585 admin[82968]: [ 2]  Razor-Agents v2.84 starting razor-admin --create --discover -d
Jun 19 17:35:18.851629 admin[82968]: [ 5] Can't read file /var/lib/spamassassin/.razor/servers.discovery.lst: No such file or directory
Jun 19 17:35:18.851663 admin[82968]: [ 5] Can't read file /var/lib/spamassassin/.razor/servers.nomination.lst: No such file or directory
Jun 19 17:35:18.851697 admin[82968]: [ 5] Can't read file /var/lib/spamassassin/.razor/servers.catalogue.lst: No such file or directory
Jun 19 17:35:18.851840 admin[82968]: [ 5] no listfile: /var/lib/spamassassin/.razor/servers.nomination.lst
Jun 19 17:35:18.851882 admin[82968]: [ 6] no discovery listfile: /var/lib/spamassassin/.razor/servers.discovery.lst
Jun 19 17:35:18.851914 admin[82968]: [ 8] Checking with Razor Discovery Server discovery.razor.cloudmark.com
Jun 19 17:35:18.851945 admin[82968]: [ 6] No port specified, using 2703
Jun 19 17:35:18.851970 admin[82968]: [ 5] Connecting to discovery.razor.cloudmark.com ...
Jun 19 17:35:18.852717 admin[82968]: [ 3] Unable to connect to discovery.razor.cloudmark.com:2703; Reason: Network is unreachable.
Jun 19 17:35:18.852780 admin[82968]: [ 5] Razor Discovery Server discovery.razor.cloudmark.com is unreachable
Jun 19 17:35:18.852836 admin[82968]: [ 1] razor-admin error: nextserver: Bootstrap discovery failed. Giving up.

The hosts at discovery.razor.cloudmark.com have proper AAAA records and a connectivity test via nc worked fine.

I quickly hacked up /usr/share/perl5/Razor2/Client/Core.pm to use IO::Socket::IP instead of IO::Socker::INET (cf. https://www.perl.org/about/whitepapers/perl-ipv6.html) and was able to run the discovery as expected.

mss commented 2 years ago

I have to correct my initial report: Razor/Cloudmark does not publish any AAAA records but since I use NAT64/DNS64 I am able to talk to the hosts anyway with my changes from #13.