Mutt + Fetchmail + Procmail + Msmtp

di AAAle

Mutt è un programma per la gestione della posta elettronica completamente testuale e personalizzabile come un qualsiasi client a interfaccia grafica (KMail, Evolution, Sylpheed ecc).

A differenza degli altri, non possiede una gestione smtp / pop3 integrata nel software stesso quindi bisogna appoggiarsi a dei programmi esterni, nel nostro caso fetchmail + procmail (per la gestione POP3) e msmtp (per la gestione SMTP).

Supponendo che i programmi citati siano già installati (vedete voi se usare il vostro gestore di pacchetti preferito o compilare dai sorgenti) iniziamo la nostra avventura all’uso di Mutt.

Fetchmail:

Fetchmail permette di reperire le nostre e-mail da un mailserver remoto e salvarle nel nostro pc locale. La configurazione è molto semplice, per prima cosa creiamo il file di configurazione .fetchmailrc nella nostra home e diamogli i permessi 710.

aaale@Nebula ~ $ touch .fetchmailrc
aaale@Nebula ~ $ chmod 710 .fetchmailrc

Ora editiamo il file:

aaale@Nebula ~ $ vim .fetchmailrc

Inseriamo il seguente codice:

poll indirizzo_server_pop3 uidl protocol pop3 user "nome_utente" password "tua_password" options keep

Ovviamente se abbiamo più indirizzi di posta basta aggiungere una riga opportunamente modificata sotto a quella già esistente.

Analizziamo a fondo ogni passo:

poll: Inizializza una chiamata ad un serverindirizzo_server_pop3: Indirizzo del server pop3 (ad esempio box.tin.it)

uidl: Controlla se le e-mail presenti sul server sono già state scaricate, in caso negativo le scarica altrimenti non compie nessuna operazione

protocol pop3: Specifica il tipo di protocollo da usare per contattare il mailserver

user “nome_utente”: Il nome utente per l’autentificazione

“tua_password”: La password per l’autentificazione

options keep: Mantiene le mail sul server

ATTENZIONE: se avete un account Virgilio o Tin (probabilmente Libero o anche Tiscali non ho mai provato), necessitano dell’autenticazione cram-md5 quindi aggiungiamo i seguenti parametri alla riga di configurazione di .fetchmailrc

poll indirizzo_server_pop3 uidl protocol pop3 auth cram-md5 auth password user "nome_utente" password "tua_password" options keep

Procmail:

Procmail permette lo smistamento delle e-mail in locale e con qualche piccolo trucco può funzionare anche da filtro. Senza questo software le e-mail rimarebbero in /var/spool/mail/nomeutente.

Anche in questo caso la configurazione è intuitiva e semplice e si inizia col creare il file .procmailrc nella home del nostro utente

aaale@Nebula ~ $ touch .procmailrc

Creiamo la directory Mail nella nostra home che conterrà i nostri database di posta

aaale@Nebula ~ $ mkdir Mail

Ora editiamo il file:

aaale@Nebula ~ $ vim .procmailrc

Inseriamo il seguente codice:

MAILDIR=$HOME/Mail
LOGFILE=$HOME/.procmaillog

:0
* ^From:.*pippo@dominio1.com
! pluto@domain.it

:0
* ^From:.*pippo@dominio2.it
Pippo

:0
* ^From:.*ciccio@dominio3.
Ciccio

:0
^Subject:.*Spam
Spam

:0
^Subject:.*Virus
/dev/null

:0
* .*
Inbox

Analizziamo a fondo ogni passo:

  • MAILDIR=$HOME/Mail : Il percorso dove verranno salvati i database di posta
  • LOGFILE=$HOME/.procmaillog : Salviamo il log in un file chiamato .procmaillog nella nostra home
  • Tutte le mail provenienti da pippo@dominio1.com vengono inoltrate a pluto@domain.it
  • Tutte le mail provenienti da pippo@dominio2.it vengono salvate nella casella chiamata Pippo (viene creata automaticamente)
  • Tutte le mail provenienti da ciccio@dominio3.com vengono salvate nella casella chiamata Ciccio (viene creata automaticamente)
  • Tutte le mail con il soggetto contentente la parola Spam vengono salvate nella casella chiamata Spam (viente creata automaticamente)
  • Tutte le mail con il soggetto contentente la parola Virus vengono eliminate
  • Tutte le mail restanti vengono salvate nella casella chiamata Inbox (viene creata automaticamente)
  • mbsmtp

    msmtp è un client SMTP che permette l’inoltro di una mail verso un server SMTP. Anche in questo caso la configurazione è intuitiva e semplice e si inizia col creare il file .msmtprc nella home del nostro utente

    aaale@Nebula ~ $ touch .msmtprc

    Ora editiamo il file e inseriamo il seguente codice:

    host 192.168.1.1
    from mio_utente@miodominio.org
    # Opzionale
    
    user ciccio
    password pasticcio

    Analizziamo a fondo ogni passo:

  • host 192.168.1.1: indirizzo ip o DNS del server SMTP
  • from mio_utente@miodominio.org: E-Mail di spedizione
  • In caso serva l’autentificazione per l’accesso al server SMTP inserire i seguenti dati:

  • user ciccio: Utente per l’autentificazione
  • password pasticcio: Password per l’autentificazione
  • E finalmente configuriamo il nostro client di posta. Si crea sempre il solito file nella nostra home questa volta chiamato .muttrc

    aaale@Nebula ~ $ touch .muttrc

    Ora editiamo il file e inseriamo il seguente codice:

    set pager_context=1
    set pager_index_lines=6  #mostra un mini-indice nel pager
    
    set menu_scroll
    set pgp_verify_sig=no      #non mostrare il pgp nel pager
    set status_on_top               #metti la linea di stato in alto
    set sort=threads  #visualizza i messaggi per argomento nell'indice
    
    set status_format=" %r %b %f %n      Del %d      Msgs %m %l %> (%P)"
    set pager_format="%-10.10i %[!%a %b %d %R]"
    set date_format="!%H:%M %a %d %b     "
    set index_format="%4C %Z %[%b%d] %-15.15F %s"
    set folder_format="%2C %t %8s %d %N %f"
    
    set sendmail="/usr/local/bin/msmtp" # Il percorso dell'eseguibile per spedire le mail al server SMTP
    
    set from="tuamail@tuodominio.com" #imponi il tuo campo from
    set realname="Ciccio Pasticcio"  #Inserisci il nome vero
    
    set record="Mail/Sent"                  #le email inviate sono salvate qui
    set delete=yes                          #cancella senza chiederlo
    set include=yes                         #quota i messaggi alla risposta
    
    set fast_reply=yes                      #non chiedere se devi rispondere
    set beep=no                             #niente rumore
    set markers=no                          #non aggiungere un "+" quoando vai a capo
    set confirmappend=no                    #no prompt for save to =keep
    set to_chars=" +TCF"                    #niente "L" per mail_list
    
    set folder = "Mail" # la directory contenente le mailboxes
    
    # Le nostre mailboxes
    mailboxes = Spam
    mailboxes = Pippo
    mailboxes = Ciccio
    mailboxes = Inbox
    mailboxes = Sent
    
    #fai vedere gli header con il tasto h
    bind pager h display-toggle-weed
    
    #Visualizzo i possibili URL presenti in una mail premendo ctrl + b
    macro pager cb 'urlview' 'Follow links with urlview
    
    #esegui fetchmail premendo il tasto G
    macro index G "!fetchmail -m 'procmail -d %T'r"
    
    #Questa è la lista degli header da togliere quando la mail viene visualizzata
    ignore *
    unignore  Date To From: Subject X-Mailer Organization User-Agent
    hdr_order Date From To Subject X-Mailer User-Agent Organization
    
    #Mutt deve avere qualche colore
    #questi sono per quattro livelli di testo quotato
    #vengono sovrascritte le impostazioni di sistema contenute in /etc/mutt/Muttrc
    #color quoted green  default
    color quoted1 magenta blue
    
    #color quoted2 yellow default
    #color quoted3 red default
    #color signature cyan cyan
    #Queste impostazioni di colori sono copiate da /etc/mutt/Muttrc.color
    #commentatele se volete i colori di default contenuti in /etc/mutt/Muttrc
    #Je vois la vie en rose :-)
    
    color   hdrdefault      brightcyan      blue
    color   header          brightwhite     blue "^from:"
    color   header          brightwhite     blue   "^subject:"
    color   quoted          brightgreen     blue
    color   signature       brightwhite     blue
    color   indicator       blue            green
    color   error           red             black
    mono    error           bold
    color   status          black cyan
    mono    status          bold
    color   tree            yellow          blue
    color   tilde           brightmagenta   blue
    color   body    brightwhite             blue    "[-a-z_0-9.]+@[-a-z_0-9.]+"
    mono    body    bold                    "[-a-z_0-9.]+@[-a-z_0-9.]+"
    color   body            brightyellow    black   "^Good signature"
    mono    body            bold                    "^Good signature"
    color   body            brightwhite     red     "^Bad signature from.*"
    mono    body            bold                    "^Bad signature from.*"
    color   normal          white           blue
    color   message         green   black
    color   attachment      brightgreen     blue

    Finalmente… dopo molto lavoro tutto è configurato al meglio e adesso prepariamoci al divertimento. Scarichiamo la posta

    aaale@Nebula ~ $ /usr/bin/fetchmail -m "/usr/bin/procmail -d %T"

    Apriamo Mutt leggendo le mail presenti nella Inbox

    aaale@Nebula ~ $ mutt -f Mail/Inbox

    Velocemente accenno che premendo:

      m si scrive una nuova mailr rispondi ad una maild si cancella una mailinvio si legge la mailh si visualizza l’header della maily si spedisce la mailc si cambia la mailbox e successivamente ? per vedere la lista

      $ aggiornare la mailbox

    SUGGERIMENTO:

    Per scaricare la posta in automatico ogni certo tot di tempo (ad esempio 5 minuti) consiglio l’installazione di un demone cron. Un buon tutorial può essere trovato al seguente indirizzo: http://www.gentoo.org/doc/it/cron-guide.xml

    Ora analizziamo come aprire gli allegati di posta e come visualizzare gli URL che potrebbero essere presenti in una mail. Per far ciò, abbiamo bisogno di creare un file .mailcap nella nostra home e di installara una utility per mutt chiamata urlview.

    aaale@Nebula ~ $ touch .mailcap

    Editiamo il file e inseriamo il seguente codice:

    application/vnd.sun.xml.writer;/home/aaale/OpenOffice.org1.1.4/soffice %sapplication/vnd.sun.xml.writer.global;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.stardivision.writer;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.stardivision.writer-global;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/x-starwriter;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.sun.xml.writer.template;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/msword;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.sun.xml.calc;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.stardivision.calc;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/x-starcalc;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.sun.xml.calc.template;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/excel;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/msexcel;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.ms-excel;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/x-msexcel;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.sun.xml.impress;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.stardivision.impress;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.stardivision.impress-packed;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/x-starimpress;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.sun.xml.impress.template;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/powerpoint;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/mspowerpoint;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.ms-powerpoint;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/x-mspowerpoint;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.sun.xml.draw;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.stardivision.draw;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/x-stardraw;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.sun.xml.draw.template;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.sun.xml.math;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/vnd.stardivision.math;/home/aaale/OpenOffice.org1.1.4/soffice %s

    application/x-starmath;/home/aaale/OpenOffice.org1.1.4/soffice %s

    image/*; display %s

    In poche parole apro qualsiasi tipo di documento con OpenOffice mentre nell’ultima riga apro qualsiasi immagine con il comando display incluso nella suite Imagemagick.

    Ora creiamo il file .urlview e inseriamo il seguente codice:

    COMMAND firefox %s

    Ovvero apro le url con firefox. Ora provate ad aprire una mail con delle URL presenti nel testo e premete ctrl + b, apparirà la lista delle URL disponibili. Selezionate con le frecce direzionali una URL e premete invio.

    Buon Divertimento!

    Documentazione usata per la realizzazione di questo How-To:

    RTFM [Read The Fuckin’ Manual] :Dhttp://www.gentoo.org/doc/it/guide-to-mutt.xml

    http://msmtp.sourceforge.net/Mutt+msmtp.txt

    http://mutt.blackfish.org.uk/following-links/

    3 pensieri su “Mutt + Fetchmail + Procmail + Msmtp

    1. nel .muttrc e’ possibile customizzare l’editor usato per scrivere le mail. la mia soluzione

      set editor = “~/.creasign && vim -c ‘set nobackup’ -c ‘/^$/+1′”

      con ~/.creasign =
      #!/bin/sh
      fortune 100% italia > ~/.signature

      questo per avere una signature diversa ogni mail (a patto che sempre nel .muttrc ci sia l’istruzione set signature = $HOME/.signature

      -c ‘/^$/+1 = sposta il cursore subito dopo tutti gli header iniziali (campo to: from: subject ecc)

      maus

    2. Un grazie mille ad AAAle per la guida 8)

      di seguito riporto alcune personalizzazioni:

      1) la mia scelta � stata quella di usare lo stesso tipo di mbox usato da kmail. questo mi ha permesso una migrazione indolore, quindi:

      *set mbox_type=Maildir

      %la Maildir � vantaggiosa per il fatto che le mails vengono salvate in singoli files velocizzando la navigazione.

      %% il formato

      ~/Mail/
      nomed/
      cur/ new/ tmp/
      mutt/
      cur/ new/ tmp/
      debian/
      cur/ new/ tmp/

      %%% cur, new, tmp contengono file del frmato $numero-host… (1 mail = 1 file)

      2) perch� questo fosse possibile ho dovuto aggiungere “/” alla fine di ogni cartella definita in .prochmailrc:

      :0
      ^To:.*nomed@yahoo.it
      folder/

      2.a) ho poi detto a procmail di crearmi anche un backup

      :0c:
      gzip -9fc >> .backup.gz

      quello che mi mancava in mutt affinch� fosse perfetto 8) era un pannello che mi dicesse il numero di mails contenute in ogni mailboxes e il numero delle mails non lette … bh� chiaramente qualcuno ha gi� provveduto

      i)http://thomer.com/mutt/
      ii)http://mutt-ng.berlios.de/snapshots/
      iii)http://www.oreillynet.com/pub/wlg/6565

      per chi usa debian:

      #MUTT
      deb http://people.debian.org/~nobse/debian/ unstable/
      deb-src http://people.debian.org/~nobse/debian/ unstable/

      quindi una volta passato a muttng ho chiamato il file che era .muttrc —-> .muttngrc, che conteneva anche un richiamo al file tasti.rc:
      ——————-
      #file ~/.muttngrc
      ….
      source ~/.mutt/tasti.rc
      ….
      ——————–
      —————————–
      #file ~/mutt/tasti.rc
      set sidebar_visible=”no”
      set sidebar_width=25
      set shorten_hierarchy
      color sidebar_new yellow default
      bind index sidebar-open
      bind index previous-entry
      bind index next-entry
      bind pager previous-line
      bind pager next-line
      bind pager previous-entry
      bind pager next-entry
      bind index F flag-message
      bind pager F flag-message
      macro index “set invsidebar_visible ”
      bind index CP sidebar-prev
      bind index CN sidebar-next
      bind index CO sidebar-open
      bind pager CP sidebar-prev
      bind pager CN sidebar-next
      bind pager CO sidebar-open
      —————————-

      e questo � tutto … AAAle aspetto la prossima :) …

      nomed
      (komplikazione@yahoo.it)–>

    3. When someone writes an post he/she keeps the idea of a user in his/her mind that
      how a user can know it. Thus that’s why this article is amazing. Thanks!

    Lascia un commento

    Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

    Logo WordPress.com

    Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

    Foto Twitter

    Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

    Foto di Facebook

    Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

    Google+ photo

    Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

    Connessione a %s...