Recupero di email da server remoti con fetchmail su Debian
Su questa pagina
- 1 Nota preliminare
- 2 Installa fetchmail
- 3 Configura fetchmail
- 3.1 Eseguire fetchmail come demone con un file di configurazione globale
- 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/fetchmailrcInfine, 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 .fetchmailrcset 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