Dacă Rspamd Bayes nu învață pe serverul tău DirectAdmin, cauza este de obicei simplă: Bayes nu a văzut încă suficiente mesaje legitime și suficiente mesaje spam sau nu ai configurat deloc DirectAdmin și Dovecot să trimită date de antrenare către Rspamd. Indiciul clar este un mesaj de log de tipul: The ham class needs more training samples. Currently: 0; minimum 200 required. Stack-ul de mail din DirectAdmin poate scana mesajele fără probleme, în timp ce Bayes nu contribuie deloc. De aceea poți vedea scorare spam, verificări SPF, verificări DKIM și reguli declanșate, dar să nu vezi niciodată BAYES_HAM sau BAYES_SPAM influențând scorul final.

Din experiența noastră cu administrarea serverelor de producție, aceasta este una dintre cele mai frecvente presupuneri greșite în mediile de hosting bazate pe panou de control. Administratorii se așteaptă ca Bayes să „învețe automat” doar pentru că filtrarea antispam este activată. Nu așa funcționează. Rspamd are nevoie de un backend Redis pentru statistici, de suficiente exemple echilibrate de mesaje legitime și spam și de un flux real de antrenare, cum ar fi învățare manuală cu rspamc, încărcări din WebUI sau acțiuni Dovecot IMAPSieve atunci când utilizatorii mută mesaje în și din Junk. Documentația actuală Rspamd arată în continuare min_learns = 200 atât pentru ham, cât și pentru spam, iar Redis este cerut explicit pentru învățarea Bayesiană și stocarea statisticilor. Un thread recent din forumul DirectAdmin care folosește exact eroarea menționată confirmă aceeași cauză. Setări statistici Rspamd Configurarea inițială Rspamd Thread DirectAdmin forum

Ce este de fapt stricat

De obicei, nimic nu este stricat la nivelul motorului de scanare. Rspamd scanează mesajele. Exim îi predă mailul. DirectAdmin afișează în panou setările familiare pentru spam. Partea care lipsește este bucla de învățare.

  • Mesajele sunt scanate, dar Bayes nu se activează niciodată pentru că clasificatorul este sub pragul minim de antrenare.
  • Redis lipsește, este configurat greșit sau nu poate fi accesat, iar statisticile nu se persistă.
  • Ai urmat un ghid mai vechi DirectAdmin orientat pe SpamAssassin care apelează sa-learn, iar asta nu se aplică la Rspamd.
  • Utilizatorii mută mesaje între Inbox și Junk, dar niciun hook IMAPSieve sau mecanism echivalent nu trimite acele mesaje către rspamc learn_spam sau rspamc learn_ham.
  • Numărul de exemple ham și spam este dezechilibrat puternic, iar autolearn este sărit din cauza verificărilor de balans.

Ultimul punct contează mai mult decât cred majoritatea administratorilor. O căsuță poștală cu sute de exemple de spam evident și aproape niciun mesaj legitim real va învăța Rspamd lecția greșită. Pe servere de producție vedem asta după migrări făcute în grabă. Clienții importă vechile foldere Junk, dar nimeni nu importă mail din Sent, Inbox sau mesaje tranzacționale ca ham. Apoi Bayes devine fie inactiv, fie părtinitor.

Faptele minime pe care trebuie să le știi înainte să schimbi ceva

Documentația actuală Rspamd pentru statistici arată un clasificator Bayes standard cu backend = "redis", min_tokens = 11 și min_learns = 200. Ea documentează și pragurile pentru autolearn, împreună cu mecanisme de control al echilibrului, cum ar fi check_balance și min_balance. Clientul oficial rspamc suportă în continuare learn_spam, learn_ham și stat. Workerul controller din Rspamd gestionează statisticile și operațiunile de learning, motiv pentru care WebUI poate antrena mesaje dacă controllerul este configurat corect. Setări statistici Rspamd Pagina de manual rspamc Worker controller Rspamd

Pe partea DirectAdmin, documentația actuală confirmă că setările Rspamd per utilizator sunt scrise în /etc/rspamd/users.d/username.conf. Tot ea documentează logul principal Rspamd în /var/log/rspamd/rspamd.log și recomandă urmărirea logurilor de mail precum /var/log/exim/mainlog în timpul testelor live. DirectAdmin livrează și configurația Rspamd prin CustomBuild, iar versiunile mai noi permit override-uri personalizate în calea CustomBuild pentru Rspamd, în loc să modifici direct fișierele generate. Documentație DirectAdmin pentru spam incoming Directoare și locații DirectAdmin DirectAdmin changelog 1.646

Primele loguri pe care trebuie să le citești

Nu începe cu interfața grafică. Începe cu logurile și contoarele.

tail -f /var/log/rspamd/rspamd.log /var/log/exim/mainlog

rspamc stat

journalctl -u rspamd -n 100 --no-pager

Ce urmărești:

  • Linii care spun că ham sau spam are nevoie de mai multe exemple de antrenare
  • Erori de conexiune către Redis
  • Erori de acces controller sau de permisiuni în timpul antrenării
  • Mesaje scanate cu simboluri normale, dar fără simboluri Bayes
  • Sărituri repetate ale autolearn din cauza echilibrului sau a verificărilor de duplicate learning

Un output sănătos pentru rspamc stat ar trebui să arate contoare legate de Bayes și totaluri de mesaje învățate. Dacă nu le vezi, oprește-te acolo. Bayes nu poate clasifica ceea ce nu a învățat niciodată. Pe un server de shared hosting, distincția asta contează pentru că interfața poate face întreaga configurație să pară completă, chiar și atunci când backend-ul statistic este gol.

Pasul 1: confirmă că Redis este disponibil

Ghidul oficial de configurare Rspamd este explicit: Redis este necesar pentru statistici și pentru învățarea Bayesiană. Fără Redis, verificările statice precum SPF, DKIM, DMARC și interogările RBL funcționează în continuare, așa că filtrul pare activ în timp ce Bayes este mort. Asta păcălește mulți administratori. Configurarea inițială Rspamd

redis-cli ping
ss -tlnp | grep 6379
journalctl -u rspamd | grep -i redis

Trebuie să vezi PONG, un socket Redis care ascultă și lipsa erorilor repetate de conexiune în jurnalul Rspamd. Dacă Redis este oprit sau ascultă pe altă adresă decât cea configurată în /etc/rspamd/local.d/redis.conf, învățarea Bayes nu va fi salvată niciodată.

Pasul 2: verifică setările clasificatorului Bayes

Verifică configurația statistică activă. În funcție de distribuție și de pachetul instalat, clasificatorul poate fi definit într-un fișier precum /etc/rspamd/statistic.conf, /etc/rspamd/local.d/statistic.conf sau într-un include livrat de pachet. Calea exactă contează mai puțin decât valorile active.

rspamadm configdump statistic | less

Verifică aceste elemente de bază:

classifier "bayes" {
  tokenizer {
    name = "osb";
  }
  backend = "redis";
  min_tokens = 11;
  min_learns = 200;

  statfile {
    symbol = "BAYES_HAM";
    spam = false;
  }
  statfile {
    symbol = "BAYES_SPAM";
    spam = true;
  }

  learn_condition = "return require('lua_bayes_learn').can_learn";
}

Dacă backend nu este Redis sau clasificatorul lipsește complet, repară asta înainte de orice antrenare. Dacă rulezi DirectAdmin, păstrează schimbările în calea de personalizare suportată acolo unde este posibil, în loc să editezi direct fișierele generate. Layout-ul mai nou CustomBuild din DirectAdmin suportă explicit personalizări Rspamd în directorul CustomBuild pentru Rspamd. Setări statistici Rspamd DirectAdmin changelog 1.646

Pasul 3: antrenează manual înainte să automatizezi

Nu sări direct în depanarea IMAPSieve. Mai întâi demonstrează că învățarea funcționează manual. Clientul oficial suportă exact comenzile de care ai nevoie:

rspamc learn_spam /root/samples/spam-001.eml
rspamc learn_ham /root/samples/ham-001.eml
rspamc stat

Folosește fișiere de mesaj raw în format RFC822, nu text copiat din previzualizarea unui client de mail. Greșeala asta este comună. Dacă body-ul mesajului este alterat, incomplet sau lipsit de headere, calitatea antrenării scade imediat. În producție, de obicei exportăm mesaje reale din Maildir sau le preluăm din WebUI, din zona de scanare și learning.

Pentru antrenare în bulk:

find /root/spam/ -type f -print0 | xargs -0 -I {} rspamc learn_spam "{}"
find /root/ham/  -type f -print0 | xargs -0 -I {} rspamc learn_ham "{}"

rspamc stat | grep -A5 BAYES

Recomandarea actuală Rspamd este în continuare să antrenezi cu cel puțin 200 de mesaje spam și 200 de mesaje ham. Acesta este pragul minim pentru a începe clasificarea, nu un număr magic pentru acuratețe bună. Din experiența noastră, 500 până la 1.000 de exemple curate per clasă produc rezultate mai stabile pe noduri de hosting aglomerate, cu multe domenii. Seturile mici funcționează, dar sunt zgomotoase. Configurarea inițială Rspamd

Pasul 4: leagă DirectAdmin și Dovecot de Bayes în mod continuu

Aici se rup multe implementări DirectAdmin. Pagina oficială DirectAdmin pentru „Automatically marking moved mail to Junk as spam” este scrisă în logica veche SpamAssassin și face referire la Pigeonhole și Sieve. Conceptul rămâne corect, dar pentru Rspamd ai nevoie ca aceeași logică de mutare a mesajelor între foldere să apeleze rspamc, nu sa-learn. Nepotrivirea asta este exact motivul pentru care postările recente din forum se plâng de același lucru. Documentație DirectAdmin pentru spam incoming Thread DirectAdmin forum

Documentația DirectAdmin arată în continuare punctele de declanșare IMAPSieve importante:

# Din alt folder către Junk
imapsieve_mailbox1_name = Junk
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_before = file:/usr/local/bin/dovecot-sieve/report-spam.sieve

# Din Junk către alt folder
imapsieve_mailbox2_name = *
imapsieve_mailbox2_from = Junk
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_before = file:/usr/local/bin/dovecot-sieve/report-ham.sieve

Pentru Rspamd, pipeline-ul tău Sieve sau scriptul wrapper trebuie să extragă mesajul și să apeleze acțiunea corectă de learning. Un model obișnuit este un wrapper shell care citește mesajul din stdin și îl predă către rspamc. Scriptul exact diferă în funcție de distribuție și de versiunea Dovecot, mai ales pe setup-uri mai noi cu Dovecot 2.4, dar principiul rămâne același. Ghidurile recente din forumul DirectAdmin pentru Dovecot 2.4 și IMAPSieve reflectă exact această abordare mai nouă. Ghid DirectAdmin pentru learning Rspamd cu Dovecot 2.4

#!/bin/sh
# /usr/local/bin/rspamd-learn-spam.sh
/usr/bin/rspamc learn_spam

#!/bin/sh
# /usr/local/bin/rspamd-learn-ham.sh
/usr/bin/rspamc learn_ham

Arată simplu, dar cazurile-limită nu sunt simple. Utilizatorul de serviciu Dovecot trebuie să aibă voie să apeleze comanda și să acceseze sursa mesajului în condiții sigure. Privilegiile controllerului trebuie să fie corecte dacă mediul tău le cere. Și dacă același mesaj a fost deja învățat, poți vedea sărituri care seamănă cu erori. Primul lucru pe care îl verificăm când un client spune „antrenarea nu face nimic” este dacă scriptul rulează efectiv, apoi dacă mesajul este un mesaj raw real, apoi dacă se mișcă sau nu contoarele din Redis.

Cum citești logurile fără să ghicești

Citește aceste loguri în această ordine în timpul unui test live în care muți un mesaj în Junk și apoi unul înapoi în Inbox:

  • /var/log/rspamd/rspamd.log pentru evenimente de learning și clasificare
  • /var/log/exim/mainlog pentru fluxul de livrare și headerele antispam din traseul mesajului
  • journalctl -u rspamd pentru erori la nivel de serviciu, cum ar fi probleme Redis sau de configurare
  • Logurile Dovecot din journald sau din logul de mail al distribuției tale, dacă hook-urile IMAPSieve nu se declanșează

Mesaje tipice utile includ:

  • The ham class needs more training samples. Currently: 0; minimum 200 required
  • Mesaje de timeout Redis sau connection refused
  • Erori de sintaxă în configurare după modificări
  • Sărituri de tip duplicate-learn sau already-in-class

Logging-ul Rspamd suportă niveluri de la error până la debug, iar fiecare task include un identificator unic pe care îl poți urmări între intrări. Asta este foarte util când urmărești un singur mesaj de test prin tot pipeline-ul. Ridică nivelul de verbositate doar cât timp reproduci problema. Dacă lași debug activ pe un nod aglomerat, vei produce mai mult zgomot decât valoare. Setări logging Rspamd

Motive frecvente pentru care Bayes tot nu intră în joc

  • Ai antrenat doar spam. Bayes are nevoie de ambele clase. Un raport dominat de spam poate bloca sau distorsiona learning-ul.
  • Ai antrenat fișierele greșite. Exporturile din webmail, fragmentele copiate sau fișierele MIME defecte dau rezultate slabe.
  • Te uiți prea devreme la scoruri. Faptul că ai depășit 200 de mesaje per clasă activează clasificarea. Nu garantează imediat semnale puternice.
  • Modifici direct fișierele generate de DirectAdmin. Rebuild-urile le vor suprascrie. Folosește căile suportate pentru personalizare.
  • Te aștepți la learning per utilizator, dar ai configurat doar Bayes global. Pe shared hosting, diferența asta poate conta dacă multe domenii fără legătură împart același clasificator.

Un detaliu operațional important: pe un server de shared hosting cu 50 de căsuțe poștale, Bayes per utilizator sună atractiv, dar de multe ori performează slab dacă volumele per mailbox sunt mici. Learning-ul global este de obicei mai rezistent, cu excepția cazurilor în care găzduiești populații de mail foarte diferite care se otrăvesc reciproc. De aceea evaluăm volumul și amestecul de clienți înainte să activăm statistici per utilizator pe medii de mail găzduit.

Când nu mai merită să faci totul manual

Dacă rulezi doar câteva căsuțe business, poți rezolva problema singur. Dacă administrezi multe domenii, mulți utilizatori și false positive recurente, stack-ul de mail devine muncă operațională, nu o configurare făcută o singură dată. Din acel punct, o platformă administrată corect, cu găzduire de email stabilă și cu DNS, DKIM, SPF și filtrare antispam configurate cum trebuie, îți economisește timp.

Pentru echipele care folosesc deja hosting bazat pe DirectAdmin, planurile ServerSpan de găzduire web și serviciile de găzduire email acoperă stratul de infrastructură și lasă în același timp loc pentru administrare din panou. Valoarea nu este că Bayes devine magic. Valoarea este că partea plictisitoare, cum ar fi mentenanța stack-ului de mail, integrarea cu panoul și verificările de sănătate ale serviciilor, este rezolvată înainte ca utilizatorii să înceapă să mute mesaje de colo-colo ca să compenseze un filtru defect.

Un plan practic de remediere

  1. Rulează rspamc stat și confirmă că există contoare Bayes.
  2. Verifică Redis cu redis-cli ping și logurile Rspamd.
  3. Extrage configurația activă cu rspamadm configdump statistic.
  4. Antrenează manual 200 de mesaje ham și 200 de mesaje spam folosind fișiere raw de mesaj.
  5. Verifică din nou rspamc stat.
  6. Testează livrarea live cu un mesaj ham cunoscut și un mesaj spam cunoscut.
  7. Abia apoi automatizează learning-ul din mutările către folderul Junk cu Dovecot IMAPSieve sau cu un mecanism wrapper echivalent.
  8. Păstrează în timp un echilibru sănătos între antrenarea ham și spam.

Dacă sari peste pasul 4 și intri direct în automatizarea mutărilor dintre foldere, vei pierde ore întregi depanând Dovecot, în timp ce problema reală este că Bayes nu are un set de date util. Repară mai întâi clasificatorul, apoi fluxul de lucru.

Pentru context suplimentar despre operarea serviciilor de mail, vezi Ghidul livrării emailurilor: de ce găzduirea web îți poate garanta succesul în comunicare și Găzduire email business: de ce „email-ul gratuit” eșuează la scară.

Sursă și Atribuire

Aceast articol se bazează pe date originale ale serverspan.com. Pentru metodologia completă și pentru a asigura integritatea datelor, articolul original trebuie citat. Sursa canonică este disponibilă la: Rspamd Bayes în DirectAdmin nu învață: cum antrenezi filtrarea de spam și cum citești logurile corecte.