Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
elearning:workbooks:lpic:12:500:l108 [2023/06/30 15:01] adminelearning:workbooks:lpic:12:500:l108 [2024/12/11 10:26] (Version actuelle) admin
Ligne 1: Ligne 1:
 ~~PDF:LANDSCAPE~~ ~~PDF:LANDSCAPE~~
  
-**Version** : 2023.01+**Version** : 2024.01
  
 Dernière mise-à-jour : ~~LASTMOD~~ Dernière mise-à-jour : ~~LASTMOD~~
Ligne 9: Ligne 9:
 =====Contenu du Module===== =====Contenu du Module=====
  
-  * **LCF208 - Gestion de la Journalisation**+  * **Topic 108: Essential System Services**
     * Contenu du Module     * Contenu du Module
-  * Le Serveur d'Horloge +    * Le Serveur d'Horloge 
-    * Introduction +    * Introduction 
- * Le fichier ntp.conf+    * Le fichier ntp.conf
     * Gestion de la Journailisation     * Gestion de la Journailisation
       * Présentation       * Présentation
Ligne 54: Ligne 54:
           * Consultation des Journaux d'une Plage de Dates ou d'Heures           * Consultation des Journaux d'une Plage de Dates ou d'Heures
           * Consultation des Journaux en Live           * Consultation des Journaux en Live
-          * Consultation des Journaux avec des Mots Clefs+          * Consultation des Journaux avec des Mots Clefs   
 +    * Gestion d'un Serveur de Messagerie 
 +      * Présentation 
 +      * Configuration de votre Machine Virtuelle 
 +        * Modification du Fichier /etc/hosts 
 +        * Modification du FQDN 
 +        * Modification de SELinux 
 +        * Configurer firewalld 
 +      * LAB #1 - Installation de postfix, de Dovecot et de Cyrus-Imapd 
 +      * LAB #2 - Configuration de Base de Postfix 
 +        * Le fichier /etc/postfix/main.cf 
 +        * La Commande postconf 
 +        * Le Commande sendmail de Postfix 
 +        * Tester la Configuration de Postfix 
 +        * Terminer la Configuration 
 +      * LAB #3 - Tester le Serveur SMTP Sortant 
 +      * LAB #4 - Définition des Aliases  
 +    * Cups 
 +      * Protocoles 
 +      * Paquets 
 +      * Daemon 
 +      * Le fichier /etc/cups/cupsd.conf 
 +      * Filtres 
 +      * Backends 
 +      * Journaux 
 +      * Imprimantes 
 +      * Administration 
 +        * La Commande lpstat 
 +        * La Commande lpadmin 
 +        * Les Commandes accept et cupsenable 
 +        * Classe d'imprimantes 
 +        * Le fichier /etc/cups/printers.conf 
 +        * Le fichier /etc/cups/classes.conf 
 +        * La Commande cancel 
 +        * La Commande lpmove 
 +        * L'interface Web
  
 =====Le Serveur d'Horloge===== =====Le Serveur d'Horloge=====
Ligne 64: Ligne 99:
 Le protocole utilisé s'appelle **NTP **( **Network Time Protocol **) qui utilise le port **123**. Celui-ci, permet la synchronisation avec plusieurs serveurs publics. Les serveurs de temps de racine s'appellent des serveurs de **Strate 1**. En dessous se trouvent des serveurs de Strate 2, Strate 3 etc.. Le protocole utilisé s'appelle **NTP **( **Network Time Protocol **) qui utilise le port **123**. Celui-ci, permet la synchronisation avec plusieurs serveurs publics. Les serveurs de temps de racine s'appellent des serveurs de **Strate 1**. En dessous se trouvent des serveurs de Strate 2, Strate 3 etc..
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** - La commande **ntpdate**, utilisée pour synchroniser l'horloge **sans** utiliser le démon **ntpd** est maintenant remplacée par l'option **-q** de la commande **ntp**. Lors de l'utilisation de **ntpdate**, le démon **ntpd** doit être arrêté. Si ntpdate constatait que l'erreur de l'horloge local était supérieur à 0,5 secondes, celle-ci appelait la routine **settimeofday()** tandis que si l'erreur était inférieur à 0,5 secondes, elle appelait la routine **adjtime()**. **Important** - La commande **ntpdate**, utilisée pour synchroniser l'horloge **sans** utiliser le démon **ntpd** est maintenant remplacée par l'option **-q** de la commande **ntp**. Lors de l'utilisation de **ntpdate**, le démon **ntpd** doit être arrêté. Si ntpdate constatait que l'erreur de l'horloge local était supérieur à 0,5 secondes, celle-ci appelait la routine **settimeofday()** tandis que si l'erreur était inférieur à 0,5 secondes, elle appelait la routine **adjtime()**.
 </WRAP> </WRAP>
Ligne 171: Ligne 206:
 </file> </file>
  
-<WRAP center round important>+<WRAP center round important 60%>
 Les directives ci-dessus sont souvent suivies par deux options : **server 0.rhel.pool.ntp.org iburst dynamic**. L'option **iburst** implique qu'en cas de non-disponibilité du serveur concerné, votre serveur enverra des lots de 8 paquets au lieu d'un seul. L'option **dynamic** permet la configuration de votre serveur même dans le cas où le serveur NTP distant n'est pas disponible car l'utilisation de cette option présume que le serveur distant deviendra disponible à un moment donné. Les directives ci-dessus sont souvent suivies par deux options : **server 0.rhel.pool.ntp.org iburst dynamic**. L'option **iburst** implique qu'en cas de non-disponibilité du serveur concerné, votre serveur enverra des lots de 8 paquets au lieu d'un seul. L'option **dynamic** permet la configuration de votre serveur même dans le cas où le serveur NTP distant n'est pas disponible car l'utilisation de cette option présume que le serveur distant deviendra disponible à un moment donné.
 </WRAP> </WRAP>
Ligne 342: Ligne 377:
 La majorité des journaux du système et des applications se trouve dans le répertoire **/var/log**. La majorité des journaux du système et des applications se trouve dans le répertoire **/var/log**.
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : Il est conseillé de déplacer le point de montage du répertoire **/var/log** sur une partition physique ou un volume logique à part. De cette façon, en cas de journalisation rapide trop bavarde la limite de la taille de ce répertoire est celle de la taille de la partition physique ou du volume logique. Si vous laissez ce répertoire dans la racine du système, il existe un risque à ce que les journaux grossissent si vite qu'ils occupent toute l'espace disque libre, créant ainsi un crash système. **Important** : Il est conseillé de déplacer le point de montage du répertoire **/var/log** sur une partition physique ou un volume logique à part. De cette façon, en cas de journalisation rapide trop bavarde la limite de la taille de ce répertoire est celle de la taille de la partition physique ou du volume logique. Si vous laissez ce répertoire dans la racine du système, il existe un risque à ce que les journaux grossissent si vite qu'ils occupent toute l'espace disque libre, créant ainsi un crash système.
 </WRAP> </WRAP>
Ligne 987: Ligne 1022:
 </code> </code>
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : Pour plus d'information concernant le système audit, consultez les manuels de **auditd**, **auditctl**, **audispd**, **aureport** et **ausearch**. **Important** : Pour plus d'information concernant le système audit, consultez les manuels de **auditd**, **auditctl**, **audispd**, **aureport** et **ausearch**.
 </WRAP> </WRAP>
Ligne 1112: Ligne 1147:
 | SYSLOGD_OPTIONS="-c 0" | syslogd | | SYSLOGD_OPTIONS="-c 0" | syslogd |
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : Notez que l'emplacement du fichier **rsyslog** n'est pas le même. **Important** : Notez que l'emplacement du fichier **rsyslog** n'est pas le même.
 </WRAP> </WRAP>
Ligne 1307: Ligne 1342:
 </file> </file>
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : Les deux directives **$ModLoad imudp.so** et **$UDPServerRun 514** crée un ** Écouteur** sur le port UDP/514 tandis que les deux directives **$ModLoad imtcp.so** et **$InputTCPServerRun 514** crée un Écouteur sur le port TCP/514. Le port 514 est le port standard pour les Écouteurs de rsyslog. Cependant il est possible de modifier le port utilisé en modifiant la valeur dans la directive **$UDPServerRun** ou **$InputTCPServerRun**. Par exemple : **$InputTCPServerRun 1514**. **Important** : Les deux directives **$ModLoad imudp.so** et **$UDPServerRun 514** crée un ** Écouteur** sur le port UDP/514 tandis que les deux directives **$ModLoad imtcp.so** et **$InputTCPServerRun 514** crée un Écouteur sur le port TCP/514. Le port 514 est le port standard pour les Écouteurs de rsyslog. Cependant il est possible de modifier le port utilisé en modifiant la valeur dans la directive **$UDPServerRun** ou **$InputTCPServerRun**. Par exemple : **$InputTCPServerRun 1514**.
 </WRAP> </WRAP>
Ligne 1335: Ligne 1370:
 </file> </file>
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : Ces directives utilisent le protocole TCP. Le serveur distant doit donc être configuré pour ce mode de communication.La directive ***.* @@remote-host:514** doit être modifiée pour indiquer l'adresse IP du serveur rsyslog distant. **Important** : Ces directives utilisent le protocole TCP. Le serveur distant doit donc être configuré pour ce mode de communication.La directive ***.* @@remote-host:514** doit être modifiée pour indiquer l'adresse IP du serveur rsyslog distant.
 </WRAP> </WRAP>
Ligne 1383: Ligne 1418:
 Une Action peut s'appliquer à plusieurs Sélecteurs en les séparant par le caractère **;**, par exemple : ***.info;mail.none;authpriv.none;cron.none**. Une Action peut s'appliquer à plusieurs Sélecteurs en les séparant par le caractère **;**, par exemple : ***.info;mail.none;authpriv.none;cron.none**.
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : Une Action précédée par le signe **-** est entreprise d'une manière **asynchrone**. Dans le cas ou l'action est entreprise d'une manière **synchrone**, la pertinence des journaux est garantie mais au prix d'un ralentissement du système. **Important** : Une Action précédée par le signe **-** est entreprise d'une manière **asynchrone**. Dans le cas ou l'action est entreprise d'une manière **synchrone**, la pertinence des journaux est garantie mais au prix d'un ralentissement du système.
 </WRAP> </WRAP>
Ligne 1500: Ligne 1535:
 La deuxième partie du fichier concerne des configurations spécifiques pour certains fichiers journaux. La deuxième partie du fichier concerne des configurations spécifiques pour certains fichiers journaux.
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : Notez que la compression des fichiers de journalisation n'est pas activée par défaut. **Important** : Notez que la compression des fichiers de journalisation n'est pas activée par défaut.
 </WRAP> </WRAP>
Ligne 1550: Ligne 1585:
 </code> </code>
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : Journald ne peut pas envoyer les traces à un autre ordinateur. Pour utiliser un serveur de journalisation distant il faut donc inclure la directive **ForwardToSyslog=yes** dans le fichier de configuration de journald, **/etc/systemd/journald.conf**, puis configurer Rsyslog à envoyer les traces au serveur distant. **Important** : Journald ne peut pas envoyer les traces à un autre ordinateur. Pour utiliser un serveur de journalisation distant il faut donc inclure la directive **ForwardToSyslog=yes** dans le fichier de configuration de journald, **/etc/systemd/journald.conf**, puis configurer Rsyslog à envoyer les traces au serveur distant.
 </WRAP> </WRAP>
Ligne 1592: Ligne 1627:
 </code> </code>
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : Notez que les messages importants sont en gras, par exemple les messages de niveaux **notice** ou **warning** et que les messages graves sont en rouge. **Important** : Notez que les messages importants sont en gras, par exemple les messages de niveaux **notice** ou **warning** et que les messages graves sont en rouge.
 </WRAP> </WRAP>
Ligne 1609: Ligne 1644:
 </code> </code>
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : Rappelez-vous que sous RHEL/CentOS 7 le répertoire **/sbin** est un lien symbolique vers **/usr/sbin**. **Important** : Rappelez-vous que sous RHEL/CentOS 7 le répertoire **/sbin** est un lien symbolique vers **/usr/sbin**.
 </WRAP> </WRAP>
Ligne 1651: Ligne 1686:
 </code> </code>
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : Notez que vous pouvez consulter les messages des démarrages précédents, il est possible d'utiliser les options **-b 1**, **-b 2** etc. **Important** : Notez que vous pouvez consulter les messages des démarrages précédents, il est possible d'utiliser les options **-b 1**, **-b 2** etc.
 </WRAP> </WRAP>
Ligne 1731: Ligne 1766:
 </code> </code>
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : Le format de la date est **2015-09-29 18:38:00**. Il est possible d'utiliser des mots clefs : **yesterday**, **today**, **tomorrow**, **now**. **Important** : Le format de la date est **2015-09-29 18:38:00**. Il est possible d'utiliser des mots clefs : **yesterday**, **today**, **tomorrow**, **now**.
 </WRAP> </WRAP>
Ligne 1781: Ligne 1816:
 </code> </code>
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : Notez la présence de la dernière ligne.  **Important** : Notez la présence de la dernière ligne. 
 </WRAP> </WRAP>
Ligne 1817: Ligne 1852:
 </code> </code>
  
------+=====Gestion d'un Serveur de Messagerie=====
  
-Copyright © 2023 Hugh Norris.+====Présentation====
  
 +La messagerie utilise les protocols suivants :
 +
 +  * **SMTP** ([[https://fr.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol|Simple Message Transfer Protocol]]),
 +  * **POP** ([[https://fr.wikipedia.org/wiki/Post_Office_Protocol|Post Office Protocol]]),
 +  * **IMAP** ([[https://fr.wikipedia.org/wiki/Internet_Message_Access_Protocol|Internet Message Access Protocol]]).
 +
 +Lors de l'utilisation du protocol **SMTP**, c'est l'expéditeur qui initie le transfert tandis qu'avec les protocols POP et IMAP c'est le destinataire qui initie la collecte.
 +
 +Un serveur SMTP est appelé un **MTA** ([[https://fr.wikipedia.org/wiki/Mail_Transfer_Agent|Mail Transfer Agent]]) tandis que les serveurs POP et IMAP sont appelés des **MDA** ([[http://fr.wikipedia.org/wiki/Mail_Delivery_Agent|Mail Delivery Agent]]). Les clients de messagerie sont des **MUA** ([[https://fr.wikipedia.org/wiki/Client_de_messagerie|Mail User Agent]]). Lors de l'envoie d'un message, le MUA soumet celui-ci à un MSA **[[https://en.wikipedia.org/wiki/Message_submission_agent|Mail Submission Agent]]** :
 +
 +{{ :elearning:workbooks:lpic:12:500:email.png?600 |}}
 +
 +Dans un système Linux, le mail est stocké pour chaque utilisateur soit dans le répertoire **/var/spool/mail**, soit dans un répertoire dans le répertoire personnel de chaque utilisateur.
 +
 +Les quatre MTA les plus utilisés sous Linux sont :
 +
 +  * **[[http://www.sendmail.org|Sendmail]]**,
 +  * **[[http://www.postfix.org|Postfix]]**,
 +  * **[[http://www.exim.org|Exim]]**,
 +  * **[[http://www.qmail.org|Qmail]]**.
 +
 +<WRAP center round important 60%>
 +**Important** - Postfix est considéré d'être un des MTA le plus facilement configuré ( par 250 directives !! ). Ses fichiers sont facilement lisibles par l'être humain ce qui n'est pas le cas de sendmail.
 +</WRAP>
 +
 +Les MDA les plus utilisés sous Linux sont :
 +
 +  * **[[http://cyrusimap.web.cmu.edu|Cyrus IMAP]]**,
 +  * **[[http://www.dovecot.org|Dovecot]]**,
 +  * **[[http://fetchmail.berlios.de|Fetchmail]]**.
 +
 +<WRAP center round important 60%>
 +**Important** - Fetchmail remplit un rôle spécifique et n'est utilisé que quand le serveur n'est pas connecté en permanence à Internet.
 +</WRAP>
 +
 +Les quatre MUA les plus utilisés sous Linux sont :
 +
 +  * **[[http://projects.gnome.org/evolution|Evolution]]**,
 +  * **[[http://userbase.kde.org/KMail|KMail]]**,
 +  * **[[http://www.mozilla.org/en­US/thunderbird/|Thunderbird]]**,
 +  * **[[http://www.mutt.org|mutt]]**.
 +
 +Deux utilitaires simples permettent la lecture des spools de mail locaux en ligne de commande aussi bien que l'envoie des messages :
 +
 +  * **mail**,
 +  * **nail**.
 +
 +La commande **nail** diffère de la commande **mail** par le fait qu'elle peut gérer des fichiers attachés.
 +
 +La commande mail est souvent un lien symbolique ver la commande **mailx** :
 +
 +<code>
 +[root@centos7 ~]# ls -l /bin/mail
 +lrwxrwxrwx. 1 root root 5 Jan 14 08:17 /bin/mail -> mailx
 +</code>
 +
 +Les options de la commande mailx sont :
 +
 +<code>
 +[root@centos7 ~]# mailx --help
 +mailx: illegal option -- -
 +Usage: mailx -eiIUdEFntBDNHRVv~ -T FILE -u USER -h hops -r address -s SUBJECT -a FILE -q FILE -f FILE -A ACCOUNT -b USERS -c USERS -S OPTION users
 +</code>
 +
 +La syntaxe de la commande mailx dans le cas d'un envoie est :
 +
 +<code>
 +mailx [-­s  objet ] [-­c  ccadresse ] [-­b  bcc­adresse ] adresse_destinataire
 +</code>
 +
 +Lors de la lecture du spool de mail local, la syntaxe est la suivante :
 +
 +<code>     
 +mailx [­-f [ spool de mail local ] | ­-u  nom_utilisateur ]
 +</code>
 +
 +Par exemple :
 +
 +<code>
 +[root@centos7 ~]# mail -s "test  message" -c trainee root
 +This is a test message
 +[^D]
 +EOT
 +</code>
 +
 +<code>
 +[root@centos7 ~]# su - trainee
 +Last login: Mon Jan 14 10:28:37 CET 2019 from 10.0.2.2 on pts/0
 +[trainee@centos7 ~]$ mail
 +Heirloom Mail version 12.5 7/5/10.  Type ? for help.
 +"/var/spool/mail/trainee": 1 message 1 new
 +>N  1 root                  Mon Jan 14 10:30  19/667   "test  message"
 +& 1
 +Message  1:
 +From root@centos7.fenestros.loc  Mon Jan 14 10:30:47 2019
 +Return-Path: <root@centos7.fenestros.loc>
 +X-Original-To: trainee
 +Delivered-To: trainee@centos7.fenestros.loc
 +Date: Mon, 14 Jan 2019 10:30:46 +0100
 +To: root@centos7.fenestros.loc
 +Subject: test  message
 +Cc: trainee@centos7.fenestros.loc
 +User-Agent: Heirloom mailx 12.5 7/5/10
 +Content-Type: text/plain; charset=us-ascii
 +From: root@centos7.fenestros.loc (root)
 +Status: R
 +
 +This a test massage
 +
 +& q
 +Held 1 message in /var/spool/mail/trainee
 +</code>
 +
 +Il est aussi possible d'injecter le contenu d'un fichier sur l'entrée standard de la commande mailx afin de l'utiliser comme le contenu du message :
 +
 +<code>
 +[trainee@centos7 ~]$ echo fenestros > mail.txt
 +You have mail in /var/spool/mail/trainee
 +[trainee@centos7 ~]$ mail -s "test message back" < mail.txt root
 +[trainee@centos7 ~]$ su -
 +Password: 
 +Last login: Mon Jan 14 10:28:46 CET 2019 on pts/0
 +[root@centos7 ~]# mail
 +Heirloom Mail version 12.5 7/5/10.  Type ? for help.
 +"/var/spool/mail/root": 4 messages 4 new
 +>N  1 trainee@centos7.fene  Sat Apr 30 12:38  16/688   "*** SECURITY information for centos7.fenestros.loc ***"
 +  2 trainee@centos7.fene  Mon Apr 23 12:04  16/688   "*** SECURITY information for centos7.fenestros.loc ***"
 +  3 root                  Mon Jan 14 10:30  19/661   "test  message"
 +  4 trainee               Mon Jan 14 10:33  18/636   "test message back"
 +& q
 +Held 4 messages in /var/spool/mail/root 
 +</code>
 +
 +====Configuration de votre Machine Virtuelle====
 +
 +===Modification du Fichier /etc/hosts===
 +
 +Comme vous allez utiliser le nom de domaine **mail.i2tch.com** pour votre serveur postfix, modifiez votre fichier **/etc/hosts** ainsi :
 +
 +<code>
 +[root@centos7 ~]# vi /etc/hosts
 +[root@centos7 ~]# cat /etc/hosts
 +...
 +10.0.2.51 mail.i2tch.com  mail
 +</code>
 +
 +===Modification du FQDN===
 +
 +Modifiez le FQDN de votre VM :
 +
 +<code>
 +[root@centos7 ~]# nmcli g hostname mail.i2tch.com
 +[root@centos7 ~]# hostname
 +mail.i2tch.com
 +</code>
 +
 +===Modification de SELinux===
 +
 +<code>
 +[root@mail ~]# setenforce permissive
 +[root@mail ~]# vi /etc/selinux/config 
 +[root@mail ~]# cat /etc/selinux/config 
 +
 +# This file controls the state of SELinux on the system.
 +# SELINUX= can take one of these three values:
 +#     enforcing - SELinux security policy is enforced.
 +#     permissive - SELinux prints warnings instead of enforcing.
 +#     disabled - No SELinux policy is loaded.
 +SELINUX=permissive
 +# SELINUXTYPE= can take one of three two values:
 +#     targeted - Targeted processes are protected,
 +#     minimum - Modification of targeted policy. Only selected processes are protected. 
 +#     mls - Multi Level Security protection.
 +SELINUXTYPE=targeted 
 +</code>
 +
 +===Configurer firewalld===
 +
 +Pour ouvrir les ports en relation avec nos serveurs de méssagerie, utilisez les commandes suivantes :
 +
 +<code>
 +[root@mail ~]# firewall-cmd --permanent --add-port=25/tcp
 +[root@mail ~]# firewall-cmd --permanent --add-port=465/tcp
 +[root@mail ~]# firewall-cmd --permanent --add-port=587/tcp
 +[root@mail ~]# firewall-cmd --permanent --add-port=995/tcp
 +[root@mail ~]# firewall-cmd --permanent --add-port=993/tcp
 +[root@mail ~]# firewall-cmd --permanent --add-port=143/tcp
 +[root@mail ~]# firewall-cmd --permanent --add-port=110/tcp
 +[root@mail ~]# firewall-cmd --reload
 +</code>
 +
 +==== LAB #1 - Installation de postfix, de Dovecot et de Cyrus-Imapd ====
 +
 +Installez le MTA **postfix**, le MDA **[[http://fr.wikipedia.org/wiki/Dovecot|Dovecot]]** et le MDA **[[http://fr.wikipedia.org/wiki/Cyrus_%28logiciel%29|Cyrus-Imapd]]** :
 +
 +<code>
 +[root@mail ~]# yum install postfix procmail dovecot cyrus-imapd
 +</code>
 +
 +==== LAB #2 - Configuration de Base de Postfix ====
 +
 +===Le fichier /etc/postfix/main.cf===
 +
 +Utilisez les commandes suivantes pour voir les directives actives dans le fichiers **/etc/postfix/main.cf** :
 +
 +<code>
 +[root@mail ~]# cd /tmp ; grep -E -v '^(#|$)'  /etc/postfix/main.cf > main.cf
 +[root@mail tmp]# cat main.cf
 +</code>
 +
 +A l'installation de postfix, le fichier principal de configuration **main.cf** comporte les directives actives suivantes :
 +
 +<file text main.cf>
 +queue_directory = /var/spool/postfix
 +command_directory = /usr/sbin
 +daemon_directory = /usr/libexec/postfix
 +data_directory = /var/lib/postfix
 +mail_owner = postfix
 +inet_interfaces = localhost
 +inet_protocols = all
 +mydestination = $myhostname, localhost.$mydomain, localhost
 +unknown_local_recipient_reject_code = 550
 +alias_maps = hash:/etc/aliases
 +alias_database = hash:/etc/aliases
 + 
 +  
 +debug_peer_level = 2
 +debugger_command =
 + PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
 + ddd $daemon_directory/$process_name $process_id & sleep 5
 +sendmail_path = /usr/sbin/sendmail.postfix
 +newaliases_path = /usr/bin/newaliases.postfix
 +mailq_path = /usr/bin/mailq.postfix
 +setgid_group = postdrop
 +html_directory = no
 +manpage_directory = /usr/share/man
 +sample_directory = /usr/share/doc/postfix-2.10.1/samples
 +readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
 +</file>
 +
 +Ce fichier comporte des directives au formats suivants :
 +
 +  * paramètre = valeur
 +  * autre_paramètre = $paramètre
 +
 +Sauvegardez votre fichier main.cf en main.old
 +
 +<code>
 +[root@mail tmp]# cd ~
 +[root@mail ~]# cp /etc/postfix/main.cf /etc/postfix/main.old
 +</code>
 +
 +Téléchargez le fichier main.cf suivant et placez-le dans le répertoire **/etc/postfix/** :
 +
 +<file text main.cf>
 +#############CONFIG DE BASE##############
 +myhostname = mail.i2tch.com
 +mydomain= i2tch.com
 +myorigin = $mydomain 
 +mynetworks = 10.0.2.0/24, 127.0.0.0/
 +mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
 +smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
 +delay_warning_time = 4h 
 +recipient_delimiter = + 
 +owner_request_special = no
 +inet_interfaces = all
 +unknown_local_recipient_reject_code = 450 
 +#############  RELAY HOST  ##############
 +# relayhost = smtp.bbox.fr
 +#############  USER/GROUP  ##############
 +mail_owner = postfix
 +setgid_group = postdrop
 +#############   ALIASES    ##############
 +alias_maps = hash:/etc/aliases
 +alias_database = hash:/etc/aliases
 +############   DEBUGGING   ##############
 +debugger_command =
 +         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
 +         xxgdb $daemon_directory/$process_name $process_id & sleep 5
 +############   COMMANDES   ##############
 +mailbox_command = /usr/bin/procmail -Y -a $DOMAIN 
 +sendmail_path = /usr/sbin/sendmail.postfix
 +newaliases_path = /usr/bin/newaliases.postfix
 +mailq_path = /usr/bin/mailq.postfix
 +############  REPERTOIRES  ##############
 +mail_spool_directory = /var/spool/mail 
 +manpage_directory = /usr/share/man
 +sample_directory = /usr/share/doc/postfix-2.6.6/samples
 +readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
 +queue_directory = /var/spool/postfix
 +command_directory = /usr/sbin
 +daemon_directory = /usr/libexec/postfix
 +</file>
 +
 +Les directives dans l'exemple ci-dessus sont :
 +
 +^ Directive ^ Description ^
 +| myhostname | Le nom de machine Internet de ce système de messagerie. |
 +| mydomain | Le nom de domaine Internet du système de messagerie. |
 +| myorigin | Le domaine par défaut utilisé pour les messages postés localement. |
 +| mynetworks | La liste des clients SMTP "internes" qui ont plus de privilèges que les "étrangers". |
 +| mydestination | Liste des domaines livrés par le transporteur de messages. |
 +| smtpd_banner | Texte qui suit le code de statut 220 dans la bannière d'accueil. |
 +| delay_warning_time | Temps au delà duquel l'expéditeur reçoit les en-têtes d'un message toujours en file d'attente. |
 +| recipient_delimiter | Le délimiteur système de l'extension de adresse de destination. |
 +| owner_request_special | Applique un traitement particulier aux parties locales des adresses de listes de propriétaires ou de requêtes. |
 +| inet_interfaces | Les adresses réseau par lesquelles le système de messagerie reçoit les messages. |
 +| unknown_local_recipient_reject_code | Code numérique de réponse du serveur SMTP de Postfix lorsque le destinataire n'est pas trouvé. |
 +| relayhost | La machine par défaut où livrer le courrier extérieur. |
 +| mail_owner | Le compte du système qui possède la file d'attente et la plupart des processus démons de Postfix. |
 +| setgid_group | Le groupe propriétaire des commandes set-gid de Postfix et des répertoires en écriture pour le groupe. |
 +| alias_maps | La base de données des alias utilisée pour la livraison locale. |
 +| alias_database | La base de données des alias pour la livraison locale. |
 +| debugger_command | La commande externe à exécuter lorsqu'un programme démon de Postfix est invoké avec l'option -D. |
 +| mailbox_command | Commande externe optionnelle que l'agent de livraison local doit utiliser pour la livraison des messages. |
 +| sendmail_path | Indique l'emplacement de la commande sendmail de Postfix. |
 +| newaliases_path | Indique l'emplacement de la commande newaliases. |
 +| mailq_path | Indique où est installée la commande Postfix mailq. Cette commande peut être utilisée pour afficher la file d'attente. |
 +| mail_spool_directory | Le répertoire où les boîtes-aux-lettres locales sont stockées. |
 +| manpage_directory | Emplacement des pages de manuel de Postfix. |
 +| sample_directory | Emplacement des exemples de fichiers de configuration de Postfix. |
 +| readme_directory | Emplacement des fichiers README de Postfix. |
 +| queue_directory | Emplacement du répertoire racine de la file d'attente de Postfix. |
 +| command_directory | Emplacement des commandes administratives de Postfix. |
 +| daemon_directory | Emplacement des démons Postfix. |
 +
 +<WRAP center round important 60%>
 +**Important**  - La directive **relayhost = smtp.bbox.fr** n'est necéssaire que pour contourner le blocage du port 25 du FAI utilisé pour éloborer ce cours. Elle n'est pas neceéssaire dans un environnement de production.
 +</WRAP>
 +
 +<WRAP center round todo 60%>
 +**A Faire** : Pour plus d'informations concernant les directives, consultez **[[http://postfix.traduc.org/index.php/postconf.5.html|cette page]]**.
 +</WRAP>
 +
 +===La Commande postconf===
 +
 +La commande **postconf** peut vous être très utile. Grâce à l'option **-d** vous pouvez visualiser les valeurs par défaut des directives de configuration de postfix au lieu des valeurs utilisées. Grâce à l'option **-n** vous pouvez visualiser les valeurs des directives de configuration de postfix qui sont différentes de valeurs par défaut :
 +
 +<code>
 +[root@mail ~]# postconf -d | more
 +2bounce_notice_recipient = postmaster
 +access_map_defer_code = 450
 +access_map_reject_code = 554
 +address_verify_cache_cleanup_interval = 12h
 +address_verify_default_transport = $default_transport
 +address_verify_local_transport = $local_transport
 +address_verify_map = btree:$data_directory/verify_cache
 +address_verify_negative_cache = yes
 +address_verify_negative_expire_time = 3d
 +address_verify_negative_refresh_time = 3h
 +address_verify_poll_count = ${stress?1}${stress:3}
 +address_verify_poll_delay = 3s
 +address_verify_positive_expire_time = 31d
 +address_verify_positive_refresh_time = 7d
 +address_verify_relay_transport = $relay_transport
 +address_verify_relayhost = $relayhost
 +address_verify_sender = $double_bounce_sender
 +address_verify_sender_dependent_default_transport_maps = $sender_dependent_defau
 +lt_transport_maps
 +address_verify_sender_dependent_relayhost_maps = $sender_dependent_relayhost_map
 +--More--
 +</code>
 +
 +<code>
 +[root@mail ~]# postconf -n | more
 +alias_database = hash:/etc/aliases
 +alias_maps = hash:/etc/aliases
 +broken_sasl_auth_clients = yes
 +command_directory = /usr/sbin
 +config_directory = /etc/postfix
 +daemon_directory = /usr/libexec/postfix
 +debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemo
 +n_directory/$process_name $process_id & sleep 5
 +delay_warning_time = 4h
 +inet_interfaces = all
 +mail_owner = postfix
 +mail_spool_directory = /var/spool/mail
 +mailbox_command = /usr/bin/procmail -Y -a $DOMAIN
 +mailq_path = /usr/bin/mailq.postfix
 +manpage_directory = /usr/share/man
 +mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
 +mydomain = i2tch.com
 +myhostname = mail.i2tch.com
 +mynetworks = 10.0.2.0/24, 127.0.0.0/8
 +myorigin = $mydomain
 +--More--
 +</code>
 +
 +====Le Commande sendmail de Postfix====
 +
 +Les options les plus importantes de la commande sendmail de postfix sont :
 +
 +<code>
 +       -Am (ignored)
 +
 +       -Ac (ignored)
 +              Postfix sendmail uses the same configuration file regardless  of
 +              whether or not a message is an initial submission.
 +
 +       -B body_type
 +              The message body MIME type: 7BIT or 8BITMIME.
 +
 +       -bd    Go  into  daemon  mode. This mode of operation is implemented by
 +              executing the "postfix start" command.
 +
 +       -bh (ignored)
 +
 +       -bH (ignored)
 +              Postfix has no persistent host status database.
 +
 +       -bi    Initialize alias database. See the newaliases command above.
 +
 +       -bm    Read mail from standard input and arrange for delivery.  This is
 +              the default mode of operation.
 +
 +       -bp    List the mail queue. See the mailq command above.
 +
 +       -bs    Stand-alone  SMTP  server mode. Read SMTP commands from standard
 +              input, and write responses to standard output.   In  stand-alone
 +              SMTP  server  mode,  mail relaying and other access controls are
 +              disabled by default. To enable them,  run  the  process  as  the
 +              mail_owner user.
 +
 +              This  mode  of  operation is implemented by running the smtpd(8)
 +              daemon.
 +
 +       -bv    Do not collect or deliver a  message.  Instead,  send  an  email
 +              report  after  verifying each recipient address.  This is useful
 +              for testing address rewriting and routing configurations.
 +
 +              This feature is available in Postfix version 2.1 and later.
 +</code>
 +
 +===Tester la Configuration de Postfix===
 +
 +Testez votre fichier de configuration avec la commande **postfix** :
 +
 +<code>
 +[root@mail ~]# postfix check
 +[root@mail ~]# 
 +</code>
 +
 +<WRAP center round todo 60%>
 +**A Faire** : Consultez le manuel de la commande postfix pour connaître ses options et ses arguments.
 +</WRAP>
 +
 +===Terminer la Configuration===
 +
 +Modifiez maintenant les droits sur le répertoire **/var/spool/mail**: 
 +
 +<code>
 +[root@mail ~]# chmod 1777 /var/spool/mail
 +</code>
 +
 +Re-démarrez le serveur postfix :
 +
 +<code>
 +[root@mail ~]# systemctl restart postfix
 +[root@mail ~]# systemctl status postfix
 +● postfix.service - Postfix Mail Transport Agent
 +   Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
 +   Active: active (running) since Mon 2019-01-14 11:46:44 CET; 6s ago
 +  Process: 7755 ExecStop=/usr/sbin/postfix stop (code=exited, status=0/SUCCESS)
 +  Process: 7768 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
 +  Process: 7766 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
 +  Process: 7764 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
 + Main PID: 7840 (master)
 +   CGroup: /system.slice/postfix.service
 +           ├─7840 /usr/libexec/postfix/master -w
 +           ├─7841 pickup -l -t unix -u
 +           └─7842 qmgr -l -t unix -u
 +
 +Jan 14 11:46:43 mail.i2tch.com systemd[1]: Stopped Postfix Mail Transport Agent.
 +Jan 14 11:46:43 mail.i2tch.com systemd[1]: Starting Postfix Mail Transport Agent...
 +Jan 14 11:46:44 mail.i2tch.com postfix/master[7840]: daemon started -- version 2.10.1, configuration /etc/postfix
 +Jan 14 11:46:44 mail.i2tch.com systemd[1]: Started Postfix Mail Transport Agent.
 +</code>
 +
 +Installez maintenant telnet :
 +
 +<code>
 +[root@mail ~]# yum install telnet
 +</code>
 +
 +Testez maintenant le serveur smtp de postfix en envoyant un message de root à trainee :
 +
 +<code>
 +[root@mail ~]# telnet localhost 25
 +Trying 127.0.0.1...
 +Connected to localhost.
 +Escape character is '^]'.
 +220 mail.i2tch.com ESMTP Postfix (2.10.1)
 +Helo me
 +250 mail.i2tch.com
 +MAIL from: root@i2tch.com
 +250 2.1.0 Ok
 +RCPT to: trainee@i2tch.com
 +250 2.1.5 Ok
 +DATA
 +354 End data with <CR><LF>.<CR><LF>
 +Subject : Test email
 +Ceci est un test
 +.
 +250 2.0.0 Ok: queued as E68953344BC3
 +QUIT
 +221 2.0.0 Bye
 +Connection closed by foreign host.
 +</code>
 +
 +Notez :
 +
 +  * le code **[[http://fr.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol|220]]** qui indique sue le serveur attend des instructions,
 +  * le déroulement de la conversation :
 +    * **HELO me** sert à vous identifier,
 +    * **MAIL from: root@i2tch.com** indique l'expéditeur,
 +    * **RCPT to: trainee@i2tch.com** indique le destinataire,
 +    * **DATA** indique que ce qui suit est le message,
 +  * le code **[[http://fr.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol|250]]** qui indique que la commande s'est bien déroulée.
 +  * le point sur une ligne vide indique la fin de la section DATA.
 +
 +Consultez maintenant le fichier **/var/log/maillog**. Vous devez constater que votre message a été livré à trainee :
 +
 +<code>
 +[root@mail ~]# tail /var/log/maillog
 +Jan 14 11:46:43 centos7 postfix/master[2903]: terminating on signal 15
 +Jan 14 11:46:44 centos7 postfix/postfix-script[7838]: starting the Postfix mail system
 +Jan 14 11:46:44 centos7 postfix/master[7840]: daemon started -- version 2.10.1, configuration /etc/postfix
 +Jan 14 11:48:46 centos7 postfix/smtpd[8731]: connect from localhost.localdomain[127.0.0.1]
 +Jan 14 11:49:13 centos7 postfix/smtpd[8731]: E68953344BC3: client=localhost.localdomain[127.0.0.1]
 +Jan 14 11:49:42 centos7 postfix/cleanup[8948]: E68953344BC3: message-id=<20190114104913.E68953344BC3@mail.i2tch.com>
 +Jan 14 11:49:42 centos7 postfix/qmgr[7842]: E68953344BC3: from=<root@i2tch.com>, size=342, nrcpt=1 (queue active)
 +Jan 14 11:49:42 centos7 postfix/local[9161]: E68953344BC3: to=<trainee@i2tch.com>, relay=local, delay=38, delays=38/0.05/0/0.08, dsn=2.0.0, status=sent (delivered to command: /usr/bin/procmail -Y -a $DOMAIN)
 +Jan 14 11:49:42 centos7 postfix/qmgr[7842]: E68953344BC3: removed
 +Jan 14 11:49:51 centos7 postfix/smtpd[8731]: disconnect from localhost.localdomain[127.0.0.1]
 +</code>
 +
 +====LAB #3 - Tester le Serveur SMTP Sortant====
 +
 +Envoyez un message en utilisant telnet à hugh.norris@hugh-norris.info avec comme **Subject:** votre prénom :
 +
 +<code>
 +[root@mail ~]# telnet localhost 25
 +Trying ::1...
 +telnet: connect to address ::1: Connection refused
 +Trying 127.0.0.1...
 +Connected to localhost.
 +Escape character is '^]'.
 +220 mail.i2tch.com ESMTP Postfix (2.6.6)
 +HELO me
 +250 mail.i2tch.com
 +MAIL from: root@i2tch.com
 +250 2.1.0 Ok
 +RCPT to: hugh.norris@hugh-norris.info
 +250 2.1.5 Ok
 +DATA
 +354 End data with <CR><LF>.<CR><LF>
 +Subject : root
 +Message de Test
 +.
 +250 2.0.0 Ok: queued as AF03C70A3
 +QUIT
 +221 2.0.0 Bye
 +Connection closed by foreign host.
 +</code>
 +
 +Consultez maintenant la fin du fichier **/var/log/maillog**. Vous devez constater que votre message est parti. Par exemple :
 +
 +<file>
 +...
 +May  1 10:54:17 mail postfix/smtpd[5899]: connect from localhost[127.0.0.1]
 +May  1 10:54:50 mail postfix/smtpd[5899]: AF03C70A3: client=localhost[127.0.0.1]
 +May  1 10:55:04 mail postfix/cleanup[5903]: AF03C70A3: message-id=<20140501085450.AF03C70A3@mail.i2tch.com>
 +May  1 10:55:04 mail postfix/qmgr[5061]: AF03C70A3: from=<root@i2tch.com>, size=390, nrcpt=1 (queue active)
 +May  1 10:55:04 mail postfix/smtp[5904]: AF03C70A3: to=<hugh.norris@hugh-norris.info>, relay=smtp.bbox.fr[194.158.122.55]:25, delay=31, delays=31/0.01/0.16/0.05, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 4EF645A)
 +May  1 10:55:04 mail postfix/qmgr[5061]: AF03C70A3: removed
 +May  1 10:55:08 mail postfix/smtpd[5899]: disconnect from localhost[127.0.0.1]
 +</file>
 +
 +Il est possible a tout moment de visualiser le contenu du spool de mail en utilisant la commande **mailq** qui est équivalente à la commande **sendmail bp** :
 +
 +<code>
 +[root@mail ~]# mailq
 +Mail queue is empty
 +</code>
 +
 +<WRAP center round important 60%>
 +**Important** : Il est également possible de visualiser le contenu d'un message en utilisant la commande **postcat -vq [message-id]**.
 +</WRAP>
 +
 +==== LAB #4 - Définition des Aliases ====
 +
 +Les deux lignes suivantes, issues du fichier **/etc/postfix/main.cf** indiquent l'emplacement des fichiers relatifs aux **aliases** :
 +
 +<file>
 +...
 +alias_maps = hash:/etc/aliases
 +alias_database = hash:/etc/aliases
 +...
 +</file>
 +
 +Voici le contenu du fichier **/etc/aliases** :
 +
 +<code>
 +[root@mail ~]# cat /etc/aliases
 +#
 +#  Aliases in this file will NOT be expanded in the header from
 +#  Mail, but WILL be visible over networks or from /bin/mail.
 +#
 +# >>>>>>>>>> The program "newaliases" must be run after
 +# >> NOTE >> this file is updated for any changes to
 +# >>>>>>>>>> show through to sendmail.
 +#
 +
 +# Basic system aliases -- these MUST be present.
 +mailer-daemon: postmaster
 +postmaster: root
 +
 +# General redirections for pseudo accounts.
 +bin: root
 +daemon: root
 +adm: root
 +lp: root
 +sync: root
 +shutdown: root
 +halt: root
 +mail: root
 +news: root
 +uucp: root
 +operator: root
 +games: root
 +gopher: root
 +ftp: root
 +nobody: root
 +radiusd: root
 +nut: root
 +dbus: root
 +vcsa: root
 +canna: root
 +wnn: root
 +rpm: root
 +nscd: root
 +pcap: root
 +apache: root
 +webalizer: root
 +dovecot: root
 +fax: root
 +quagga: root
 +radvd: root
 +pvm: root
 +amandabackup: root
 +privoxy: root
 +ident: root
 +named: root
 +xfs: root
 +gdm: root
 +mailnull: root
 +postgres: root
 +sshd: root
 +smmsp: root
 +postfix: root
 +netdump: root
 +ldap: root
 +squid: root
 +ntp: root
 +mysql: root
 +desktop: root
 +rpcuser: root
 +rpc: root
 +nfsnobody: root
 +
 +ingres: root
 +system: root
 +toor: root
 +manager: root
 +dumper: root
 +abuse: root
 +
 +newsadm: news
 +newsadmin: news
 +usenet: news
 +ftpadm: ftp
 +ftpadmin: ftp
 +ftp-adm: ftp
 +ftp-admin: ftp
 +www: webmaster
 +webmaster: root
 +noc: root
 +security: root
 +hostmaster: root
 +info: postmaster
 +marketing: postmaster
 +sales: postmaster
 +support: postmaster
 +
 +
 +# trap decode to catch security attacks
 +decode: root
 +
 +# Person who should get root's mail
 +#root: marc
 +</code>
 +
 +Il est important de spécifier un utilisateur existant qui recevra le mail de root et ceci pour des raisons légales liées à la boîte de mail **postmaster**, l'administrateur du serveur vu de l'extérieur.
 +
 +Il est aussi possible de créer des aliases pour harmoniser les adresses email de l'organisation. Si, par exemple, l'adresse email doit être au format **prénom.nom** mais que les noms de comptes du système linux sont au format **prénom**, il convient de rajouter au fichier une ligne pour chaque personne au format suivant :
 +
 +<file>
 +...
 +prénom.nom:     prénom
 +...
 +</file>
 +
 +Modifiez donc la fin de ce fichier ainsi :
 +
 +<code>
 +[root@mail ~]# vi /etc/aliases
 +[root@mail ~]# tail /etc/aliases
 +
 +
 +# trap decode to catch security attacks
 +decode: root
 +
 +# Person who should get root's mail
 +root: trainee
 +
 +# Employee Accounts
 +mickey.mouse: trainee
 +</code>
 +
 +Afin de prendre en compte la nouvelle liste d'alias, il faut utiliser la commande **newaliases** :
 +
 +<code>
 +[root@mail ~]# newaliases
 +</code>
 +
 +et demander à postfix de relire ses fichiers de configuration :
 +
 +<code>
 +[root@mail ~]# systemctl reload postfix
 +</code>
 +
 +En utilisant telnet, envoyez un message de **trainee** à **mickey.mouse**. Ce message arrivera dans la bôite de réception de trainee grâce à l'alias créé ci dessus : 
 +
 +<code>
 +[root@mail ~]# telnet localhost 25
 +Trying 127.0.0.1...
 +Connected to localhost.
 +Escape character is '^]'.
 +220 mail.i2tch.com ESMTP Postfix (2.10.1)
 +HELO me
 +250 mail.i2tch.com
 +MAIL from: trainee@i2tch.com
 +250 2.1.0 Ok
 +RCPT to: mickey.mouse@i2tch.com
 +250 2.1.5 Ok
 +DATA
 +354 End data with <CR><LF>.<CR><LF>
 +Subject : test
 +Message de test
 +.
 +250 2.0.0 Ok: queued as B46C23344BC3
 +QUIT
 +221 2.0.0 Bye
 +Connection closed by foreign host.
 +</code>
 +
 +Consultez maintenant le journal **/var/log/maillog**. Vous apercevrez des lignes similaires à :
 +
 +<code>
 +[root@mail ~]# tail /var/log/maillog
 +Jan 14 11:49:51 centos7 postfix/smtpd[8731]: disconnect from localhost.localdomain[127.0.0.1]
 +Jan 14 12:42:34 centos7 postfix/postfix-script[373]: refreshing the Postfix mail system
 +Jan 14 12:42:34 centos7 postfix/master[7840]: reload -- version 2.10.1, configuration /etc/postfix
 +Jan 14 12:43:08 centos7 postfix/smtpd[654]: connect from localhost.localdomain[127.0.0.1]
 +Jan 14 12:43:41 centos7 postfix/smtpd[654]: B46C23344BC3: client=localhost.localdomain[127.0.0.1]
 +Jan 14 12:44:09 centos7 postfix/cleanup[908]: B46C23344BC3: message-id=<20190114114341.B46C23344BC3@mail.i2tch.com>
 +Jan 14 12:44:09 centos7 postfix/qmgr[377]: B46C23344BC3: from=<trainee@i2tch.com>, size=343, nrcpt=1 (queue active)
 +Jan 14 12:44:09 centos7 postfix/local[1100]: B46C23344BC3: to=<trainee@i2tch.com>, orig_to=<mickey.mouse@i2tch.com>, relay=local, delay=36, delays=36/0.02/0/0.03, dsn=2.0.0, status=sent (delivered to command: /usr/bin/procmail -Y -a $DOMAIN)
 +Jan 14 12:44:09 centos7 postfix/qmgr[377]: B46C23344BC3: removed
 +Jan 14 12:44:12 centos7 postfix/smtpd[654]: disconnect from localhost.localdomain[127.0.0.1]
 +</code>
 +
 +Notez la présence de la ligne suivante :
 +
 +<file>
 +Jan 14 12:44:09 centos7 postfix/local[1100]: B46C23344BC3: to=<trainee@i2tch.com>, orig_to=<mickey.mouse@i2tch.com>, relay=local, delay=36, delays=36/0.02/0/0.03, dsn=2.0.0, status=sent (delivered to command: /usr/bin/procmail -Y -a $DOMAIN)
 +</file>
 +
 +Cette ligne démontre que l'alias fonctionne.
 +
 +<WRAP center round important 60%>
 +**Important** : Un utilisateur peut transférer son email vers un autre utilisateur du système ou bien vers une adresse email valide en inscrivant le nom ou l'adresse dans le fichier **~.forward**.
 +</WRAP>
 +
 +=====Cups=====
 +
 +Le logiciel **C**ommon **U**nix **P**rinting **S**ystem est un système de gestion des impressions conçu pour Unix. 
 +
 +====Protocoles====
 +
 +Cups utilise le protocole **IPP** sur les ports udp/631 et tcp/631. 
 +
 +Ce protocole :
 +
 +  * est une extension du protocole HTTP
 +  * permet d'administrer CUPS via un navigateur web
 +  * permet de décrire les spools d'impression par simple URL
 +
 +Cups peut aussi utiliser les deux protocoles suivants :
 +
 +  * **tcp/515** - Protocole BSD
 +  * **tcp/9100** - Protocole %%JeTDirect%% pour les imprimantes réseau HP
 +
 +====Daemon====
 +
 +**cupsd** est le daemon principal du système CUPS. Quand cupsd traite une impression, il transmet les données à un **filtre** en fonction du modèle d'imprimante. Après traitement par le filtre, cupsd transmet le résultat à un **backend** qui se charge de l'impression. Les échanges entre cupsd et ces programmes se font via des **répertoires de spools** et des **tubes**.
 +
 +====Le Fichier /etc/cups/cupsd.conf====
 +
 +Le fichier de configuration de CUPS est **/etc/cups/cupsd.conf**. Dans ce fichier on peut trouver :
 +
 +  * le port d'ecoute d'IPP
 +  * les comptes utilisateur et groupe sous lesquels s'exécute le serveur
 +  * le niveau de journalisation
 +  * la configuration du serveur **Browse**, c'est-à-dire de découverte des imprimantes réseaux
 +  * les ACL d'accès au spools
 +  * les ACL d'accès à l'administration du serveur.
 +
 +<code>
 +[root@centos7 ~]# cat /etc/cups/cupsd.conf
 +MaxLogSize 0
 +#
 +# "$Id: cupsd.conf.in 7888 2008-08-29 21:16:56Z mike $"
 +#
 +# Sample configuration file for the CUPS scheduler.  See "man cupsd.conf" for a
 +# complete description of this file.
 +#
 +
 +# Log general information in error_log - change "warn" to "debug"
 +# for troubleshooting...
 +LogLevel warn
 +
 +# Only listen for connections from the local machine.
 +Listen localhost:631
 +Listen /var/run/cups/cups.sock
 +
 +# Show shared printers on the local network.
 +Browsing On
 +BrowseLocalProtocols dnssd
 +
 +# Default authentication type, when authentication is required...
 +DefaultAuthType Basic
 +
 +# Web interface setting...
 +WebInterface Yes
 +
 +# Restrict access to the server...
 +<Location />
 +  Order allow,deny
 +</Location>
 +
 +# Restrict access to the admin pages...
 +<Location /admin>
 +  Order allow,deny
 +</Location>
 +
 +# Restrict access to configuration files...
 +<Location /admin/conf>
 +  AuthType Default
 +  Require user @SYSTEM
 +  Order allow,deny
 +</Location>
 +
 +# Set the default printer/job policies...
 +<Policy default>
 +  # Job/subscription privacy...
 +  JobPrivateAccess default
 +  JobPrivateValues default
 +  SubscriptionPrivateAccess default
 +  SubscriptionPrivateValues default
 +
 +  # Job-related operations must be done by the owner or an administrator...
 +  <Limit Create-Job Print-Job Print-URI Validate-Job>
 +    Order deny,allow
 +  </Limit>
 +
 +  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
 +    Require user @OWNER @SYSTEM
 +    Order deny,allow
 +  </Limit>
 +
 +  # All administration operations require an administrator to authenticate...
 +  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>
 +    AuthType Default
 +    Require user @SYSTEM
 +    Order deny,allow
 +  </Limit>
 +
 +  # All printer operations require a printer operator to authenticate...
 +  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
 +    AuthType Default
 +    Require user @SYSTEM
 +    Order deny,allow
 +  </Limit>
 +
 +  # Only the owner or an administrator can cancel or authenticate a job...
 +  <Limit Cancel-Job CUPS-Authenticate-Job>
 +    Require user @OWNER @SYSTEM
 +    Order deny,allow
 +  </Limit>
 +
 +  <Limit All>
 +    Order deny,allow
 +  </Limit>
 +</Policy>
 +
 +# Set the authenticated printer/job policies...
 +<Policy authenticated>
 +  # Job/subscription privacy...
 +  JobPrivateAccess default
 +  JobPrivateValues default
 +  SubscriptionPrivateAccess default
 +  SubscriptionPrivateValues default
 +
 +  # Job-related operations must be done by the owner or an administrator...
 +  <Limit Create-Job Print-Job Print-URI Validate-Job>
 +    AuthType Default
 +    Order deny,allow
 +  </Limit>
 +
 +  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
 +    AuthType Default
 +    Require user @OWNER @SYSTEM
 +    Order deny,allow
 +  </Limit>
 +
 +  # All administration operations require an administrator to authenticate...
 +  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
 +    AuthType Default
 +    Require user @SYSTEM
 +    Order deny,allow
 +  </Limit>
 +
 +  # All printer operations require a printer operator to authenticate...
 +  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
 +    AuthType Default
 +    Require user @SYSTEM
 +    Order deny,allow
 +  </Limit>
 +
 +  # Only the owner or an administrator can cancel or authenticate a job...
 +  <Limit Cancel-Job CUPS-Authenticate-Job>
 +    AuthType Default
 +    Require user @OWNER @SYSTEM
 +    Order deny,allow
 +  </Limit>
 +
 +  <Limit All>
 +    Order deny,allow
 +  </Limit>
 +</Policy>
 +
 +#
 +# End of "$Id: cupsd.conf.in 7888 2008-08-29 21:16:56Z mike $".
 +#
 +</code>
 +
 +====Filtres====
 +
 +Les filtres disponibles au système CUPS se trouvent dans le répertoire **/usr/lib/cups/filter** :
 +
 +<code>
 +[root@centos7 ~]# ls /usr/lib/cups/filter
 +bannertopdf     gstoraster  imagetoraster  rastertodymo            rastertopwg
 +commandtocanon  gziptoany   pdftoijs       rastertoepson           textonly
 +commandtoepson  hpcups      pdftopdf       rastertoescpx           texttopaps
 +commandtoescpx  hpcupsfax   pdftops        rastertogutenprint.5.2  texttopdf
 +commandtopclx   hplipjs     pdftoraster    rastertohp              texttops
 +commandtops     imagetopdf  pstopdf        rastertolabel
 +gstopxl         imagetops   pstops         rastertopclx
 +</code>
 +
 +====Backends====
 +
 +Les Backends disponibles au système CUPS se trouvent dans le répertoire **/usr/lib/cups/backend** :
 +
 +<code>
 +[root@centos7 ~]# ls /usr/lib/cups/backend
 +dnssd     http   ipp   lpd  parallel  snmp    usb
 +failover  https  ipps  ncp  serial    socket
 +</code>
 +
 +La liste des backends reconnus par CUPS peut être obtenue en saisissant la commande suivante :
 +
 +<code>
 +[root@centos7 ~]# lpinfo -v
 +network lpd
 +network http
 +network socket
 +network https
 +network ipp
 +network ipps
 +</code>
 +
 +Il y a un type de backend par liaison locale d'imprimante (usb, série, parallèle). Il peut y avoir aussi un backend par type de protocole réseau :
 +
 +^ Backend ^ Description ^
 +| IPP | Client IPP |
 +| LPD | Client LPD |
 +| SMB | Client SMB |
 +| Socket | Client %%JetDirect%% sur port tcp/9100 |
 +| Pap/cap | Client %%AppleTalk%% |
 +
 +====Journaux====
 +
 +Les journaux de CUPS se trouvent dans **/var/log/cups** :
 +
 +<code>
 +[root@centos7 ~]# ls -l /var/log/cups
 +total 8
 +-rw-------. 1 root lp 1394 Oct 29 10:04 access_log
 +-rw-------. 1 root lp 1740 Oct 26 15:41 access_log-20151026
 +-rw-------. 1 root lp    0 Mar  8  2015 error_log
 +-rw-------. 1 root lp    0 Mar  8  2015 page_log
 +</code>
 +
 +====Imprimantes====
 +
 +La commande suivante liste les imprimantes connues de CUPS :
 +
 +<code>
 +[root@centos7 ~]# lpinfo -m | more
 +drv:///hp/hpijs.drv/apollo-2100-hpijs.ppd Apollo 2100 hpijs, 3.13.7
 +drv:///hp/hpcups.drv/apollo-2100.ppd Apollo 2100, hpcups 3.13.7
 +drv:///hp/hpijs.drv/apollo-2150-hpijs.ppd Apollo 2150 hpijs, 3.13.7
 +drv:///hp/hpcups.drv/apollo-2150.ppd Apollo 2150, hpcups 3.13.7
 +drv:///hp/hpijs.drv/apollo-2200-hpijs.ppd Apollo 2200 hpijs, 3.13.7
 +drv:///hp/hpcups.drv/apollo-2200.ppd Apollo 2200, hpcups 3.13.7
 +drv:///hp/hpijs.drv/apollo-2500-hpijs.ppd Apollo 2500 hpijs, 3.13.7
 +drv:///hp/hpcups.drv/apollo-2500.ppd Apollo 2500, hpcups 3.13.7
 +drv:///hp/hpijs.drv/apollo-2600-hpijs.ppd Apollo 2600 hpijs, 3.13.7
 +drv:///hp/hpcups.drv/apollo-2600.ppd Apollo 2600, hpcups 3.13.7
 +drv:///hp/hpijs.drv/apollo-2650-hpijs.ppd Apollo 2650 hpijs, 3.13.7
 +drv:///hp/hpcups.drv/apollo-2650.ppd Apollo 2650, hpcups 3.13.7
 +gutenprint.5.2://pcl-apollo-p2100/expert Apollo P-2100 - CUPS+Gutenprint v5.2.9
 +gutenprint.5.2://pcl-apollo-p2100/simple Apollo P-2100 - CUPS+Gutenprint v5.2.9 
 +Simplified
 +gutenprint.5.2://pcl-apollo-p2150/expert Apollo P-2150 - CUPS+Gutenprint v5.2.9
 +gutenprint.5.2://pcl-apollo-p2150/simple Apollo P-2150 - CUPS+Gutenprint v5.2.9 
 +Simplified
 +gutenprint.5.2://pcl-apollo-p2200/expert Apollo P-2200 - CUPS+Gutenprint v5.2.9
 +gutenprint.5.2://pcl-apollo-p2200/simple Apollo P-2200 - CUPS+Gutenprint v5.2.9 
 +Simplified
 +gutenprint.5.2://pcl-apollo-p2250/expert Apollo P-2250 - CUPS+Gutenprint v5.2.9
 +gutenprint.5.2://pcl-apollo-p2250/simple Apollo P-2250 - CUPS+Gutenprint v5.2.9 
 +--More--
 +</code>
 +
 +====Administration====
 +
 +Le serveur CUPS est administré en ligne de commande par l'utilisation d'une ou de plusieurs des commandes suivantes :
 +
 +^ Commande ^ Description ^
 +| lpadmin | Principale commande d'administration pour ajouter, supprimer et modifier des files d'attente |
 +| accept | Autorise le dépôt de requêtes dans un spool |
 +| reject | Interdit le dépôt de requêtes dans un spool |
 +| cupsenable | Autorise le traitement des requêtes dans un spool |
 +| cupsdisable | Interdit le traitement des requêtes dans un spool |
 +| lpstat | Liste des travaux en attente |
 +| cancel | Supprime des requêtes |
 +| lpmove | Déplace des travaux en attente d'un spool à un autre |
 +| lpinfo | Affiche la liste des filtres ou backends disponibles |
 +| lppasswd | Gère les comptes et les mots de passe pour l'accès web |
 +
 +===La Commande lpstat===
 +
 +Pour consulter la liste des files d'attente, il convient d'utiliser donc la commande **lpstat** :
 +
 +<code>
 +[root@centos7 ~]# lpstat -t
 +scheduler is running
 +no system default destination
 +lpstat: No destinations added.
 +lpstat: No destinations added.
 +lpstat: No destinations added.
 +lpstat: No destinations added.
 +</code>
 +
 +===La Commande lpadmin===
 +
 +Créez maintenant une file d'attente sans pilote. Les imprimantes sans pilote utilisent le mode **raw** :
 +
 +<code>
 +[root@centos7 ~]# lpadmin -p imp1 -v socket://localhost:12000 -m raw
 +</code>
 +
 +Les options de cette commande sont les suivantes :
 +
 +^ Options ^ Description ^
 +| -p | Le nom de la file |
 +| -v | L'imprimante physique ou réseau sous forme URL |
 +| -m | Le modèle à utiliser (un fichier ayant une extension **ppd** qui identifie l'imprimante) |
 +
 +Les types de URL possible sont :
 +
 +^ URL ^ Description ^
 +| file:/chemin/fichier | Impression dans un fichier |
 +| %%http://serveur:631/ipp/port1%% | Impression via http |
 +| %%lpd://serveur/queue%% | Impression via LPD |
 +| %%ipp://serveur:631/printers/queue%% | Impression via IPP |
 +| %%smb://workgroup/serveur/nompartage%% | Impression via SMB |
 +| %%socket://serveur%% | Impression via %%JetDirect%% |
 +| %%serial:/dev/ttyS0?baud=1200+bits=8+parity=none+flow=none%% | Impression via port série |
 +| %%parallel:/dev/lp0%% | Impression via port parallèle |
 +
 +Vérifiez la création de la file d'attente :
 +
 +<code>
 +[root@centos7 ~]# lpstat -t
 +scheduler is running
 +no system default destination
 +device for imp1: socket://localhost:12000
 +imp1 not accepting requests since Thu 29 Oct 2015 10:06:57 AM CET -
 + reason unknown
 +printer imp1 disabled since Thu 29 Oct 2015 10:06:57 AM CET -
 + reason unknown
 +</code>
 +
 +===Les Commandes accept, cupsenable===
 +
 +Il est maintenant possible d'activer l'imprimante grâce aux commandes **accept** et **cupsenable** :
 +
 +<code>
 +[root@centos7 ~]# accept imp1
 +[root@centos7 ~]# lpstat -t
 +scheduler is running
 +no system default destination
 +device for imp1: socket://localhost:12000
 +imp1 accepting requests since Thu 29 Oct 2015 10:06:57 AM CET
 +printer imp1 disabled since Thu 29 Oct 2015 10:06:57 AM CET -
 + reason unknown
 +[root@centos7 ~]# cupsenable imp1
 +[root@centos7 ~]# lpstat -t
 +scheduler is running
 +no system default destination
 +device for imp1: socket://localhost:12000
 +imp1 accepting requests since Thu 29 Oct 2015 10:08:13 AM CET
 +printer imp1 is idle.  enabled since Thu 29 Oct 2015 10:08:13 AM CET
 +</code>
 +
 +<WRAP center round important 60%>
 +**Important** : Notez que les deux commandes **accept** et **cupsenable** ont leurs opposées : **reject** et **cupsdisable**.
 +</WRAP>
 +
 +Pour nommer une imprimante en tant que la **destination** par défaut, il convient d'utiliser la commande **lpadmin** avec l'option **-d** :
 +
 +<code>
 +[root@centos7 ~]# lpadmin -d imp1
 +[root@centos7 ~]# lpstat -t
 +scheduler is running
 +system default destination: imp1
 +device for imp1: socket://localhost:12000
 +imp1 accepting requests since Thu 29 Oct 2015 10:08:13 AM CET
 +printer imp1 is idle.  enabled since Thu 29 Oct 2015 10:08:13 AM CET
 +</code>
 +
 +Vous allez mainteant créer une fille d'attente pour une imprimante **%%HP Color LaserJet Series PCL 6%%** utilisant le fichier pxlcolor.ppd, appelée **Imprimante1** et étant connectée au port parallèle :
 +
 +<code>
 +[root@centos7 ~]# lpadmin -p Imprimante1 -E -v parallel:/dev/lp0 -m pxlcolor.ppd
 +[root@centos7 ~]# lpstat -t
 +scheduler is running
 +system default destination: imp1
 +device for imp1: socket://localhost:12000
 +device for Imprimante1: parallel:/dev/lp0
 +imp1 accepting requests since Thu 29 Oct 2015 10:08:13 AM CET
 +Imprimante1 accepting requests since Thu 29 Oct 2015 10:09:31 AM CET
 +printer imp1 is idle.  enabled since Thu 29 Oct 2015 10:08:13 AM CET
 +printer Imprimante1 is idle.  enabled since Thu 29 Oct 2015 10:09:31 AM CET
 +</code>
 +
 +<WRAP center round important 60%>
 +**Important** : Notez que l'option **-E** permet de combiner les commandes **accept** et **cupsenable** avec **lpadmin**.
 +</WRAP>
 +
 +Sous RHEL/CentOS la file d'attente physique pour cette imprimante existe déjà :
 +
 +<code>
 +[root@centos7 ~]# ls -l /dev/lp0
 +crw-rw----. 1 root lp 6, 0 Oct 28 09:40 /dev/lp0
 +</code>
 +
 +Testez maintenant votre imprimante fictive :
 +
 +<code>
 +[root@centos7 ~]# echo "Test Printer File" > /tmp/test.print
 +[root@centos7 ~]# lpadmin -d Imprimante1
 +[root@centos7 ~]# lpstat -t
 +scheduler is running
 +system default destination: Imprimante1
 +device for imp1: socket://localhost:12000
 +device for Imprimante1: parallel:/dev/lp0
 +imp1 accepting requests since Thu 29 Oct 2015 10:08:13 AM CET
 +Imprimante1 accepting requests since Thu 29 Oct 2015 10:09:31 AM CET
 +printer imp1 is idle.  enabled since Thu 29 Oct 2015 10:08:13 AM CET
 +printer Imprimante1 is idle.  enabled since Thu 29 Oct 2015 10:09:31 AM CET
 +
 +[root@centos7 ~]# lp /tmp/test.print
 +request id is Imprimante1-1 (1 file(s))
 +</code>
 +
 +<WRAP center round important 60%>
 +**Important** : Notez que l'impression a eu lieu et la requête s'appelle **Imprimante1-1**.
 +</WRAP>
 +
 +Créez maintenant une deuxième file d'attente Imprimante2 et saisissez la commande **lpstat -t**. Vous devez obtenir un résultat similaire à celui-ci :
 +
 +<code>
 +[root@centos7 ~]# lpadmin -p Imprimante2 -E -v parallel:/dev/lp1 -m pxlcolor.ppd
 +[root@centos7 ~]# lpstat -t
 +scheduler is running
 +system default destination: Imprimante1
 +device for imp1: socket://localhost:12000
 +device for Imprimante1: parallel:/dev/lp0
 +device for Imprimante2: parallel:/dev/lp1
 +imp1 accepting requests since Thu 29 Oct 2015 10:08:13 AM CET
 +Imprimante1 accepting requests since Thu 29 Oct 2015 10:15:42 AM CET
 +Imprimante2 accepting requests since Thu 29 Oct 2015 10:29:52 AM CET
 +printer imp1 is idle.  enabled since Thu 29 Oct 2015 10:08:13 AM CET
 +printer Imprimante1 now printing Imprimante1-1.  enabled since Thu 29 Oct 2015 10:15:42 AM CET
 + Printer not connected; will retry in 30 seconds.
 +printer Imprimante2 is idle.  enabled since Thu 29 Oct 2015 10:29:52 AM CET
 +Imprimante1-1           root              1024   Thu 29 Oct 2015 10:15:42 AM CET
 +</code>
 +
 +===Classe d'imprimantes===
 +
 +Une **classe** est un **ensemble ordonné** d'imprimantes. Les requêtes envoyées à la classe sont imprimées sur la première imprimante disponible.
 +
 +Pour créer une classe il convient d'utiliser la commande **lpadmin** avec l'option **-c** suivie par le nom de la classe à créer :
 +
 +<code>
 +[root@centos7 ~]# lpadmin -p Imprimante1 -c classe1
 +[root@centos7 ~]# lpadmin -p Imprimante2 -c classe1
 +</code>
 +
 +Vérifiez la création de la classe :
 +
 +<code>
 +[root@centos7 ~]# lpstat -t
 +scheduler is running
 +system default destination: Imprimante1
 +members of class classe1:
 + Imprimante1
 + Imprimante2
 +device for classe1: ///dev/null
 +device for imp1: socket://localhost:12000
 +device for Imprimante1: parallel:/dev/lp0
 +device for Imprimante2: parallel:/dev/lp1
 +classe1 not accepting requests since Thu 29 Oct 2015 10:30:45 AM CET -
 + reason unknown
 +imp1 accepting requests since Thu 29 Oct 2015 10:08:13 AM CET
 +Imprimante1 accepting requests since Thu 29 Oct 2015 10:15:42 AM CET
 +Imprimante2 accepting requests since Thu 29 Oct 2015 10:29:52 AM CET
 +printer classe1 disabled since Thu 29 Oct 2015 10:30:45 AM CET -
 + reason unknown
 +printer imp1 is idle.  enabled since Thu 29 Oct 2015 10:08:13 AM CET
 +printer Imprimante1 now printing Imprimante1-1.  enabled since Thu 29 Oct 2015 10:15:42 AM CET
 + Printer not connected; will retry in 30 seconds.
 +printer Imprimante2 is idle.  enabled since Thu 29 Oct 2015 10:29:52 AM CET
 +Imprimante1-1           root              1024   Thu 29 Oct 2015 10:15:42 AM CET
 +</code>
 +
 +===Le fichier /etc/cups/printers.conf===
 +
 +La configuration globale des files d'attente se trouve dans le fichier **/etc/cups/printers.conf** :
 +
 +<code>
 +[root@centos7 ~]# cat /etc/cups/printers.conf
 +# Printer configuration file for CUPS v1.6.3
 +# Written by cupsd on 2015-10-29 10:30
 +# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING
 +<Printer imp1>
 +UUID urn:uuid:8de75f5f-0ef2-3bc2-46cd-72696519155a
 +Info imp1
 +DeviceURI socket://localhost:12000
 +State Idle
 +StateTime 1446109693
 +Type 4
 +Accepting Yes
 +Shared Yes
 +JobSheets none none
 +QuotaPeriod 0
 +PageLimit 0
 +KLimit 0
 +OpPolicy default
 +ErrorPolicy stop-printer
 +</Printer>
 +<DefaultPrinter Imprimante1>
 +UUID urn:uuid:07682275-f74a-3fa2-5ad5-4311207ee125
 +Info Imprimante1
 +MakeModel HP Color LaserJet Series PCL 6 CUPS
 +DeviceURI parallel:/dev/lp0
 +State Idle
 +StateTime 1446110142
 +Type 8400972
 +Accepting Yes
 +Shared Yes
 +JobSheets none none
 +QuotaPeriod 0
 +PageLimit 0
 +KLimit 0
 +OpPolicy default
 +ErrorPolicy stop-printer
 +</Printer>
 +<Printer Imprimante2>
 +UUID urn:uuid:1fadf858-f631-3f4b-56d6-9acc408ab75c
 +Info Imprimante2
 +MakeModel HP Color LaserJet Series PCL 6 CUPS
 +DeviceURI parallel:/dev/lp1
 +State Idle
 +StateTime 1446110992
 +Type 8400972
 +Accepting Yes
 +Shared Yes
 +JobSheets none none
 +QuotaPeriod 0
 +PageLimit 0
 +KLimit 0
 +OpPolicy default
 +ErrorPolicy stop-printer
 +</Printer>
 +</code>
 +
 +===Le fichier /etc/cups/classes.conf===
 +
 +La configuration globale des classes se trouve dans le fichier **/etc/cups/classes.conf** : 
 +
 +<code>
 +[root@centos7 ~]# cat /etc/cups/classes.conf
 +# Class configuration file for CUPS v1.6.3
 +# Written by cupsd on 2015-10-29 10:31
 +# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING
 +<Class classe1>
 +UUID urn:uuid:dc222765-63c6-394e-4fb3-d203c1475019
 +Info classe1
 +State Stopped
 +StateTime 1446111045
 +Accepting No
 +Shared Yes
 +JobSheets none none
 +Printer Imprimante1
 +Printer Imprimante2
 +QuotaPeriod 0
 +PageLimit 0
 +KLimit 0
 +OpPolicy default
 +ErrorPolicy retry-current-job
 +</Class>
 +</code>
 +
 +===La Commande cancel===
 +
 +Pour annuler l'impression il convient d'utiliser la commande **cancel**:
 +
 +<code>
 +[root@centos7 ~]# lpstat
 +Imprimante1-1           root              1024   Thu 29 Oct 2015 10:15:42 AM CET
 +[root@centos7 ~]# cancel imprimante1-1
 +[root@centos7 ~]# lpstat
 +[root@centos7 ~]# 
 +</code>
 +
 +===La Commande lpmove===
 +
 +La commande **lpmove** permet de déplacer tous les jobs d'une file à une autre. 
 +
 +Déclarez l'imprimante **imp1** comme étant l'imprimante par défault :
 +
 +<code>
 +[root@centos7 ~]# lpadmin -d imp1
 +</code>
 +
 +Créez ensuite une nouvelle impression :
 +
 +<code>
 +[root@centos7 ~]# lp /tmp/test.print
 +request id is imp1-2 (1 file(s))
 +[root@centos7 ~]# lpstat
 +imp1-2                  root              1024   Thu 29 Oct 2015 10:37:41 AM CET
 +</code>
 +
 +Déplacer ce job vers la classe1 :
 +
 +<code>
 +[root@centos7 ~]# lpmove imp1 classe1
 +[root@centos7 ~]# lpstat
 +classe1-2               root              1024   Thu 29 Oct 2015 10:37:41 AM CET
 +</code>
 +
 +Pour retirer une file d'une classe, il convient d'utiliser la commande lpadmin :
 +
 +<code>
 +[root@centos7 ~]# lpadmin -p Imprimante1 -r classe1
 +[root@centos7 ~]# lpadmin -p Imprimante2 -r classe1
 +[root@centos7 ~]# lpstat -t
 +scheduler is running
 +system default destination: imp1
 +device for imp1: socket://localhost:12000
 +device for Imprimante1: parallel:/dev/lp0
 +device for Imprimante2: parallel:/dev/lp1
 +imp1 accepting requests since Thu 29 Oct 2015 10:38:22 AM CET
 +Imprimante1 accepting requests since Thu 29 Oct 2015 10:36:49 AM CET
 +Imprimante2 accepting requests since Thu 29 Oct 2015 10:29:52 AM CET
 +printer imp1 is idle.  enabled since Thu 29 Oct 2015 10:38:22 AM CET
 + The printer is not responding.
 +printer Imprimante1 is idle.  enabled since Thu 29 Oct 2015 10:36:49 AM CET
 + Printer not connected; will retry in 30 seconds.
 +printer Imprimante2 is idle.  enabled since Thu 29 Oct 2015 10:29:52 AM CET
 +</code>
 +
 +<WRAP center round important 60%>
 +**Important** : Notez que la classe est **automatiquement supprimée** quand elle est vide.
 +</WRAP>
 +
 +Pour supprimer les files créées il convient de nouveau à utiliser la commande lpadmin :
 +
 +<code>
 +[root@centos7 ~]# lpadmin -x Imprimante1
 +[root@centos7 ~]# lpadmin -x Imprimante2
 +[root@centos7 ~]# lpadmin -x imp1
 +[root@centos7 ~]# lpstat -t
 +scheduler is running
 +no system default destination
 +lpstat: No destinations added.
 +lpstat: No destinations added.
 +lpstat: No destinations added.
 +lpstat: No destinations added.
 +</code>
 +
 +====L'interface Web====
 +
 +CUPS peut également être administré en utilisant l'interface Web sur le port 631/tcp. L'interface de votre machine virtuelle est disponible à partir de votre machine hôte via une redirection de ports à l'adresse **http://localhost:631**. Afin que vous puissiez vous y connecter à partir d'une autre machine, éditez votre fichier **/etc/cups/cupsd.conf** :
 +
 +<file>
 +Listen 0.0.0.0:631
 +...
 +<Location />
 +    Order allow,deny
 +    Allow from 10.0.2.*
 +</Location>
 + ...
 +</file>
 +
 +Sauvegardez et quittez votre fichier puis redémarrez le service **cups**:
 +
 +<code>
 +[root@centos7 ~]# systemctl restart cups
 +</code>
 +
 +Dans Guacamole, ouvrez la machine Gateway_10.0.2.40_VNC. Connectez-vous avec l'utilisateur **trainee** et le mot de passe fourni par votre formateur.
 +
 +Lancez le Navigateur Firefox et saisissez l'adresse: http://10.0.2.51:631. Re-créez les mêmes imprimantes et la même classe.
 +
 +-----
  
 +Copyright © 2024 Hugh Norris.
Menu