本文由ilanniweb提供友情贊助,首發(fā)于爛泥行天下
想要獲得更多的文章,可以關(guān)注我的微信ilanniweb。
本文主要介紹如何在linux下使用msmtp+mutt發(fā)送郵件,當(dāng)然Linux下發(fā)送郵件的工具很多,比如sendmail+dovecot等。但是它們的配置一般都比較復(fù)雜,因此我們來(lái)使用配置比較簡(jiǎn)單的msmtp+mutt組合來(lái)發(fā)送郵件。
msmtp+mutt組合配置很簡(jiǎn)單,只需要幾步就可以完成。下面我們來(lái)分步驟介紹如何配置。
PS:本篇文章在Ubuntu server 14.04和centos6.6上已經(jīng)全部測(cè)試通過(guò),其相關(guān)命令和配置文件可以直接使用。
同時(shí)ubuntu系統(tǒng)的話(huà),建議在root用戶(hù)下進(jìn)行操作。
一、什么是msmtp
msmtp是一款專(zhuān)門(mén)負(fù)責(zé)郵件發(fā)送的SMTP客戶(hù)端軟件,基于GPL發(fā)布。支持TLS/SSL、DNS模式、ipv6、服務(wù)器端認(rèn)證、多用戶(hù)等特性。
在默認(rèn)情況下,msmtp把郵件送給負(fù)責(zé)發(fā)郵件的SMTP服務(wù)器(如:免費(fèi)郵箱供應(yīng)商)。
而在使用msmtp發(fā)送郵件之前,需要你手工建立一個(gè)包含郵件賬號(hào)和密碼等相關(guān)的信息msmtp配置文件,并且讓MUA(郵件用戶(hù)代理客戶(hù)端,在此我們使用的是mutt這個(gè)郵件用戶(hù)代理客戶(hù)端)來(lái)啟用msmtp程序,而不是/usr/sbin/sendmail,這樣才能使郵件客戶(hù)端軟件與msmtp更好的協(xié)同工作。
msmtp支持的特性:
兼容sendmail的交互方式(命令行選項(xiàng)以及退出代碼)。
多種驗(yàn)證方式。
TLS加密連接(包含了服務(wù)器證書(shū)驗(yàn)證,以及可能需要發(fā)送給客戶(hù)端證書(shū)的驗(yàn)證)。
支持IDN(國(guó)際化域名)、支持DSN(投遞狀態(tài)通知)、支持RMQS(開(kāi)啟遠(yuǎn)程消息隊(duì)列)(僅ETRN支持的關(guān)鍵詞)、支持PIPELINING(流水線操作)以提高發(fā)送郵件的速度、支持IPv6、支持LMTP、支持多郵件賬號(hào)。
msmtp也能在類(lèi)UNIX、Windows以及DOS等系統(tǒng)上運(yùn)行。
可選的特性支持(依賴(lài)于額外的庫(kù),看看INSTALL中的使用說(shuō)明)。
msmtp的主頁(yè)位于http://msmtp.sourceforge.net/
二、安裝msmtp
上文介紹了msmtp的相關(guān)特性,現(xiàn)在我們來(lái)介紹下如何安裝msmtp。
msmtp的安裝我們根據(jù)平時(shí)使用的平臺(tái)不同分為centos和ubuntu平臺(tái)的安裝,以及根據(jù)安裝方式的不同分為yum、apt-get和源碼安裝,下面分別介紹下。
2.1 yum方式安裝
yum方式安裝的話(huà),我們需要安裝額外的epel源。如下:
rpm -ivh http://mirrors.aliyun.com/epel/6/x86_64/epel-release-6-8.noarch.rpm
ll /etc/yum.repos.d
開(kāi)始安裝msmtp,如下:
yum -y install msmtp
msmtp安裝完畢后,我們來(lái)查看下msmtp幫助信息,如下:
msmtp --help
通過(guò)上圖,我們可以很明顯的看出msmtp有很多的選項(xiàng)。
2.2 apt-get安裝
在ubuntu下安裝msmtp就很簡(jiǎn)單了,直接使用apt-get進(jìn)行安裝。如下:
sudo apt-get -y install msmtp
msmtp安裝完畢后,我們選擇來(lái)查看下起幫助,如下:
msmtp --help
通過(guò)上圖,我們可以很明顯的看出msmtp有很多的選項(xiàng)。
2.3 源碼安裝
無(wú)論是yum還是apt-get方式安裝的msmtp都不是最新版本,如果要使用最新版本的msmtp的話(huà),我們只能使用源碼方式安裝。
msmtp最新版本為1.6.2,在此是以u(píng)buntu平臺(tái)為例,下載源碼如下:
wget http://nchc.dl.sourceforge.net/PRoject/msmtp/msmtp/1.6.2/msmtp-1.6.2.tar.xz
解壓msmtp-1.6.2.tar.xz,如下:
xz -d msmtp-1.6.2.tar.xz
tar -xf msmtp-1.6.2.tar
cd msmtp-1.6.2/
在開(kāi)始編譯安裝msmtp之前,我們還要安裝相應(yīng)的軟件包。如下:
sudo apt-get -y install gcc libglib2.0-dev
注意:ubuntu下源碼安裝msmtp的話(huà),上述的軟件包libglib2.0-dev一定要安裝否則無(wú)法進(jìn)行編譯。
如果是centos平臺(tái)的話(huà),需要安裝如下的軟件包:
yum -y install gcc gcc-c++ gnutls gnutls-devel gnutls-utils openssl openssl-devel libidn libidn-devel
下載開(kāi)始編譯安裝msmtp,如下:
./configure --bindir=/usr/bin/
sudo make
sudo make install
安裝完畢后,我們來(lái)查看下。如下:
which msmtp
msmtp --help
可以看到msmtp已經(jīng)安裝成功。
三、使用msmtp
msmtp安裝完畢后,我們來(lái)測(cè)試下其發(fā)送郵件的功能。
3.1 創(chuàng)建msmtp配置文件
在測(cè)試msmtp之前,我們先要配置msmtp發(fā)送郵件的配置文件。如下:
sudo vi /etc/msmtprc
defaults
tls on
logfile /var/log/msmtp.log
account ilanni
host smtp.126.com
port 25
from [email protected]
auth login
tls off
user [email protected]
passWordeval "gpg --no-use-agent --passphrase=ilanni -q --no-tty -d /root/pass.gpg"
account default : ilanni
現(xiàn)在來(lái)解釋下在上述命令的各個(gè)選項(xiàng)的含義。
logfile表示記錄日志。
account ilanni定義一個(gè)ilanni的發(fā)送郵件名稱(chēng)。
host smtp.126.com表示SMTP的服務(wù)器地址。
port 25表示SMTP服務(wù)器的端口。
from [email protected]表示發(fā)送的郵件地址。
auth login使用login驗(yàn)證方式。
tls off表示不使用tls。
passwordeval表示[email protected]這個(gè)郵箱的登錄密碼。
如果定義多個(gè)郵箱帳號(hào)的話(huà),我們可以使用account default來(lái)指定默認(rèn)的發(fā)送郵件名稱(chēng)。
有關(guān)gpg加密解密的可以參考這篇文章《爛泥:gpg加解密軟件學(xué)習(xí)》。
3.2 測(cè)試msmtp發(fā)送郵件
在前面我們介紹過(guò)了,msmtp也是一個(gè)SMTP客戶(hù)端軟件,也是可以用來(lái)發(fā)送郵件的,現(xiàn)在我們來(lái)測(cè)試下。
測(cè)試msmtp,我們可以使用如下命令:
echo "Subject: test msmtp/r/n/r/nThis is a test for ilanni." |msmtp -d -C /etc/msmtprc -t [email protected]
參數(shù)Subject指定主題,/r/n/r/n后接的是郵件內(nèi)容,-d指明打印debug信息,-C指明配置文件,-t指定收件人的郵件地址。
以上命令執(zhí)行完畢后,我們可以查看 logfile 里面的發(fā)送日志記錄。如下:
cat /var/log/msmtp.log
通過(guò)上圖,我們可以很明顯的看到郵件已經(jīng)發(fā)送成功。
下面我們來(lái)登錄郵件客戶(hù)端查看下,是否收到剛剛發(fā)送的郵件,如下:
通過(guò)上圖,我們可以很明顯的看到剛剛發(fā)送的郵件,我們已經(jīng)接收到了。
四、什么是mutt
mutt是linux下的一個(gè)email程序,它跟一般的Windows郵件程序不同,它不是一個(gè)包羅萬(wàn)象的大雜燴。你甚至?xí)l(fā)現(xiàn)它根本不直接發(fā)出郵件,它從來(lái)不自己編輯郵件,它從來(lái)不自己對(duì)郵件進(jìn)行加密和數(shù)字簽名。mutt更像一個(gè)文件管理器,只不過(guò)它管理的是email。它的功能是借助各個(gè)最強(qiáng)大的程序來(lái)實(shí)現(xiàn)的,這符合UNIX的設(shè)計(jì)思想:
當(dāng)mutt需要編輯郵件時(shí),它有可能調(diào)用vi、vim、emacs等編輯器。
當(dāng)mutt需要發(fā)信時(shí),它把需要發(fā)出的信件放到sendmail的隊(duì)列里,其他的就什么都不管了。
當(dāng)需要數(shù)字簽名時(shí),mutt會(huì)把信件交給GnuPG之類(lèi)的程序處理一下,然后再發(fā)出去。
怎么收郵件呢?mutt是不會(huì)自己到POP服務(wù)器去取郵件,你需要一個(gè)fetchmail程序,幫你把email從POP服務(wù)器取回來(lái),然后轉(zhuǎn)發(fā)到自己的sendmail的郵箱里。這樣看起來(lái)就是你的主機(jī)成為了一個(gè)完整的UNIX網(wǎng)絡(luò)工作站。
mutt支持絕大多數(shù)郵件格式,包括mbox、Maildir和協(xié)議。例如:POP3、IMAP等。它也支持MIME,PGP/GPG和S/MIME集成。
mutt設(shè)計(jì)為擔(dān)當(dāng)郵件用戶(hù)代理(MUA),因此它不可以單獨(dú)使用來(lái)發(fā)送郵件。如果要發(fā)送郵件的話(huà),它需要結(jié)合郵件傳輸代理來(lái)實(shí)現(xiàn)。,例如:流行的sendmail、exim4、postfix等。同時(shí)它也依賴(lài)其他工具來(lái)撰寫(xiě)和過(guò)濾郵件。
mutt有成百的配置項(xiàng)和命令。它允許改變所有的鍵綁定和設(shè)定keyboard macros來(lái)完成復(fù)雜任務(wù), 以及配置顏色和界面布局。通過(guò)所謂hooks的變量,許多配置可以基于條件改變,例如當(dāng)前郵箱或者外發(fā)郵件接受者。有很多增強(qiáng)功能的補(bǔ)丁和擴(kuò)展,例如NNTP。
mutt完全由鍵盤(pán)控制,支持mail threading。因此用戶(hù)可輕松自如瀏覽冗長(zhǎng)討論。mutt的新郵件撰寫(xiě)由外部文本編輯器完成。這與其他郵件客戶(hù)端工具內(nèi)置編輯器截然不同。
五、安裝mutt
mutt的安裝我們可以分為yum、apt-get和源碼安裝。在此我們不使用源碼安裝了,直接使用yum和apt-get方式。
ubuntu下安裝mutt,如下:
sudo apt-get install -y mutt
centos下安裝mutt,如下:
yum -y install mutt
安裝完畢后,我們來(lái)查看mutt都安裝了什么文件,如下:
dpkg -L mutt |tac
通過(guò)上圖,我們可以看到mutt的配置文件為Muttrc。現(xiàn)在來(lái)查看年下mutt的配置文件Muttrc,如下:
grep -vE '^#|^$' /etc/Muttrc
通過(guò)上圖,我們可以看到mutt的配置文件Muttrc有很多選項(xiàng)。在此,我們只配置必須的選項(xiàng)。如下:
sudo vi /etc/Muttrc
set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="爛泥云監(jiān)控平臺(tái)"
set editor="vi"
以上配置選項(xiàng)中sendmail設(shè)置發(fā)送郵件的客戶(hù)端程序,editor設(shè)置mutt調(diào)用的編器輯。
六、使用mutt
mutt安裝及配置完畢后,我們就可以使用mutt來(lái)發(fā)送郵件了。現(xiàn)在使用如下命令進(jìn)行測(cè)試:
echo "這里是正文" |mutt -s "ilanni-test" [email protected]
cat /var/log/msmtp.log
上述命令的意思是發(fā)送一封內(nèi)容是這里是正文的,主題是ilanni-test的郵件給[email protected]這個(gè)用戶(hù)。
通過(guò)上圖,我們可以很明顯的看到mutt已經(jīng)成功的通過(guò)調(diào)用msmtp發(fā)送一封郵件給[email protected]這個(gè)用戶(hù)。
現(xiàn)在我們?cè)诘顷慸[email protected]這個(gè)郵箱進(jìn)行查看下這封郵件,如下:
通過(guò)上圖,我們可以很明顯的看出mutt確實(shí)已經(jīng)成功的發(fā)送郵件了。
除了可以通過(guò)上述命令發(fā)送郵件外,我們還可以把郵件的內(nèi)容保存到一個(gè)文件中,然后使用如下的形式進(jìn)行發(fā)送。
cat testmutt|mutt -s "ilanni-test" [email protected]
七、mutt的其他用法
在第六章節(jié)中,我們可以看到mutt確實(shí)通過(guò)調(diào)用msmtp發(fā)送郵件。現(xiàn)在我們?cè)賮?lái)看看mutt的其他使用方法。
7.1 郵件群發(fā)
mutt可以群發(fā)郵件,在此我們已兩個(gè)郵件為例進(jìn)行測(cè)試。
使用mutt同時(shí)向[email protected]和[email protected]這兩個(gè)郵箱發(fā)送郵件,命令如下:
echo "lanni --這里是正文" |mutt -s "ilanni-test" [email protected] [email protected]
通過(guò)上圖,我們可以看到mutt確實(shí)可以支持郵件群發(fā)。
7.2 發(fā)送附件
使用mutt同時(shí)向[email protected]和[email protected]這兩個(gè)郵箱發(fā)送郵件,并添加附件testilanni1,testilanni2。其中附件testilanni1和testilanni2內(nèi)容均為this is a test。如下:
mutt命令如下:
echo "lanni --這里是測(cè)試附件" |mutt -s "ilanni-test" [email protected] [email protected] -a testilanni1 testilanni2
mutt發(fā)送附件功能需要參數(shù)-a的配合。
通過(guò)上圖,我們可以很明顯的看出mutt已經(jīng)成功的發(fā)送附件。
7.3 抄送郵件
使用mutt向[email protected]這個(gè)郵箱發(fā)送郵件,同時(shí)抄送把郵件抄送給[email protected],并添加附件testilanni1,testilanni2。命令如下:
echo "lanni --這里是測(cè)試抄送功能" |mutt -s "ilanni-test" [email protected] -c [email protected] -a testilanni1 testilanni2
mutt抄送功能需要參數(shù)-c的配合。
通過(guò)上圖,我們可以看到郵件已經(jīng)成功抄送給[email protected]這個(gè)用戶(hù)。
7.4 密送郵件
使用mutt向[email protected]這個(gè)郵箱發(fā)送郵件,同時(shí)密送給[email protected],并添加附件testilanni1,testilanni2。命令如下:
echo "lanni --這里是測(cè)試密送功能" |mutt -s "ilanni-test" [email protected] -b [email protected] -a testilanni1 testilanni2
mutt密送功能需要參數(shù)-b的配合。
通過(guò)上圖,我們可以看到郵件在發(fā)給[email protected]的同時(shí),也確實(shí)秘密發(fā)送給了[email protected]這個(gè)用戶(hù)。
新聞熱點(diǎn)
疑難解答
圖片精選