如何在 Debian 機器上更改 Exim4 的 primary_hostname?
我正在嘗試向其發送郵件的某個遠端 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。