Capitolo 6. Applicazioni per la rete

Indice

6.1. Browser web
6.1.1. Falsificare la stringa User-Agent
6.1.2. Estensione per il browser
6.2. Il sistema di posta
6.2.1. Nozioni di base sulla posta elettronica
6.2.2. Limitazioni moderne ai servizi di posta
6.2.3. Attese storiche da un servizio di posta
6.2.4. Agente di trasporto della posta (MTA)
6.2.4.1. La configurazione di exim4
6.2.4.2. La configurazione di Postfix con SASL
6.2.4.3. La configurazione dell'indirizzo di posta
6.2.4.4. Operazioni di base degli MTA
6.3. Il server e le utilità per l'accesso remoto (SSH)
6.3.1. Nozioni di base su SSH
6.3.2. Nome utente sull'host remoto
6.3.3. Connettersi senza password remote
6.3.4. Gestire client SSH estranei
6.3.5. Impostare ssh-agent
6.3.6. Inviare un messaggio di posta da un host remoto
6.3.7. Forwarding della porta per tunnel SMTP/POP3
6.3.8. Spegnere il sistema remoto su SSH
6.3.9. Risolvere il problemi con SSH
6.4. Server ed utilità per la stampa
6.5. Altri server di rete
6.6. Altri client di rete
6.7. 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.

[Suggerimento] Suggerimento

Per una guida moderna sull'infrastruttura di rete specifica per Debian leggere The Debian Administrator's Handbook — Network Infrastructure.

[Suggerimento] Suggerimento

Se si abilita la "Verifica in 2 passaggi" con alcuni ISP è necessario ottenere una password di applicazione per accedere ai servizi POP e SMTP dal proprio programma. Può essere necessario approvare l'IP del proprio host in anticipo.

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


Questa sezione si focalizza su tipiche postazioni di lavoro mobile con connessioni Internet di largo consumo.

[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.

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 formato dei messaggi di email che copre i dati nell'intestazione e nel corpo è esteso da MIME (Multipurpose Internet Mail Extensions) dal semplice testo ASCII ad altre codifiche di caratteri, oltre ad allegati per audio, video, immagini e programmi applicativi.

I programmi di posta completi basati su GUI offrono tutte le funzioni seguenti utilizzando una configurazione intuitiva basata su GUI.

  • Creano e interpretano i dati nell'intestazione e nel corpo del messaggio usando MIME (Multipurpose Internet Mail Extensions) per gestire il tipo di dati e la codifica del contenuto.

  • Si autenticano con i server SMTP e IMAP dell'ISP usando la vecchia autenticazione di accesso di base o la moderna OAuth 2.0. (Per OAuth 2.0, impostarla attraverso le impostazioni dell'ambiente desktop. Ad esempio "Impostazioni" -> "Account online".)

  • Inviano i messaggi al server smarthost SMTP dell'ISP in ascolto per l'arrivo dei messaggi sulla porta (587).

  • Ricevono i messaggi memorizzati sul server dell'ISP dalla porta TLS/IMAP4 (993).

  • Possono filtrare la posta in base ai suoi attributi.

  • Possono offrire funzionalità aggiuntive: contatti, calendario, attività, promemoria.


Ai servizi di posta moderni vengono applicate alcune restrizioni al fine di minimizzare l'esposizione ai problemi di spam (posta non desiderata e non richiesta).

  • Eseguire un server SMTP su una rete di un utente privato per inviare posta in modo diretto ad host remoti in modo affidabile non è un'ipotesi realistica.

  • Un messaggio di posta può essere rifiutato in modo silenzioso da qualsiasi host sul percorso verso la destinazione, a meno che non appaia il più autentico possibile.

  • Non è realistico attendersi che un singolo smarthost invii messaggi di indirizzi di posta di origine non correlati ad host remoti in modo affidabile.

Questo perché:

Le macchine Debian portatili possono essere configurate semplicemente con programmi di posta completi con GUI senza un programma MTA (agente di trasferimento posta) a partire da Debian 12 Bookworm.

Debian tradizionalmente installava un programma MTA per supportare i programmi che si aspettano il comando /usr/sbin/sendmail. Un tale MTA in una macchina portatile deve vedersela con Sezione 6.2.2, «Limitazioni moderne ai servizi di posta» e Sezione 6.2.3, «Attese storiche da un servizio di posta».

Per le postazioni di lavoro mobile, la scelta tipica per un MTA è exim4-daemon-light o postfix con selezionata la loro opzione di installazione tipo "Mail inviata via smarthost; ricevuta con SMTP o fetchmail". Questi sono MTA leggeri che rispettano "/etc/aliases".

[Suggerimento] Suggerimento

Configurare exim4 per inviare la posta Internet usando smarthost multipli che corrispondono a indirizzi email di origine multipli non è banale. Se è necessaria questa funzionalità per alcuni programmi, impostarli per utilizzare msmtp che è facile da configurare per indirizzi email di origine multipli. Poi lasciare l'MTA principale solo per un singolo indirizzo email.


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

$ sudo systemctl stop exim4
$ 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.1, «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.2.4.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:username@hostname.dom:password

Configurare exim4(8) con "QUEUERUNNER='queueonly'", "QUEUERUNNER='nodaemon' ecc. in "/etc/default/exim4" per minimizzare l'uso delle risorse di sistema (opzionale).

Avviare exim4 con il comando seguente.

$ sudo systemctl start exim4

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 "systemctl reload exim4".

[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.

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

[Avvertimento] Avvertimento

In base a tutte le considerazioni pratiche, usare SMTP con STARTTLS sulla porta 587 o SMTPS (SMTP via SSL) sulla porta 465, invece del semplice SMTP sulla porta 25.

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


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

$ sudo systemctl stop postfix
$ 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     username:password
$ sudo postmap hush:/etc/postfix/sasl_passwd

Avviare postfix con il comando seguente.

$ sudo systemctl start postfix

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".

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.


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/".

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.

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


Sebbene shellinabox non sia un programma SSH, è elencato qui come alternativa interessante per l'accesso remoto a terminale.

Vedere anche Sezione 7.9, «Connessione a server X» per le connessioni a programmi client X remoti.

[Attenzione] Attenzione

Se il proprio SSH è accessibile da Internet, vedere Sezione 4.6.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.2, «Il programma screen»).

Il demone SSH OpenSSH ha solamente il supporto per il protocollo SSH.

Leggere "/usr/share/doc/openssh-client/README.Debian.gz", ssh(1), sshd(8), ssh-agent(1), and ssh-keygen(1), ssh-add(1) e ssh-agent(1).

[Avvertimento] Avvertimento

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

Non abilitare l'autenticazione basata su rhost (HostbasedAuthentication in /etc/ssh/sshd_config).


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


È 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.4.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.2, «Il programma screen») è un altro modo di ottenere lo stesso risultato.

Nei vecchi sistemi in stile Unix, il demone di stampa in linea (lpd) BSD era lo standard e il formato di stampa standard del software libero classico era PostScript (PS). Un sistema di filtri veniva usato insieme a Ghostscript per permettere la stampa su stampanti non-PostScript. Vedere Sezione 11.4.1, «Ghostscript».

Nei sistemi Debian moderni, Common UNIX Printing System (CUPS) è lo standard di fatto e il formato standard per la stampa nel software libero moderno è Portable Document Format (PDF).

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 di fatto multipiattaforma per la stampa da remoto con capacità di comunicazione bidirezionale.

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


[Suggerimento] Suggerimento

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

Ecco un elenco di altri server applicativi di rete.


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.

Ecco un elenco di altri client applicativi di rete.


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.ispname.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.


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