Il fenomeno dello spam è uno dei problemi che affligge maggiormente non solo le caselle di posta elettronica ma anche chi gestisce, per lavoro o per passione, blogW, forumW e/o piattaforme di social network.
Ormai esistono molti strumenti per combattere questa ormai fastidiosa consuetudine. I più diffusi si basano sull’ausilio di servizi on line, quali ad esempio Akismet di Automattic, che consistono sostanzialmente in webserviceW ai quali effettuare delle richieste di validazione dei dati costituenti il messaggio da recepire (sia esso un commento ad un post pubblicato su un blog, una risposta ad un thread su un forum, o anche un semplice messaggio inviato tramite un form di contatto).
Blogengine.NET è dotato di un sistema antispam che impedisce la registrazione dei commenti da parte di bot automatizzati: inoltre tramite le API di supporto alla gestione delle estensioni, è possibile creare dei plug-in anche molto complessi che consentono di intercettare e gestire l’intero ciclo di moderazione, approvazione e pubblicazione dei commenti in maniera estremamente agevole.
In passato avevo già segnalato il rilascio di un’estensione che consentiva l’integrazione del servizio offerto da Akismet anche nella gestione dei commenti da parte di Blogengine.NET. Sfortunatamente il plug-in realizzato da Justin Etheredge, si limitava semplicemente a validare o meno il commento, non dando alcuna possibilità di recuperarlo nel caso venisse classificato come spam (nel caso specifico veniva semplicemente rigettato e non messo in moderazione).
Ruslan Tur, ha pubblicato recentemente una recensione di una nuova piattaforma anti-spam, del tutto simile ad Akismet, anche se evidentemente non non parimenti famosa, denominata Waegis. Questo servizio, nelle intenzioni degli sviluppatori, è orientato principalmente al supporto di progetti sviluppati su piattaforma .NET.
Infatti è possibile scaricare i plug-in di supporto nativi per l’interfacciamento con il servizio stesso, per Community Server, Telligent Graffiti CMS e, naturalmente, anche per BlogEngine.NET, oltre che una libreria open source scritta in C# finalizzata all’uso di Waegis virtualmente in tutte le applicazioni sviluppabili in tale linguaggio o interfacciabili con esso.
Come per Akismet, l’utilizzo di Waegis è vincolato al rilascio di una API Key, senza della quale non è possibile accedere al servizio. Purtroppo quest’ultimo non è del tutto gratuito: infatti è possibile usufruire, nella sua versione free, di 5000 chiamate mensili alle API di servizio, eventualmente spalmabili su fino a 10 siti differenti.
Questo blog, naturalmente, rientra in maniera assolutamente agevole nei limiti previsti dalla versione gratuita del servizio (dalla nascita ad oggi, infatti, ha registrato poco meno di 1600 commenti, spalmati su un periodo di circa 15 mesi). Con queste premesse è stato ovviamente fisiologico voler provare le caratteristiche di Waegis.
Ad essere sincero non sono rimasto molto soddisfatto, non tanto dal sistema di valutazione dello spam (che mi è sembrato decisamente efficiente, nonostante abbia considerato come spam i miei stessi commenti di risposta) quanto sia dal plug-in sviluppato per Blogengine.NET, che dalla gestione della moderazione dei commenti insita in quest’ultimo.
Infatti il plug-in per funzionare correttamente necessità che sia attiva la moderazione dei commenti, e questo è un vincolo per me inaccettabile, dato che dovrebbe operare anche nella modalità contraria.
In realtà il problema è dovuto al fatto che esiste, a mio avviso, un errore formale (non un bug) nella procedura di visualizzazione dei commenti. Questi infatti vengono mostrati in coda ad un post, a prescindere dello stato del commento stesso (ovvero in moderazione o approvato) se l’opzione di moderazione globale di questi è disattivata.
Ruslan, interrogato dal sottoscritto sul fenomeno, sostiene che si tratta di una scelta progettuale voluta: se la moderazione è disattivata, i commenti vanno visualizzati a prescindere dal loro stato. A mio avviso è un errore formale grave perché non consente il corretto funzionamento dell’estensione di Waegis nel caso specifico, oltre che impedire la corretta esecuzione anche di altri plug-in che volessero utilizzare le routine demandate all’intercettazione della validazione dei commenti.
Ad ogni modo la modifica per la risoluzione del problema è decisamente semplice. Infatti è sufficiente aprire il file CommentView.aspx.cs presente nella cartella /User Controls/ ed individuare lo snippet di codice:
135: //Add approved Comments
136: foreach (Comment comment in Post.Comments)
137: {
138: CommentViewBase control = (CommentViewBase)LoadControl(path);
139: if (comment.IsApproved || !BlogSettings.Instance.EnableCommentsModeration)
140: {
141: control.Comment = comment;
142: control.Post = Post;
143: phComments.Controls.Add(control);
144: }
145: }
ove è necessario modificare solo la linea 139, per cui il ciclo diventa:
135: //Add approved Comments
136: foreach (Comment comment in Post.Comments)
137: {
138: CommentViewBase control = (CommentViewBase)LoadControl(path);
139: if (comment.IsApproved)
140: {
141: control.Comment = comment;
142: control.Post = Post;
143: phComments.Controls.Add(control);
144: }
145: }
Altro punto a sfavore del plug-in è naturalmente il mancato riconoscimento dei commenti registrati dagli utenti di Blogengine.NET (siano essi amministratori o editori).
Al di là della possibilità che essi stessi siano o meno riconosciuti come spam (ma questo ovviamente può dipendere da tutta una serie di fattori legati principalmente all’indirizzo di email utilizzato), non dovrebbero comunque essere sottoposti al filtro anche perchè andrebbero a sottrarre inutilmente delle chiamate alle API di Waegis dal numero massimo disponibile. Anche quest’ultimo dettaglio è comunque facilmente risolvibile: basta infatti inserire un banale controllo nel codice dell’estensione (che naturalmente è accessibile).
Il giudizio finale su Waegis è difficile da assegnare: il servizio funziona in maniera egregia, oserei dire con lo stesso grado di severità e di attenzione operato da Akismet (per lo meno per quanto mi è stato possibile provare).
Il mio consiglio è comunque quello di provarlo registrandosi sul sito: si preleva la propria API Key dopo aver fatto il login e cliccato dalla home page sul pulsante Get Started, indi si scarica e si installa nella consueta modalità l’estensione per Blogengine.NET, tendendo presente che quest’ultima richiede anche la copia di una libreria, fornita in dotazione, che va copiata nella cartella /Bin/ del proprio sito.
Se non si desidera attivare la moderazione dei commenti, è necessario per un corretto funzionamento, fare la modifica al codice appena descritta, mentre per quello che concerne il riconoscimento dell’autore del blog nei commenti, sarà necessario che il team di Waegis aggiorni il plug-in (il sottoscritto ha già provveduto ad informarli del problema).
I commenti sono come sempre a disposizione di chi vorrà condividere le sue esperienze in merito.
Aggiornamento
Come leggerete dal commento di Keyvan Nayyeri, il caso ha voluto che proprio alla data stessa di pubblicazione di questo articolo, Waegis abbia deciso di rendere completamente gratuito il suo servizio anti-spam. Inoltre, l'estensione per BlogEngine.NET verrà aggiornata per correggere l'anomalia da me rilevata sulla gestione dei commenti inseriti dagli autori dei post (o dagli amministratori).
Questo rende senz'altro più interessante l'offerta di Waegis, soprattutto in virtù del fatto che è orientata specificatamente verso la piattaforma .NET.