Какой-то удаленный SMTP-сервер, на который я пытаюсь доставить почту, отказывается принимать HELO с моего сервера:
504 5.5.2 <localhost>: Helo command rejected: need fully-qualified hostname
По-видимому, мой сервер Exim4 отправляет в localhost
качестве своего полного доменного имени. Поиск в сети и куча файлов конфигурации, я узнал, что значение, отправленное как FQDN во время HELO, берется из primary_hostname
переменной конфигурации.
Мой вопрос: как правильно изменить эту переменную в системе Debian? Я предполагаю, что я могу просто жестко закодировать значение в одном из файлов конфигурации Exim4, но, по-моему, это будет иметь больше смысла, если значение автоматически соответствует /etc/mailname
или какой-либо другой централизованной конфигурации имени.
У меня есть ощущение, что ответ на мой вопрос можно найти в этом тексте в вики Debian :
Имя, используемое exim в EHLO / HELO, извлекается из опции конфигурации
primary_hostname
. Конфигурация Debian exim4 по умолчанию не установленаprimary_hostname
. Затем exim по умолчанию использует uname (), чтобы найти имя хоста. Если этот вызов возвращает только один компонент, gethostbyname () или getipnodebyname () используется для получения полного имени хоста.Если ваш exim HELOs называется localhost.localdomain, то, скорее всего, у вас неправильно настроен / etc / hosts, созданный некоторыми версиями установщика Debian. В этом случае, пожалуйста, исправьте ваш / etc / hosts.
К сожалению, я недостаточно знаком с администрацией Linux-сервера, чтобы точно знать, что все это значит :(
hostname -f
все еще сообщает "localhost". Часть о / etc / hosts в вашем ответе выглядит ошибочной - как должна выглядеть первая запись?hostname -f
прежнему выдается сообщение «localhost», похоже, что смена / etc / hostname сделала свое дело - теперь я могу доставить свою почту. Я все еще хотел бы видеть недостающую часть вашего поста, хотя :)/etc/hostname
обычно не содержит полного доменного имени в системах Debian, только краткое имя хоста./etc/hosts
может быть127.0.0.2 mydomain.com myhostname
(127.0.0.2
работает так же, как127.0.0.1
, поскольку loopback является сетью класса A). Возможно, вы можете объединить две строки в одну127.0.0.1 mydomain.com myhostname localhost
, ноlocalhost
это каноническое имя хоста127.0.0.1
, не так ли? Это все, учитывая, что у вас есть имя хоста, а не FQDN в качестве вашего имени хоста. Кроме того, изменение/etc/hostname
не вступает в силу немедленно, вы должныhostname myhostname
. Или перезапустите сервер.Если вы используете один файл конфигурации, задайте для переменной PRIMARY_HOST_NAME желаемое имя:
Например, в /etc/exim4/exim4.conf:
или установите
MAIN_HARDCODE_PRIMARY_HOSTNAME
в update-exim4.conf.conf, если вы используете разделенную конфигурацию файла.Чтобы быть в безопасности, перезапустите exim.
источник
HELO 'mybox.mydomain.com'
что прерывает отправку почты в Google, возможно, другим.update-exim4.conf
после изменения конфигурации. И перезагрузка вообще не нужна после этого.exim
общем похоже замечают изменения в конфиге без перезагрузки. Но, возможно, перезагрузить безопаснее, так как я полагаю, что сам демон не перечитывает конфигурацию до перезагрузки. Затем вы заставляете его звучать так, как будто он/etc/exim4/exim4.conf
может содержать только строку выше , но в тот момент, когда вы создаете файл, он/var/lib/exim4/config.autogenerated
игнорируется .../etc/exim4/exim4.conf.localmacros
для разделения/etc/exim4/conf.d/main/000_localmacros
(файлы вmain
dir обрабатываются в первую очередь). И запуститьupdate-exim4.conf
+systemctl reload exim4
после внесения изменений.Первичное имя хоста запрашивается во время установки exim4. Вы можете запустить команду
пройти через подсказки снова.
Насколько я знаю, если вы уже используете «разделенную конфигурацию» (много маленьких файлов в /etc/exim4/conf.d) и решили придерживаться этого при появлении запроса, dpkg -configure не должен перезаписывать ни один из ваши существующие изменения конфигурации, отличные от настроек, которые он запрашивает, но, как всегда, вы должны сначала сделать резервную копию, чтобы быть в безопасности.
источник
/etc/mailname
. По умолчанию он используется для определения неквалифицированных адресов . Те, которые состоят только из имени пользователя. Добавляя доменное имя из/etc/mailname
. Полученный адрес используется вFrom
заголовке.primary_hostname
Переменная заполняется в соответствии с полным доменным именем (FQDN) системы. В Debian и связанных с ними систем это , как правило , формируется с использованием содержимого из/etc/hostname
и/etc/hosts
файлов. Файл имени хоста должен содержать краткое имя хоста (напримерfoo
), а файл хостов должен содержать запись, разрешающуюfoo
вfoo.bar.baz
, то есть имя хоста с суффиксом домена (обычно совпадающее с записью DNS).Вывод команды
hostname
(без каких-либо параметров) вернет первое, аhostname -f
вывод вернет второе.Файл имени хоста, как правило, заполняется после установки, и файл хостов может быть отредактирован так, чтобы в нем была еще одна запись, кроме записей localhost по умолчанию, - она должна иметь форму:
Три столбца должны быть разделены пробелами или табуляцией, это не имеет значения. IP-адрес может быть 127.0.0.1, как и localhost, но часть имени хоста совпадает с именем хоста системы, а средняя часть должна быть FQDN, то есть именем хоста с суффиксом домена.
Чтобы убедиться, что линия работает, просто запустите
hostname -f
и убедитесь, что она возвращает полное доменное имя вашего сервера.Наконец, перезапустите exim, например, с помощью:
После этого вы должны начать видеть это привет. Его переменную можно проверить, запустив:
(Примечание: изначально я делал это как редактирование ответа от 2009 года, но он был отклонен. Первоначально я исправлял то, что не нужно было повторять запись по умолчанию на локальном хосте, просто объясните, каким должно быть добавление; объясните, какой Можно использовать IP-адрес; объяснить, что такое полное доменное имя; объяснить, как проверить сам exim.)
источник
/usr/sbin/exim4 -bP primary_hostname
не работает Вы можете проверить имя хоста HELO, отправив тестовое электронное письмо либо на проверку подлинности port25 , либо на любой другой почтовый ящик, где вы можете увидеть оригинал. Подробнее об этом здесь . Рассмотрите возможность обновления вашего ответа.helo_data
это$primary_hostname
. В системах Debian вы можете переопределить его, используяREMOTE_SMTP_HELO_DATA
переменную, но если вы просто правильно указали свое основное имя хоста, это не обязательно./etc/hosts
. И все, что я прошу, это не называть должным то, что не принято.после добавления той же строки в / etc / hosts, hostname -f вернет ваше полное доменное имя
источник
myhostname
идет/etc/hostname
(сопровождаетсяhostname myhostname
). И127.0.0.1 mydomain.com myhostname.com localhost
идет в/etc/hosts
. Плюс перезагрузите наexim
всякий случай.У меня та же проблема. Мне нужно изменить имя хоста почты, потому что некоторые письма не работают, когда они были отправлены. С этой ошибкой:
Поэтому я изменяю его в
/etc/exim.config
параметре primary_hostnameНекоторый код этого файла:
источник
в WHM перейдите в Exim Configuration Manager -> Расширенный редактор
прокрутите вниз, пока не найдете «Добавить дополнительные параметры конфигурации» (большая синяя кнопка) и щелкните по нему.
в новой строке добавьте [primary_hostname] = [mydomain.com]
прокрутите вниз и нажмите Сохранить.
источник