Chapitre 6. Applications réseau

Table des matières

6.1. Navigateurs Web
6.1.1. Usurpation de la chaîne User-Agent
6.1.2. Extension de navigateur
6.2. Le système de courrier électronique
6.2.1. Bases du courrier électronique
6.2.2. Limite du service de courriels moderne
6.2.3. Attente du service de courriels historique
6.2.4. Agent de transport de courrier électronique (« MTA »)
6.2.4.1. Configuration d’exim4
6.2.4.2. Configuration de postfix avec SASL
6.2.4.3. Configuration de l’adresse de courriel
6.2.4.4. Opération de base du MTA
6.3. Le serveur et les utilitaires d’accès à distance (SSH)
6.3.1. Bases de SSH
6.3.2. Nom d'utilisateur sur l'hôte distant
6.3.3. Se connecter sans mot de passe distant
6.3.4. Clients SSH exotiques
6.3.5. Configurer ssh-agent
6.3.6. Envoi d'un courriel à partir d'un hôte distant
6.3.7. Redirection de port pour un tunnel SMTP/POP3
6.3.8. Comment arrêter le système distant par SSH
6.3.9. Résoudre les problèmes avec SSH
6.4. Le serveur et les utilitaires d’impression
6.5. Autres serveurs d’applications réseau
6.6. Autres clients d’applications réseau
6.7. Le diagnostic des démons du système

Après avoir établi une connexion réseau (consultez Chapitre 5, Configuration du réseau), vous pouvez faire tourner diverses applications réseau.

[Astuce] Astuce

Pour un guide spécifique de Debian moderne sur les infrastructures réseaux, lisez Le Livre de l'Administrateur Debian - Infrastructure réseau.

[Astuce] Astuce

Si vous avez activé la « validation en deux étapes » avec certains fournisseurs de services Internet, vous devez obtenir un mot de passe d’application pour accéder aux services POP et SMTP à partir de votre programme. Vous devrez peut-être valider votre adresse IP d’hôte à l’avance.

Il y a de nombreux paquets de navigateurs web permettant d’accéder à des contenus distants avec le protocole de transfert hypertexte (« Hypertext Transfer Protocol (HTTP) »).


Cette section se concentre sur les postes de travail mobiles typiques utilisant des connexions Internet de qualité grand public.

[Attention] Attention

Si vous êtes sur le point de configurer le serveur de courrier pour échanger directement du courrier avec Internet, vous feriez mieux de lire ce document élémentaire.

Un courrier électronique est composé de trois parties : l’enveloppe, l’en-tête et le corps du message.

  • Les renseignements « To » et « From » de l’enveloppe sont utilisés par le SMTP pour délivrer le courrier électronique (« From » dans l’enveloppe indique l’adresse de rebond, « From_ », etc.).

  • Les renseignements « To » et « From » de l’en-tête sont affichés par le client de messagerie (même s’ils sont généralement identiques à ceux de l’enveloppe, ce n’est pas toujours le cas).

  • Le format de courriel pour les données d’en-tête et de corps est étendu par Multipurpose Internet Mail Extensions (MIME) du texte ASCII brut à d’autres codages de caractères, ainsi qu’aux pièces jointes audio, vidéo, images et programmes d’application.

Les clients de messagerie, basés sur une interface graphique complète, offrent toutes les fonctions suivantes en utilisant une configuration intuitive.

  • Il crée et interprète les données de l'en-tête et du corps du message en utilisant Multipurpose Internet Mail Extensions (MIME) pour traiter le type et l'encodage des données du contenu.

  • Il s'authentifie auprès des serveurs SMTP et IMAP du FAI à l'aide de l'ancienne authentification d'accès basic ou celle moderne OAuth 2.0. (Pour OAuth 2.0, définissez-le à l’aide des paramètres de l'environnement du bureau. Par exemple, « Paramètres » -> « Comptes en ligne ».)

  • Il envoie le message au serveur SMTP hôte du FAI écoutant le port de soumission de message (587).

  • Il reçoit le message stocké sur le serveur du FAI à partir du port TLS/IMAP4 (993).

  • Il peut filtrer les courriels en fonction de leurs attributs.

  • Il peut offrir des fonctionnalités supplémentaires : contacts, agenda, tâches, mémos.


Les services de courriel modernes sont soumis à certaines limitations afin de minimiser l'exposition aux problèmes de pourriel (courriel non désiré et non sollicité).

  • Il n’est pas réaliste de mettre en œuvre un serveur SMTP sur un réseau grand public pour envoyer de manière fiable un courriel directement vers une machine distante.

  • Un courriel peut être rejeté par n'importe quel hôte sur le chemin vers la destination silencieusement, à moins qu'il ne paraisse aussi authentique que possible.

  • Il n’est pas réaliste d’espérer qu’un smarthost (relais) unique puisse envoyer des courriels provenant d’adresses de sources de courriel sans lien vers une machine distante de manière fiable.

Cela est dû au fait que :

Les stations de travail mobiles Debian pourront être configurées uniquement avec des clients de messageriecomplets basés sur une interface graphique sans le programme d’agent de transfert de courrier (MTA) après Debian 12 Bookworm.

Debian installait traditionnellement un programme MTA pour prendre en charge les programmes attendant la commande /usr/sbin/sendmail. Un tel MTA sur les postes de travail mobiles doit respecter la Section 6.2.2, « Limite du service de courriels moderne » et la Section 6.2.3, « Attente du service de courriels historique ».

Pour les postes de travail mobiles, le choix typique de MTA est soit exim4-daemon-light ou postfix avec son option d'installation telle que « Courriel envoyé par smarthost, reçue par SMTP ou fetchmail » sélectionnée. Ce sont des MTA légers qui respectent "/etc/aliases".

[Astuce] Astuce

Configurer exim4 pour envoyer le courrier Internet par l'intermédiaire de plusieurs smarthost correspondants pour plusieurs sources d’adresses de courriel n’est pas trivial. Si vous avez besoin d'une telle capacité pour certains programmes, configurez-les pour utiliser msmtp qui est facile à configurer pour plusieurs sources d’adresses de courriel. Ensuite, laissez le MTA principal seulement pour une seule adresse e-mail.


Pour le courrier d’Internet par l’intermédiaire d’un smarthost, vous (re)configurerez les paquets exim4-* comme suit :

$ sudo systemctl stop exim4
$ sudo dpkg-reconfigure exim4-config

Choisir « envoi via relais (« smarthost ») - réception SMTP ou fetchmail » : pour « Configuration du serveur de courriel ».

Définir « Nom de courriel du système » à sa valeur par défaut qui est le nom pleinement qualifié (FQDN, consultez Section 5.1.1, « Résolution du nom d’hôte »).

Définir « Liste d’adresses IP où Exim sera en attente de connexions SMTP entrantes » à sa valeur par défaut qui est « 127.0.0.1 ; ::1 ».

Supprimer le contenu de « Autres destinations dont le courriel doit être accepté ».

Supprimer le contenu de « Machines à relayer :».

Définir « dresse IP ou nom d’hôte du relais sortant : à « smtp.hostname.dom:587 ».

Sélectionner « Non » pour « Faut-il cacher le nom local de courriel dans les courriels sortants ? ». (Utiliser plutôt « /etc/email-addresses » comme dans Section 6.2.4.3, « Configuration de l’adresse de courriel ».)

Donner à « Faut-il optimiser les requêtes DNS (connexion à la demande) ? » l’une des réponses suivantes :

  • « Non » si le système est connecté à Internet au démarrage.

  • « Oui » si le système n’est pas connecté à Internet au démarrage.

Définir « Méthode de distribution du courrier local : » à « Format « mbox » dans /var/mail ».

Sélectionner « Oui » pour « Faut-il séparer la configuration dans plusieurs fichiers ? :».

Créer les entrées de mots de passe pour le smarthost en éditant «  /etc/exim4/passwd.client ».

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

Configurez exim4(8) avec « QUEUERUNNER='queueonly' », « QUEUERUNNER='nodaemon' », etc., dans « /etc/default/exim4 » pour minimiser l’utilisation des ressources système (facultatif).

Lancer exim4 par la commande suivante :

$ sudo systemctl start exim4

Le nom de machine dans « /etc/exim4/passwd.client » ne doit pas être un alias. Vérifiez le nom de machine réel comme suit :

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

J’utilise une expression rationnelle dans « /etc/exim4/passwd.client » pour contourner le problème d’alias. SMTP AUTH fonctionne probablement même dans le cas où le FAI déplace la machine pointée par l’alias.

Vous pouvez mettre à jour vous-même la configuration d’exim4 de la façon suivante :

  • Mettre à jour les fichiers de configuration d’exim4 dans « /etc/exim4/ ».

    • Créer « /etc/exim4/exim4.conf.localmacros » pour configurer les macros et éditer « /etc/exim4/exim4.conf.template » (configuration en un seul fichier).

    • Créer de nouveaux fichiers ou éditer des fichiers existants dans les sous-répertoires de « /etc/exim4/exim4.conf.d » (configuration séparée en plusieurs fichiers).

  • Exécutez « systemctl reload exim4 ».

[Attention] Attention

Le lancement d’exim4 est long si on a choisi « Non » (valeur par défaut) à la demande « Faut-il optimiser les requêtes DNS (connexion à la demande) ? » lors de la configuration debconf et que le système n’est pas connecté à Internet lors du démarrage.

Veuillez lire le guide officiel se trouvant à « /usr/share/doc/exim4-base/README.Debian.gz » et update-exim4.conf(8).

[Avertissement] Avertissement

En pratique, utilisez SMTP avec STARTTLS sur le port 587 ou SMTPS (SMTP au-dessus de SSL) sur le port 465, au lieu de SMTP simple sur le port 25.

Pour utiliser le courrier électronique d’Internet par l’intermédiaire d’un smarthost, vous devrez d’abord lire la documentation postfix et les pages de manuel importantes.


Vous (re)configurez les paquets postfix et sasl2-bin comme suit :

$ sudo systemctl stop postfix
$ sudo dpkg-reconfigure postfix

Choisir « Internet avec smarthost ».

Définissez « machine de relais SMTP (blanc pour aucun): » à « [smtp.hostname.dom]:587 » et configurez-le de la manière suivante :

$ 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

Créez les entrées de mots de passe pour le smarthost :

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

Lancez postfix comme suit :

$ sudo systemctl start postfix

Ici, l’utilisation de « [ » et « ] » dans le dialogue de dpkg-reconfigure et « /etc/postfix/sasl_passwd » permet de s’assurer de ne pas vérifier l’enregistrement MX mais d’utiliser directement le nom exact de la machine indiquée. Consultez « Enabling SASL authentication in the Postfix SMTP client » dans « /usr/share/doc/postfix/html/SASL_README.html ».

Il existe plusieurs fichiers de configuration de l’adresse de courriel pour l’acheminement du courriel, sa diffusion et les agents d’utilisateur.


Le nom de courriel ( mailname » dans le fichier « /etc/mailname » est habituellement un nom de domaine entièrement qualifié (FQDN) qui est résolu vers l’une des adresses IP de la machine. Pour les stations de travail mobiles qui n’ont pas de nom de machine pouvant être résolu par une adresse IP, définissez ce mailname à la valeur donnée par « hostname -f ». (C’est un choix sûr et qui fonctionne à la fois avec exim4-* et postfix.)

[Astuce] Astuce

Le contenu de « /etc/mailname » est utilisé par de nombreux programmes autres que les MTA pour définir leur comportement par défaut. Pour mutt, définissez les variables « hostname » et « from » dans le fichier ~/muttrc pour passer outre la valeur de mailname. Pour les programmes du paquet devscripts, comme bts(1) et dch(1), exportez les variables d’environnement « $DEBFULLNAME » et « $DEBEMAIL » afin de passer outre cette définition.

[Astuce] Astuce

Le paquet popularity-contest envoie normalement un courriel depuis le compte de l’administrateur avec un nom de domaine pleinement qualifié (FDQN). Vous devez définir MAILFROM dans /etc/popularity-contest.conf comme c’est décrit dans le fichier /usr/share/popularity-contest/default.conf. Sinon, votre courriel sera rejeté par le serveur SMTP sur « smarthost ». Bien que ce soit fastidieux, cette approche est plus sûre que la réécriture par le MTA de l’adresse source pour tous les courriels en provenance de l’administrateur (« root ») et devrait être utilisé pour les autres démons et les scripts des tâches planifiées (« cron ».

Lors de la définition de mailname avec la valeur donnée par « hostname -f », l’usurpation de l’adresse source du courrier par le MTA peut être réalisée par l’intermédiaire :

  • du fichier « /etc/email-addresses » pour exim4(8) comme expliqué dans exim4-config_files(5)

  • du fichier « /etc/postfix/generic » pour postfix(1) comme expliqué dans generic(5)

Pour postfix, les étapes suivantes sont nécessaires :

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

Vous pouvez tester la configuration de l’adresse de courriel de la manière suivante :

  • exim(8) avec les options -brw, -bf, -bF, -bV, …

  • postmap(1) avec l’option -q.

[Astuce] Astuce

Il existe, avec Exim, un certain nombre de programmes utilitaires tels qu’exiqgrep(8) et exipick(8). Consultez « dpkg -L exim4-base|grep man8/ » pour les commandes disponibles.

SSH, le « Secure SHell », est la manière sûre de se connecter au travers d’Internet. Une version libre de SSH, appelée OpenSSH, est disponible sous Debian sous forme des paquets openssh-client et openssh-server.

Pour l’utilisateur, ssh(1) fonctionne comme un telnet(1) intelligent et plus sûr. Contrairement à la commande telnet, la commande ssh ne s'arrête pas avec le caractère d’échappement de telnet (valeur initiale par défaut Ctrl-]).


Bien que shellinabox ne soit pas un programme SSH, il est répertorié ici comme une alternative intéressante pour l’accès au terminal distant.

Consulter également Section 7.9, « Connexion au serveur X » pour la connexion aux programmes clients X distants.

[Attention] Attention

Consultez Section 4.6.3, « Mesures de sécurité supplémentaires pour Internet » si votre serveur SSH est accessible depuis Internet.

[Astuce] Astuce

Utilisez le programme screen(1) pour qu’un processus de l’interpréteur de commandes distant survive à une interruption de la connexion (consultez Section 9.1.2, « Le programme screen »).

Le démon SSH OpenSSH ne prend en charge que le protocole SSH 2.

Veuillez lire « /usr/share/doc/openssh-client/README. Debian.gz », ssh(1), sshd(8), ssh-agent(1), ssh-keygen(1), ssh-add(1) et ssh-agent(1).

[Avertissement] Avertissement

Il ne faut pas que « /etc/ssh/sshd_not_to_be_run » soit présent si l’on souhaite faire tourner le serveur OpenSSH.

N’activez pas l’authentification basée sur rhost (HostbasedAuthentication dans /etc/ssh/sshd_config).


Ce qui suit permettra de démarrer un connexion ssh(1) depuis un client :


Vous devez protéger le processus qui effectue « shutdown -h now » (consultez Section 1.1.8, « Comment arrêter le système ») de l’arrêt de SSH en utilisant la commande at(1) (consultez Section 9.4.13, « Planifier des tâches qui s’exécutent une fois ») comme suit :

# echo "shutdown -h now" | at now

Lancer « shutdown -h now » dans une sessionscreen(1) (consultez Section 9.1.2, « Le programme screen ») est une autre manière d’effectuer la même chose.

Dans un ancien système de type Unix, lpd (Line printer daemon) de BSD était la norme et le format d'impression standard des logiciels libres classiques était PS (PostScript). Un système de filtre était utilisé en plus de Ghostscript pour permettre l'impression sur une imprimante non PostScript. Consulter la Section 11.4.1, « Ghostscript ».

Dans un système Debian moderne, le système d'impression CUPS (Common UNIX Printing System) est la norme de facto, et le format d'impression standard des logiciels libres modernes est PDF (Portable Document Format).

CUPS utilise le protocole IPP (Internet Printing Protocol). IPP est désormais pris en charge par d'autres systèmes d'exploitation tels que Windows XP et Mac OS X et est devenu la nouvelle norme de facto multiplateforme pour l'impression à distance avec une capacité de communication bidirectionnelle.

Grâce à la fonctionnalité d’autoconversion dépendante du format du fichier du système CUPS, passer simplement les données à la commande lpr devrait créer la sortie imprimable souhaitée. (Dans CUPS, lpr peut être activé en installant la paquet cups-bsd.)

Le système Debian possède certains paquets notables de serveurs et d’utilitaires d’impression :


[Astuce] Astuce

Vous pouvez configurer le système CUPS en pointant votre navigateur web sur « http://localhost:631/ ».

Voici d’autres serveurs d’applications réseau :


Le protocole « Common Internet File System Protocol » (CIFS) est le même protocole que Server Message Block (SMB), il est largement utilisé par Microsoft Windows.

[Astuce] Astuce

Consultez Section 4.5.2, « Le système de gestion centralisée moderne » pour l’intégration de systèmes de type serveur.

[Astuce] Astuce

La résolution de nom d’hôte est normalement fournie par le serveur DNS. Pour l’affectation dynamique d’adresse IP hôte par DHCP, le DNS dynamique peut être configuré pour la résolution de nom d’hôte en utilisant bind9 et isc-dhcp-server comme décrit sur la page DDNS du wiki Debian.

[Astuce] Astuce

L’utilisation d’un serveur mandataire tel que squid est bien plus efficace pour économiser de la bande passante que l’utilisation d’un serveur miroir local comportant tout le contenu de l’archive Debian.

Voici d’autres clients d’applications réseau :


Le programme telnet permet la connexion manuelle aux démons du système et leur diagnostic.

Pour tester le service POP3 brut, essayez ce qui suit :

$ telnet mail.ispname.net pop3

Pour tester le service POP3, ayant TLS/SSL activé, de certains fournisseurs d’accès Internet (FAI), vous devrez avoir un client telnet ayant TLS/SSL activé en utilisant l’un des paquets telnet-ssl ou openssl.

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

Les RFC suivantes proposent les connaissances nécessaires pour chaque démon :


L’utilisation des ports est décrite dans « /etc/services ».