TOC

Ho appena finito di configurare il mio server domestico come mail server/rss aggregator.

Passo 0: I requisiti di sistema

  1. Zoe: un servizio tuttofare che si occupa di scaricare la posta (di vari account) ed i feed dei blog da me letti, memorizzare il tutto cronologicamente e darmi un'interfaccia accedibile via web browser che permetta la ricerca, la consultazione ed eventualmente di rispondere alle email.
  2. popFile: un filtro bayesiano che si occupa di analizzare il traffico sulla porta 110 (POP3) ed indicizzarlo per una più semplice archiviazione sui vari client di posta evoluti (Zoe compreso)
  3. Eudora: un client di posta free/shareware evoluto che adoro ed uso fin dalla sua prima versione. In realtà si può usare qualsiasi client di posta, anche outlook o thunderbird
  4. Java Sun: Zoe necessita per funzionare di Java, essendo scritto interamente in questo linguaggio.

il sistema operativo da me utilizzato è Windows, ma è irrilevante. Infatti sia Zoe che popFile funzionano anche su Linux e Mac Os X.

Passo 1: Installare ZOE

zoe does for your email what google does for the web.

L'installazione di Zoe è molto semplice bisogna innanzi tutto controllare di avere Java installato nel proprio sistema, se non fosse disponibile basta visitare il sito della Sun, successivamente scaricare dal sito ufficiale l'ultima release del pacchetto (mentre scrivo questa faq è la 0.55) e decomprimere il tutto in una cartella.

Essendo considerato un client di posta normale e non necessitando di una vera e propria installazione Zoe può essere utilizzato/installato da qualsiasi utente.

Per far partire il programma bisogna aprire una shell e dalla directory dove abbiamo decompresso ZOE eseguire il seguente comando

java -jar Zoe.jar

per semplicità ho creato un file chiamato zoe.bat contenente la precedente stringa di comando e l'ho inserito nel menù di avvio di windows, è possibile anche far partire Zoe come servizio di windows

Passo 2: Configurazione di ZOE

La configurazione di Zoe è molto semplice e basta seguire le istruzioni presenti sul wiki ufficiale, più avanti però vedremo bene come gestire gli account utenti.

Se utilizzate un firewall vi consiglio di aprire le porte dei servizi di Zoe per permetterne all'applicazione di funzionare, inoltre di attivare l'autenticazione di Zoe in modo tale da evitare possibili utilizzi dello stesso come spam server.

Se volete utilizzare anche altri client non connessi a ZOE (perchè ad esempio lo avete installato su un server con IP dinamico e quindi non sempre raggiungibile) vi consiglio di lasciare impostato per gli account la voce di non cancellare la mail dal server una volta scaricata in locale.

ZOE permette anche, interfacciandosi con mrPostman di scaricarsi le mail da alcuni famosi webmailer basati su webdav come hotmail e yahoo!mail.

Passo 3: Installazione di popFile

POPFile is an automatic mail classification tool.
Once properly set up and trained, it will scan all email as it arrives and classify it based on your training.
You can give it a simple job, like separating out junk e-mail, or a complicated one—like filing mail into a dozen folders.
Think of it as a personal assistant for your inbox.

Una volta scaricato l'eseguibile di popFile tutto quello che dobbiamo fare è farlo partire e seguire i passi del wizard di installazione, personalmente ho disabilitato l'apertura della console mentre ho lasciato attiva la trayicon.

Durante l'installazione verrà chiesto in che porta vogliamo attivare l'interfaccia web, per semplicità ho lasciato la porta 8080 resta però al vostro libero arbitrio la scelta.

Passo 4: Utilizzo di popFile

popFile si interfaccia come proxy tra il vostro client di posta ed il vostro server POP3 preferito, inoltre tramite una comoda interfaccia web è possibile gestirlo ed istruirlo a riconoscere le mail. Perchè istruirlo?? Perchè popFile non conosce la differenza tra spam e mail buone quindi bisognerà in un primo momento correggerlo per evitare falsi positivi. Anche per popFile esiste un wiki ufficiale e contiene documentazione di prim'ordine.

Quello che fa popFile è aggiungere alle vostre email le seguenti stringhe:

X-Text-Classification: QUALCOSA

dove QUALCOSA è il nome del cesto da voi creato (e che potrebbe essere anche spam). Il cesto nel gergo di popFile è il nome del filtro applicato alla mail.

Passo 5: Configurazione di popFile

a questo punto dobbiamo configurare popFile affinchè funzioni da gateway per Zoe, per far ciò bisogna abilitare dal menù advanced il parametro pop3_toptoo, cioè:

pop3_toptoo = 1

il parametro toptoo deve essere abilitato perchè Zoe utilizza la primitiva TOP per leggere le email sul server senza cancellarle. Non attivare tale parametro significa disabilitare il fitro per i server controllati da Zoe.

Passo 6: Utilizzare popFile come mail proxy per Zoe

rivediamo adesso la configurazione degli account di Zoe, supponiamo di avere il seguente account:

ACCOUNT
TYPE: POP3
email address: lamiamail@ilmioserver.com
name: fullo

HOST
host name: pop.ilmioserver.com
username: lamiamail
password: *********

SMTP SERVER
host name: smtp.ilmioserver.com
username: lamiamail
password: *********

quello che dovremo fare è modificare le voci relative ad HOST affinchè utilizzino popFile invece che la connessione diretta al server POP3 del mio account, per fare ciò basterà modificare in questo modo la configurazione dell'account:

HOST
host name: 127.0.0.1
username: pop.ilmioserver.com:lamiamail
password: *********

Quello che ho fatto è dire a Zoe di scaricare la posta dal POP3 locale (su cui è in ascolto popFile) e di passargli come username il nome del vero POP3 separato dai due punti col vero username.

Applicando lo stesso procedimento a tutti gli account creati su Zoe farò si che tutta la mail memorizzata sia filtrata preventivamente da popFile.

Passo 7: Zoe come mail server

Utilizzare Zoe non è però sempre comodissimo, inoltre non è possibile inviare allegati nelle mail. Come fare? Semplice! Zoe mette a disposizione un POP3 server, in ascolto sulla porta 10110, ed un SMTP server sulla porta 10025 possiamo quindi configurare il nostro client di posta preferito (nel mio caso Eudora ) per ricevere e spedire la posta da Zoe, inoltre basterà creare un solo account (quello creato per l'autenticazione su Zoe) e non replicare tutti quelli inseriti precedentente.

Sarà infatti Zoe ad incaricarsi di scaricare e memorizzare tutte le mail in arrivo. Inoltre come server SMTP sarà possibile usare proprio Zoe, sfruttando ulteriormente le capacità di quest'ultimo di indicizzazione e memorizzazione anche per le email in uscita.

E' importante configurare Zoe affinchè in fase di interrogazione non invii tutti i messaggi ma solo gli ultimi arrivati per fare ciò è necessario: creare un file di testo in

%ZOE%/Library/SZ/Configurations/Default/

chiamato

alt.dev.szpop.SZPOPSession.properties

insergli la seguente stringa di configurazione:

fetch.limit=20

dove 20 è il numero massimo di messaggi che Zoe invierà ai client mail

bisogna ricordarsi di impostare il client di posta scelto affinchè lasci le mail memorizzate sul server, altrimenti verrà perso l'intero archivio di Zoe!!!!

Passo 8: Riassumendo...

Il nostro sistema è così configurato

popFile <-> Zoe <-> client di posta

a questo punto da qualsiasi PC accediamo, e con qualsiasi client di posta, ci ritroviamo sempre con le email sincronizzate, certo al primo avvio del client comporterà il riscaricarsi di tutte le email, ma dagli utilizzi successivi questo non sarà più un problema. Inoltre grazie ai cesti di popFile sarà semplicissimo creare dei filtri ad-hoc per avere sempre le email al posto giusto! ;) Se invece non necessitiamo di inviare le email ma ci serve poter consultare quelle in archivio basterà utilizzare un qualsiasi browser e connettersi alla porta 10080 del server su cui gira Zoe per accedere alla sua interfaccia web.

Qualche riferimento

Mentre scrivevo questa FAQ ho trovato alcuni siti che hanno approciato al problema spam al mio stesso modo, ecco i link ai loro tutorial (alcuni hanno anche immagini abbastanza esplicative)

PHP Warnings

lib/WikiUser.php:59: Notice[8]: Only variables should be assigned by reference

lib/Template.php:112: Notice[8]: Only variables should be assigned by reference

lib/Template.php:114: Notice[8]: Only variables should be assigned by reference

lib/Template.php (In template 'html'):112: Notice[8]: Only variables should be assigned by reference

lib/Template.php (In template 'html'):114: Notice[8]: Only variables should be assigned by reference

lib/Template.php (In template 'html'):112: Notice[8]: Only variables should be assigned by reference

lib/Template.php (In template 'html'):114: Notice[8]: Only variables should be assigned by reference

lib/Template.php (In template 'body') (In template 'html'):112: Notice[8]: Only variables should be assigned by reference

lib/Template.php (In template 'body') (In template 'html'):114: Notice[8]: Only variables should be assigned by reference

lib/Template.php (In template 'top') (In template 'body') (In template 'html'):112: Notice[8]: Only variables should be assigned by reference

lib/Template.php (In template 'top') (In template 'body') (In template 'html'):114: Notice[8]: Only variables should be assigned by reference

lib/Template.php (In template 'body') (In template 'html'):112: Notice[8]: Only variables should be assigned by reference

lib/Template.php (In template 'body') (In template 'html'):114: Notice[8]: Only variables should be assigned by reference

lib/CachedMarkup.php (In template 'browse') (In template 'body') (In template 'html'):427: Notice[8]: Only variables should be assigned by reference