Modulo 6 · 6.1
Come funzionano i filtri
Modulo 6: 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 finisce 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 smista automaticamente la Sua posta: le e-mail con "factuur" (fattura) nell'oggetto nella cartella Facturen, le newsletter in una cartella dedicata. 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 recapitato nella Sua casella.
Ne derivano tre conseguenze:
- I filtri funzionano anche quando la webmail è chiusa. Il Suo portatile può essere spento. Sul telefono vedrà subito la posta nella cartella giusta.
- I filtri agiscono solo sulla posta nuova. La posta già presente nella Sua casella resta dov'è. Se oggi crea un filtro, i messaggi vecchi dovrà spostarli Lei.
- I filtri valgono per una sola casella di posta. Ogni casella ha i propri filtri. Se desidera impostare qualcosa per tutte le caselle del Suo dominio, ad esempio bloccare un mittente, lo faccia 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 fatte nel modulo in uno script Sieve e lo invia al server tramite il protocollo ManageSieve (RFC 5804). Lei non deve scrivere Sieve, ma chi sa leggerlo capisce esattamente 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 è attivo sempre 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 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: cosa succede se le condizioni sono soddisfatte.
Per il confronto esistono tre modi:
| 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 tutti e tre i casi maiuscole e minuscole non contano. Per impostazione predefinita Sieve confronta con la regola i;ascii-casemap, che tratta allo stesso modo maiuscole e minuscole. "factuur" trova quindi anche "FACTUUR" e "Factuur".
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 così come lo scrive la webmail:
require ["fileinto"];
# rule:[Nieuwsbrieven]
if exists "List-Id"
{
fileinto "Nieuwsbrieven";
stop;
}
# rule:[Facturen]
if allof (header :contains "subject" "factuur")
{
fileinto "Facturen";
}
# rule:[Collega Daan]
if false # header :contains "from" "daan@example.com"
{
fileinto "INBOX.Team";
}Riga per riga:
require ["fileinto"];chiede al server l'estensione necessaria per spostare in una cartella. La webmail la inserisce da sola in cima, con tutte le estensioni usate dallo script.# rule:[Nieuwsbrieven]è un commento. Grazie a esso la webmail riconosce il nome del Suo filtro. Il server ignora la 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 "Nieuwsbrieven";sposta il messaggio nella cartella Nieuwsbrieven (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 normalmente 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 anche i filtri successivi esaminano il messaggio. Se manca stop, il server prosegue con il 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 Nieuwsbrieven si trova sopra Facturen, con uno stop. Una newsletter con "Je factuur" nell'oggetto va quindi in Nieuwsbrieven e non in Facturen. Se inverte l'ordine, la stessa newsletter finisce in Facturen, 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: ecco come prevederlo
Prenda un messaggio e percorra lo script come fa il server:
- Inizi dal primo filtro. È disattivato (
if false)? Lo salti. - La condizione è soddisfatta? Guardi con precisione 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: come funziona nella webmail
I filtri si trovano in Impostazioni > Filtri. L'elenco mostra i filtri nell'ordine in cui il server li esegue; li trascini per cambiare l'ordine. Sotto Azioni trova Modifica gruppo di filtri: lì vede e modifica 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 del recapito, 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 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; lo stop termina lo script, quindi l'ordine determina il risultato.
Quiz
Esercizio
Esercizio A6.1: Dove finisce questa e-mail? Apra il materiale filters-1.txt, un gruppo di filtri così 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, facendo attenzione allo stop. Per ogni messaggio indichi il nome della cartella in cui finisce, esattamente come compare nello script; se il messaggio arriva in Posta in arrivo, indichi INBOX. Il programma confronta le Sue quattro risposte con la chiave di correzione e mostra per ogni messaggio quale filtro è stato decisivo.
Per saperne di più
Dove sono indicati passaggi nella webmail, valgono per la 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
