Ricerca nel sito web

Recupero di email da server remoti con fetchmail su Debian


Su questa pagina

  1. 1 Nota preliminare
  2. 2 Installa fetchmail
  3. 3 Configura fetchmail
    1. 3.1 Eseguire fetchmail come demone con un file di configurazione globale
    2. 3.2 Utilizzare i file di configurazione per utente ed eseguire fetchmail tramite Cron

    Fetchmail è un programma per il recupero di e-mail da server remoti. Immagina di avere cinque account di posta elettronica su cinque server diversi. Ovviamente, non vuoi connetterti a ciascuno di essi per ricevere le tue e-mail. È qui che entra in gioco fetchmail. Se hai un account utente su un server Linux, puoi fare in modo che fetchmail scarichi le email dai server remoti e le metta in una sola casella di posta (quella del tuo utente Linux), da dove puoi recuperarle con il tuo client di posta (es. Thunderbird o Veduta).

    Oppure immagina di avere un account di posta elettronica presso un provider che non esegue il filtraggio di spam e virus. In tal caso, puoi utilizzare fetchmail per scaricare le e-mail sul tuo server e convogliarle attraverso filtri antispam e antivirus (ad es. SpamAssassin e ClamAV) prima di scaricare le e-mail con il tuo client di posta.

    1 Nota preliminare

    È necessario un server Linux con un utente di sistema in grado di ricevere e-mail, il che significa che sul sistema deve essere installato un MTA come Postfix o Sendmail. In caso contrario, fetchmail non funzionerà, perché tenta di passare le email scaricate a un MTA (Postfix, Sendmail, ...) e l'MTA consegna le email alla casella di posta degli utenti (puoi configurare il sistema per includere spam e virus scansione in questo processo, ad esempio con procmail, ma questo non è trattato in questo tutorial).

    Uso un sistema Debian in questo tutorial in cui due utenti si chiamano falko e till esistono.

    2 Installare fetchmail

    Per installare fetchmail, tutto ciò che dobbiamo fare è eseguire

    apt install fetchmail

    3 Configurare fetchmail

    Ci sono due modi per configurare fetchmail. Possiamo farlo funzionare come un demone con un file di configurazione globale, oppure possiamo creare un cron job per eseguire fetchmail insieme ai file di configurazione per utente. Descriverò entrambi i metodi qui.

    3.1 Eseguire fetchmail come demone con un file di configurazione globale

    Per far funzionare fetchmail come demone, dobbiamo modificare /etc/default/fetchmail e impostare START_DAEMON su yes:

    nano /etc/default/fetchmail
    # This file will be used to declare some vars for fetchmail
    #
    # Uncomment the following if you dont want localized log messages
    # export LC_ALL=C
    
    # Declare here if we want to start fetchmail. 'yes' or 'no'
    START_DAEMON=yes

    Poi dobbiamo creare il file di configurazione /etc/fetchmailrc perché il demone fetchmail non si avvierà se questo file non esiste. In questo file possiamo specificare come dovrebbe comportarsi il demone fetchmail, così come i dettagli che fetchmail deve conoscere per recuperare le email da account email esterni.

    Supponiamo che Falko abbia due account e-mail da cui vogliamo recuperare le e-mail:

    • Primo account: server pop.someprovider.tld, protocollo POP3, nome utente [email protetto] (sì, in questo caso il nome utente è un indirizzo email), password segreta.
    • Secondo account: server mail.otherprovider.tld, protocollo POP3, nome utente ftimme, password verysecurepassword.

    till ha un account di posta elettronica:

    • Server mailin.tillsprovider.tld, protocollo POP3, nome utente tbrehm, password iwontellyou.

    Quindi il nostro file /etc/fetchmailrc potrebbe assomigliare a questo:

    nano /etc/fetchmailrc
    # /etc/fetchmailrc for system-wide daemon mode
    # This file must be chmod 0600, owner fetchmail
    
    set daemon        300                # Pool every 5 minutes
    set syslog                        # log through syslog facility
    set postmaster  root
    
    set no bouncemail                # avoid loss on 4xx errors
                                    # on the other hand, 5xx errors get
                                    # more dangerous...
    
    ##########################################################################
    # Hosts to pool
    ##########################################################################
    
    # Defaults ===============================================================
    # Set antispam to -1, since it is far safer to use that together with
    # no bouncemail
    defaults:
    timeout 300
    antispam -1
    batchlimit 100
    
    poll pop.someprovider.tld protocol POP3 user "" there with password "secret" is falko here
    poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" is falko here fetchall
    poll mailin.tillsprovider.tld protocol POP3 user "tbrehm" there with password "iwonttellyou" is till here keep

    All'inizio del file abbiamo alcune opzioni globali come set daemon 300 (il che significa che fetchmail dovrebbe recuperare le email ogni 300 secondi) che controllano il funzionamento del programma. I significati delle opzioni di cui sopra sono i seguenti:

    • set daemon: imposta un intervallo di polling in background in secondi.
    • set syslog: esegue la registrazione degli errori tramite syslog.
    • set postmaster: fornisce il nome del destinatario della posta di ultima istanza (predefinito: utente che esegue fetchmail, \postmaster\ se eseguito dall'utente root).
    • imposta no bouncemail: indirizza la posta di errore al postmaster locale (come per l'opzione globale \postmaster\ sopra).

    Quindi abbiamo il server e le opzioni delle opzioni utente. Questi vanno insieme nelle righe che iniziano con poll; se ci sono opzioni uguali per ogni riga del sondaggio, possiamo anche specificarle prima delle righe del sondaggio in una sezione che inizia con default: (come timeout, antispam e batchlimit nel nostro esempio).

    • timeout: timeout di inattività del server in secondi (predefinito 300).
    • antispam: specificare quali restituzioni SMTP vengono interpretate come blocchi dei criteri di spam.
    • batchlimit: specifica il numero massimo di messaggi che verranno inviati a un listener SMTP prima che la connessione venga deliberatamente interrotta e ricostruita (il valore predefinito è 0, che significa nessun limite).

    Le righe del sondaggio sono autoesplicative; come vedi, fetchmail recupera le e-mail da entrambi gli account e-mail esterni di Falkos e le inserisce in un unico account.

    Noterai che le righe del sondaggio hanno finali diversi (ad es. nofetchall (predefinito), fetchall, keep, nokeep). I significati sono i seguenti:

    • nofetchall: recupera solo i nuovi messaggi (predefinito). Se non viene specificato nient'altro (ad es. fetchall, keep), questo significa nofetchall.
    • fetchall: recupera tutti i messaggi visti o meno.
    • keep: non cancella i messaggi visti dal server.
    • nokeep: cancella i messaggi visti dal server.

    Per ulteriori informazioni su tutte le impostazioni di configurazione disponibili, dai un'occhiata a

    man fetchmail

    /etc/fetchmailrc deve avere 600 permessi e deve essere di proprietà dell'utente fetchmail, quindi facciamo quanto segue:

    chmod 600 /etc/fetchmailrc
    chown fetchmail /etc/fetchmailrc

    Infine, possiamo avviare fetchmail:

    /etc/init.d/fetchmail start

    Fetchmail ora dovrebbe scaricare le e-mail e inserirle nelle caselle di posta falkos e tills (utilizzando l'MTA). Lo ripeterà ogni secondo demone impostato.

    3.2 Utilizzare i file di configurazione per utente ed eseguire fetchmail tramite Cron

    Invece di usare un file di configurazione globale come mostrato nel capitolo 3.1, possiamo usare file di configurazione per utente. Questi devono avere il nome .fetchmailrc e devono trovarsi nella homedir dell'utente.

    Ora vogliamo creare un file di questo tipo per l'utente falko. Assicurati di aver effettuato l'accesso come falko, non come root! Quindi facciamo questo:

    cd ~/
    vi .fetchmailrc
    set postmaster falko
    set bouncemail
    
    poll pop.someprovider.tld protocol POP3 user "" there with password "secret"
    poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" fetchall

    Il file sembra molto simile al file /etc/fetchmailrc del capitolo 3.1, tuttavia noterai che qui non uso più la frase is falko (poiché .fetchmailrc è nella homedir di falkos, fetchmail sa che le mail dovrebbero essere consegnate a falko) . Naturalmente, puoi ancora usare is falko qui, quindi anche il file potrebbe avere questo aspetto:

    set postmaster falko
    set bouncemail
    
    poll pop.someprovider.tld protocol POP3 user "" there with password "secret" is falko here
    poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" is falko here fetchall

    Per ulteriori informazioni su tutte le impostazioni di configurazione disponibili, dai un'occhiata a

    man fetchmail

    .fetchmailrc deve avere 600 permessi, in modo che solo falko possa leggere/scrivere su di esso:

    chmod 600 ~/.fetchmailrc

    Questo è tutto. Ora falko può avviare il processo di recupero eseguendo

    fetchmail

    o

    fetchmail -v

    che mostra cosa sta succedendo.

    Naturalmente, falko non desidera avviare il recupero manualmente ogni pochi minuti, quindi creiamo un cron job per lui. Ancora come l'utente falko, corriamo

    crontab -e

    e crea un cron job come questo (che avvia fetchmail ogni cinque minuti):

    */5 * * * * /usr/bin/fetchmail &> /dev/null

    4 collegamenti

    • Debian: http://www.debian.org
    • Fetchmail: http://fetchmail.berlios.de