Chapitre 6. Applications réseau

Table des matières

6.1. Navigateurs Web
6.1.1. Spoofing the User-Agent string
6.1.2. Browser extension
6.2. Le système de courrier électronique
6.2.1. Bases du courrier électronique
6.2.2. Modern mail service limitation
6.2.3. Historic mail service expectation
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. User name on the remote host
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. Sending a mail from a remote host
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

If you enabled "2-Step Verification" with some ISP, you need to obtain an application password to access POP and SMTP services from your program. You may need to approve your host IP in advance.

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


This section focuses on typical mobile workstations on consumer grade Internet connections.

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

  • The email message format covering header and body data is extended by Multipurpose Internet Mail Extensions (MIME) from the plain ASCII text to other character encodings, as well as attachments of audio, video, images, and application programs.

Full featured GUI based email clients offer all the following functions using the GUI based intuitive configuration.

  • It creates and interprets the message header and body data using Multipurpose Internet Mail Extensions (MIME) to deal the content data type and encoding.

  • It authenticates itself to the ISP's SMTP and IMAP servers using the legacy basic access authentication or modern OAuth 2.0. (For OAuth 2.0, set it via Desktop environment settings. E.g., "Settings" -> "Online Accounts".)

  • It sends the message to the ISP's smarthost SMTP server listening to the message submission port (587).

  • It receives the stored message on the ISP's server from the TLS/IMAP4 port (993).

  • It can filter mails by their attributes.

  • It may offer additional functionalities: Contacts, Calendar, Tasks, Memos.


Debian mobile workstations can be configured just with full featured GUI based email clients without mail transfer agent (MTA) program after Debian 12 Bookworm.

Debian traditionally installed some MTA program to support programs expecting the /usr/sbin/sendmail command. Such MTA on mobile workstations must cope with Section 6.2.2, « Modern mail service limitation » and Section 6.2.3, « Historic mail service expectation ».

For mobile workstations, the typical choice of MTA is either exim4-daemon-light or postfix with its installation option such as "Mail sent by smarthost; received via SMTP or fetchmail" selected. These are light weight MTAs that respect "/etc/aliases".

[Astuce] Astuce

Configuring exim4 to send the Internet mail via multiple corresponding smarthosts for multiple source email addresses is non-trivial. If you need such capability for some programs, set them up to use msmtp which is easy to set up for multiple source email addresses. Then leave main MTA only for a single email address.


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 « Nom réseau ou adresse IP du système « smarthost » » à « smtp.hostname.dom:587 ».

Select "No" for "Hide local mail name in outgoing mail?". (Use "/etc/email-addresses" as in Section 6.2.4.3, « Configuration de l’adresse de courriel », instead.)

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

Select "Yes" for "Split configuration into small files?:".

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

Configure exim4(8) with "QUEUERUNNER='queueonly'", "QUEUERUNNER='nodaemon'", etc. in "/etc/default/exim4" to minimize system resource usages. (optional)

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

  • Run "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

For all practical consideration, use SMTP with STARTTLS on port 587 or SMTPS SSL (SMTPS) on port 465, instead of plain SMTP on 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-]).


Although shellinabox is not a SSH program, it is listed here as an interesting alternative for the remote terminal access.

See also Section 7.8, « X server connection » for connecting to remote X client programs.

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

The OpenSSH SSH daemon supports SSH protocol 2 only.

Please read "/usr/share/doc/openssh-client/README.Debian.gz", ssh(1), sshd(8), ssh-agent(1), and ssh-keygen(1), ssh-add(1) and 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.

Don't enable rhost based authentication (HostbasedAuthentication in /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.

In the old Unix-like system, the BSD Line printer daemon (lpd) was the standard and the standard print out format of the classic free software was PostScript (PS). Some filter system was used along with Ghostscript to enable printing to the non-PostScript printer. See Section 11.4.1, « Ghostscript ».

In the modern Debian system, the Common UNIX Printing System (CUPS) is the de facto standard and the standard print out format of the modern free software is Portable Document Format (PDF).

The CUPS uses Internet Printing Protocol (IPP). The IPP is now supported by other OSs such as Windows XP and Mac OS X and has became new cross-platform de facto standard for remote printing with bi-directional communication capability.

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