Questa sezione descrive come impostare il software del vostro client POP per usare la connessione SSH inoltrata. Il suo obiettivo principale è fetchmail (un'eccellente utility ESR per l'inoltro e la consegna), poiché è il software più flessibile che ho trovato per la distribuzione con il POP. Fetchmail può essere trovato su http://www.tuxedo.org/~esr/fetchmail/. Questo vi darà l'occasione per leggere l'eccellente documentazione distribuita con fetchmail.
Il seguente è il mio .fetchmailrc
defaults
user msingh is manish
no rewrite
poll localhost with protocol pop3 and port 11110:
preconnect "ssh -C -f msingh@popserver -L 11110:popserver:110 sleep 5"
password foobar;
Molto semplice, vero? fetchmail è ricco di comandi, ma quelli più importanti
sono la riga preconnect
e l'opzione poll
.
Non ci connettiamo direttamente con il server POP, ma con l'host locale
(localhost) e la porta 11110. La preconnect
da l'inoltro ogni volta che si
avvia fetchmail, lasciando aperta la connessione per 5 secondi, così fetchmail
può instaurare la sua connessione. Il resto lo fa fetchmail stesso.
Ogni volta che avviate fetchmail, siete incitati a dare la vostra password per l'autenticazione SSH. Se avviate fetchmail in background (come ho fatto io), avrete l'inconveniente di dover fare questo. Questo ci porta alla prossima sezione.
SSH può autenticare usando molti metodi. Uno di questi è l'utilizzo di una
coppia di chiavi pubblica/privata RSA. Potete generare una chiave
d'autenticazione per il vostro account usando ssh-keygen
. Una chiave
d'autenticazione può avere una passphrase (frase password) associata ad essa,
oppure la passphrase può essere vuota. Il volere o no una passphrase dipende da
quanto pensiate che sia sicuro l'account che state usando localmente.
Se voi pensate che la vostra macchina sia sicura, proseguite e avrete una
passphrase vuota. Poi il su riportato .fetchmailrc
lavora appena avviate
fetchmail. In seguito potete far funzionare fetchmail in modalità demone quando
voi chiamate e la posta è consegnata automaticamente. Avete fatto.
Tuttavia, se pensate di aver bisogno di una passphrase, le cose diventano più
complicate. SSH può funzionare sotto il controllo di un agente, il quale
può registrare le chiavi e autenticare qualsiasi connessione SSH fatta sotto di
esso. Per questo motivo io ho questo script getmail.sh
:
#!/bin/sh
ssh-add
while true; do fetchmail --syslog --invisible; sleep 5m; done
Quando chiamo, io avvio:
$ ssh-agent getmail.sh
Mi chiede la password una volta sola, poi controlla la posta ogni 5 minuti. Quando la connessione dialup viene chiusa, termino ssh-agent. (Questo è automatico nei miei script ip-up e ip-down)
E se non posso o non voglio usare fetchmail? Pine, Netscape e molti altri client hanno il loro proprio meccanismo POP. Primo, prendete in considerazione l'utilizzo di fetchmail! Esso è di gran lunga più flessibile e i client di posta non possono fare ogni volta tutte queste cose. Sia Pine che Netscape possono essere configurati per usare il sistema di posta locale.
Ma se proprio dovete farlo, a meno che il vostro client abbia una caratteristica
di preconnessione come fetchmail, state andando nella direzione di dover
mantenere attivo l'SSH port forwarding per l'intero tempo che state connessi.
Questo significa usare sleep 100000000
per mantenere attiva la connessione.
Questo potrebbe non farvi andare troppo d'accordo con il vostro amministratore
di rete.
Secondariamente, alcuni client (come Netscape) hanno il numero della porta preimpostato a 110, così avrete bisogno di essere root per fare il port forwarding da porte privilegiate. Questo è anche irritante. Ma dovrebbe funzionare.