1. 程式人生 > >centos 7.5 採用Mutt及msmtp配置進行郵件傳送

centos 7.5 採用Mutt及msmtp配置進行郵件傳送

Centos 7.5 採用Mutt及msmtp配置進行郵件傳送

         在mysql叢集中,通過Keepalived做負載均衡,當keepalived或者是Mysql叢集有問題通過郵件通知,但是Keepalived本身傳送郵件不是很好用,採用mutt方式。其中一種即採用mutt和msmtp的解決方案,它類似於foxmail及outlook的客戶端,可以通過命令列的方式來進行郵件的自動傳送。

一、msmtp的安裝與配置

Linux下可以直接用mail命令傳送郵件,但是發件人是[email protected],如果機器沒有外網的dns,其他人就無法回覆。此時,有一個可以使用網路免費郵箱服務的郵件傳送程式就比較重要了。msmtp就是這樣的一個程式。

#1、下載原始碼包

wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.31/msmtp-1.4.31.tar.bz2

#2、解壓

tar -jxvf msmtp-1.4.31.tar.bz2 && cd msmtp-1.4.31

#編譯安裝

./configure --prefix=/usr/local/msmtp && make && make install

#做軟連結

ln -s /usr/local/msmtp/bin/msmtp /usr/bin/msmtp

 

#3、新建msmtp的配置檔案

mkdir /usr/local/msmtp/etc && vim /usr/local/msmtp/etc/msmtprc

 

#4、輸入如下內容

# Set default values for all following accounts.
defaults

logfile /var/log/msmtp/msmtp.log
# The SMTP server of the provider.
account 163

# SMTP郵件伺服器地址
host smtp.163.com

# 傳送的郵件Email
from

[email protected]
auth login

# 郵件伺服器登入賬號
user [email protected]

# 郵件伺服器登陸密碼
password password
# Set a default account
account default : 163

 

#############################################

#5、測試msmtp是否配置正確

msmtp [email protected]
test
[ctrl+d]

 

echo  "測試test"|mutt -s "test"  [email protected]

二、  mutt的安裝與配置

1、安裝配置mutt
yum install -y mutt

2、mutt一般情況下是預設已經安裝在linux系統中,可以通過which mutt來檢視對應的安裝路徑。只需要做一些配置即可,具體的配置可以有兩種方式。可以修改/etc/Muttrc或新增.muttrc,在/etc/Muttrc相應的配置檔案。具體的配置檔案如下:

vi /etc/Muttrc,在最後增加如下內容

set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname='Mysql HA Monitor'
set [email protected] ###在msmtp中配置的賬號,另外此賬號要確定是否能正常登入
set envelope_from=yes
auto_view text/html
set charset='utf-8'
set send_charset='utf-8'
set locale ='zh_CN.UTF-8'
set content_type = 'text/html\;charset=utf-8'
set rfc2047_parameters=yes

在配置完mutt後,可以採用如下的命令進行郵件傳送功能的驗證,具體如下:

$ echo “helloworld” | mutt –s “test subject” ***@163.com

正常情情況下,郵件能夠成功傳送。

若出現了異常,可以採用如下的方式進行問題排查:

$ echo “helloworld” | mutt –s “test subject”***@163.com

Error sending message, child exited 78 ().

Segmentation fault

當遇到如上的問題時,一般情況是由於某些配置檔案錯誤導致的,但通過上述簡短的資訊無法排查出到底是哪裡出現了問題。可以採用如下的方式進行檢驗:

$ mutt –s “test subject” ***@163.com

上述命令會要求你輸入正文,然後再輸入郵件正文,此時會出現較為詳細的錯誤,如下所示:

msmtp: account default not found: noconfiguration file available

此時可以確定是由於msmtp出現了問題,而且是由於無法載入預設的default使用者而導致的。解決方案即是在配置sendmail時將其配置檔案加上。如下所示:

set sendmail=”/usr/local/msmtp/bin/msmtp –C.msmtprc”

3、mutt的常用命令

mutt [-hnpRvxz][-a<檔案>][-b<地址>][-c<地址>][-f<郵件檔案>][-F<配置檔案>][-H<郵件草稿>][-i<檔案>][-m<型別>][-s<主題>][郵件地址]

Linux命令引數:

-a<檔案>   在郵件中加上附加檔案。

-b<地址>   指定密件副本的收信人地址。

-c<地址>   指定副本的收信人地址。

-f<郵件檔案>   指定要載入的郵件檔案。

-F<配置檔案>   指定mutt程式的設定檔案,而不讀取預設的.muttrc檔案。

-h   顯示幫助。

-H<郵件草稿>&nbsp;  將指定的郵件草稿送出

-i<檔案>   將指定檔案插入郵件內文中

 -m<型別>   指定預設的郵件信箱型別。

-n   不要去讀取程式培植檔案(/etc/Muttrc)

 -p   在mutt中編輯完郵件後,而不想將郵件立即送出,可將該郵件暫緩寄出。

-R   以只讀的方式開啟郵件檔案

 -s<主題>   指定郵件的主題。

-v   顯示mutt的版本資訊以及當初編譯此檔案時所給予的引數。

-x   模擬mailx的編輯方式。

-z   與-f引數一併使用時,若郵件檔案中沒有郵件即不啟動mutt。

帶附件的郵件傳送命令:

$ mutt -s "subject" -a /home/admin/backup.tar.gz [email protected] < /tmp/x.txt

-s: 郵件標題,用""括上

-a: 郵件附件。如上命令就是將/backup目錄下 backup.tar.gz檔案作為附件傳送。

< /tmp/x.txt:/tmp目錄下x.txt檔案裡的內容作為郵件內容傳送。

給多人傳送郵件,只要在郵箱地址後加空格接著輸入郵箱地址即可,如:

$ mutt -s "subject" -a /home/admin/backup.tar.gz [email protected] [email protected] [email protected]< /tmp/x.txt

詳細的mutt的文件請參見: http://book.selboo.com.cn/book/Mutt.html