У меня проблема с opendmarc. Это программное обеспечение использует функцию Perl для отправки писем с отчетами. Итак, в исходном коде я вижу, что / etc / opendmarc_reports также использует функцию hostnamefqdn (), чтобы передать ее команде helo smtp. Затем я вижу в журналах postfix это сообщение: Команда Helo отклонена: требуется полное имя хоста.
Моя конфигурация: / etc / hosts
127.0.1.1 mail.local почта
/ etc / hostname
Почта
$ hostname -f
mail.local
$ perl -e 'use Net::Domain qw(hostfqdn); print hostfqdn()."n";'
mail
Почему функция perl hostnamefqdn () в этом случае возвращает только короткое имя домена вместо fqdn? Конечно, когда я меняю имя хоста на mail.local, тогда все в порядке.
1 ответ
Большая часть кода, который пытается определить полное доменное имя хоста, делает это, просматривая поле «каноническое имя», возвращаемое функциями gethostbyname () или getaddrinfo ().
Когда поиск обрабатывается / etc / hosts, первый name в каждой строке — это «каноническое» имя этой записи, остальные — «псевдонимы». Ваша запись должна выглядеть так:
127.0.1.1 mail.local mail
Конечно я настроил так же, как вы показываете. Только моя ошибка при переписывании со своего сервера. Так что на других моих серверах он работает хорошо. Только в одном случае у меня проблема с hostnamefqdn (), и все время он возвращает не имя хоста fqdn.
— Максерфинг
10 часов назад