Modulo 6 · 6.1
Come funzionano i filtri
Modulo 6: In automatico: filtri e assenza · Tempo di lettura: 10 minuti
Obiettivo della lezione: Al termine di questa lezione saprà spiegare dove e quando vengono eseguiti i filtri, leggere uno script di filtri in Sieve e prevedere in quale cartella finirà un messaggio in arrivo.
Concetti chiave: filtro, Sieve, ManageSieve, gruppo di filtri, regola, condizione, azione, conservazione implicita, stop, contiene, è uguale a, corrisponde all'espressione
I filtri vengono eseguiti sul server
Un filtro ordina automaticamente la Sua posta: i messaggi con "fattura" nell'oggetto vanno nella cartella Fatture, le newsletter in una cartella a parte. La cosa più importante da sapere è che questo smistamento non avviene nella webmail, ma sul server di posta, nel momento in cui un messaggio viene consegnato nella Sua casella.
Ne derivano tre conseguenze:
- I filtri funzionano anche quando la webmail è chiusa. Il Suo portatile può restare spento. Sul telefono il messaggio compare subito nella cartella giusta.
- I filtri agiscono solo sulla posta nuova. I messaggi già presenti nella Sua casella restano dove sono. Se crea un filtro oggi, i messaggi vecchi dovrà spostarli Lei.
- I filtri valgono per una sola casella di posta. Ogni casella ha i propri filtri. Se desidera regolare qualcosa per tutte le caselle del Suo dominio, ad esempio bloccare un mittente, lo deve fare nel pannello di gestione del Suo hosting.
I filtri sono scritti in Sieve, un linguaggio semplice pensato appositamente per filtrare la posta (RFC 5228). Il server di posta di WebOké utilizza Dovecot con Pigeonhole, l'implementazione Sieve di Dovecot. La webmail trasforma le scelte che Lei fa nel modulo in uno script Sieve e lo invia al server tramite il protocollo ManageSieve (RFC 5804). Non deve scrivere Sieve, ma chi sa leggerlo capisce esattamente che cosa fanno i propri filtri.
Gruppo di filtri, regole, condizioni e azioni
Un gruppo di filtri è lo script completo: tutti i filtri della Sua casella in un unico file. Può avere più gruppi di filtri, ma ne è sempre attivo uno solo.
Nel gruppo di filtri si trovano i filtri, nella webmail chiamati anche regole. Ogni filtro ha:
- un nome, che serve solo a Lei;
- un ambito: il messaggio deve soddisfare tutte le regole, una qualsiasi delle regole, oppure il filtro vale per tutti i messaggi;
- una o più condizioni: dove guarda il filtro (oggetto, mittente, un'altra intestazione), come confronta e con quale testo;
- una o più azioni: che cosa succede se le condizioni sono soddisfatte.
Per il confronto esistono tre modalità:
| Nella webmail | In Sieve | Significato |
|---|---|---|
| contiene | :contains | il testo compare in un punto qualsiasi dell'intestazione |
| è uguale a | :is | l'intestazione è esattamente questo testo |
| corrisponde all'espressione | :matches | modello con * (zero o più caratteri) e ? (esattamente un carattere) |
In tutte e tre le modalità maiuscole e minuscole non contano. Per impostazione predefinita Sieve confronta con la regola i;ascii-casemap, che tratta allo stesso modo maiuscole e minuscole. "fattura" trova quindi anche "FATTURA" e "Fattura".
Ecco come si presenta un gruppo di filtri
Nella webmail può visualizzare il gruppo di filtri come testo con Filtri > Azioni > Modifica gruppo di filtri. Un esempio come lo scrive la webmail:
require ["fileinto"];
# rule:[Newsletter]
if exists "List-Id"
{
fileinto "Newsletter";
stop;
}
# rule:[Fatture]
if allof (header :contains "subject" "fattura")
{
fileinto "Fatture";
}
# rule:[Collega Luca]
if false # header :contains "from" "luca@example.com"
{
fileinto "INBOX.Team";
}Riga per riga:
require ["fileinto"];chiede al server l'estensione necessaria per spostare un messaggio in una cartella. La webmail la inserisce da sola in cima, insieme a tutte le estensioni usate dallo script.# rule:[Newsletter]è un commento. Grazie a esso la webmail riconosce il nome del Suo filtro. Il server ignora questa riga.if exists "List-Id"è la condizione: il messaggio ha un'intestazione List-Id. Le newsletter e le mailing list ce l'hanno (RFC 2919).fileinto "Newsletter";sposta il messaggio nella cartella Newsletter. Il nome della cartella è il nome completo sul server, con il punto come separatore (lezione 5.1). Una cartella sotto Posta in arrivo si chiama quindiINBOX.Team.stop;interrompe l'intero script. I filtri successivi non esaminano più questo messaggio. Nella webmail questa azione si chiama Non valutare le regole successive.if false # ...è un filtro disattivato. Se disattiva Filtro abilitato, la webmail trasforma la condizione infalse: mai vera. La vecchia condizione resta come commento, così potrà riattivarla in seguito.

Dall'alto verso il basso
Il server legge lo script dall'alto verso il basso ed esamina ogni filtro. Valgono tre regole.
1. Senza azioni il messaggio resta in Posta in arrivo. Sieve prevede la conservazione implicita (implicit keep, RFC 5228, sezione 2.10.2): se nessun filtro fa qualcosa, il messaggio arriva semplicemente in Posta in arrivo.
2. Dopo uno spostamento il messaggio non si trova anche in Posta in arrivo. Un fileinto disattiva la conservazione implicita. Il messaggio finisce nella cartella scelta e non anche in Posta in arrivo. Se li desidera entrambi, usi Copia messaggio in.
3. Senza stop vengono esaminati anche i filtri successivi. Se manca stop, il server passa al filtro successivo. Se anche quel filtro corrisponde, il server esegue anche la sua azione. Due spostamenti verso due cartelle significano che il messaggio finisce in entrambe. Con stop decide il primo filtro che corrisponde.
Per questo l'ordine è importante. Nell'esempio qui sopra Newsletter si trova sopra Fatture, con uno stop. Una newsletter con "La Sua fattura" nell'oggetto va quindi in Newsletter e non in Fatture. Se inverte l'ordine, la stessa newsletter finisce in Fatture, perché quel filtro non ha uno stop e ora viene per primo. La newsletter si troverebbe addirittura in entrambe le cartelle. Metta quindi in cima i filtri più specifici e assegni loro uno stop.
Seguire un messaggio passo per passo: ecco come prevederlo
Prenda un messaggio e segua lo script come fa il server:
- Cominci dal primo filtro. È disattivato (
if false)? Lo salti. - La condizione è soddisfatta? Guardi con attenzione l'intestazione:
subjectè l'oggetto,fromil mittente con nome e indirizzo,toil destinatario. - Se sì: esegua le azioni. Se c'è
stop, ha finito. - Se no, oppure se non c'è uno stop: passi al filtro successivo.
- Alla fine: se nessun filtro ha spostato o eliminato il messaggio, questo si trova in Posta in arrivo (
INBOX).
Con questi cinque passaggi può leggere qualsiasi script, anche se è lungo.
In pratica: ecco come funziona nella webmail
I filtri si trovano in Impostazioni > Filtri. L'elenco mostra i Suoi filtri nell'ordine in cui il server li esegue; per cambiare l'ordine basta trascinarli. In Azioni trova Modifica gruppo di filtri: lì può vedere e modificare lo script come testo. I passaggi per creare un nuovo filtro sono descritti nel manuale di Roundcube, alla voce Creare un filtro. In altre webmail funziona in modo simile: Gmail ha i filtri, Outlook.com le regole. Non usano Sieve, ma anche lì contano l'ordine e lo stop.
Riepilogo
- I filtri vengono eseguiti sul server di posta al momento della consegna, quindi anche quando la webmail è chiusa, e solo sulla posta nuova.
- La webmail scrive i Suoi filtri come script Sieve (RFC 5228) e lo carica sul server tramite ManageSieve.
- Contiene, è uguale a e corrisponde all'espressione per impostazione predefinita non distinguono tra maiuscole e minuscole.
- Se nessun filtro fa qualcosa, il messaggio resta in Posta in arrivo; dopo uno spostamento non si trova anche in Posta in arrivo.
- I filtri vengono eseguiti dall'alto verso il basso; stop termina lo script, quindi è l'ordine a determinare il risultato.
Quiz
Esercizio
Esercizio A6.1: Dove finisce questa e-mail? Apra il materiale filters-1.txt, un gruppo di filtri come lo scrive la webmail, e berichten-1.txt, con le intestazioni di quattro messaggi in arrivo, numerati da 1 a 4. Segua ogni messaggio secondo i cinque passaggi di questa lezione: dall'alto verso il basso, saltando i filtri disattivati e facendo attenzione allo stop. Per ogni messaggio indichi il nome della cartella in cui finisce, esattamente come compare nello script; se il messaggio finisce in Posta in arrivo, scriva INBOX. Il programma confronta le Sue quattro risposte con le soluzioni e per ogni messaggio mostra quale filtro è stato decisivo.
Per saperne di più
Dove sono indicati passaggi nella webmail, si riferiscono alla webmail di WebOké; in altre webmail funziona in modo simile.
- Roundcube Webmail 7.1: Creare un filtro
- Roundcube Webmail 7.2: Esempi di filtri utili
- Regole e-mail lato server (filtri sul server)
- RFC 5228, Sieve: An Email Filtering Language (in inglese): https://www.rfc-editor.org/rfc/rfc5228
- RFC 5804, ManageSieve (in inglese): https://www.rfc-editor.org/rfc/rfc5804
- RFC 2919, List-Id (in inglese): https://www.rfc-editor.org/rfc/rfc2919
- Visualizzare, scaricare e ripristinare i Suoi filtri come script Sieve
