Email Retrieval · 6 min read · Sep 08, 2025

Recuperare Email Da Server Remoti Con fetchmail su Debian

Fetchmail è un programma per recuperare email da server remoti. Immagina di avere cinque account email su cinque server diversi. Naturalmente, non vuoi connetterti a ciascuno di essi per ricevere le tue email. È qui che entra in gioco fetchmail. Se hai un account utente su un server Linux, puoi far sì che fetchmail scarichi le email dai server remoti e le metta in un’unica casella di posta (quella del tuo utente Linux), da dove puoi recuperarle con il tuo client email (ad es. Thunderbird o Outlook).

Oppure immagina di avere un account email presso un fornitore che non esegue filtraggio di spam e virus. In tal caso, potresti utilizzare fetchmail per scaricare le email sul tuo server e passarle attraverso filtri di spam e virus (ad es. SpamAssassin e ClamAV) prima di scaricare le email con il tuo client email.

1 Nota Preliminare

Hai bisogno di un server Linux con un utente di sistema che possa ricevere email, il che significa che deve essere installato un MTA come Postfix o Sendmail sul sistema. Altrimenti, fetchmail non funzionerà, perché cerca di passare le email scaricate a un MTA (Postfix, Sendmail, …), e l’MTA consegna le email alla casella di posta dell’utente (puoi configurare il sistema per includere la scansione di spam e virus in questo processo, ad es. con amavisd-new o procmail, ma questo non è trattato in questo tutorial).

Utilizzo un sistema Debian in questo tutorial dove esistono due utenti chiamati falko e till.

2 Installa fetchmail

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

apt install fetchmail

3 Configura fetchmail

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

3.1 Esegui fetchmail Come Un Demone Con Un File Di Configurazione Globale

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

nano /etc/default/fetchmail
# Questo file sarà utilizzato per dichiarare alcune variabili per fetchmail
#
# Decommenta quanto segue se non vuoi messaggi di log localizzati
# export LC_ALL=C

# Dichiarare qui se vogliamo avviare fetchmail. 'yes' o 'no'
START_DAEMON=yes

Successivamente, 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 il demone fetchmail dovrebbe comportarsi e i dettagli di cui fetchmail ha bisogno per recuperare email da account email esterni.

Supponiamo che falko abbia due account email da cui vogliamo recuperare email:

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

till ha un account email:

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

Quindi il nostro file /etc/fetchmailrc potrebbe apparire così:

nano /etc/fetchmailrc
# /etc/fetchmailrc per la modalità demone globale
# Questo file deve avere chmod 0600, proprietario fetchmail

set daemon        300                # Pool ogni 5 minuti
set syslog                        # log tramite la facility syslog
set postmaster  root

set no bouncemail                # evita perdite su errori 4xx
                                # d'altra parte, gli errori 5xx diventano
                                # più pericolosi...

##########################################################################
# Host da pool
##########################################################################

# Defaults ===============================================================
# Imposta antispam a -1, poiché è molto più sicuro usarlo insieme a
# no bouncemail
defaults:
timeout 300
antispam -1
batchlimit 100

poll pop.someprovider.tld protocol POP3 user "[email protected]" 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 (che significa che fetchmail dovrebbe recuperare email ogni 300 secondi) che controllano il funzionamento del programma. I significati delle opzioni sopra sono i seguenti:

  • set daemon: Imposta un intervallo di polling in background in secondi.
  • set syslog: Esegui il logging degli errori tramite syslog.
  • set postmaster: Fornisci il nome del destinatario finale delle email (predefinito: utente che esegue fetchmail, “postmaster” se eseguito dall’utente root).
  • set no bouncemail: Invia email di errore al postmaster locale (come per l’opzione globale “postmaster” sopra).

Poi abbiamo le opzioni del server e dell’utente. Queste vanno insieme alle righe che iniziano con poll; se ci sono opzioni che sono le stesse per ogni riga di polling, possiamo anche specificarle prima delle righe di polling in una sezione che inizia con defaults: (come timeout, antispam e batchlimit nel nostro esempio).

  • timeout: Timeout di inattività del server in secondi (predefinito 300).
  • antispam: Specifica quali ritorni SMTP vengono interpretati come blocchi della politica 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 (predefinito 0, significa nessun limite).

Le righe di polling sono autoesplicative; come puoi vedere, fetchmail recupera email da entrambi gli account email esterni di falko e le mette in un unico account.

Noterai che le righe di polling hanno diverse terminazioni (ad es. nofetchall (predefinito), fetchall, keep, nokeep). I significati sono i seguenti:

  • nofetchall: Recupera solo nuovi messaggi (predefinito). Se non viene specificato altro (ad es. fetchall, keep), questo significa nofetchall.
  • fetchall: Recupera tutti i messaggi, sia che siano stati letti o meno.
  • keep: Non eliminare i messaggi letti dal server.
  • nokeep: Elimina i messaggi letti dal server.

Per saperne di più su tutte le impostazioni di configurazione disponibili, dai un’occhiata a

man fetchmail

/etc/fetchmailrc deve avere permessi 600 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 dovrebbe ora scaricare email e metterle nelle caselle di posta di falko e till (utilizzando l’MTA). Ripeterà questo ogni set daemon secondi.

3.2 Usa File Di Configurazione Per Utente E Esegui fetchmail Tramite Cron

Invece di utilizzare un file di configurazione globale come mostrato nel capitolo 3.1, possiamo utilizzare file di configurazione per utente. Questi devono avere il nome .fetchmailrc e devono trovarsi nella home directory dell’utente.

Vogliamo creare un file del genere per l’utente falko ora. Assicurati di essere connesso come falko, non come root! Poi facciamo questo:

cd ~/  
vi .fetchmailrc
set postmaster falko
set bouncemail

poll pop.someprovider.tld protocol POP3 user "[email protected]" there with password "secret"
poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" fetchall

Il file appare molto simile al file /etc/fetchmailrc del capitolo 3.1, tuttavia noterai che non utilizzo più la frase is falko here (poiché .fetchmailrc è nella home directory di falko, fetchmail sa che le email devono essere consegnate a falko). Naturalmente, puoi ancora usare is falko here, quindi il file potrebbe apparire così:

set postmaster falko
set bouncemail

poll pop.someprovider.tld protocol POP3 user "[email protected]" there with password "secret" is falko here
poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" is falko here fetchall

Per saperne di più su tutte le impostazioni di configurazione disponibili, dai un’occhiata a

man fetchmail

.fetchmailrc deve avere permessi 600, in modo che solo falko possa leggerlo/scriverci:

chmod 600 ~/.fetchmailrc

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

fetchmail

oppure

fetchmail -v

che mostra cosa sta succedendo.

Naturalmente, falko non vuole avviare il recupero manualmente ogni pochi minuti, quindi creiamo un lavoro cron per lui. Ancora come utente falko, eseguiamo

crontab -e

e creiamo un lavoro cron come questo (che avvierebbe fetchmail ogni cinque minuti):

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

4 Link

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.