Nota: Questa sezione nasce da una serie di scambi di email con Franco Vite (Caparossa, del LUG di Firenze), cui va il merito della parte della descrizione seguente relativa ai "send-hook", anche se rielaborata in alcuni punti. Grazie mille quindi a Caparossa! ;-)
Gli "hooks" (uncini) sono il metodo usato all'interno di mutt per impostare delle opzioni specifiche per un dato folder/header/email/altro, scavalcando le impostazioni predefinite nel file di configurazione. Ne esistono diversi tipi:
folder-hook [!]regexp comando [; altro-comando] |
dove regexp è un'espressione regolare per identificare la mailbox o comunque l'oggetto su cui applicare il comando successivo (il ! nega la regexp). folder-hook permette di definire impostazioni in base al singolo folder (ad esempio un diverso ordinamento per la mailbox mutt, ottenibile con folder-hook mutt set sort=threads). Ricordate però che non viene ripristinato il precedente valore quando si cambia mailbox, ma si continua ad usare l'ultimo valore assegnato, quindi si deve definire un comportamento di default, tramite un comando simile a: folder-hook . set sort=date-sent. Se dovete specificare più di un comando da eseguire su uno stesso folder, potete specificarli separandoli con ;. Se la vostra regexp contiene spazi, racchiudetela tra virgolette.
mbox-hook [!]regexp mailbox |
mbox-hook permette di definire una mailbox in cui spostare i messaggi letti da una mailbox (che soddisfa la regexp) in un altra mailbox, automaticamente al cambio di folder o all'uscita del programma. Serve ad aggirare l'mbox predefinita, specificata nel file di configurazione. Infatti, viene usato il primo mbox-hook che si trova (in ordine di apparizione) e di cui viene soddisfatta la regexp, e se non ne può soddisfare nessuno, si usa l'mbox predefinita. Questo comando agisce su intere mailbox, non su singoli messaggi! Quindi TUTTI i messaggi della mailbox che soddisfa la regexp finiscono nella seconda mailbox, non è possibile spostare alcuni messaggi in una mailbox e altri in un'altra (ho chiesto sulla ML il perché di questo comportamento e se è possibile fare qualcosa che funzioni sul SINGOLO messaggio invece dell'intera mailbox, appena ne so di più, modificherò questa parte...). Se la vostra regexp contiene spazi, racchiudetela tra virgolette.
save-hook [!]regexp nomefile |
save-hook serve a specificare il nome del file predefinito in cui salvare i messaggi che soddisfano la regexp. Il salvataggio, a differenza degli altri hook, è un'azione da fare esplicitamente: mentre un mbox-hook avviene ad esempio in automatico, voi dovete specificare esplicitamente che volete salvare un messaggio in un file (per backup o per altro motivo), e ciò non influenza comunque lo stato della mailbox, i cui messaggi non vengono alterati. Per default, l'hook si attiva se il campo From: di un messaggio soddisfa la regexp, o se il messaggio ha voi come mittente e il destinatario soddisfa la regexp in uno dei campi To: o Cc:. Se la vostra regexp contiene spazi, racchiudetela tra virgolette. Gli specificatori ~X sono spiegati di seguito in questa sezione.
fcc-hook [!]regexp mailbox |
fcc-hook permette di specificare una mailbox alternativa a quella definita nel file di configurazione, nella direttiva $record, in cui salvare in automatico una copia dei messaggi in uscita. Vengono controllati in ordine i vari fcc-hook, e se non se ne trovano di soddisfacenti, viene usata la mailbox definita in $record. Se la vostra regexp contiene spazi, racchiudetela tra virgolette. Gli specificatori ~X sono spiegati di seguito in questa sezione.
send-hook [!]regexp comando [; altro-comando] |
send-hook permette di rispondere ad un dato indirizzo email (spesso mailing List) impostando comandi di configurazione specifici per quell'indirizzo (di solito si personalizza il campo From: e la firma da apporre in coda). Per esempio:
Di default sono paperino@paperino.it, con la firma: ~/.signature
ma sono anche pippo@pippo.it e con questo indirizzo uso la firma ~/.signature.pippo
ma ho anche pluto@pluto.it, a cui vi associo la firma: ~/.signature.pluto
Poniamo che nel secondo caso sia iscritto alla ML linux@linux.it, mentre nel terzo caso sia iscritto alla ML linux@siena.it. Mutt permette di usare l'indirizzo e la firma del secondo esempio per linux@linux.it, e quelli del terzo esempio per linux@siena.it, e le impostazioni di default per tutti gli altri casi, impostando i seguenti send-hook:
send-hook . "set signature=~/.signature ; \ my_hdr From: Paperino <paperino@paperino.it>" send-hook linux@linux.it "set signature=~/.signature.pippo ; \ my_hdr From: Pippo <pippo@pippo.it>" send-hook linux@siena.it "set signature=~/.signature.pluto ; \ my_hdr From: Pluto <pluto@pluto.it>" |
La prima riga, fondamentale, dice a mutt di tornare alle impostazioni di default tutte le volte che non è stata usata una regola send-hook. Altrimenti viene usata sempre l'ultima regola applicata. Nel secondo caso, tutte le volte che facciamo un reply o un post alla lista linux@linux.it, alla quale, come abbiamo detto prima, siamo iscritti con l'indirizzo pippo@pippo.it, viene usato quest'ultimo indirizzo e come firma quella inerente all'utente pippo. Nel caso scrivessimo alla lista bsd@bsd.it, verrebbero usati indirizzo e firma di default (paperino, nel nostro esempio). Nel terzo caso, per concludere, essendo iscritti alla lista linux@siena.it con l'indirizzo pluto@pluto.it, facciamo sì che mutt usi indirizzo e firma adeguati per post e reply. Come sempre, se la vostra regexp contiene spazi, racchiudetela tra virgolette. Gli specificatori ~X sono spiegati di seguito in questa sezione.
message-hook [!]regexp comando [; altro-comando] |
message-hook permette di impostare dei comandi specifici prima di visualizzare o formattare un messaggio. Se la vostra regexp contiene spazi, racchiudetela tra virgolette. Gli specificatori ~X sono spiegati di seguito in questa sezione.
e altri meno usati, come pgp-hook, charset-hook, iconv-hook, account-hook, fcc-save-hook. L'ultimo è una forma breve per unire un fcc-hook e un save-hook.
Tutte le regexp sottintendono un hook di default (appunto default_hook, impostato col comando set default_hook = "..." del file di configurazione e che ha come valore predefinito "~f %s !~P | (~P ~C %s)", che "matcha" messaggi con mittente %s ma non creati da te oppure messaggi creati da te e inviati a %s in To: o Cc:).
Dovunque si possa specificare un pattern (dove lecito e logico...) si possono usare i seguenti specificatori per restringere la ricerca a ciò che si vuole:
~A tutti i messaggi ~b EXPR messaggi contenenti EXPR nel corpo del messaggio ~B EXPR messaggi contenenti EXPR nell'intero messaggio ~c USER messaggi inviati in Cc all'USER ~C EXPR messaggi inviati a EXPR in To: o Cc: ~D messaggi cancellati ~d [MIN]-[MAX] messaggi con ``date-sent'' nell'intervallo indicato ~E messaggi scaduti (spirati...) ~e EXPR messaggi contenenti EXPR nel campo ``Sender'' ~F messaggi con il FLAG impostato ~f USER messaggi con mittente USER ~g messaggi segnati con PGP ~G messaggi codificati con PGP ~h EXPR messages contenenti EXPR negli header del messaggio ~k messaggi contenenti una chiave PGP ~i ID messaggi con ID nel campo ``Message-ID'' ~L EXPR messaggi originato o ricevuto da EXPR ~l messaggi indirizzati a una mailing list conosciuta ~m [MIN]-[MAX] messaggi nell'intervallo MIN-MAX *) ~n [MIN]-[MAX] messages con un punteggio nell'intervallo MIN-MAX *) ~N messaggi nuovi ~O messaggi vecchi ~p messaggi indirizzati a te (consulta $alternates) ~P messaggi creati da te (consulta $alternates) ~Q messaggi cui si è risposto ~R messaggi letti ~r [MIN]-[MAX] messaggi con ``date-received'' nell'intervallo indicato ~S messaggi supersede (eliminati dal server...) ~s SUBJECT messaggi con SUBJECT nel campo ``Subject'' ~T messaggi con un tag ~t USER messaggi indirizzati all'USER ~U messaggi non letti ~v messaggio parte di un thread collassato ~x EXPR messaggi contenenti EXPR nel campo ``References'' ~y EXPR messaggi contenenti EXPR nel campo ``X-Label'' ~z [MIN]-[MAX] messaggi con dimensione nell'intervallo MIN-MAX *) *) Sono permesse anche le forme <[MAX], >[MIN], [MIN]- e -[MAX]. |
Si possono concatenare più pattern in successione, che funzioneranno in AND logico ("~t mutt ~f elkins" selezionerà i messaggi inviati a "mutt" da "elkins"). Gli altri operatori logici sono: ! (NOT), | (OR), e le parentesi tonde () per raggruppare ("!(~t mutt|~c mutt) ~f elkins" selezionerà i messaggi che non hanno "mutt" nei campi To: o Cc: e creati da "elkins").
Le ricerche per data DEVONO essere nel formato GG/MM/AA (mese e anno sono opzionali, e assumono come valori predefiniti quelli del mese e anno correnti). Ad esempio: "~d 20/1/95-31/10". Se ometti la prima data (MIN), indicando solo ``-GG/MM/AA'', verranno selezionati tutti i messaggi prima di quella data. Se ometti la seconda data (MAX), e specifichi solo ``DD/MM/YY-'', verranno selezionati tutti i messaggi dopo quella data. Se indichi solo una singola data senza il trattino (``-''), verranno selezionati solo i messaggi di quella specifica data. Altre info nel manuale ufficiale.