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 в исполняемые файлы с правилами по умолчанию.
Если компилятор еще не установлен, возможно, у кого-то есть идея получше.