Page 1 of 1

Recursion Limit in sa-learn

Posted: Wed 8. Dec 2021, 09:12
by mhagge
Hat das schon mal jemand gehabt und evtl. eine Lösung?

Ich habe jetzt seit ein paar Tagen auf 2 Servern das Problem, dass der Keyhelp Cronjob zum lernen der Spam-Mails aus den "junk"-Ordnern (dieser Aufruf: nice /usr/bin/sa-learn --dbpath /var/spool/spamassassin --spam /var/mail/vhosts/*/*/.Junk > /dev/null ) eine Fehlermeldung wirft:

Code: Select all

Complex regular subexpression recursion limit (32766) exceeded at /usr/share/perl5/Mail/SpamAssassin/HTML.pm line 753.
Wenn ich den Aufruf aus dem Cronjob mal manuell aufrufe, kommt die Fehlermeldung auch, allerdings auch eine Meldung, dass x Mails gelernt wurden - irgendwas passiert also trotzdem, insofern evtl. auch nur ein "optisches" Problem.

Wenn man nach der Meldung googelt, gibt es da diverse Fundstellen - ich hab allerdings nichts wirklich aussagekräftiges gefunden. Im Jahr 2016 hat es da wohl auch mal einen Bug gegeben, aber das sollte eigentlich nicht mehr relevant sein (das Spamassassin ist Version 3.4.2. das "Original" von Debian 10

Re: Recursion Limit in sa-learn  [GELÖST]

Posted: Wed 8. Dec 2021, 09:31
by Alexander
Scheint ein Bug im Spamassassin zu sein, ähnlich geartet wie hier: viewtopic.php?t=10331

Habe also die fragliche Datei "/usr/share/perl5/Mail/SpamAssassin/HTML.pm" mal mit der neuerer Versionen verglichen und tatsächlich gibt es an besagter Stelle eine Änderung:

Original (3.4.2):

Code: Select all

752 | # NBSP:  UTF-8: C2 A0, ISO-8859-*: A0	
753 |  if ($text !~ /^(?:[ \t\n\r\f\x0b]|\xc2\xa0)*\z/s) {

Code: Select all

752 | # NBSP:  UTF-8: C2 A0, ISO-8859-*: A0	
753 | # Bug 7374 - regex recursion limit exceeded
754 |  #if ($text !~ /^(?:[ \t\n\r\f\x0b]|\xc2\xa0)*\z/s) {
755 |  # .. alternative way, remove from string and see if there's anything left
756 |  if (do {(my $tmp = $text) =~ s/(?:[ \t\n\r\f\x0b]|\xc2\xa0)//gs; length($tmp)}) {
Nach Austauschen der fraglichen Zeilen sollte es wieder funktionieren, alternativ OS-Upgrade ;).

Anbei auch einmal die beiden Dateien von Version 3.4.4 (Ubuntu 20) und 3.4.6 (Debian 11) zum selber einmal vergleichen, z.B. hier:
https://www.diffchecker.com/Mx5vub3L

Re: Recursion Limit in sa-learn

Posted: Wed 8. Dec 2021, 12:58
by mhagge
Hallo Alexander,

wow, Danke Dir!

OS-Upgrade steht eh an, da werde ich da denke ich nicht mehr manuell rumpfuschen - für die paar Tage ignoriere ich das dann einfach :D