在 Linux 伺服器上撰寫監控腳本、透過 mail 指令發送郵件是常見需求,但初次部署時常遇到「指令找不到」、「郵件發不出去」等問題。本文記錄一次完整的故障排查過程,供參考。
-bash: mail: command not found
原因:最小化安裝未包含 mailx 套件。解決:
yum -y install mailx sendmail
查看郵件日誌 /var/log/maillog 發現:
Dec 17 11:42:29 localhost sendmail[30528]: qBH3gT5P030528: to=test@163.com, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30138, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1]
錯誤提示 Connection refused by [127.0.0.1],通常是 sendmail 服務未正常監聽本地端口,或郵件佇列目錄權限不足。
chmod -R 777 /var/spool/mail
service sendmail restart
/var/spool/mail 是本地用戶郵箱存放目錄,權限過嚴會導致 sendmail 無法寫入郵件佇列。postfix 替代 sendmail,配置更簡單、安全性更高。relayhost 或 SPF/DKIM 記錄,避免被判定為垃圾郵件。