Mac отказывается менять имя хоста

Я пытался понять, как использовать postfix на моем Mac, и что-то пошло не так, и я не могу это исправить.

Я считаю, что проблема связана с запуском Postfix.

По сути, Mac, похоже, отказывается менять свое имя хоста. В bash пользователь отображается как "admin@(null)", если я наберу "hostname", то мне также будет дано "(null)".

Изменение имени хоста в разделе "Общий доступ из системных настроек" приводит к изменению второго примера (где говорится, например, "Другие пользователи могут получить доступ к общим папкам на этом компьютере и администраторы всех томов по адресу afp://null/ или" lion2 ").") но первое остается нулевым.

Я даже пытался /etc/hostconfig вручную установить имя хоста, но ничего не работает.

Где-то еще имя хоста пытается быть установлено, но, возможно, повреждено? Или содержит недопустимый символ или что-то?

Это заставляет Postfix не работать и сообщать:

postfix: предупреждение: valid_hostname: недопустимый символ 40(десятичное число): (null) postfix: fatal: невозможно использовать мое собственное имя хоста

Пожалуйста, я действительно надеюсь, что кто-то может помочь мне исправить это. Я пытался часами.

Ура,

Скотт

4 ответа

Решение

Все остальные ответы и помощь были высоко оценены, однако после долгих расследований проблема, по-видимому, связана с моим маршрутизатором и iMac: маршрутизатор не позволяет iMac изменять свое имя хоста на стороне клиента ИЛИ, возможно, отправляет странное имя хоста в iMac для его использования.,

Ты пытался scutil?

sudo scutil --get pref покажет текущее значение и sudo scutil --set pref name установит значение имени. pref может быть одним из них:

           ComputerName   The user-friendly name for the system.

           LocalHostName  The local (Bonjour) host name.

           HostName       The name associated with hostname(1) and gethostname(3).

Вот что я получаю на своей машине:

$ sudo scutil --get ComputerName
SteveBook2
$ sudo scutil --get LocalHostName
SteveBook2
$ sudo scutil --get HostName
HostName: not set

Вы должны были попробовать запустить /bin/hostname напрямую, чтобы установить имя хоста на уровне unix/bsd, значения из scutil - это параметры SystemConfiguration, то есть более высокий уровень, к которому unix не обращает внимания.

Для sudo scutil --get HostName совершенно нормально возвращать значение не установлено, даже если при запуске /bin/hostname отображается имя хоста.

Чтобы установить имя хоста, запустите sudo hostname Foo.bar (это в основном идентично вызову sethostname() BSD в коде, заданном другим ответом)

При желании вы можете запустить sudo scutil --set HostName Foo.bar сохранить настройки SystemConfiguration в синхронизации

ПРИМЕЧАНИЕ. Имя хоста в SystemConfiguration может отличаться от LocalHostName и ComputerName, оно также может отличаться от того, что возвращает /bin/hostname, но лучше всего, чтобы все они были синхронизированы, поэтому вы также можете сделать следующее:

sudo scutil --set LocalHostName Foo 
sudo scutil --set ComputerName Foo

Если вы запускаете эту крошечную программу перед запуском postfix, она работает?

#include <unistd.h>

int main(int argc, char* argv[]) {
    char host[] = "newhostname";
    sethostname(host, sizeof(host));
    return 0;
}

Я не предполагаю, что знаю, что еще может зависеть от вашего старого имени хоста - проведите некоторое тестирование на всех ваших сервисах после запуска этого.

Подробности на: http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/gethostname.3.html

Обновить

Чтобы скомпилировать и запустить эту маленькую программу, сохраните ее содержимое в файл (/tmp/newhostname.c сделаем) потом запустим

cd /tmp
make newhostname
sudo ./newhostname

По крайней мере, я предполагаю, что ваш make(1) умеет компилировать из исходников C в исполняемые файлы с правилами по умолчанию.

Если компилятор еще не установлен, возможно, у кого-то есть идея получше.

Другие вопросы по тегам