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 .localdomain
que proviene de una actualización de Postfix . Sin embargo, el registro de Git solo contiene mensajes genéricos, y no pude deducir del HISTORY
archivo por qué se agregó.
.localdomain
y por qué?Message-ID
?)No hay ningún cliente de correo electrónico en su ejemplo (además posiblemente del echo
); sendmail
es 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 mydomain
valor es localdomain
y 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 postfix
podría estar usando localdomain
como un valor interno, ya que esa cadena aparece en el binario. Esto es probable dado que gethostbyname(3)
devuelve algo que no está localdomain
en 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.
postconf
me 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.localdomain
en 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 bisect
ver cuándo se agregaron esas cadenas y por qué.
Alano
Nimesh Neema
hostname
es equivalente a ejecutarhostname -f
qué imprimemachine_name.local
. Compruebe si hay algún alias definidohostname
al ejecutaralias hostname
.bmike
adelante
Message-ID
cuando se envía un correo electrónico desde localhost. ¿Deberían tener@localhost
o@localhost.localdomain
? No es que importe mucho, solo me dio curiosidad y quería seguir las convenciones.bmike