在CentOS上利用mailx搭建郵件服務

神諭丶發表於2016-11-03

安裝很簡單……直接透過yum就好了。
  1. yum -y install mailx

安裝好後,編輯/etc/mail.rc

此處用163郵箱,只要在該檔案末尾加上如下內容即可完成配置:
  1. set from="xxx_db@163.com"    -- 發件郵箱
  2. set smtp=smtp.163.com        -- smtp伺服器,此處為黃易163的
  3. set smtp-auth-user=xxx_db    -- 也就是@163.com前的內容
  4. set smtp-auth-password=      -- 密碼
  5. set smpt-auth=login   

日常用法很簡單:
比如給aaa@xxx.com這個郵箱傳送郵件:(多個郵箱用逗號,分隔)
  1. $ echo "這裡是郵件內容" | mailx -s "這裡寫郵件標題" aaa@xxx.com

當然也可以用cat 或者 < 等方法讀取檔案中的內容。





常見錯誤:
① "/root/dead.letter" 11/324. . . message not sent.

可能是smtp未開啟
比如此處用的是黃易163郵箱,就可以在163郵箱web介面中的【設定】-【POP3/SMTP/IMAP】-【設定POP3/SMTP/IMAP】:
將對應的服務打鉤。
此時會給出第三方也就是所謂的“客戶端授權密碼”(和原登入密碼不一樣)
此處的這個授權密碼將用於mailx發郵件的密碼



其他郵箱也要開啟smtp服務。

##### 更新 #####
② 部分郵件,郵件內容被顯示為附件。


我遇到這個問題是在一個檢查redis replication的需求上發現的。
定時任務指令碼透過grep查詢從庫資訊


  1. redis-cli info Replication | grep -E "role|master_link_|master_last_io_"

然後手動看文字內容,多了一個^M,這導致了mailx把本該是文字內容的當做了附件。
(當然該附件拿文字編輯器開啟,內容是本該傳送的內容)




這裡用到的解決方法:
透過dos2unix命令將需要傳送的內容(文字檔案)DOS格式文字檔案轉換成UNIX格式

比如要傳送的內容從a.txt檔案中讀取,那麼在mailx傳送之前,執行如下命令即可

  1. $ dos2unix a.txt
  2. dos2unix: converting file a.txt to UNIX format ...

如果沒有這個工具,透過yum安裝一下就好了。




更多用法可以用man檢視一下。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29773961/viewspace-2127631/,如需轉載,請註明出處,否則將追究法律責任。

相關文章