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
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" |
在配置完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 顯示幫助。
-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