Beim Senden von E-Mails auf meinem lokalen Computer ( echo foo | sendmail $USER
) enthält die E-Mail From: (my-user-name)@(my-machine-name).localdomain
.
Laut meinen Befehlszeilentools scheint mein Host keine lokale Domänenerweiterung zu einem der verschiedenen Hostnamen hinzugefügt zu haben, die macOS zulässt .
$ 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
Meine Recherchen ergeben .localdomain
sich aus einem Postfix-Update . Das Git-Protokoll enthält jedoch nur allgemeine Nachrichten, und ich konnte der Datei nicht entnehmen, HISTORY
warum es hinzugefügt wurde.
.localdomain
und warum?Message-ID
?)In Ihrem Beispiel gibt es keinen E-Mail-Client (außer möglicherweise dem echo
); sendmail
ist Teil des Mail Transport Agents, der auf aktuellen Versionen von macOS standardmäßig Postfix ist. Postfix legt die Domäne entweder aus der Konfigurationsdatei fest oder schlägt fehl, dass ein interner Wert oder ein Systemaufruf nachgeschlagen wird:
$ postconf | grep localdomain
mydomain = localdomain
$ postconf -n | grep "^mydomain"
$
Dies zeigt, dass (zumindest auf meinem System) der mydomain
Wert ist localdomain
und dass dieser Wert nicht in gesetzt ist /etc/postfix/main.cf
. Es muss also stattdessen von einem internen Wert oder über einen Systemaufruf kommen. (Sie könnten es auf etwas Passendes setzen in main.cf
; viele Mail Transport Agents lehnen E-Mails von solchen lokalen Domänen wegen Spammer ab oder bewerten die Nachricht auf andere Weise als Spam. Dies ist möglicherweise kein Problem, wenn die E-Mail niemals das Internet erreicht .)
$ strings /usr/sbin/postfix | grep localdomain
localdomain
$ cfu 'char buf[254]; gethostname(buf,254); printf("%s\n",buf)'
glide.local
$
Zeigt, dass dies als interner Wert postfix
verwendet werden könnte , da diese Zeichenfolge in der Binärdatei erscheint. localdomain
Dies liegt wahrscheinlich daran, dass gethostbyname(3)
etwas zurückgegeben wird, das sich nicht localdomain
auf meinem System befindet (Sie haben es wahrscheinlich nicht, cfu
aber es gibt viele Möglichkeiten, beliebige Systemaufrufe auszuführen). Wenn man den Quellcode für Postfix herunterlädt , gibt es tatsächlich diverse Verweise auf 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");
...
Dieser Wert wird also sehr wahrscheinlich intern von Postfix gesetzt und sollte ggf. durch Editieren der Konfiguration angepasst werden.
postconf
gibt mir das gleiche wie du. Dies erklärt jedoch nicht den Ursprung der Wurzel. Auch eine Suche gibt nur sporadisch Hinweise: google.com/search?q="localdomain ". Ich erinnere mich, dass lokale Mail vorher nur @localhost hatte, also wurde sie angeblich in einem macOS-Update hinzugefügt. Der Grund für die Konvention ist noch etwas unklar. Wenn jemand ein Licht auf dieses werfen kann, würde es geschätzt werden.localdomain
im RFC (6108 und 7123), die darüber hinaus nicht besonders aufschlussreich sind. Ich denke, wenn es ein Postfix-Quellcode-Repo gibt, könnten Sie git bisect
sehen, wann diese Zeichenfolgen hinzugefügt wurden und warum?
Allan
Nimesh Neema
hostname
entspricht das Ausführen dem Ausführenhostname -f
von which printsmachine_name.local
. Suchen Sie nach Aliasnamen, die auf definiert sind,hostname
indem Sie ausführenalias hostname
.Fahrrad
herrin
Message-ID
beim Senden von E-Mails von localhost. Sollten diese haben@localhost
oder@localhost.localdomain
? Nicht, dass es wichtig wäre, ich wurde nur irgendwie neugierig und wollte mich an Konventionen halten.Fahrrad