AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 46545
Accepted
Jørn Schou-Rode
Jørn Schou-Rode
Asked: 2009-07-28 07:35:55 +0800 CST2009-07-28 07:35:55 +0800 CST 2009-07-28 07:35:55 +0800 CST

如何在 Debian 机器上更改 Exim4 的 primary_hostname?

  • 772

我正在尝试向其发送邮件的某个远程 SMTP 服务器拒绝接受来自我的服务器的 HELO:

504 5.5.2 <localhost>: Helo command rejected: need fully-qualified hostname

显然,我的 Exim4 服务器localhost作为其 FQDN 发送。搜索网络和一堆配置文件,我了解到在 HELO 期间作为 FQDN 发送的值是从primary_hostname配置变量中提取的。

我的问题是:在 Debian 系统中更改此变量的正确方法是什么?我想我可以简单地在 Exim4 配置文件中硬编码一个值,但恕我直言,如果该值自动对应于/etc/mailname或其他一些集中名称配置,它似乎更有意义。

我感觉我的问题的答案可以在Debian wiki的这篇文章中找到:

Exim 在 EHLO/HELO 中使用的名称是从配置选项中提取的primary_hostname。Debian 的 exim4 默认配置没有设置primary_hostname. Exim 然后默认使用 uname() 来查找主机名。如果该调用仅返回一个组件,则使用 gethostbyname() 或 getipnodebyname() 来获取完全限定的主机名。

如果您的 Exim HELO 为 localhost.localdomain,那么您很可能有一个由某些版本的 Debian 安装程序创建的错误配置的 /etc/hosts。在这种情况下,请修复您的 /etc/hosts。

不幸的是,我对 Linux 服务器管理不够熟悉,无法确切知道这一切意味着什么:(

debian exim hostname
  • 8 8 个回答
  • 51152 Views

8 个回答

  • Voted
  1. Best Answer
    Paul Lathrop
    2009-07-28T07:45:45+08:002009-07-28T07:45:45+08:00

    您的 /etc/hosts 文件中应该至少有两条记录。第一条记录应采用以下形式:

    <IP_ADDRESS> <HOST_FQDN> <HOSTNAME>
    

    第二个应该是以下形式:

    127.0.0.1 localhost
    

    您还需要确保您的 /etc/hostname 文件包含服务器的 FQDN,并且运行hostname -f返回您的服务器 FQDN。如果您确保所有这些都是正确的,然后重新启动 Exim,您应该开始正确地看到它 HELO。

    • 23
  2. Michael
    2009-07-28T08:56:32+08:002009-07-28T08:56:32+08:00

    如果您使用单个配置文件,请将 PRIMARY_HOST_NAME 变量设置为所需的名称:

    例如在 /etc/exim4/exim4.conf 中:

    PRIMARY_HOST_NAME = mybox.mydomain.com
    

    MAIN_HARDCODE_PRIMARY_HOSTNAME如果您使用的是拆分文件配置,或者在 update-exim4.conf.conf 中设置。

    为了安全起见,请重新启动 exim。

    • 10
  3. David North
    2009-07-28T08:00:05+08:002009-07-28T08:00:05+08:00

    在 exim4 的安装过程中会提示输入主主机名。你可以运行命令

    sudo dpkg-reconfigure exim4-config
    

    再次通过提示。

    据我所知,如果您已经在使用“拆分配置”(/etc/exim4/conf.d 下有很多小文件)并在出现提示时选择坚持使用,dpkg-reconfigure 不应覆盖任何除了提示您设置的设置之外,您现有的配置更改,但是,与以往一样,您应该首先进行备份以确保安全。

    • 5
  4. Josip Rodin
    2017-12-27T04:22:46+08:002017-12-27T04:22:46+08:00

    该primary_hostname变量根据系统的完全限定域名(FQDN)填充。在 Debian 和相关系统上,这通常是使用/etc/hostname和/etc/hosts文件的内容形成的。主机名文件应包含短主机名(例如foo),并且主机文件应包含解析foo为的条目foo.bar.baz,即带有域后缀的主机名(通常与 DNS 条目匹配)。

    命令的输出hostname(不带任何参数)将返回前者,hostname -f输出将返回后者。

    主机名文件通常在安装时填写,并且可以编辑主机文件以在默认本地主机记录旁边包含另一条记录 - 它应该是以下形式:

    <IP address> <hostname FQDN> <hostname>
    

    三列应该用空格或制表符分隔,没关系。IP地址可以和localhost一样是127.0.0.1,但是hostname部分和系统hostname匹配,中间部分应该是FQDN,即带域后缀的hostname。

    要验证该行是否正常工作,只需运行hostname -f并检查它是否返回您的服务器的 FQDN。

    最后,重启 Exim,例如:

    sudo service exim4 restart
    

    之后你应该开始正确地看到它 HELO。它的变量可以通过运行来验证:

    /usr/sbin/exim4 -bP primary_hostname
    

    (注意:我最初这样做是为了对 2009 年的答案进行编辑,但它被拒绝了。我最初修复的事情是:不需要重复默认的 localhost 记录,只需解释应该添加什么;解释哪个可以使用 IP 地址;解释什么是 FQDN;解释如何验证 exim 本身。)

    • 3
  5. myrocode
    2010-12-13T03:02:41+08:002010-12-13T03:02:41+08:00

    在 /etc/hosts 中添加相同的字符串后,hostname -f将返回您的 FQDN

    • 1
  6. Diego Gallardo
    2012-02-16T05:53:57+08:002012-02-16T05:53:57+08:00

    我也有同样的问题。我需要更改邮件主机名,因为某些电子邮件在发送时失败。出现此错误:

    host receiver.server.com [200.200.200.200]: 550 <[email protected]>: Sender address rejected: Domain not found
    

    所以我把它改成/etc/exim.config参数primary_hostname

    该文件的一些代码:

    smtp_connect_backlog = 50
    smtp_accept_max = 100
    
    #primary_hostname = myhostname.com 
    deliver_queue_load_max = 3
    
    • 0
  7. Satalink
    2016-03-24T07:40:25+08:002016-03-24T07:40:25+08:00

    在 WHM 中转到 Exim 配置管理器 -> 高级编辑器

    向下滚动,直到找到“添加其他配置设置”(一个蓝色的大按钮)并单击它。

    在新行中,添加 [ primary_hostname ] = [ mydomain.com ]

    滚动到底部并单击保存。

    • 0
  8. Swayok
    2021-03-31T06:44:42+08:002021-03-31T06:44:42+08:00

    我花了一些时间来计算更改主机名所需的所有步骤,所以这个答案是在一个地方总结 Debian 9 的所有内容:

    要更改主机名,您需要运行:

    hostnamectl set-hostname example.com
    

    注意:使用您的域 FQN 作为主机名。如果您使用其他东西 - 您将收到邮件传递拒绝,例如“Helo 命令被拒绝:需要完全限定的主机名”。

    最后:编辑/etc/hosts使其看起来像:

    127.0.0.1   localhost
    xxx.xxx.xxx.xxx   example.com
    

    xxx.xxx.xxx.xxx是您的服务器的 IP。

    然后通过运行验证更改

    hostname
    

    它必须返回example.com。

    然后运行

    hostname -f
    

    它必须返回您的域 FQN,例如example.com

    还要验证是否/etc/hostname包含example.com并更改它,以便在操作系统重新启动后主机名仍然存在。

    操作系统部分完成。让我们继续exim。

    为确保 exim 使用新主机名,您需要编辑/etc/exim4/exim4.conf.localmacros并添加行:

    primary_hostname = example.com
    

    注意:exim 配置编辑是可选的,如果/usr/sbin/exim4 -bP primary_hostname返回您的新主机名 -/etc/exim4/exim4.conf.localmacros不需要编辑。

    但是您仍然必须更新 exim 配置并重新启动 exim:

    update-exim4.conf
    service exim4 restart
    

    最后通过运行验证 exim 主机名

    /usr/sbin/exim4 -bP primary_hostname
    

    它必须返回example.com

    • 0

相关问题

  • 严重的写入性能问题

  • 您是否在生产/个人服务器上使用过 Debian 不稳定/测试?

  • 推荐的个人邮件服务器设置 [关闭]

  • 为什么 redhat 在企业界似乎如此受欢迎?[关闭]

  • 我应该如何将 debian/xen 机器从 etch 升级到 lenny

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve