Seit einigen Tagen schmeißt mein Server regelmäßig einen Fehler bei der Aktualisierung der Spamassassin Regeln mit dem Hinweis auf die Datei RelayCountry.pm. Der Befehl, der dabei ausgeführt wird, ist:
test -e /usr/sbin/amavisd-new-cronjob && /usr/sbin/amavisd-new-cronjob sa-sync
Die Meldung dazu:
plugin: eval failed: Can't use an undefined value as a subroutine reference at /usr/share/perl5/Mail/SpamAssassin/Plugin/RelayCountry.pm line 219. Use of uninitialized value $countries in split at /usr/share/perl5/Mail/SpamAssassin/Plugin/RelayCountry.pm line 274.
Lange Rede kurzer Sinn. Ich habe im August 2016 Spamassassin um ein Regelwerk erweitert, dass die GeoIP-Informationen von E-Mails zur Bewertung der Spam-Wahrscheinlichkeit mit einbezieht. Das dabei verwendete Plugin GeoIP (legacy) wird seit dem 01.04.2018 nicht mehr weiter entwickelt.
Laut der nachfolgenden Mailingliste ist der Bug, der zu dem obigen Fehler führt, bei den Entwicklern von Spamassassin bekannt und soll in Version 3.4.3 gefixt.
"[...] it's a bug in RelayCountry.pm that can be triggered only if GeoIP is < 1.39 (without ipv6 support)."Quelle: https://lists.gt.net/spamassassin/users/212650#212650
Als Nachfolger für GeoIP (legacy) treten GeoIP2, IP::Country::Fast oder IP::Country::DB_File an. Um die Auswahl des zu verwendenden Plugins zu ermöglichen, wurden mit der Spamassassion Version 3.4.2 die Konfigurationsparameter country_db_type und country_db_path eingeführt.
The 'country_db_type' and 'country_db_path' options has been added to be able to choose in RelayCountry plugin between GeoIP legacy (discontinued from 04/01/2018), GeoIP2, IP::Country::Fast and IP::Country::DB_File. GeoIP legacy is still the default option but it will be deprecated in future releases.Quelle: https://svn.apache.org/repos/asf/spamassassin/branches/3.4/UPGRADE
Da bei Debian 9 Spamassassin 3.4.2 mitgeliefert wird, ist somit die Lösung, das Plugin Fast in der Detai /etc/spamassassin/local.cf zu verwenden.
# GeoIP Parameter country_db_type Fast
Vertrauen ist gut, kontrolle ist besser. Vor Verwendung des Parameters:
$ spamassassin -D --lint Nov 26 11:23:15.883 [25013] dbg: metadata: RelayCountry: IPv6 support not enabled, versions Geo::IP 1.39, GeoIP C API 1.4.7 required Nov 26 11:23:15.883 [25013] warn: plugin: eval failed: Can't use an undefined value as a subroutine reference at /usr/share/perl5/Mail/SpamAssassin/Plugin/RelayCountry.pm line 219.
Nach dem setzten des Parameters:
$ spamassassin -D --lint Nov 26 11:22:10.138 [24463] dbg: metadata: RelayCountry: Using database: IP::Country::Fast Wed May 15 17:29:48 2013