您好,登錄后才能下訂單哦!
這篇文章主要介紹了Linux如何部署msmtp+mutt發送郵件功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
我們通常使用Email都很容易,但是Internet的郵件系統是通過幾個復雜的部分連接而成的,對于最終用戶而言,我們熟悉的Outlook,Foxmail等都是用來收信和發信的,稱之為MUA:Mail User Agent,郵件用戶代理。
MUA并非直接將郵件發送至收件人手中,而是通過MTA:Mail Transfer Agent,郵件傳輸代理代為傳遞,Sendmail和Postfix就是扮演MTA的角色。
一封郵件從MUA發出后,可能通過一個或多個MTA傳遞,最終到達MDA:Mail Delivery Agent,郵件投遞代理,郵件到達MDA后,就存放在某個文件或特殊的數據庫里,我們將這個長期保存郵件的地方稱之為郵箱。
一旦郵件到達郵箱,就原地不動了,等用戶再通過MUA將其取走,就是用Outlook,Foxmail等軟件收信的過程。
所以一封郵件的流程是:
發件人:MUA --發送--> MTA -> 若干個MTA... -> MTA -> MDA <--收取-- MUA:收件人
MUA到MTA,以及MTA到MTA之間使用的協議就是SMTP協議,而收郵件時,MUA到MDA之間使用的協議最常用的是POP3或IMAP。
需要注意的是,專業郵件服務商都有大量的機器來為用戶服務,所以通常MTA和MDA并不是同一臺服務器,因此,在Outlook等軟件里,我們需要分別填寫SMTP發送服務器的地址和POP3接收服務器的地址。
"""
同樣對發郵件流程介紹的很清楚的還有這篇博文:https://www.cnblogs.com/DLHe/p/8457393.html
由上面可知,通常我們所熟悉的Outlook、Foxmail等是郵件客戶端,提供了MUA的功能;而一些Email服務提供商,如網易、QQ等,則提供了MTA的功能。
必須弄清楚的一點是,本次部署的msmtp+mutt其實是類似于Foxmail那樣的MUA郵件客戶端,只不過它是在linux上運行的。而如果在linux上部署的是sendmail或者postfix,那才是郵件服務器,起到的是MTA的功能。
接下來是實施步驟。
實測成功的部署環境:RHEL6.5和CentOS6.5,當然了,機器得能聯網。
msmtp是一個SMTP客戶端,可將郵件發送至SMTP服務端,官網地址為http://msmtp.sourceforge.net/index.html 。
1.下載msmtp文件
cd /usr/local/src
wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2/download
2.解壓文件
tar jxvf msmtp-1.4.32.tar.bz2
3.進入到解壓的文件內,然后就是典型的源碼安裝的3個步驟./configure,make和make install
3.1執行./configure,生成 Makefile,為下一步的編譯做準備,--prefix=后面接的是想要將msmtp安裝到的路徑,跟當前mstmp源碼所在目錄無關
cd msmtp-1.4.32 ./configure --prefix=/usr/local/msmtp
3.2 make && make install,編譯并安裝,這兩步也可以分開執行
4. 在安裝目錄/usr/local/msmtp/下新建etc目錄,并在etc目錄下創建msmtp文件,該文件用于配置郵件發送的一些基本信息。
mkdir –p /usr/local/msmtp/etc vim /usr/local/msmtp/etc/msmtprc #添加如下內容: account default host smtp.163.com port 25 from xxx@163.com //按照實際情況填寫真實的163郵箱 auth login tls off user xxx //郵箱用戶名,是xxx而不是xxx@163.com password xxx //需要注意的是這里的密碼有可能是授權碼,比如163郵箱的話這里就必須填授權碼,如下圖 logfile /var/log/mmlog
注:正如前面所說的,msmtp+mutt的組合跟Foxmail一樣,是郵件客戶端。我們知道,Windows下利用Foxmail發送郵件的話,當然首先需要用你的某個賬號登錄上Foxmail了,然后才能在該客戶端下新建郵件發送。那么這一步該文件配置的作用,我的理解就是在linux下用你的某個賬號登錄msmtp客戶端。這里我用的是163網易郵箱,若是想用QQ郵箱,則需要另行修改。
測試時的配置如下:
(注:截圖當中的目錄有點混亂,是實際生產環境中部署的安裝目錄,不是上面執行./configure命令時--prefix參數指定的/usr/local/msmtp,不過沒關系,只要記住,該文件實際是在prefix參數指定的安裝目錄下的!)
5. 給日志文件賦權限:
chmod 777 /var/log/mmlog
6.給配置文件msmtprc文件賦權限,因為該文件中有郵箱的明文密碼,所以要設置成非可讀的。
chmod 600 msmtprc
7.此時可以 /usr/bin/目錄做一個關于/usr/local/msmtp/bin/msmtp的軟連接,這樣在服務器上任意位置都可以直接敲msmtp命令來執行msmtp
ln -s /usr/local/msmtp/bin/msmtp /usr/bin/msmtp
8.測試msmtp(同樣的,郵箱地址視實際情況而定,不過必須得跟上面的/usr/local/msmtp/etc/msmtprc配置文件中的郵箱相同)
(1)若沒做第7步的軟連接,則是:
/usr/local/msmtp/bin/msmtp xxx@163.com hello,test ctrl d
(2)若做了軟連接,那么測試的命令可以為:
msmtp xxx@163.com hello,test ctrl d # 查看日志有無成功 cat /usr/local/msmtp/msmtp.log # 查看163郵箱,看看信收到沒有。
如下圖,這時候能收到郵件,但是郵件是沒有內容的,這是沒有問題的。
至此,msmtp安裝已經完成了。
Mutt是一個Email客戶端,它不能直接發送郵件,更多的是承擔對email的管理功能,與msmtp可搭配使用。官網地址為http://www.mutt.org/
若想了解更多Mutt與msmtp的搭配使用,可查看如下地址:http://msmtp.sourceforge.net/doc/msmtp.html#Using-msmtp-with-Mutt
1.Mutt安裝方法一:yum方式安裝配置mutt(實測成功)
1.1yum install -y mutt
1.2編輯/etc/Muttrc文件 (注,/etc目錄下應該已經存在Muttrc文件,只是在文件末尾追加下面內容)
vim /etc/Muttrc #輸入如下內容: set sendmail='/usr/bin/msmtp' #注:之所以能這么寫是因為在配置msmtp時做了軟連接 #ln -s /usr/local/msmtp/bin/msmtp /usr/bin/msmtp set use_from=yes set realname='YOURNAME' #realname可以任意設置,這樣當你發郵件給別人的時候,收件人看到發件人的title就是你這里設置的,具體可以看下面的設置和最后圖片展示的結果 set from=user@163.comset 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
實測時的配置如下:
但是做發送郵件測試時粗錯了,確實能發郵件,但是執行完發送命令之后報錯:source: errors in /etc/Muttrc,因此改成下面
set sendmail="/usr/bin/msmtp" set use_from=yes set realname="Zabbix Server" set editor="vim" set from=182xxxx7782@163.com
1.3 配置完畢,測試:
(1)簡單測試(發給自己):echo "TEST測試test"|mutt -s "DT_ZABBIX_SERVER_TEST" 182xxxx7782@163.com
(2)添加附件測試(發給自己):echo "內容:TEST測試test"|mutt -s "主題:DT_ZABBIX_SERVER_TEST" -a /data/suxy_remark.txt 182xxxx7782@163.com
發送錯誤,報錯:Can't stat 182xxxx7782@163.com: No such file or directory
如下圖所示,這是因為182xxxx7782@163.com在-a命令后面,所以mutt把182xxxx7782@163.com也當成附件了,因此將-a命令調換個位置,放到末尾(事實上該命令的用法也確實要求-a參數放到命令的最末尾):
echo "內容:TEST測試test"|mutt -s "主題:DT_ZABBIX_SERVER_TEST" 182xxxx7782@163.com -a /data/suxy_remark.txt
發送成功!
事實上還可以使用如下命令,即mutt后面先寫郵箱,將-s、-a等參數都放到后面去
echo "內容:TEST測試test"|mutt 182xxxx7782@163.com -s "主題:DT_ZABBIX_SERVER_TEST" -a /data/readme.txt
(3)當然也可以發送郵件給其他的類型的郵箱,比如qq郵箱,公司郵箱等:
echo "內容:TEST測試test"|mutt -s "主題:DT_ZABBIX_SERVER_TEST" 98xxxx3649@qq.com -a /usr/local/suxy_remark.txt
2.Mutt安裝方法二:源碼方式安裝Mutt(測試時沒有成功,不過應該是測試做法不對。。)
cd /usr/local/src wget ftp://ftp.mutt.org/pub/mutt/mutt-1.5.24.tar.gz tar xvf mutt-1.5.24.tar.gz cd mutt-1.5.24 ./configure --prefix=/usr/local/mutt
make && makeinstall
配置Mutt
vim /usr/local/mutt/etc/Muttrc #在最后添加如下幾行: set sendmail="/usr/local/msmtp/bin/msmtp" set use_from=yes set realname="xxx" set from=xxx@163.com set envelope_from=yes
測試Mutt
echo "hello,world"|/usr/local/mutt/bin/mutt –s "test mail" xxx@163.com#上述語句將發送一封標題為"test mail",內容為"hello,world",收件人為xxx@163.com的郵件,可檢查該郵箱能否收到郵件
實際測試時使用的命令:
echo "Test from Zabbix Server"|/usr/local/mutt/bin/mutt –s "zabbixTest" 182xxxx7782@163.com
但是若是使用上面的命令發送的話則會給-s@zabbix.localhost和zabbixtest@zabbix.localhost和182xxxx7782@163.com都各發一封郵件,改為如下的命令則會只給182發送,但是沒有主題
echo "Test from Zabbix Server"|/usr/local/mutt/bin/mutt 182xxxx7782@163.com
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Linux如何部署msmtp+mutt發送郵件功能”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。