重啟 Linux 伺服器時,卡在 Starting sendmail: 數分鐘,日誌顯示 gethostby*.getanswer: asked for "webserver IN AAAA", got type "A"。這是 Sendmail 啟動時嘗試解析主機名的 AAAA(IPv6)記錄,卻只收到 A 記錄,導致 DNS 逾時重試。本文提供最簡單修復:在 /etc/hosts 給主機名加個別名。
Apr 28 13:41:36 webserver sendmail[3494]: gethostby*.getanswer: asked for "webserver IN AAAA", got type "A" Apr 28 13:42:36 webserver sendmail[3499]: gethostby*.getanswer: asked for "webserver IN AAAA", got type "A" Apr 28 13:43:37 webserver sendmail: sendmail startup succeeded
約 2 分鐘延遲,若 DNS 不穩定可達 5 分鐘。
gethostbyname2(hostname, AF_INET6) 查詢 AAAA 記錄。/etc/resolv.conf 指向的 DNS 伺服器無 AAAA 記錄,返回 A 記錄或逾時。/etc/hosts修改前:
127.0.0.1 localhost.localdomain localhost
修改後(在 127.0.0.1 行尾加上主機名):
127.0.0.1 localhost.localdomain localhost webserver
webserver 為 hostname 指令輸出的主機名。
service sendmail restart
Shutting down sm-client: [ OK ]
Shutting down sendmail: [ OK ]
Starting sendmail: [ OK ]
Starting sm-client: [ OK ]
啟動時間從分鐘級降為秒級。
/etc/sysconfig/network 設 HOSTNAME=webserver.example.com,並確保 /etc/hosts 有對應解析。echo "NETWORKING_IPV6=no" >> /etc/sysconfig/network(不建議,僅作暫時規避)。/etc/hosts 是「本地 DNS 覆寫層」,善用它解決主機名解析延遲、測試環境域名模擬、叢集節點互通等場景。Sendmail 啟動慢本質是**名稱解析失敗重試**,一行 hosts 即可斷根。現代建議遷移至 Postfix,並配合 systemd-analyze blame 定期審視啟動瓶頸。
Linux DMA 引擎核心操作接口全集:s3c2410_dma API 規範
Linux 下 SSD 優化實戰:TRIM/discard、I/O 調度器、文件系統參數、日誌模式四大維度延壽提速
Linux 服務管理速查表:CentOS (SysV) vs Fedora (systemd) 指令對照
Linux 上網配置經典兩式:共享 Windows 主機上網與 ADSL 直撥完整參數
CentOS/RHEL 5 快速搭建 NFS 文件共享服務圖文教程
Linux 網路程式設計:TCP/UDP Socket 完整流程與 API 速查表
Linux 裝置模型核心基石:kobject、kset、ktype 與 sysfs 關係圖解
Nginx 反向代理 Apache 极简配置:81 端口測試、語法檢查、reload 生效、Response Header 驗證