¿Por qué se introdujo .localdomain en Postfix?

Al enviar un correo electrónico en mi máquina local ( echo foo | sendmail $USER), el correo electrónico contiene From: (my-user-name)@(my-machine-name).localdomain.

De acuerdo con mis herramientas de línea de comandos, mi host no parece tener una extensión de dominio local agregada a ninguno de los diversos nombres de host que permite macOS .

$ 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

Mi investigación muestra .localdomainque proviene de una actualización de Postfix . Sin embargo, el registro de Git solo contiene mensajes genéricos, y no pude deducir del HISTORYarchivo por qué se agregó.

  1. ¿Quién ha presentado .localdomainy por qué?
  2. ¿Para qué usos específicos es aplicable, si corresponde? (por ejemplo, ¿debería usarse el correo electrónico Message-ID?)
En la configuración predeterminada, ejecutar hostnamees equivalente a ejecutar hostname -fqué imprime machine_name.local. Compruebe si hay algún alias definido hostnameal ejecutar alias hostname.
Gracias por editar esto. ¿Cuál es el objetivo final aquí? ¿Por qué no configurar su sendmail para colocar un nombre de dominio completo adecuado independientemente del nombre de host local?
@bmike: es para generar encabezados de correo electrónico, como Message-IDcuando se envía un correo electrónico desde localhost. ¿Deberían tener @localhosto @localhost.localdomain? No es que importe mucho, solo me dio curiosidad y quería seguir las convenciones.
Perfecto: espero que mis ediciones permitan que la pregunta exista claramente al final de la "configuración"

Respuestas (1)

No hay ningún cliente de correo electrónico en su ejemplo (además posiblemente del echo); sendmailes parte del Agente de transporte de correo que, en las versiones actuales de macOS, es Postfix de forma predeterminada. Postfix establecerá el dominio desde el archivo de configuración o, en su defecto, algún valor interno o búsqueda de llamadas del sistema:

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

Esto muestra que (al menos en mi sistema) el mydomainvalor es localdomainy que ese valor no está establecido en /etc/postfix/main.cf. Por lo tanto, debe provenir de un valor interno oa través de alguna llamada al sistema. (Puede configurarlo en algo apropiado en main.cf; muchos agentes de transporte de correo rechazarán el correo de dichos dominios locales porque los spammers, o calificarán el mensaje como más probable que sea spam. Esto puede no ser un problema si el correo electrónico nunca llegará a Internet). .)

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

Muestra que postfixpodría estar usando localdomaincomo un valor interno, ya que esa cadena aparece en el binario. Esto es probable dado que gethostbyname(3)devuelve algo que no está localdomainen mi sistema (probablemente no lo tenga cfu, pero hay muchas formas de ejecutar llamadas arbitrarias al sistema). Si uno descarga el código fuente de Postfix , de hecho hay varias referencias a 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");
...

Por lo tanto, es muy probable que Postfix establezca este valor internamente y, si es necesario, debe ajustarse editando la configuración.

Muy buena respuesta, hasta las cadenas codificadas :) postconfme da lo mismo que tú. Sin embargo, esto no explica su origen raíz. Incluso una búsqueda solo da pistas esporádicas: google.com/search?q="localdomain ". Recuerdo que el correo local tenía solo @localhost antes, por lo que supuestamente se agregó en alguna actualización de macOS. El motivo de la convención aún no está claro. Si alguien puede arrojar una luz sobre esto, sería apreciado.
Google cree que soy un robot, así que no sé qué muestra esa búsqueda. solo hay dos referencias localdomainen el RFC (6108 y 7123) ninguna particularmente reveladora más allá de que existe. Supongo que si hay un repositorio de código fuente de postfix, podría git bisectver cuándo se agregaron esas cadenas y por qué.