Debian

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

  • March 31, 2021

我正在嘗試向其發送郵件的某個遠端 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 伺服器管理不夠熟悉,無法確切知道這一切意味著什麼:(

您的 /etc/hosts 文件中應該至少有兩條記錄。第一條記錄應採用以下形式:

<IP_ADDRESS> <HOST_FQDN> <HOSTNAME>

第二個應該是以下形式:

127.0.0.1 localhost

您還需要確保您的 /etc/hostname 文件包含伺服器的 FQDN,並且執行hostname -f返回您的伺服器 FQDN。如果您確保所有這些都是正確的,然後重新啟動 Exim,您應該開始正確地看到它 HELO。

如果您使用單個配置文件,請將 PRIMARY_HOST_NAME 變數設置為所需的名稱:

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

PRIMARY_HOST_NAME = mybox.mydomain.com

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

為了安全起見,請重新啟動 exim。

引用自:https://serverfault.com/questions/46545