Recursion Limit in sa-learn  [GELÖST]

Locked
User avatar
mhagge
Community Moderator
Posts: 487
Joined: Wed 8. Aug 2018, 15:19

Recursion Limit in sa-learn

Post 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
User avatar
Alexander
Keyweb AG
Posts: 3811
Joined: Wed 20. Jan 2016, 02:23

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

Post 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
Attachments
3.4.6.txt
(34.26 KiB) Downloaded 86 times
3.4.4.txt
(33.96 KiB) Downloaded 86 times
Mit freundlichen Grüßen / Best regards
Alexander Mahr

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
User avatar
mhagge
Community Moderator
Posts: 487
Joined: Wed 8. Aug 2018, 15:19

Re: Recursion Limit in sa-learn

Post 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
Locked