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.4.2. Programma di posta avanzato - Mutt + msmtp
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.

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


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.


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

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

Il sistema di posta comprende molti programmi server e molti programmi client in esecuzione su più host. In base alla funzionalità esistono 3 tipi di programmi server ("agent") per la posta:

[Nota] Nota

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

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 (MUA) deve interpretare 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.

Per minimizzare l'esposizione allo spam (posta elettronica indesiderata e non richiesta), molti fornitori di servizi Internet che forniscono connessioni Internet domestiche stanno implementando contromisure.

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.

[Attenzione] Attenzione

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.

[Attenzione] Attenzione

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

[Attenzione] Attenzione

Un messaggio di posta può essere rifiutato in modo silenzioso da qualsiasi host sul percorso verso la destinazione. Far sì che la propria posta appaia il più autentica possibile è l'unico modo di inviare posta ad un host remoto in modo affidabile.

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.

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.

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 (quando il mittente e il destinatario sono sullo stesso host).

Notare che il sistema Debian è un sistema multiutente. Anche se si è l'unico utente, ci sono molti programmi che vengono eseguiti come utente root e che possono inviare un messaggio di 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), mew(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.

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.


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.


[Attenzione] Attenzione

Configurare exim4 per inviare la posta Internet usando smarthost multipli che corrispondono a indirizzi email di origine multipli non è banale. È suggerito di impostare exim4 solo per un unico indirizzo email per i programmi di sistema come popcon e cron e impostare msmtp per indirizzi email di origine multipli per i programmi utente come mutt.

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

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

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

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


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

Mutt può essere configurato per usare più indirizzi email sorgente con smarthost multipli corrispondenti usando msmtp.

[Suggerimento] Suggerimento

msmtp è un emulatore di sendmail che può essere installato insieme ad un altro emulatore di sendmail che fornisce il comando /usr/sbin/sendmail. Perciò si può lasciare che la propria posta di sistema usi exim4 o postfix.

Come esempio, vediamo come gestire 3 indirizzi di posta elettronica:

Ecco un esempio di personalizzazione di ~/.muttrc che gestisce 3 smarthost per 3 differenti indirizzi di posta elettronica sorgente.

set use_from
set from="Mio Nome3 <myaccount3@example.org>"
set reverse_name
alternates myaccount1@gmail\.com|myaccount1@gmail\.com|myaccount3@example\.org

# ...

# MACRO
macro compose "1" "<edit-from>^UMio Nome1 \<myaccount1@gmail.com\>\n"
macro compose "2" "<edit-from>^UMio Nome2 \<myaccount2@gmail.com\>\n"
macro compose "3" "<edit-from>^UMio Nome3 \<myaccount3@example.org\>\n"

send2-hook '~f myaccount1@gmail.com' "set sendmail = '/usr/bin/msmtp --read-envelope-from'"
send2-hook '~f myaccount2@gmail.com' "set sendmail = '/usr/bin/msmtp --read-envelope-from'"
send2-hook '~f myaccount3@example.org' "set sendmail = '/usr/bin/msmtp --read-envelope-from'"

# ...

Installare msmtp-gnome e impostare ~/.msmtprc nel modo seguente.

defaults
logfile ~/.msmtp.log
domain myhostname.example.org
tls on
tls_starttls on
tls_certcheck on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
auth on
port 587
auto_from

account myaccount1@gmail.com
host smtp.gmail.com
from  myaccount1@gmail.com
user  myaccount1@gmail.com

account myaccount2@gmail.com
host smtp.gmail.com
from  myaccount2@gmail.com
user  myaccount2@gmail.com

account myaccount3@example.org
host mail.example.org
from  myaccount3@example.org
user  myaccount3@example.org

account default : myaccount3@example.org

Poi aggiungere i dati delle password nel portachiavi di Gnome. Per esempio:

 $ secret-tool store --label=msmtp \
     host smtp.gmail.com \
     service smtp \
     user myaccount1@gmail.com
 ...
[Suggerimento] Suggerimento

Se non si desidera usare il portachiavi di Gnome, si può installare invece il pacchetto msmtp e aggiungere una voce del tipo "password segreto123" ad ogni account in ~/.msmtprc. Vedere la documentazione di memtp per ulteriori dettagli.

Invece di eseguire un programma di posta per accedere alla posta remota ed elaborarli a mano, si può volere automatizzare questo processo per avere tutti i messaggi di posta consegnati all'host locale. L'utilità di recupero e inoltro della posta remota è lo strumento adatto allo scopo.

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.


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.example.com
username =  nome_pop3@example.com
password = <propria-password>

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

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.


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.

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.


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


[Suggerimento] Suggerimento

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

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.


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

[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


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


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


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 Salsa con nome account "pippo-guest", impostare "~/.ssh/config" in modo che contenga quanto segue.

Host salsa.debian.org people.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 si interrompe a seguito del carattere di escape di telnet (impostazione predefinita iniziale CTRL-]).

È 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.3.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.

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


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