
Ich richte einen Postfix-Mailserver mit dem Hostnamen „letters“ ein, um E-Mails für die Domäne „example.net“ zu verarbeiten. Ich habe versucht, den Domänennamen von letters mithilfe von nis auf example.net festzulegen, aber ich erhalte inkonsistente Ausgaben von hostname -f („letters.stuff.comcast.net“) und domainname („example.net“). Wie lege ich den Domänennamen fest, damit der Befehl hostname -f „example.net“ meldet? Wie wichtig ist dies für die ordnungsgemäße Funktion von Postfix?
Der Host letters läuft unter Ubuntu und stellt über einen OpenWRT-Router per Kabelmodem eine Verbindung zum Internet mit Comcast her. Der Nameserver für die Domäne example.net befindet sich auf einem Remote-Debian-Computer, der noch nicht so konfiguriert wurde, dass ein Host oder Alias für letters erstellt werden kann.
Ich nehme an, dass der Domänenname in der Hostnamenausgabe den Domänennamen widerspiegelt, den der DHCP-Client der Box vom Comcast-Server erhalten hat, und die Idee widerspiegelt, dass die Box ein Client in diesem Netzwerk ist. Besteht die Lösung darin, den Host „letters“ auf dem Nameserver für example.net zu erstellen? Ist das außerdem erforderlich, diesen Nameserver zu den in der resolv.conf-Datei von letters aufgeführten Nameservern hinzuzufügen?
Antwort1
Stellen Sie sicher, dass Ihre /etc/hosts
(oder NIS-)Einträge korrekt sind.
Ich wollte versuchen, es zu erklären, aber die Manpage erzählt die Geschichte besser:
THE FQDN
You can't change the FQDN (as returned by hostname --fqdn) or the DNS
domain name (as returned by dnsdomainname) with this command. The FQDN
of the system is the name that the resolver(3) returns for the host
name.
[..]
Therefore it depends on the configuration (usually in /etc/host.conf)
how you can change it. Usually (if the hosts file is parsed before DNS
or NIS) you can change it in /etc/hosts.
Antwort2
Ich bin gestern auf dieses Problem gestoßen, als ich an einer Serveraktualisierung gearbeitet habe, die jemand anderes gestartet hatte ... Die Ausgabe von „hostname -f“ hatte nie die richtige Enddomäne (fehlendes .org).
# hostname foobar.example.org
# hostname -f
foobar.example
#
# cat /etc/hosts
10.20.11.244 foobar.example foobar
Die Lösung:
Der Domänenteil von hostname -f scheint aus einem /etc/hosts-Eintrag für diesen Host zu stammen. Nachdem ich den Hostnamen in /etc/hosts korrigiert hatte, gab hostname -f die richtige Domäne zurück:
# hostname foobar
# hostname
foobar
# hostname -f
foobar.example.org
Ihre Anfrage kann abweichen.
Antwort3
Wenn Ihre IP nicht statisch ist, /etc/hosts
funktioniert das bei Ihnen nicht (oder nur vorübergehend, bis Sie eine neue IP erhalten). Ich bin nicht sicher, ob das funktioniert, aber hier ist etwas, das Sie versuchen können:
- Konfigurieren Sie Ihren DHCP-Client so, dass er den Domänennamen nicht vom DHCP-Server anfordert. Oder sagen Sie ihm einfach, dass er resolv.conf überhaupt nicht berühren soll, was Sie möglicherweise bereits getan haben, wenn Sie benutzerdefinierte Nameserver haben.
- Legen Sie Ihren Domänennamen auf example.net fest in
/etc/resolv.conf
- Stellen Sie sicher, dass Ihr Nameserver auflösen kann
letters.example.net
. Ich nehme an, Sie müssen eine Art dynamischen DNS-Dienst verwenden, da diese Lösung für nicht statische IPs gedacht ist.
Das könnte bedeuten, dass meine Antwort auf Ihre Frage einfach „Ja“ ist.
Antwort4
Dies ist ein häufig missverstandenes Problem mit „Domainname“. Hier ist der Anfang der Manpage auf meinem Mac OS X-System, aber Ihres wird ähnlich sein:
DOMAINNAME(1) BSD General Commands Manual DOMAINNAME(1)
NAME
domainname -- set or print the name of the current NIS domain
Dieser Befehl wird nicht für die DNS-Konfiguration verwendet!