Capitolo 6. Applicazioni per la rete

Indice

6.1. Browser web
6.1.1. Configurazione del browser
6.2. Il sistema di posta
6.2.1. Nozioni di base sulla posta elettronica
6.2.2. Nozioni di base sui servizi di posta moderni
6.2.3. Strategia di configurazione della posta per postazione PC
6.3. Agente di trasporto della posta (MTA)
6.3.1. La configurazione di exim4
6.3.2. La configurazione di Postfix con SASL
6.3.3. La configurazione dell'indirizzo di posta
6.3.4. Operazioni di base degli MTA
6.4. Programma di posta (MUA, Mail User Agent)
6.4.1. Programma di posta base — Mutt
6.5. L'utilità per il recupero della posta da remoto e l'inoltro
6.5.1. Configurazione di getmail
6.5.2. configurazione di fetchmail
6.6. Agente di consegna della posta (MDA, Mail Delivery Agent) con filtri
6.6.1. configurazione di maildrop
6.6.2. configurazione di procmail
6.6.3. Riconsegna del contenuto di mbox
6.7. Server POP3/IMAP4
6.8. Server ed utilità per la stampa
6.9. Il server e le utilità per l'accesso remoto (SSH)
6.9.1. Nozioni di base su SSH
6.9.2. Forwarding della porta per tunnel SMTP/POP3
6.9.3. Connettersi senza password remote
6.9.4. Gestire client SSH estranei
6.9.5. Impostare ssh-agent
6.9.6. Spegnere il sistema remoto su SSH
6.9.7. Risolvere il problemi con SSH
6.10. Altri server di rete
6.11. Altri client di rete
6.12. Diagnosi dei demoni di sistema

Dopo aver stabilito la connessione di rete (vedere Capitolo 5, Impostazione della rete), si possono eseguire svariate applicazioni per la rete.

6.1. Browser web

Ci sono molti pacchetti per browser web per accedere a contenuti remoti tramite HTTP (Hypertext Transfer Protocol).

Tabella 6.1. Elenco di browser web

pacchetto popcon dimensione tipo descrizione del browser web
chromium V:4, I:6 72177 per X Chromium, (browser open-source da Google)
iceweasel V:27, I:48 6387 " " Mozilla Firefox senza marchi
iceape-browser V:0.7, I:1.4 95 " " Mozilla senza marchi rimosso a causa di problemi con la sicurezza: bug#505565
epiphany-browser V:13, I:37 2025 " " Epiphany, per GNOME, aderente alle HIG
konqueror V:4, I:12 3396 " " Konqueror, per KDE
dillo V:0.10, I:0.4 1135 " " Dillo, (browser leggero, basato su FLTK)
w3m V:30, I:86 1924 testuali w3m
lynx I:18 242 " " Lynx
elinks V:2, I:5 1364 " " ELinks
links V:2, I:7 1225 " " Links (solo testo)
links2 V:0.6, I:3 3036 grafici Links (grafica in console senza X)

6.1.1. Configurazione del browser

Per alcuni browser si può accedere alle loro impostazioni usando le seguenti stringhe URL speciali.

  • "about:"

  • "about:config"

  • "about:plugins"

Debian offre, nell'area main dell'archivio, molti pacchetti liberi con plugin per browser che possono gestire non soltanto Java (piattaforma software) e Flash, ma anche file MPEG, MPEG2, MPEG4, DivX, Windows Media Video (.wmv), QuickTime (.mov), MP3 (.mp3), file Ogg/Vorbis, DVD, VCD, ecc. Debian offre anche, nell'aree contrib o non-free dell'archivio, programmi di aiuto per installare pacchetti con plugin non liberi per il browser.

Tabella 6.2. Elenco di pacchetti con plugin per browser

pacchetto popcon dimensione area descrizione
icedtea6-plugin V:1.0, I:2 21 main Plugin Java basato su OpenJDK e IcedTea
mozilla-plugin-gnash I:2 53 main Plugin Flash basato su Gnash
flashplugin-nonfree V:1.3, I:22 136 contrib Strumento di aiuto per plugin Flash, per installare Adobe Flash Player (soli i386 e amd64)
mozilla-plugin-vlc V:1.7, I:2 27 main Plugin multimediale basato sul riproduttore multimediale VLC
totem-mozilla V:17, I:32 591 main Plugin multimediale basato sul riproduttore multimediale Totem di GNOME
gecko-mediaplayer V:0.9, I:1.1 710 main Plugin multimediale basato su MPlayer (GNOME)
nspluginwrapper V:0.8, I:2 472 contrib Wrapper per eseguire plugin Netscape per i386 sull'architettura amd64

[Suggerimento] Suggerimento

Benché l'uso dei pacchetti Debian elencati sopra sia molto più facile, è sempre possibile abilitare i plugin manualmente installando i file "*.so" nelle directory dei plugin (ad esempio, "/usr/lib/iceweasel/plugins/") e riavviando il browser.

Alcuni siti web rifiutano la connessione in base alla stringa user-agent del browser. Si può aggirare questa situazione mimando la stringa user-agent. Per esempio, può essere fatto aggiungendo nei file di configurazione, come "~/.gnome2/epiphany/mozilla/epiphany/user.js" o "~/.mozilla/firefox/*.default/user.js", la riga seguente.

user_pref{"general.useragent.override","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"};

In alternativa si può aggiungere e reimpostare questa variabile digitando "about:config" al posto dell'URL e cliccando con il pulsante destro sul suo contenuto.

[Attenzione] Attenzione

La stringa user-agent falsificata può causare dei brutti effetti collaterali con Java.

6.2. Il sistema di posta

[Attenzione] Attenzione

Se si desidera impostare il server di posta per scambiare la posta direttamente con Internet, si dovrebbe leggere una documentazione più dettagliata di questo documentazione base.

[Nota] Nota

Gli esempi di configurazione che seguono sono validi solamente per la postazione di lavoro mobile su connessioni Internet di largo consumo.

6.2.1. Nozioni di base sulla posta elettronica

Un messaggio email è formato da tre componenti: la busta del messaggio, l'intestazione del messaggio e il corpo del messaggio.

Le informazioni "To" e "From" nella busta del messaggio vengono usate dall'SMTP per consegnare l'email. (L'informazione "From" nella busta del messaggio è anche chiamata indirizzo di bounce, From_, ecc.)

Le informazioni "To" e "From" nell'intestazione del messaggio vengono visualizzate dal programma di posta. (Benché nella maggior parte dei casi questi sono identici a quelli nella busta del messaggio, può non essere sempre così.)

Il programma di posta deve interpretare l'intestazione e il corpo del messaggio usando MIME (Multipurpose Internet Mail Extensions) per gestire il tipo di dati e la codifica del contenuto.

6.2.2. Nozioni di base sui servizi di posta moderni

Per limitare i problemi di spam (posta elettronica indesiderata e non richiesta), molti fornitori di servizi Internet che forniscono connessioni Internet domestiche stanno implementando contromisure.

  • Il servizio smarthost per i loro clienti per inviare i messaggi usa la porta di inoltro dei messaggi (587) specificata in rfc4409, con la password (servizio SMTP AUTH) come specificata in rfc4954.

  • Le connessioni alla porta (25) SMTP dagli host interni della loro rete (tranne che per il server della posta in uscita del fornitore di servizi stesso) verso Internet sono bloccate.

  • Le connessioni alla porta (25) SMTP del server di posta in entrata del fornitore di servizi Internet da host di rete esterni sospetti sono bloccate. (La connessione da host su intervalli di indirizzi IP dinamici usati dalle connessioni Internet dial-up e da altre connessioni di tipo domestico sono le prime ad essere bloccate).

  • Tecniche anti-spam come DKIM (DomainKeys Identified Mail) e SPF (Sender_Policy_Framework) sono usate di frequente per il filtraggio delle email.

  • Il servizio DomainKeys Identified Mail può essere fornito per la propria posta inviata attraverso uno smarthost.

Queste nuove limitazioni vanno tenute a mente quando si configura il proprio server di posta o si cerca di risolvere problemi di consegna della posta.

Alla luce di queste limitazioni e situazioni ostili in Internet, alcuni fornitori di servizi di posta via Internet indipendenti, come Yahoo.com e Gmail.com, offrono un servizio di posta sicuro a cui ci si può connettere da qualsiasi parte di Internet usando TLS (Transport Layer Security) e il suo predecessore SSL (Secure Sockets Layer).

  • Il servizio smarthost sulla porta 465 con il deprecato SMTP via SSL (protocollo SMTPS).

  • Il servizio smarthost sulla porta 587 con STARTTLS.

  • La posta in entrata è accessibile sulla porta TLS/POP3 (995) con POP3.

[Attenzione] Attenzione

Avere in esecuzione un server SMTP su una rete ad uso personale per inviare posta direttamente ad host remoti in modo affidabile non è un'ipotesi realistica. È molto probabile che la posta venga rigettata. Si deve usare un qualche servizio smarthost offerto dal proprio fornitore di servizi Internet o da fornitori di servizi di posta via Internet indipendenti.

Per semplicità, nel testo che segue si assume che lo smarthost sia alla posizione "smtp.hostname.dom", che richieda SMTP AUTH e che usi la porta di invio dei messaggi (587) con STARTTLS.

6.2.3. Strategia di configurazione della posta per postazione PC

La configurazione di posta più semplice possibile è che la posta sia inviata allo smarthost del fornitore di servizi Internet e ricevuta dal server POP3 del fornitore di servizi dal programma di posta (vedere Sezione 6.4, «Programma di posta (MUA, Mail User Agent)») stesso. Questo tipo di configurazione è popolare per i programmi di posta completi basati su interfaccia utente grafica come icedove(1), evolution(1), ecc. Se si necessita di filtrare la posta in base alla sua tipologia, si usano le funzioni di filtro del programma di posta. In questo caso l'MTA (vedere Sezione 6.3, «Agente di trasporto della posta (MTA)») locale deve solo fare la consegna locale della posta.

La configurazione di posta alternativa prevede che la posta sia inviata attraverso l'MTA locale allo smarthost del fornitore di servizi Internet e ricevuta dal server POP3 del fornitore di servizi dal programma di recupero della posta (vedere Sezione 6.5, «L'utilità per il recupero della posta da remoto e l'inoltro») che la mette nella casella di posta locale. Se si necessita di filtrare la posta in base alla sua tipologia, si usa un MDA con filtri (vedere Sezione 6.6, «Agente di consegna della posta (MDA, Mail Delivery Agent) con filtri») per smistare la posta in caselle diverse. Questo tipo di configurazione è popolare con i semplici programmi di posta basati sulla console come mutt(1), gnus(1), ecc., anche se è possibile con qualsiasi programma di posta (vedere Sezione 6.4, «Programma di posta (MUA, Mail User Agent)»). In questo caso l'MTA (vedere Sezione 6.3, «Agente di trasporto della posta (MTA)») locale deve fare sia la consegna allo smarthost sia quella locale. Dato che le postazioni di lavoro mobile non hanno un FQDN valido, è necessario configurare l'MTA locale in modo che nasconda e falsifichi il vero nome locale del sistema di posta nei messaggi di posta in uscita per evitare errori nella consegna della posta (vedere Sezione 6.3.3, «La configurazione dell'indirizzo di posta»).

[Suggerimento] Suggerimento

Si potrebbe voler configurare i MUA e MDA in modo che usino il formato Maildir per archiviare i messaggi di posta elettronica da qualche parte nella propria directory home.

6.3. Agente di trasporto della posta (MTA)

Per le normali postazioni PC, la scelta più comune per il server di posta (MTA) sono i pacchetti exim4-* o postfix. La scelta spetta all'utente.

Tabella 6.3. Elenco di pacchetti base relativi ai server di trasporto della posta per postazioni PC

pacchetto popcon dimensione descrizione
exim4-daemon-light V:62, I:68 1190 agente di trasporto della posta Exim4 (MTA predefinito in Debian)
exim4-base V:63, I:70 1486 documentazione (formato testo) e file comuni per Exim4
exim4-doc-html I:0.4 2970 documentazione per Exim4 (in formato HTML)
exim4-doc-info I:0.2 545 documentazione per Exim4 (in formato info)
postfix V:16, I:18 3397 agente di trasferimento della posta Postfix (MTA alternativo)
postfix-doc I:1.6 3478 documentazione per Postfix (formati HTML e testo)
sasl2-bin V:1.6, I:4 431 implementazione dell'API SASL Cyrus (di supporto a Postfix per SMTP AUTH)
cyrus-sasl2-doc I:1.1 247 SASL Cyrus - documentazione

Anche dal conteggio dei voti popcon exim4-* sembra svariate volte più popolare di postfix, ciò non significa che postfix non sia popolare tra gli sviluppatori Debian. Il sistema server Debian usa sia exim4 sia postfix. Anche l'analisi delle intestazioni della posta sui messaggi delle mailing list, da parte di sviluppatori Debian di spicco, indica che i due MTA sono ugualmente popolari.

I pacchetti exim4-* sono conosciuti per il loro consumo di memoria molto basso e per essere molto flessibili nella configurazione. Il pacchetto postfix è conosciuto per essere compatto, veloce, facile e sicuro. Entrambi sono forniti con un'ampia documentazione, sono di alta qualità ed hanno una buona licenza.

Nell'archivio Debian ci sono molte scelte per i pacchetti con agenti di trasporto della posta (MTA) con capacità e scopi diversi.

Tabella 6.4. Elenco delle scelte per l'agente di trasporto della posta (MTA) tra i pacchetti dell'archivio Debian

pacchetto popcon dimensione capacità e scopo
exim4-daemon-light V:62, I:68 1190 completa
postfix V:16, I:18 3397 completa (sicurezza)
exim4-daemon-heavy V:1.3, I:1.5 1324 completa (flessibilità)
sendmail-bin V:1.6, I:1.7 1940 completa (solo se si ha già familiarità con esso)
nullmailer V:0.6, I:0.8 444 ridotta, niente posta locale
ssmtp V:1.2, I:1.6 1 ridotta, niente posta locale
courier-mta V:0.09, I:0.10 1773 molto completa (interfaccia web, ecc.)
xmail V:0.05, I:0.06 688 leggera
masqmail V:0.03, I:0.04 736 leggera
esmtp V:0.07, I:0.16 143 leggera
esmtp-run V:0.05, I:0.07 56 leggera (estensioni per la compatibilità con sendmail per esmtp)
msmtp V:0.3, I:0.8 229 leggera
msmtp-mta V:0.11, I:0.13 30 leggera (estensioni per la compatibilità con sendmail per msmtp)

6.3.1. La configurazione di exim4

Per la posta di Internet attraverso uno smarthost, riconfigurare i pacchetti exim4-* nel modo seguente.

$ sudo /etc/init.d/exim4 stop
$ sudo dpkg-reconfigure exim4-config

Selezionare "posta inviata tramite «uno smarthost», ricevuta via SMTP o fetchmail" per "Tipo di configurazione del sistema di posta".

Impostare "Mail name del sistema:" al suo valore predefinito come FQDN (vedere Sezione 5.1.2, «Risoluzione dei nomi di host»).

Impostare "indirizzi IP sui quali attendere connessioni SMTP in ingresso:" al suo valore predefinito "127.0.0.1 ; ::1".

Svuotare il contenuto di "Altre destinazioni per conto delle quali accettare posta:".

Svuotare il contenuto di "Sistemi per i quali fare il "relay":".

Impostare l'"Indirizzo IP o nome host dello smarthost per la posta in uscita:" a "smtp.hostname.dom:587".

Selezionare "<No>" per "Omettere il mail name locale dai messaggi in uscita?". (Usare invece "/etc/email-addresses" come in Sezione 6.3.3, «La configurazione dell'indirizzo di posta».)

Rispondere a "Mantenere al minimo il numero di richieste DNS (Dial-on-Demand)?" in uno dei modi seguenti.

  • "No", se il sistema è connesso ad Internet durante l'avvio.

  • "Sì", se il sistema non è connesso ad Internet durante l'avvio.

Impostare "Modalità di consegna per la posta locale:" a "Formato mbox in /var/mail/".

Selezionare "<Sì>" per "Dividere la configurazione in molti piccoli file?:".

Creare voci per la password dello smarthost modificando il file "/etc/exim4/passwd.client".

$ sudo vim /etc/exim4/passwd.client
 ...
$ cat /etc/exim4/passwd.client
^smtp.*\.hostname\.dom:nomeutente@hostname.dom:password

Avviare exim4 con il comando seguente.

$ sudo /etc/init.d/exim4 start

Il nome host in "/etc/exim4/passwd.client" non dovrebbe essere l'alias. Si può controllare il vero nome host nel modo seguente.

$ host smtp.hostname.dom
smtp.hostname.dom is an alias for smtp99.hostname.dom.
smtp99.hostname.dom has address 123.234.123.89

Per aggirare il problema degli alias, io uso espressioni regolari nel file "/etc/exim4/passwd.client" SMTP AUTH probabilmente funziona anche se il fornitore di servizi Internte sposta l'host a cui punta l'alias.

Si può aggiornare manualmente la configurazione di exim4 facendo quanto segue:

  • Aggiornare i file di configurazione di exim4 in "/etc/exim4/".

    • Creare "/etc/exim4/exim4.conf.localmacros" per impostare le MACRO e modificare "/etc/exim4/exim4.conf.template". (Configurazione non suddivisa.)

    • Creare nuovi file o modificare quelli esistenti nelle sottodirectory "/etc/exim4/exim4.conf.d". (Configurazione suddivisa.)

  • Eseguire "invoke-rc.d exim4 reload".

Leggere la guida ufficiale in "/usr/share/doc/exim4-base/README.Debian.gz" e update-exim4.conf(8).

[Attenzione] Attenzione

Se si è scelta la ripsosta "No" (risposta predefinita) per la domanda di debconf "Mantenere al minino il numero di richieste DNS (Dial-on-Demand)?" ed il sistema non è connesso ad Internet, l'avvio di exim4 può richiedere un tempo molto lungo.

[Avvertimento] Avvertimento

Usare password in testo semplice senza cifratura non è sicuro, nemmeno se il proprio ISP lo permette.

[Suggerimento] Suggerimento

Benché sia raccomandato l'uso di SMTP con STARTTLS sulla porta 587, alcuni ISP usano ancora il deprecato SMTPS (SSL sulla porta 465). Exim4 dopo la versione 4.77 supporta questo protocollo SMTPS deprecato sia per il client sia per il server.

[Suggerimento] Suggerimento

Se si sta cercando un MTA leggero che rispetti "/etc/aliases" per il proprio PC portatile, si dovrebbe considerare la configurazione di exim4(8) con "QUEUERUNNER='queueonly'", "QUEUERUNNER='nodaemon' ecc. in "/etc/default/exim4".

6.3.2. La configurazione di Postfix con SASL

Per la posta Internet via smarthost, si dovrebbe come prima cosa leggere la documentazione di Postfix e le pagine man principali.

Tabella 6.5. Elenco delle pagine di manuale di Postfix importanti

comando funzione
postfix(1) programma di controllo di Postfix
postconf(1) utilità di configurazione per Postfix
postconf(5) parametri di configurazione di Postfix
postmap(1) gestione delle tabelle di consultazione di Postfix
postalias(1) gestione del database degli alias di Postfix

Si possono (ri)configurare i pacchetti postfix e sasl2-bin nel modo seguente.

$ sudo /etc/init.d/postfix stop
$ sudo dpkg-reconfigure postfix

Scegliere "Internet con smarthost".

Impostare "relay host SMTP (vuoto per nessuno):" a "[smtp.hostname.dom]:587" e configurarlo nel modo seguente.

$ sudo postconf -e 'smtp_sender_dependent_authentication = yes'
$ sudo postconf -e 'smtp_sasl_auth_enable = yes'
$ sudo postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'
$ sudo postconf -e 'smtp_sasl_type = cyrus'
$ sudo vim /etc/postfix/sasl_passwd

Creare le voci con le password per lo smarthost.

$ cat /etc/postfix/sasl_passwd
[smtp.hostname.dom]:587     nomeutente:password
$ sudo postmap hash:/etc/postfix/sasl_passwd

Avviare postfix con il comando seguente.

$ sudo /etc/init.d/postfix start

In questo caso l'uso di "[" e "]" nel dialogo di dpkg-reconfigure e in "/etc/postfix/sasl_passwd" assocura che non venga controllato il record MX, ma usato direttamente l'esatto nome host specificato. Vedere "Abilitare l'autenticazione SASL nel client SMTP di Postfix" in "/usr/share/doc/postfix/html/SASL_README.html".

6.3.3. La configurazione dell'indirizzo di posta

Ci sono diversi file di configurazione dell'indirizzo di posta per gli strumenti di trasporto della posta, di consegna e per i programma di posta.

Tabella 6.6. Elenco dei file di configurazione correlati all'indirizzo di posta

file funzione applicazione
/etc/mailname nome host predefinito per la posta (in uscita) specifico di Debian, mailname(5)
/etc/email-addresses sostituzione del home host per la posta in uscita specifico di exim(8), exim4-config_files(5)
/etc/postfix/generic sostituzione del home host per la posta in uscita specifico di postfix(1), attivato dopo l'esecuzione del comando postmap(1)
/etc/aliases alias dei nomi degli account per la posta in entrata generale, attivato dopo l'esecuzione del comando newaliases(1)

Il nomeposta nel file "/etc/mailname" è solitamente un nome di dominio pienamente qualificato (FQDN) che è risolto ad uno degli indirizzi IP dell'host. Per le postazioni mobili che non hanno un nome host con un indirizzo IP risolvibile, impostare questo nomemail al valore di "hostname -f". (Questa è una scelta sicura e funziona sia per exim4-* sia per postfix.)

[Suggerimento] Suggerimento

Il contenuto di "/etc/mailname" è usato da molti programmi non MTA per determinare il loro comportamento predefinito. Per mutt, impostare le variabili "hostname" e from" nel file ~/muttrc per sovrascrivere il valore di mailname. Per i programmi nel pacchetto devscripts, come bts(1) e dch(1), esportare le variabili d'ambiente "$DEBFULLNAME" e "$DEBEMAIL" per sovrascriverlo.

[Suggerimento] Suggerimento

Il pacchetto popularity-contest normalmente invia posta dall'account di root con FQDN. È necessario impostare MAILFROM in /etc/popularity-contest.conf come descritto nel file /usr/share/popularity-contest/default.conf. In caso contrario la posta verrà rigettata dal server SMTP dello smarthost. Sebbene sia una scocciatura, questo approccio è più sicuro della riscrittura dell'indirizzo sorgente di tutta la posta di root da parte dell'MTA e dovrebbe essere usato per altri demoni e script cron.

Qunado si imposta mailname al valore di "hostname -f", la modifica dell'indirizzo di posta d'origine con il MTA può essere fatta nel modo seguente.

  • Usando il file "/etc/email-addresses" per exim4(8), come spiegato in exim4-config_files(5).

  • Usando il file "/etc/postfix/generic" per postfix(8), come spiegato in generic(5).

Per postfix sono necessarie, in aggiunta, le azioni seguenti.

# postmap hash:/etc/postfix/generic
# postconf -e 'smtp_generic_maps = hash:/etc/postfix/generic'
# postfix reload

Si può testare la configurazione dell'indirizzo di posta nel modo seguente.

  • per exim(8) con le opzioni -brw, -bf, -bF, -bV, …

  • per postmap(1) con l'opzione -q.

[Suggerimento] Suggerimento

Exim viene fornito con svariati programmi di utilità, come exiqgrep(8) e exipick(8). Per conoscere i comandi disponibili vedere "dpkg -L exim4-base|grep man8/".

6.3.4. Operazioni di base degli MTA

Ci sono svariate operazioni di base degli MTA. Alcune possono essere fatte usando l'interfaccia di compatibilità con sendmail(1).

Tabella 6.7. Elenco di operazioni base degli MTA

comando exim comando postfix descrizione
sendmail sendmail legge la posta dallo standard input e gestisce la consegna (-bm)
mailq mailq elenca la coda della posta con stato e ID dei messaggi in coda (-bp)
newaliases newaliases inizializza il database degli alias (-I)
exim4 -q postqueue -f invia tutta la posta in attesa (-q)
exim4 -qf postsuper -r ALL deferred; postqueue -f invia tutta la posta
exim4 -qff postsuper -r ALL; postqueue -f invia anche la posta congelata
exim4 -Mg id_in_coda postsuper -h id_in_coda congela un messaggio in base al suo ID nella coda
exim4 -Mrm id_in_coda postsuper -d id_in_coda rimuove un messaggio in base al suo ID nella coda
N/D postsuper -d ALL rimuove tutti i messaggi

[Suggerimento] Suggerimento

Può essere una buona idea far inviare tutta la posta da uno script in "/etc/ppp/ip-up.d/*".

6.4. Programma di posta (MUA, Mail User Agent)

Se ci si iscrive ad una mailing list relativa a Debian, può essere una buona idea usare programmi di posta come mutt e gnus che sono lo standard de facto per i partecipanti e che si comportano come previsto.

Tabella 6.8. Elenco di programmi di posta (MUA)

pacchetto popcon dimensione tipo
evolution V:16, I:37 5046 programma per X con interfaccia utente grafica (GNOME3, suite groupware)
icedove V:7, I:12 40292 programma per X con interfaccia utente grafica (GNOME2, Mozilla Thunderbird senza marchi)
kmail V:2, I:9 29238 programma per X con interfaccia utente grafica (KDE)
mutt V:27, I:85 5446 programma basato su terminale a caratteri probabilmente usato con vim
gnus V:0.02, I:0.19 6453 programma basato su terminale a caratteri in (x)emacs

6.4.1. Programma di posta base — Mutt

Per usare mutt come programma di posta (MUA) in combinazione con vim, persoonalizzare "~/.muttrc" nel modo seguente.

#
# File di configurazione utente per sovrascrivere le impostazioni in /etc/Muttrc
#
# falsifica gli indirizzi di posta sorgenti
set use_from
set hostname=esempio.dom
set from="Nome Cognome <nomeutente@esempio.dom>"
set signature="~/.signature"

# vim: "gq" per riformattare le citazioni
set editor="vim -c 'set tw=72 et ft=mail'"

# "mutt" apre la posta in entrata, mentre "mutt -y" elenca le caselle di posta
set mbox_type=Maildir           # usa il formato Maildir di qmail per creare mbox
set mbox=~/Mail                 # mette tutte le caselle di posta in $HOME/Mail/
set spoolfile=+Inbox            # posta consegnata in $HOME/Mail/Inbox
set record=+Outbox              # salva la posta fcc in $HOME/Mail/Outbox
set postponed=+Postponed        # mette la posta posposta in $HOME/Mail/postponed
set move=no                     # non spostare gli elementi nella posta in entrata in mbox
set quit=ask-yes                # non uscire con il semplice uso di "q"
set delete=yes                  # all'uscita cancella sempre senza chiedere
set fcc_clear                   # salva fcc come non cifrate

# Caselle di posta in Maildir (aggiornamento automatico)
mailboxes `cd ~/Mail; /bin/ls -1|sed -e 's/^/+/' | tr "\n" " "`
unmailboxes Maillog *.ev-summary

## Predefinito
#set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s"
## Indice con thread con mittenti (collassato)
set index_format="%4C %Z %{%b %d} %-15.15n %?M?(#%03M)&(%4l)? %s"

## Predefinito
#set folder_format="%2C %t %N %F %2l %-8.8u %-8.8g %8s %d %f"
## solo i nomi delle cartelle
set folder_format="%2C %t %N %f"

Per visualizzare la posta HTML e gli allegati MS Word all'interno del messaggio, aggiungere a "/etc/mailcap" o a "~/.mailcap" le righe seguenti.

text/html; lynx -force_html %s; needsterminal;
application/msword; /usr/bin/antiword '%s'; copiousoutput; description="Microsoft Word Text"; nametemplate=%s.doc
[Suggerimento] Suggerimento

Mutt può essere usato come client IMAP e convertitore di formato per le caselle di posta. Si possono marcare messaggi con "t", "T", ecc. Questi messaggi marcati possono essere copiati con ";C" tra caselle di posta diverse e cancellati in un'unica volta con ";d".

6.5. L'utilità per il recupero della posta da remoto e l'inoltro

Anche se fetchmail(1) è stato lo standard de facto in GNU/Linux per il recupero della posta da remoto, l'autore preferisce getmail(1). Se si desidera rifiutare la posta prima di scaricarla per salvare banda, potrebbero essere utili mailfilter o mpop. Qualsiasi strumento di recupero della posta si usi, è una buona idea configurare il sistema in modo che la posta recuperata venga consegnata ad un MDA, come maildrop, attraverso una pipe.

Tabella 6.9. Elenco di utilità per il recupero della posta da remoto e l'inoltro

pacchetto popcon dimensione descrizione
fetchmail V:1.8, I:4 2356 strumento di recupero della posta (POP3, APOP, IMAP) (vecchio)
getmail4 V:0.2, I:0.9 597 strumento di recupero della posta (POP3, IMAP4 e SDPS) (semplice, sicuro e affidabile)
mailfilter V:0.00, I:0.05 340 strumento di recupero della posta (POP3) con capacità di filtraggio con espressioni regolari
mpop V:0.01, I:0.07 207 strumento di recupero della posta (POP3) e MDA con capacità di filtraggio con espressioni regolari

6.5.1. Configurazione di getmail

La configurazione di getmail(1) è descritta nella documentazione di getmail. Quelle seguenti sono le mie impostazioni per accedere ad account POP3 multipli come utente.

Creare il file "/usr/local/bin/getmails" nel modo seguente.

#!/bin/sh
set -e
if [ -f $HOME/.getmail/running ]; then
  echo "getmail is already running ... (if not, remove $HOME/.getmail/running)" >&2
  pgrep -l "getmai[l]"
  exit 1
else
  echo "getmail has not been running ... " >&2
fi
if [ -f $HOME/.getmail/stop ]; then
  echo "do not run getmail ... (if not, remove $HOME/.getmail/stop)" >&2
  exit
fi
if [ "x$1" = "x-l" ]; then
  exit
fi
rcfiles="/usr/bin/getmail"
for file in $HOME/.getmail/config/* ; do
  rcfiles="$rcfiles --rcfile $file"
done
date -u > $HOME/.getmail/running
eval "$rcfiles $@"
rm $HOME/.getmail/running

Configurarlo nel modo seguente.

$ sudo chmod 755 /usr/local/bin/getmails
$ mkdir -m 0700 $HOME/.getmail
$ mkdir -m 0700 $HOME/.getmail/config
$ mkdir -m 0700 $HOME/.getmail/log

Creare i file "$HOME/.getmail/config/nome_pop3", uno per ciascun account POP3, nel modo seguente.

[retriever]
type = SimplePOP3SSLRetriever
server = pop.eesempio.com
username =  nome_pop3@esempio.com
password = segreta

[destination]
type = MDA_external
path = /usr/bin/maildrop
unixfrom = True

[options]
verbose = 0
delete = True
delivered_to = False
message_log = ~/.getmail/log/nome_pop3.log

Configurarlo nel modo seguente.

$ chmod 0600 $HOME/.getmail/config/*

Pianificare l'esecuzione di "/usr/local/bin/getmails" ogni 15 minuti usando cron(8), eseguendo "sudo crontab -e -u <nome_utente>" e aggiungendo la riga seguente alle voci di cron dell'utente.

5,20,35,50 * * * * /usr/local/bin/getmails --quiet
[Suggerimento] Suggerimento

Eventuali problemi nell'accesso POP3 potrebbero non derivare da getmail. Alcuni servizi POP3 gratuiti popolari possono violare il protocollo POP3 e i loro filtri anti-SPAM possono non essere perfetti. Per esempio, possono cancellare i messaggi subito dopo aver ricevuto il comando RETR, prima di ricevere il comando DELE, e possono mettere messaggi in quarantena nella casella dello Spam. Si dovrebbero minimizzare i danni configurandoli in modo da archiviare i messaggi a cui si ha avuto accesso, senza cancellarli. Vedere anche Alcuni messaggi di posta non sono stati scaricati.

6.5.2. configurazione di fetchmail

La configurazione di fetchmail(1) è determinata da "/etc/default/fetchmail", "/etc/fetchmailrc" e "$HOME/.fetchmailrc". Vedere il suo esempio di configurazione in "/usr/share/doc/fetchmail/examples/fetchmailrc.example".

6.6. Agente di consegna della posta (MDA, Mail Delivery Agent) con filtri

La maggior parte dei programmi MTA, come postfix e exim4, funziona anche da MDA (Mail Delivery Agent, agente di consegna della posta). Ci sono MDA specializzati con capacità di filtraggio.

Anche se procmail(1) è stato lo standard de facto in GNU/Linux per ciò riguarda gli MDA con filtri, l'autore preferisce maildrop(1). Qualsiasi strumento di filtraggio si usi, è una buona idea configurare il sistema per inviare la posta filtrata ad una Maildir in stile qmail.

Tabella 6.10. Elenco di MDA con filtri

pacchetto popcon dimensione descrizione
procmail V:20, I:86 368 MDA con filtri (vecchio)
mailagent V:0.3, I:4 1201 MDA con filtri Perl
maildrop V:0.2, I:0.6 1221 MDA con linguaggio strutturato per i filtri

6.6.1. configurazione di maildrop

La configurazione di maildrop(1) è descritta nella documentazione di maildropfilter. Quello che segue è un esempio di configurazione per "$HOME/.mailfilter".

# Configurazione locale
MAILROOT="$HOME/Mail"
# impostare questo al contenuto di /etc/mailname
MAILHOST="esempio.dom"
logfile $HOME/.maildroplog

# le regole sono fatte per sovrascrivere il valore precedente con quello successivo.

# posta di mailing list ?
if (     /^Precedence:.*list/:h || /^Precedence:.*bulk/:h )
{
    # regole per la posta di mailing list
    # casella di posta predefinita per i messaggi di mailing list
    MAILBOX="Inbox-list"
    # casella di posta predefinita per i messaggi di debian.org
    if ( /^(Sender|Resent-From|Resent-Sender): .*debian.org/:h )
    {
        MAILBOX="service.debian.org"
    }
    # casella di posta predefinita per i messaggi di bugs.debian.org (BTS)
    if ( /^(Sender|Resent-From|Resent-sender): .*@bugs.debian.org/:h )
    {
        MAILBOX="bugs.debian.org"
    }
    # casella di posta per ogni mailing list correttamente mantenuta con "List-Id: pippo" o "List-Id: ...<pippo.pluto>"
    if ( /^List-Id: ([^<]*<)?([^<>]*)>?/:h )
    {
        MAILBOX="$MATCH2"
    }
}
else
{
    # regole per messaggi non di mailing list
    # casella di posta in entrata predefinita
    MAILBOX="Inbox-unusual"
    # messaggi di posta locali
    if ( /Envelope-to: .*@$MAILHOST/:h )
    {
        MAILBOX="Inbox-local"
    }
    # messaggi di posta html (al 99% posta indesiderata)
    if ( /DOCTYPE html/:b ||\
         /^Content-Type: text\/html/ )
    {
        MAILBOX="Inbox-html"
    }
    # regola per la lista nera per la posta indesiderata
    if ( /^X-Advertisement/:h ||\
         /^Subject:.*BUSINESS PROPOSAL/:h ||\
         /^Subject:.*URGENT.*ASISSTANCE/:h ||\
         /^Subject: *I NEED YOUR ASSISTANCE/:h )
    {
        MAILBOX="Inbox-trash"
    }
    # regola per la lista bianca per la posta normale
    if ( /^From: .*@debian.org/:h ||\
         /^(Sender|Resent-From|Resent-Sender): .*debian.org/:h ||\
         /^Subject: .*(debian|bug|PATCH)/:h )
    {
        MAILBOX="Inbox"
    }
    # regola per la lista bianca dei messaggi relativi al BTS
    if ( /^Subject: .*Bug#.*/:h ||\
         /^(To|Cc): .*@bugs.debian.org/:h )
    {
        MAILBOX="bugs.debian.org"
    }
    # regola per la lista bianca per messaggi di cron relativi a getmail
    if ( /^Subject: Cron .*getmails/:h )
    {
        MAILBOX="Inbox-getmails"
    }
}

# controlla esistenza di $MAILBOX
`test -d $MAILROOT/$MAILBOX`
if ( $RETURNCODE == 1 )
{
    # crea una casella di posta maildir per $MAILBOX
    `maildirmake $MAILROOT/$MAILBOX`
}
# consegna nella maildir $MAILBOX
to "$MAILROOT/$MAILBOX/"
exit
[Avvertimento] Avvertimento

A differenza di procmail, maildrop non crea automaticamente le directory maildir mancanti. Devono essere create prima manualmente usando maildirmake(1) come nell'esempio di file "$HOME/.mailfilter" precedente.

6.6.2. configurazione di procmail

Quello che segue è un file di configurazione simile "$HOME/.procmailrc" per procmail(1).

MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/Inbox/
LOGFILE=$MAILDIR/Maillog
# posta palesemente con brutto aspetto: gettarla in X-trash e uscire
:0
* 1^0 ^X-Advertisement
* 1^0 ^Subject:.*BUSINESS PROPOSAL
* 1^0 ^Subject:.*URGENT.*ASISSTANCE
* 1^0 ^Subject: *I NEED YOUR ASSISTANCE
X-trash/

# Consegna dei messaggi di mailinglist
:0
* 1^0 ^Precedence:.*list
* 1^0 ^Precedence:.*bulk
* 1^0 ^List-
* 1^0 ^X-Distribution:.*bulk
{
:0
* 1^0 ^Return-path:.*debian-devel-admin@debian.or.jp
jp-debian-devel/

:0
* ^Resent-Sender.*debian-user-request@lists.debian.org
debian-user/

:0
* ^Resent-Sender.*debian-devel-request@lists.debian.org
debian-devel/

:0
* ^Resent-Sender.*debian-announce-request@lists.debian.org
debian-announce

:0
mailing-list/
}

:0
Inbox/

6.6.3. Riconsegna del contenuto di mbox

Se la propria directory home diventa piena e la consegna con procmail(1) fallisce, sarà necessario consegnare manualmente la posta da "/var/mail/<nomeutente>" alle proprie caselle di posta distinte nella directory home. Dopo aver fatto spazio nella directory home, eseguire quanto segue.

# /etc/init.d/${MAILDAEMON} stop
# formail -s procmail </var/mail/<nomeutente>
# /etc/init.d/${MAILDAEMON} start

6.7. Server POP3/IMAP4

Se si deve eseguire un server privato in una LAN, si può prendere in considerazione l'esecuzione di un server POP3 / IMAP4 per la consegna della posta ai client nella LAN.

Tabella 6.11. Elenco di server POP3/IMAP4

pacchetto popcon dimensione tipo descrizione
qpopper V:0.8, I:3 684(*) POP3 Server POP3 BSD migliorato della Qualcomm
courier-pop V:1.3, I:1.8 107 POP3 Server di posta Courier - server POP3 (solo formato maildir)
ipopd V:0.07, I:0.12 169 POP3 Server POP2 e POP3 dell'Università di Washington
cyrus-pop3d V:0.00, I:0.00 21 POP3 sistema di posta Cyrus (supporto POP3)
xmail V:0.05, I:0.06 688 POP3 Server di posta ESMTP/POP3
courier-imap V:2, I:2 538 IMAP Server di posta Courier - server IMAP (solo formato maildir)
uw-imapd V:0.6, I:4 221 IMAP Server IMAP dell'Università di Washington
cyrus-imapd V:0.00, I:0.01 21 IMAP sistema di posta Cyrus (supporto IMAP)

6.8. Server ed utilità per la stampa

Nei vecchi sistemi *nix, lo standard era il demone di stampa BSD. Dato che il formato standard per l'output di stampa del software libero nei sistemi in stile Unix è PostScript, veniva usato un sistema di filtri insieme a Ghostscript per permettere la stampa su stampanti non-PostScript.

Di recente il nuovo standard de facto è CUPS (Common UNIX Printing System). CUPS usa il protocollo IPP (Internet Printing Protocol). IPP è ora supportato da altri sistemi operativi come Windows XP e Mac OS X ed è diventato il nuovo standard de facto multipiattaforma per la stampa da remoto con capacità di comunicazione bidirezionale.

Il formato standard per i dati stampabili per le applicazioni nel sistema Debian è il formato PostScript (PS) che è un linguaggio di descrizione della pagina. I dati in formato PS vengono passati all'interprete PosPostScript Ghostscript per produrre i dati stampabili specifici per la stampante. Vedere Sezione 11.3.1, «Ghostscript».

Grazie alla funzionalità di auto-conversione in base al formato dei file del sistema CUPS, il semplice passaggio di qualsiasi tipo di dati al comando lpr dovrebbe generare l'output di stampa atteso. (In CUPS, il comando lpr può essere abilitato installando il pacchetto cups-bsd.)

Il sistema Debian ha alcuni pacchetti degni di nota per ciò che riguarda i server e le utilità di stampa

Tabella 6.12. Elenco di server e utilità di stampa

pacchetto popcon dimensione porta descrizione
lpr V:1.6, I:1.9 460 printer (515) lpr/lpd BSD (Line printer daemon, demone di stampa in linea)
lprng V:0.3, I:0.5 2764 " " " " (Migliorato)
cups V:36, I:49 4279 IPP (631) server CUPS di stampa Internet
cups-client V:14, I:51 542 " " comandi System V per la stampa con CUPS: lp(1), lpstat(1), lpoptions(1), cancel(1), lpmove(8), lpinfo(8), lpadmin(8), …
cups-bsd V:7, I:46 151 " " comandi BSD per la stampa con CUPS: lpr(1), lpq(1), lprm(1), lpc(8)
cups-driver-gutenprint V:6, I:41 21 Non applicabile driver di stampa per CUPS

[Suggerimento] Suggerimento

Si può configurare il sistema CUPS indirizzando il proprio browser web all'indirizzo "http://localhost:631/".

6.9. Il server e le utilità per l'accesso remoto (SSH)

SSH (Secure SHell) è il metodo sicuro per connettersi in Internet. Una versione libera di SSH chiamata OpenSSH è disponibile nei pacchetti Debian openssh-client e openssh-server.

Tabella 6.13. Elenco dei server e delle utilità per l'accesso remoto

pacchetto popcon dimensione strumento descrizione
openssh-client V:56, I:99 2246 ssh(1) client SSH
openssh-server V:67, I:82 701 sshd(8) server SSH
ssh-askpass-fullscreen V:0.07, I:0.2 24 ssh-askpass-fullscreen(1) chiede all'utente una passphrase per ssh-add (GNOME2)
ssh-askpass V:0.7, I:4 156 ssh-askpass(1) chiede all'utente una passphrase per ssh-add (X semplice)

[Attenzione] Attenzione

Se il proprio SSH è accessibile da Internet, vedere Sezione 4.7.3, «Misure aggiuntive di sicurezza per Internet».

[Suggerimento] Suggerimento

Per permettere al processo della shell remota di sopravvivere all'interruzione della connessione, usare il programma screen(1) (vedere Sezione 9.1, «Il programma screen»).

6.9.1. Nozioni di base su SSH

[Avvertimento] Avvertimento

Se si desidera eseguire il server OpenSSH, non deve esistere il file "/etc/ssh/sshd_not_to_be_run".

SSH ha due protocolli di autenticazione

Tabella 6.14. Elenco dei protocolli e dei metodi di autenticazione di SSH

protocollo SSH metodo SSH descrizione
SSH-1 "RSAAuthentication" autenticazione utente RSA basata su chiave identificativa
" " "RhostsAuthentication" autenticazione di host basata su ".rhosts" (insicura, disabilitata)
" " "RhostsRSAAuthentication" autenticazione di host basata su ".rhosts" in combinazione con chiave RSA per host(disabilitata)
" " "ChallengeResponseAuthentication" autenticazione RSA challenge-response
" " "PasswordAuthentication" autenticazione basata su password
SSH-2 "PubkeyAuthentication" autenticazione utente basata su chiave pubblica
" " "HostbasedAuthentication" autenticazione di host basata su "~/.rhosts" o "/etc/hosts.equiv" in combinazione con autenticazione dell'host client con chiave pubblica (disabilitata)
" " "ChallengeResponseAuthentication" autenticazione challenge-response
" " "PasswordAuthentication" autenticazione basata su password

[Attenzione] Attenzione

Se si usa un sistema non Debian si faccia attenzione a queste differenze.

Per i dettagli vedere "/usr/share/doc/ssh/README.Debian.gz", ssh(1), sshd(8), ssh-agent(1) e ssh-keygen(1).

Di seguito è riportato l'elenco dei file di configurazione più importanti.

Tabella 6.15. Elenco dei file di configurazione per SSH

file di configurazione descrizione del file di configurazione
/etc/ssh/ssh_config impostazioni predefinite per il client SSH, vedere ssh_config(5)
/etc/ssh/sshd_config impostazioni predefinite per il server SSH, vedere ssh_config(5)
~/.ssh/authorized_keys chiavi SSH pubbliche predefinite che i client usano per connettersi a questo account su questo server SSH
~/.ssh/identity chiave RSA SSH-1 segreta dell'utente
~/.ssh/id_rsa chiave RSA SSH-2 segreta dell'utente
~/.ssh/id_dsa chiave DSA SSH-2 segreta dell'utente

[Suggerimento] Suggerimento

Per l'uso delle chiavi SSH pubbliche e segrete, vedere ssh-keygen(1), ssh-add(1) e ssh-agent(1).

[Suggerimento] Suggerimento

Assicurarsi di verificare le impostazioni testando la connessione. In caso di problemi, usare "ssh -v".

[Suggerimento] Suggerimento

Si può cambiare successivamente la passphrase per cifrare le chiavi SSH segrete locali usando "ssh-keygen -p".

[Suggerimento] Suggerimento

Si possono aggiungere opzioni alle voci in "~/.ssh/authorized_keys" per limitare gli host e per eseguire comandi specifici. Per i dettagli vedere sshd(8).

I comandi seguenti avviano una connessione ssh(1) da un client.

Tabella 6.16. Elenco di esempi di avvio di client SSH

comando descrizione
ssh nomeutente@nomehost.dominio.ext connette nella modalità predefinita
ssh -v nomeutente@nomehost.dominio.ext connette nella modalità predefinita con messaggi di debug
ssh -1 nomeutente@nomehost.dominio.ext forza la connessione con SSH versione 1
ssh -1 -o RSAAuthentication=no -l nomeutente nomehost.dominio.ext forza l'uso di password con SSH versione 1
ssh -o PreferredAuthentications=password -l nomeutente nomehost.dominio.ext forza l'uso di password con SSH versione 2

Se si usa lo stesso nome utente sull'host locale e su quello remoto, si può evitare di digitare la parte "nomeutente@". Anche se si usa un nome utente diverso nell'host locale rispetto a quello remoto, si può evitare di digitare quella parte usando il file "~/.ssh/config". Per il servizio Debian Alioth con nome account "pippo-guest", impostare "~/.ssh/config" in modo che contenga quanto segue.

Host alioth.debian.org svn.debian.org git.debian.org
    User pippo-guest

Per l'utente ssh(1) funziona come un telnet(1) più intelligente e più sicuro. A differenza del comando telnet, ssh non va in crash a seguito del carattere di escape di telnet (impostazione predefinita iniziale CTRL-]).

6.9.2. Forwarding della porta per tunnel SMTP/POP3

Per stabilire una pipe per connettersi alla porta 25 del server-remoto dalla porta 4025 dell'host locale e alla porta 110 del server-remoto dalla porta 4110 dell'host locale attraverso ssh, eseguire sull'host locale il comando seguente.

# ssh -q -L 4025:server-remoto:25 4110:server-remoto:110 nomeutente@server-remoto

Questo è un metodo sicuro di creare connessioni a server SMTP/POP3 in Internet. Impostare nel file "/etc/ssh/sshd_config" dell'host remoto la voce "AllowTcpForwarding" a "yes".

6.9.3. Connettersi senza password remote

Si può evitare di doversi ricordare le password per sistemi remoti usando "RSAAuthentication" (protocollo SSH-1) o "PubkeyAuthentication" (protocollo SSH-2).

Sul sistema remoto impostare nel file "/etc/ssh/sshd_config" le rispettive voci "RSAAuthentication yes" o "PubkeyAuthentication yes".

Generare localmente le chiavi di autenticazione ed installare la chiave pubblica sul sistema remoto con i comandi seguenti.

  • "RSAAuthentication": chiave RSA per SSH-1 (deprecata perché superata)

$ ssh-keygen
$ cat .ssh/identity.pub | ssh utente1@remote "cat - >>.ssh/authorized_keys"
  • "PubkeyAuthentication": chiave RSA per SSH-2

$ ssh-keygen -t rsa
$ cat .ssh/id_rsa.pub | ssh utente1@remote "cat - >>.ssh/authorized_keys"
  • "PubkeyAuthentication": chiave DSA per SSH-2 (deprecata perché lenta)

$ ssh-keygen -t dsa
$ cat .ssh/id_dsa.pub | ssh utente1@remote "cat - >>.ssh/authorized_keys"
[Suggerimento] Suggerimento

L'uso di una chiave DSA per SSH-2 è deprecato perché la chiave è più piccola e più lenta. Non esistono più motivi per aggirare i brevetti RSA usando DSA, dato che essi sono scaduti. DSA sta per Algoritmo di firma digitale (Digital Signature Algorithm) ed è lento. Vedere anche DSA-1571-1.

[Nota] Nota

Affinché "HostbasedAuthentication" funzioni con SSH-2, si deve impostare la voce "HostbasedAuthentication" a "yes" in entrambi i file "/etc/ssh/sshd_config" nell'host server e i "/etc/ssh/ssh_config" o "~/.ssh/config" nell'host client.

6.9.4. Gestire client SSH estranei

Sono disponibili alcuni client SSH liberi per altre piattaforme.

Tabella 6.17. Elenco di client SSH per altre piattaforme

ambiente programma ssh libero
Windows puTTY (http://www.chiark.greenend.org.uk/~sgtatham/putty/) (GPL)
Windows (cygwin) SSH in cygwin (http://www.cygwin.com/) (GPL)
Macintosh Classic macSSH (http://www.macssh.com/) (GPL)
Mac OS X OpenSSH; usare ssh nell'applicazione Terminale (GPL)

6.9.5. Impostare ssh-agent

È meglio per ragioni di sicurezza proteggere la propria chiave segreta di autenticazione SSH con una passphrase. Se non è già stata impostata una passphrase usare "ssh-keygen -p" per farlo.

Mettere la propria chiav SSH pubblica (ad esempio "~/.ssh/id_rsa.pub") in "~/.ssh/authorized_keys" su un host remoto usando una connessione all'host remoto basata su password, come descritto in precedenza.

$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/<nomeutente>/.ssh/id_rsa:
Identity added: /home/<nomeutente>/.ssh/id_rsa (/home/<nomeutente>/.ssh/id_rsa)

Per il comando successivo non sarà più necessaria da questo momento la password remota.

$ scp pippo <nomeutente>@host.remoto:pippo

Premere ~D per terminare la sessione ssh-agent.

Per il server X, il normale script di avvio Debian esegue ssh-agent come processo genitore. Perciò è necessario eseguire ssh-add una volta sola. Per ulteriori informazioni, leggere ssh-agent(1) e ssh-add(1).

6.9.6. Spegnere il sistema remoto su SSH

È necessario proteggere il processo che esegue "shutdown -h now" (vedere Sezione 1.1.8, «Come spegnere il sistema») dalla terminazione di SSH usando il comando at(1) (vedere Sezione 9.5.13, «Pianificare compiti da eseguire una volta sola») nel modo seguente.

# echo "shutdown -h now" | at now

Eseguire "shutdown -h now" in una sessione screen(1) (vedere Sezione 9.1, «Il programma screen») è un altro modo di ottenere lo stesso risultato.

6.9.7. Risolvere il problemi con SSH

Se si hanno problemi, controllare i permessi dei file di configurazione ed eseguire ssh con l'opzione "-v".

Se si è root e si hanno problemi con un firewall usare l'opzione "-P"; questo evita l'uso delle porte 1 - 1023 del server.

Se le connessioni ssh ad un sito remoto smettono di funzionare improvvisamente, potrebbe essere a causa di modifiche fatte dall'amministratore di sistema, molto probabilmente cambiamenti in "host-key" durante l'amministrazione del sistema. Dopo essersi accertati che questa sia davvero la causa e che nessuna stia cercando di falsificare l'host remoto con qualche trucchetto, si può riottenere una connessione rimuovendo la voce "host-key" dal file "~/.ssh/known_hosts" sull'host locale.

6.10. Altri server di rete

Ecco un elenco di altri server applicativi di rete.

Tabella 6.18. Elenco di altri server applicativi di rete

pacchetto popcon dimensione protocollo descrizione
telnetd V:0.2, I:0.8 156 TELNET server TELNET
telnetd-ssl V:0.07, I:0.2 220 " " " " (supporto SSL)
nfs-kernel-server V:10, I:19 500 NFS condivisione di file Unix
samba V:16, I:28 23234 SMB condivisione di file e stampanti Windows
netatalk V:1.8, I:4 3763 ATP condivisione di file e stampanti Apple/Mac (AppleTalk)
proftpd-basic V:5, I:6 3900 FTP scaricamento generico di file
wu-ftpd V:0.3, I:0.3 551 " " " "
apache2-mpm-prefork V:35, I:39 55 HTTP server web generico
apache2-mpm-worker V:6, I:7 55 " " " "
squid V:4, I:5 1869 " " server proxy web generico
squid3 V:1.6, I:1.9 3675 " " " "
slpd V:0.08, I:0.19 183 SLP server OpenSLP come server LDAP
bind9 V:8, I:15 939 DNS indirizzo IP per altri host
isc-dhcp-server V:3, I:5 2041 DHCP indirizzo IP per il client stesso

CIFS (Common Internet File System Protocol) è lo stesso protocollo di SMB (Server Message Block) ed è ampiamente usato da Microsoft Windows.

[Suggerimento] Suggerimento

Vedere Sezione 4.5.2, «La moderna gestione centralizzata del sistema» per l'integrazione di sistemi server.

[Suggerimento] Suggerimento

La risoluzione del nome di host è solitamente fornita dal server DNS. Per l'indirizzo IP dell'host assegnato dinamicamente da DHCP, può essere impostato un DNS dinamico per la risoluzione del nome host, usando bind9 e isc-dhcp-server come descritto nella pagina del Wiki Debian sui DDNS.

[Suggerimento] Suggerimento

L'uso di server proxy come squid è molti più efficiente per risparmiare banda rispetto all'uso di server mirror locali con il completo contenuto dell'archivio Debian.

6.11. Altri client di rete

Ecco un elenco di altri client applicativi di rete.

Tabella 6.19. Elenco di altri client applicativi di rete

pacchetto popcon dimensione protocollo descrizione
netcat I:14 40 TCP/IP coltellino svizzero TCP/IP
openssl V:71, I:95 1077 SSL eseguibile SSL (Secure Socket Layer) e strumenti crittografici relativi
stunnel4 V:0.5, I:2 445 " " wrapper SSL universale
telnet V:13, I:90 200 TELNET client TELNET
telnet-ssl V:0.2, I:1.2 260 " " " " (supporto SSL)
nfs-common V:47, I:81 700 NFS condivisione di file Unix
smbclient V:6, I:39 42013 SMB client per condivisione di file e stampanti MS Windows
smbfs V:4, I:20 47 " " comandi mount e umount per file MS Windows remoti
ftp V:9, I:86 132 FTP client FTP
lftp V:1.2, I:5 1717 " " " "
ncftp V:1.1, I:5 1308 " " client FTP a tutto schermo
wget V:37, I:99 2162 HTTP e FTP scaricatore per web
curl V:8, I:27 331 " " " "
axel V:0.16, I:0.6 212 " " scaricatore accelerato
aria2 V:0.15, I:0.8 4929 " " scaricatore accelerato con gestione di BitTorrent e Metalink
bind9-host V:44, I:93 175 DNS host(1) da bind9, "Priorità: standard"
dnsutils V:13, I:91 374 " " dig(1) da bind, "Priorità: standard"
isc-dhcp-client V:41, I:71 1775 DHCP ottiene indirizzo IP
ldap-utils V:1.4, I:6 685 LDAP ottiene dati da server LDAP

6.12. Diagnosi dei demoni di sistema

Il programma telnet permette la connessione manuale ai demoni di sistema e la loro diagnosi.

Per testare il semplice servizio POP3 provare il comando seguente.

$ telnet mail.nomeisp.net pop3

Per testare il servizio POP3 con TLS/SSL abilitato di alcuni fornitori di servizi Internet, è necessario un client telnet con TLS/SSL abilitato fornito dal pacchdetto telnet-ssl o openssl.

$ telnet -z ssl pop.gmail.com 995
$ openssl s_client -connect pop.gmail.com:995

Le seguenti RFC forniscono le conoscenze necessarie per ciascun demone di sistema.

Tabella 6.20. Elenco di RFC popolari

RFC descrizione
rfc1939 e rfc2449 servzio POP3
rfc3501 servizio IMAP4
rfc2821 (rfc821) servizio SMTP
rfc2822 (rfc822) formato file di posta
rfc2045 MIME (Multipurpose Internet Mail Extensions)
rfc819 servizio DNS
rfc2616 servizio HTTP
rfc2396 definizione di URI

L'uso delle porte è descritto in "/etc/services".