« LINUX:Postfix-Configuration des serveurs de messagerie latérale » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 114 : | Ligne 114 : | ||
#smtp inet n - n - - smtpd | #smtp inet n - n - - smtpd | ||
---- | ---- | ||
La réception de messages venant du réseau | La réception de messages venant du réseau est refusée et donc impossible. Le port SMTP (25) ne se retrouve pas dans la liste des ports en écoute, au contraire du maître. | ||
La commande: | La commande: | ||
netstat -ntpl | grep master | netstat -ntpl | grep master | ||
Ligne 120 : | Ligne 120 : | ||
On remarque plus bas la ligne désactivée mise en commentaire. | On remarque plus bas la ligne désactivée mise en commentaire comme dans le cas du serveur maître. | ||
---- | ---- | ||
#virtual unix - n n - - virtual | #virtual unix - n n - - virtual | ||
Ligne 129 : | Ligne 129 : | ||
Un message est soit destiné à une adresse mail résidant sur la même machine sinon il doit être transféré à une autre machine. | |||
Notons que les messages délivrés localement, par défaut, utilisent la méthode de stockage "Mbox". Chaque utilisateur a un fichier à son nom dans le répertoire "/var/spool/mail" ou "/var/mail" (identiques par un lien symbolique). A la fin de cette configuration, ces fichiers resteront vide. | |||
Les trois lignes suivantes permettent le transfert de messages vers un autre serveur de messagerie selon deux méthodes différentes: '''smtp''' direct et smtp '''relay''' (remarque: la troisième ligne défini une option ("-o") pour la méthode "relay"). Une seule méthode est nécessaire mais chacune a besoin d'une configuration spécifique. | |||
---- | ---- | ||
smtp unix - - n - - smtp | |||
relay unix - - n - - smtp | |||
-o syslog_name=postfix/$service_name | |||
---- | |||
==Transfert direct== | |||
Le transfert direct n'est possible que si la machine qui héberge le domaine destinataire du message à envoyer est connu. | |||
Par exemple, dans notre cas, si on veut envoyer un message à l'adresse "adebast@srvermail.home.dom", il faut connaitre le nom de la machine qui héberge le domaine "servermail.home.dom"; comme ce domaine correspond au nom de la machine, il faut connaître l'adresse IP de cette machine A: 192.169.1.110. | |||
Soit si on a un serveur DNS privé, interne auquel on se réfère et correctement configuré, il n'y a pas de problème. | |||
Mais en général ce n'est pas le cas; il faut donc utiliser une autre approche de base. Il faut ajouter cette correspondance dans le fichier "/etc/hosts": | |||
---- | |||
192.168.1.110 servermail.home.dom | |||
---- | |||
On ajoute le couple "Adresse IP" et "Nom de machine" sur une ligne. | |||
Dans notre fichier "/etc/postfix/master.cf", seule la première ligne est nécessaire dans les trois: | |||
---- | |||
smtp unix - - n - - smtp | |||
#relay unix - - n - - smtp | #relay unix - - n - - smtp | ||
# -o syslog_name=postfix/$service_name | # -o syslog_name=postfix/$service_name | ||
---- | ---- | ||
Les deux suivantes peuvent être éliminées. | |||
==Transfert par RELAY== | |||
Si la machine locale ne sait pas à qui transmettre le message, il délègue le travail à une machine plus capable que lui. C'est la fonction RELAY. | |||
Dans ce cas, on ne touche pas au fichier "/etc/hosts". | |||
Par contre, on ajoute une ligne dans le fichier "/etc/postfix/main.cf" qui reprend l'adresse IP de cette machine qui assure le RELAY: | |||
---- | |||
relayhost = [192.168.1.110] | |||
---- | |||
Dans notre exemple, c'est la machine A qui assure cette fonction. | |||
Par défaut le port de transfert est 25 (smtp); La machine RELAY doit, elle, écouter sur ce port (processus 'smtpd"). | |||
On aurait pu mettre le nom de la machine A mais alors il aurait fallu ajouter la ligne de la méthode précédente dans le fichier "/etc/hosts". Mais alors la méthode de transfert direct aurait prévalu et la méthode RELAY n'aurait pas été utilisée. | |||
Dans notre fichier "/etc/postfix/master.cf", les trois lignes sont alors nécessaires: | |||
---- | |||
smtp unix - - n - - smtp | |||
relay unix - - n - - smtp | |||
-o syslog_name=postfix/$service_name | |||
---- | |||
Version du 2 mai 2022 à 15:56
→ Postfix et Dovecot-Configuration de gestion
But
Cet article traite de la configuration des autres serveurs de messagerie Postfix qui vont envoyer leurs messages au serveur central. Dans le schéma, c'est ma machine B (ou C et suivantes) qui est concernée.
Rappelons que le but est de transférer les messages de gestion locaux sur la machine maître (A). Il n'a pas pour objectif d'envoyer des messages vers un autre prestataire d'Internet ni entre utilisateurs de notre famille ou entreprise. On n'accepte que les messages de la machine; donc le serveur SMTP n'est pas actif (port 25). De même comme nous travaillons en interne, en vase clos et pas soucis de simplification, nous n'utiliserons pas de cryptage.
Fichiers de configuration
Comme vu précédemment, les fichiers de configuration de Postfix se trouvent dans le répertoire "/etc/postfix". Nous n'utiliserons que des trois fichiers strictement nécessaires:
- main.cf : contenant les paramètres généraux de Postfix
- master.cf : contenant la liste des programmes intervenant dans le fonctionnement de Postfix
Le fichier "/etc/aliases" qui intervient dans "main.cf", sera traité en fin d'article.
Leur configuration est fort similaire à celle du maître.
Configuration du fichier "main.cf"
Après nettoyage du fichier "/etc/postfix/main.cf", on garde la partie suivante:
compatibility_level = 3.6 queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix mail_owner = postfix 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 meta_directory = /etc/postfix shlib_directory = /usr/lib64/postfix
Les lignes suivantes peuvent être désactivées car inutiles ou non nécessaires car liées au cryptage.
#manpage_directory = /usr/share/man #sample_directory = /usr/share/doc/postfix/samples #readme_directory = /usr/share/doc/postfix/README_FILES #smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem #smtpd_tls_key_file = /etc/pki/tls/private/postfix.key #smtpd_tls_security_level = may #smtp_tls_CApath = /etc/pki/tls/certs #smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt #smtp_tls_security_level = may
On les met en commentaire ou plus simplement, on les éliminent.
Les lignes suivante sont modifiées ou ajoutées. La première est nécessaire.
inet_interfaces = all mynetworks_style = host inet_protocols = ipv4
Explications:
- inet_interfaces : permet d'accepter les messages venant de tous les interfaces réseaux alors que la configuration de base n'acceptait que ceux de la machine locale.
- mynetworks_style : permet de n'accepter pour un transfert vers un autre serveur de messagerie que les message de la machine locale. Cette option est optionnelle.
- inet_protocols : est aussi optionnel. Elle permet de se limiter à IPV4.
Configuration du fichier "master.cf"
Après un léger nettoyage, nous obtenons le contenu suivant:
# ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (no) (never) (100) # ========================================================================== #smtp inet n - n - - smtpd pickup unix n - n 60 1 pickup cleanup unix n - n - 0 cleanup qmgr unix n - n 300 1 qmgr tlsmgr unix - - n 1000? 1 tlsmgr rewrite unix - - n - - trivial-rewrite bounce unix - - n - 0 bounce defer unix - - n - 0 bounce trace unix - - n - 0 bounce verify unix - - n - 1 verify flush unix n - n 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - n - - smtp relay unix - - n - - smtp -o syslog_name=postfix/$service_name showq unix n - n - - showq error unix - - n - - error retry unix - - n - - error discard unix - - n - - discard local unix - n n - - local #virtual unix - n n - - virtual lmtp unix - - n - - lmtp anvil unix - - n - 1 anvil scache unix - - n - 1 scache postlog unix-dgram n - n - 1 postlogd
La première ligne n'est pas active:
#smtp inet n - n - - smtpd
La réception de messages venant du réseau est refusée et donc impossible. Le port SMTP (25) ne se retrouve pas dans la liste des ports en écoute, au contraire du maître. La commande:
netstat -ntpl | grep master
ne donnera rien.
On remarque plus bas la ligne désactivée mise en commentaire comme dans le cas du serveur maître.
#virtual unix - n n - - virtual
Elle est inutile car on n'héberge pas de domaines virtuels, seul le domaine correspondant au nom de la machine est actif.
Ces deux lignes peuvent être effacées.
Un message est soit destiné à une adresse mail résidant sur la même machine sinon il doit être transféré à une autre machine.
Notons que les messages délivrés localement, par défaut, utilisent la méthode de stockage "Mbox". Chaque utilisateur a un fichier à son nom dans le répertoire "/var/spool/mail" ou "/var/mail" (identiques par un lien symbolique). A la fin de cette configuration, ces fichiers resteront vide.
Les trois lignes suivantes permettent le transfert de messages vers un autre serveur de messagerie selon deux méthodes différentes: smtp direct et smtp relay (remarque: la troisième ligne défini une option ("-o") pour la méthode "relay"). Une seule méthode est nécessaire mais chacune a besoin d'une configuration spécifique.
smtp unix - - n - - smtp relay unix - - n - - smtp -o syslog_name=postfix/$service_name
Transfert direct
Le transfert direct n'est possible que si la machine qui héberge le domaine destinataire du message à envoyer est connu. Par exemple, dans notre cas, si on veut envoyer un message à l'adresse "adebast@srvermail.home.dom", il faut connaitre le nom de la machine qui héberge le domaine "servermail.home.dom"; comme ce domaine correspond au nom de la machine, il faut connaître l'adresse IP de cette machine A: 192.169.1.110.
Soit si on a un serveur DNS privé, interne auquel on se réfère et correctement configuré, il n'y a pas de problème.
Mais en général ce n'est pas le cas; il faut donc utiliser une autre approche de base. Il faut ajouter cette correspondance dans le fichier "/etc/hosts":
192.168.1.110 servermail.home.dom
On ajoute le couple "Adresse IP" et "Nom de machine" sur une ligne.
Dans notre fichier "/etc/postfix/master.cf", seule la première ligne est nécessaire dans les trois:
smtp unix - - n - - smtp #relay unix - - n - - smtp # -o syslog_name=postfix/$service_name
Les deux suivantes peuvent être éliminées.
Transfert par RELAY
Si la machine locale ne sait pas à qui transmettre le message, il délègue le travail à une machine plus capable que lui. C'est la fonction RELAY.
Dans ce cas, on ne touche pas au fichier "/etc/hosts".
Par contre, on ajoute une ligne dans le fichier "/etc/postfix/main.cf" qui reprend l'adresse IP de cette machine qui assure le RELAY:
relayhost = [192.168.1.110]
Dans notre exemple, c'est la machine A qui assure cette fonction.
Par défaut le port de transfert est 25 (smtp); La machine RELAY doit, elle, écouter sur ce port (processus 'smtpd"). On aurait pu mettre le nom de la machine A mais alors il aurait fallu ajouter la ligne de la méthode précédente dans le fichier "/etc/hosts". Mais alors la méthode de transfert direct aurait prévalu et la méthode RELAY n'aurait pas été utilisée.
Dans notre fichier "/etc/postfix/master.cf", les trois lignes sont alors nécessaires:
smtp unix - - n - - smtp relay unix - - n - - smtp -o syslog_name=postfix/$service_name
→ Postfix et Dovecot-Configuration de gestion