Назад | Перейти на главную страницу

Как изменить HOSTNAME на сервере Ubuntu?

Я пытаюсь изменить имя хоста на моем общем сервере с помощью Slicehost, чтобы я мог настроить Postfix как нулевой клиент.

Я редактировал / etc / hosts
и после перезагрузки имя хоста все еще неверное.
Что я делаю не так?

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

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

username@mail Fri Jul 01 13:02:13 ~   
$ hostname -f  
pop.where.secureserver.net  

Я также собираюсь добавить к этому серверу еще один домен, как мне это правильно настроить.

Попробуйте установить вторую строку в hosts на 208.78.100.198 mail.domain1.com mail. Кроме того, перезагрузка не требуется: полное доменное имя нигде не хранится, его ищут на лету.

Я считаю, что полное доменное имя можно найти, выполнив DNS-запрос на IP-адрес сервера, а затем получив первый ответ, поэтому это работает. Должна быть возможность установить полное доменное имя без изменения хостов, используя только DNS (или NIS, или LDAP, или что-то еще. nsswitch.conf ищет хосты), но если он находится в файле hosts, нет необходимости в сетевом трафике, который может истечь по таймауту или иным образом вызвать проблемы в чрезвычайной ситуации.

Больше информации Вот все, что происходит (это только для Linux, другие ОС могут и будут делать что-то несколько иначе):

hostname использует gethostname(2) функция, указанная в unistd.h чтобы получить имя хоста. Эта функция реализована как вызов uname(2), где nodename поле структуры извлекается и возвращается. Это будет установлено ранее в процессе загрузки с соответствующим sethostname(2) вызов, поскольку у ядра нет другого способа узнать имя хоста. В вашем случае это будет mail. (Кстати, это то, что вам нужно в /etc/hostname).

Затем это решается с помощью стандартного системного преобразователя, который будет либо getaddrinfo(3) или gethostbyname(3) в зависимости от года выпуска ваших системных утилит. Поле h_name, определенное как "официальное имя хоста", возвращается. Я считаю, что это соответствует первому имени, указанному в файле hosts.

Что касается вашего вопроса о нескольких доменах, hostname не может правильно работать с несколькими именами. Каждый интерфейс (даже виртуальный) может иметь свой собственный IP-адрес, а иногда даже несколько физических интерфейсов могут иметь общий IP-адрес.

Вы должны убедиться, что каждый IP-адрес, подключенный к вашему хосту, разрешается через обратный поиск IP в соответствующее имя и правильно настроить ваш почтовый сервер.