Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 下 mail 指令發送郵件故障排查實戰

編輯:Linux 教學

在 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 服務未正常監聽本地端口,或郵件佇列目錄權限不足。

解決步驟

  1. 修正郵件佇列目錄權限
    chmod -R 777 /var/spool/mail
    
  2. 重啟 sendmail 服務
    service sendmail restart
    
  3. 再次測試腳本,郵件成功送達。

補充說明

  • /var/spool/mail 是本地用戶郵箱存放目錄,權限過嚴會導致 sendmail 無法寫入郵件佇列。
  • 生產環境建議使用 postfix 替代 sendmail,配置更簡單、安全性更高。
  • 若需對外發信,請確認防火牆開放 25/465/587 埠,並設定正確的 relayhost 或 SPF/DKIM 記錄,避免被判定為垃圾郵件。
Copyright © Windows教程網 All Rights Reserved