Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm attempting to change the hostname on my shared server with Slicehost so I can setup Postfix as a null client.

I edited /etc/hosts
and after reboot, the hostname is still incorrect.
What am I doing wrong?

username@mail Fri Jul 01 13:01:32 ~   
$ sudo cat /etc/hostname  

username@mail Fri Jul 01 13:01:45 ~   
$ cat /etc/hosts     localhost localhost.localdomain   

username@mail Fri Jul 01 13:02:13 ~   
$ hostname -f  

I also intend to add another domain to this server, how do I configure this correctly.

share|improve this question
up vote 1 down vote accepted

Try setting the second line in hosts to mail. Also, rebooting is not necessary: the FQDN isn't stored anywhere, it's looked up on-the-fly.

I believe that the FQDN is found by doing a DNS query on the server's IP address, then taking the first response, which is why this works. It should be possible to set the FQDN without modifying hosts by using only DNS (or NIS, or LDAP, or wherever else nsswitch.conf looks for hosts) but if it's in the hosts file there's no need for network traffic that might time out or otherwise cause problems in an emergency.

More information Here's everything that happens (this is Linux-only, other OSes may and will do things somewhat differently):

hostname uses the gethostname(2) function specified in unistd.h to obtain the hostname. This function is implemented as a call to uname(2), where the nodename field of the structure is extracted and returned. This will have been set earlier in the boot process with the corresponding sethostname(2) call, since the kernel has no other way of knowing the host's name. In your case, it will be mail. (By the way, this is what you should have in /etc/hostname).

This is then resolved using the standard system resolver, which will be either getaddrinfo(3) or gethostbyname(3) depending upon the vintage of your system utils. The field h_name, defined as "official name of host", gets returned. I believe this corresponds to the first name listed in a hosts file.

As for your multiple domains question, hostname is not able to deal properly with multiple names. Every interface (even virtual ones) can have its own IP and sometimes even multiple physical interfaces can share an IP.

You should ensure that each IP attached to your host resolves via reverse-IP lookups to the appropriate name and configure your mail server properly.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.