爛泥:ubuntu下配置msmtp+mutt發送郵件,msmtpmutt

來源:互聯網
上載者:User

爛泥:ubuntu下配置msmtp+mutt發送郵件,msmtpmutt

本文由ilanniweb提供友情贊助,首發於爛泥行天下

想要獲得更多的文章,可以關注我的ilanniweb。

本文主要介紹如何在Linux下使用msmtp+mutt發送郵件,當然Linux下發送郵件的工具很多,比如sendmail+dovecot等。但是它們的配置一般都比較複雜,因此我們來使用配置比較簡單的msmtp+mutt組合來發送郵件。

msmtp+mutt組合配置很簡單,只需要幾步就可以完成。下面我們來分步驟介紹如何配置。

PS:本篇文章在ubuntu server 14.04和centos6.6上已經全部測試通過,其相關命令和設定檔可以直接使用。

同時ubuntu系統的話,建議在root使用者下進行操作。

一、什麼是msmtp

msmtp是一款專門負責郵件發送的SMTP用戶端軟體,基於GPL發布。支援TLS/SSL、DNS模式、IPv6、伺服器端認證、多使用者等特性。

在預設情況下,msmtp把郵件送給負責發郵件的SMTP伺服器(如:免費郵箱供應商)。

而在使用msmtp發送郵件之前,需要你手工建立一個包含郵件帳號和密碼等相關的資訊msmtp設定檔,並且讓MUA(郵件使用者代理用戶端,在此我們使用的是mutt這個郵件使用者代理用戶端)來啟用msmtp程式,而不是/usr/sbin/sendmail,這樣才能使郵件用戶端軟體與msmtp更好的協同工作。

msmtp支援的特性:

相容sendmail的互動方式(命令列選項以及結束代碼)。

多種驗證方式。

TLS加密串連(包含了伺服器憑證驗證,以及可能需要發送給用戶端認證的驗證)。

支援IDN(國際化網域名稱)、支援DSN(投遞狀態通知)、支援RMQS(開啟遠程訊息佇列)(僅ETRN支援的關鍵詞)、支援PIPELINING(流水線操作)以提高發送郵件的速度、支援IPv6、支援LMTP、支援多郵件帳號。

msmtp也能在類UNIX、Windows以及DOS等系統上運行。

可選的特性支援(依賴於額外的庫,看看INSTALL中的使用說明)。

msmtp的首頁位於http://msmtp.sourceforge.net/

二、安裝msmtp

上文介紹了msmtp的相關特性,現在我們來介紹下如何安裝msmtp。

msmtp的安裝我們根據平時使用的平台不同分為centos和ubuntu平台的安裝,以及根據安裝方式的不同分為yum、apt-get和源碼安裝,下面分別介紹下。

2.1 yum方式安裝

yum方式安裝的話,我們需要安裝額外的epel源。如下:

rpm -ivh http://mirrors.aliyun.com/epel/6/x86_64/epel-release-6-8.noarch.rpm

ll /etc/yum.repos.d

開始安裝msmtp,如下:

yum -y install msmtp

msmtp安裝完畢後,我們來查看下msmtp協助資訊,如下:

msmtp --help

通過,我們可以很明顯的看出msmtp有很多的選項。

2.2 apt-get安裝

在ubuntu下安裝msmtp就很簡單了,直接使用apt-get進行安裝。如下:

sudo apt-get -y install msmtp

msmtp安裝完畢後,我們選擇來查看下起協助,如下:

msmtp --help

通過,我們可以很明顯的看出msmtp有很多的選項。

2.3 源碼安裝

無論是yum還是apt-get方式安裝的msmtp都不是最新版本,如果要使用最新版本的msmtp的話,我們只能使用源碼方式安裝。

msmtp最新版本為1.6.2,在此是以ubuntu平台為例,下載源碼如下:

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/

在開始編譯安裝msmtp之前,我們還要安裝相應的軟體包。如下:

sudo apt-get -y install gcc libglib2.0-dev

注意:ubuntu下源碼安裝msmtp的話,上述的軟體包libglib2.0-dev一定要安裝否則無法進行編譯。

如果是centos平台的話,需要安裝如下的軟體包:

yum -y install gcc gcc-c++ gnutls gnutls-devel gnutls-utils openssl openssl-devel libidn libidn-devel

下載開始編譯安裝msmtp,如下:

./configure --bindir=/usr/bin/

sudo make

sudo make install

安裝完畢後,我們來查看下。如下:

which msmtp

msmtp --help

可以看到msmtp已經安裝成功。

三、使用msmtp

msmtp安裝完畢後,我們來測試下其發送郵件的功能。

3.1 建立msmtp設定檔

在測試msmtp之前,我們先要配置msmtp發送郵件的設定檔。如下:

sudo vi /etc/msmtprc

defaults

tls on

logfile /var/log/msmtp.log

account ilanni

host smtp.126.com

port 25

from duanzhanling@126.com

auth login

tls off

user duanzhanling@126.com

passwordeval "gpg --no-use-agent --passphrase=ilanni -q --no-tty -d /root/pass.gpg"

account default : ilanni

現在來解釋下在上述命令的各個選項的含義。

logfile表示記錄日誌。

account ilanni定義一個ilanni的發送郵件名稱。

host smtp.126.com表示SMTP的伺服器位址。

port 25表示SMTP伺服器的連接埠。

from duanzhanling@126.com表示發送的郵件地址。

auth login使用login驗證方式。

tls off表示不使用tls。

passwordeval表示duanzhanling@126.com這個郵箱的登入密碼。

如果定義多個郵箱帳號的話,我們可以使用account default來指定預設的發送郵件名稱。

有關gpg加密解密的可以參考這篇文章《爛泥:gpg加解密軟體學習》。

3.2 測試msmtp發送郵件

在前面我們介紹過了,msmtp也是一個SMTP用戶端軟體,也是可以用來發送郵件的,現在我們來測試下。

測試msmtp,我們可以使用如下命令:

echo "Subject: test msmtp\r\n\r\nThis is a test for ilanni." |msmtp -d -C /etc/msmtprc -t duanzhanling@126.com

參數Subject指定主題,\r\n\r\n後接的是郵件內容,-d指明列印debug資訊,-C指明設定檔,-t指定收件者的郵件地址。

以上命令執行完畢後,我們可以查看 logfile 裡面的發送日誌記錄。如下:

cat /var/log/msmtp.log

通過,我們可以很明顯的看到郵件已經發送成功。

下面我們來登入郵件用戶端查看下,是否收到剛剛發送的郵件,如下:

通過,我們可以很明顯的看到剛剛發送的郵件,我們已經接收到了。

四、什麼是mutt

mutt是linux下的一個email程式,它跟一般的Windows郵件程式不同,它不是一個包羅永珍的大雜燴。你甚至會發現它根本不直接發出郵件,它從來不自己編輯郵件,它從來不自己對郵件進行加密和數位簽章。mutt更像一個檔案管理工具,只不過它管理的是email。它的功能是藉助各個最強大的程式來實現的,這符合UNIX的設計思想:

當mutt需要編輯郵件時,它有可能調用vi、vim、emacs等編輯器。

當mutt需要發信時,它把需要發出的信件放到sendmail的隊列裡,其他的就什麼都不管了。

當需要數位簽章時,mutt會把信件交給GnuPG之類的程式處理一下,然後再發出去。

怎麼收郵件呢?mutt是不會自己到POP伺服器去取郵件,你需要一個fetchmail程式,幫你把email從POP伺服器取回來,然後轉寄到自己的sendmail的郵箱裡。這樣看起來就是你的主機成為了一個完整的UNIX網路工作站。

mutt支援絕大多數郵件格式,包括mbox、Maildir和協議。例如:POP3、IMAP等。它也支援MIME,PGP/GPG和S/MIME整合。

mutt設計為擔當郵件使用者代理(MUA),因此它不可以單獨使用來發送郵件。如果要發送郵件的話,它需要結合郵件傳輸代理程式來實現。,例如:流行的sendmail、exim4、postfix等。同時它也依賴其他工具來撰寫和過濾郵件。

mutt有成百的配置項和命令。它允許改變所有的鍵綁定和設定keyboard macros來完成複雜任務, 以及配置顏色和介面布局。通過所謂hooks的變數,許多配置可以基於條件改變,例如當前郵箱或者外發郵件接受者。有很多增強功能的補丁和擴充,例如NNTP。

mutt完全由鍵盤控制,支援mail threading。因此使用者可輕鬆自如瀏覽冗長討論。mutt的新郵件撰寫由外部文字編輯器完成。這與其他郵件用戶端工具內建編輯器截然不同。

五、安裝mutt

mutt的安裝我們可以分為yum、apt-get和源碼安裝。在此我們不使用源碼安裝了,直接使用yum和apt-get方式。

ubuntu下安裝mutt,如下:

sudo apt-get install -y mutt

centos下安裝mutt,如下:

yum -y install mutt

安裝完畢後,我們來查看mutt都安裝了什麼檔案,如下:

dpkg -L mutt |tac

通過,我們可以看到mutt的設定檔為Muttrc。現在來查看年下mutt的設定檔Muttrc,如下:

grep -vE '^#|^$' /etc/Muttrc

通過,我們可以看到mutt的設定檔Muttrc有很多選項。在此,我們只配置必須的選項。如下:

sudo vi /etc/Muttrc

set sendmail="/usr/bin/msmtp"

set use_from=yes

set realname="爛泥CloudMonitor平台"

set editor="vi"

以上配置選項中sendmail設定發送郵件的用戶端程式,editor設定mutt調用的編器輯。

六、使用mutt

mutt安裝及配置完畢後,我們就可以使用mutt來發送郵件了。現在使用如下命令進行測試:

echo "這裡是本文" |mutt -s "ilanni-test" duanzhanling@126.com

cat /var/log/msmtp.log

上述命令的意思是發送一封內容是這裡是本文的,主題是ilanni-test的郵件給duanzhanling@126.com這個使用者。

通過,我們可以很明顯的看到mutt已經成功的通過調用msmtp發送一封郵件給duanzhanling@126.com這個使用者。

現在我們在登陸duanzhanling@126.com這個郵箱進行查看下這封郵件,如下:

通過,我們可以很明顯的看出mutt確實已經成功的發送郵件了。

除了可以通過上述命令發送郵件外,我們還可以把郵件的內容儲存到一個檔案中,然後使用如下的形式進行發送。

cat testmutt|mutt -s "ilanni-test" duanzhanling@126.com

七、mutt的其他用法

在第六章節中,我們可以看到mutt確實通過調用msmtp發送郵件。現在我們再來看看mutt的其他使用方法。

7.1 郵件群發

mutt可以群發郵件,在此我們已兩個郵件為例進行測試。

使用mutt同時向lanni654321@126.com和duanzhanling@126.com這兩個郵箱發送郵件,命令如下:

echo "lanni --這裡是本文" |mutt -s "ilanni-test" lanni654321@126.com duanzhanling@126.com

通過,我們可以看到mutt確實可以支援郵件群發。

7.2 發送附件

使用mutt同時向lanni654321@126.com和duanzhanling@126.com這兩個郵箱發送郵件,並添加附件testilanni1,testilanni2。其中附件testilanni1和testilanni2內容均為this is a test。如下:

mutt命令如下:

echo "lanni --這裡是測試附件" |mutt -s "ilanni-test" lanni654321@126.com duanzhanling@126.com -a testilanni1  testilanni2

mutt發送附件功能需要參數-a的配合。

通過,我們可以很明顯的看出mutt已經成功的發送附件。

7.3 抄送郵件

使用mutt向duanzhanling@126.com這個郵箱發送郵件,同時抄送把郵件抄送給lanni654321@126.com,並添加附件testilanni1,testilanni2。命令如下:

echo "lanni --這裡是測試抄送功能" |mutt -s "ilanni-test" duanzhanling@126.com -c lanni654321@126.com -a testilanni1  testilanni2

mutt抄送功能需要參數-c的配合。

通過,我們可以看到郵件已經成功抄送給lanni654321@126.com這個使用者。

7.4 密送郵件

使用mutt向lanni654321@126.com這個郵箱發送郵件,同時密送給duanzhanling@126.com,並添加附件testilanni1,testilanni2。命令如下:

echo "lanni --這裡是測試密送功能" |mutt -s "ilanni-test" lanni654321@126.com -b duanzhanling@126.com -a testilanni1  testilanni2

mutt密送功能需要參數-b的配合。

通過,我們可以看到郵件在發給lanni654321@126.com的同時,也確實秘密發送給了duanzhanling@126.com這個使用者。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.