2 votes

Pourquoi le nom de domaine local a-t-il été introduit dans Postfix ?

Lorsque j'envoie un courriel sur ma machine locale ( echo foo | sendmail $USER ), l'e-mail contient From: (my-user-name)@(my-machine-name).localdomain .

Selon mes outils de ligne de commande, mon hôte ne semble pas avoir une extension de domaine local ajoutée à n'importe lequel des différents noms d'hôtes que MacOS autorise .

$ grep localdomain /etc/hosts
$ grep localdomain /Library/Preferences/SystemConfiguration/preferences.plist
$ scutil --get ComputerName
(my-machine-name)
$ scutil --get HostName
(my-machine-name)
$ scutil --get LocalHostName
(my-machine-name)
$ hostname -f
(my-machine-name)
$ alias hostname
-bash: alias: hostname: not found

Mes recherches montrent .localdomain provient d'un Mise à jour de Postfix . Cependant, le journal de Git ne contient que des messages génériques, et je n'ai pas pu trouver dans le journal de Git les informations suivantes HISTORY pourquoi il a été ajouté.

  1. Qui a introduit .localdomain et pourquoi ?
  2. Pour quelles utilisations spécifiques est-il applicable, le cas échéant ? (par exemple, faut-il utiliser le courrier électronique Message-ID ?)

5voto

thrig Points 777

Il n'y a pas de client de messagerie dans votre exemple (à part peut-être le echo ) ; sendmail fait partie de l'agent de transport de courrier qui, sur les versions actuelles de MacOS, est par défaut Postfix. Postfix définira le domaine soit à partir du fichier de configuration, soit, à défaut, à partir d'une valeur interne ou d'un appel système :

$ postconf | grep localdomain
mydomain = localdomain
$ postconf -n | grep "^mydomain"
$ 

Cela montre que (au moins sur mon système) l'option mydomain valeur est localdomain et que cette valeur n'est pas définie dans /etc/postfix/main.cf . Elle doit donc provenir d'une valeur interne ou d'un appel système. (Vous pourriez lui donner une valeur appropriée dans main.cf De nombreux agents de transport de courrier rejetteront le courrier provenant de ces domaines locaux parce qu'il s'agit de spammeurs, ou considéreront que le message est plus susceptible d'être du spam. Cela peut ne pas être un problème si le courrier électronique n'atteindra jamais l'Internet).

$ strings /usr/sbin/postfix | grep localdomain
localdomain
$ cfu 'char buf[254]; gethostname(buf,254); printf("%s\n",buf)'
glide.local
$ 

Montre que postfix pourrait utiliser localdomain comme une valeur interne, comme cette chaîne apparaît dans le binaire. Ceci est probable étant donné que gethostbyname(3) retourne quelque chose qui n'est pas localdomain sur mon système (vous n'avez probablement pas de cfu mais il existe de nombreuses façons d'exécuter des appels système arbitraires). Si l'on télécharge le code source de Postfix il y a en effet plusieurs références à localdomain :

$ find . -name "*.c" -exec fgrep localdomain {} +
./src/global/mail_addr_find.c:    UPDATE(var_mydomain, "localdomain");
./src/global/mail_addr_find.c:    UPDATE(var_myorigin, "localdomain");
./src/global/mail_addr_find.c:    UPDATE(var_mydest, "localhost.localdomain");
./src/smtp/smtp_map11.c:    UPDATE(var_myhostname, "localhost.localdomain");
./src/smtp/smtp_map11.c:    UPDATE(var_mydomain, "localdomain");
...

Il est donc très probable que cette valeur soit définie en interne par Postfix, et si nécessaire, elle doit être ajustée en modifiant la configuration.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X