https://blog.csdn.net/FJDJFKDJFKDJFKD/article/details/87867969
驗證通過
Ubuntu 18.04 上已經移除了 heirloom-mailx 這個安裝包,有新需求的可參看這篇文章 Ubuntu 18.04 中使用 Postfix 發送郵件。
mail 默認是調用本機 MTA 發送郵件的,這意味着需要在本機上安裝 sendmail 或 postfix 等 MTA,配置比較麻煩,而且會帶來不必要的資源占用。通過修改配置文件,可以達到不使用 sendmail 而用外部 smtp 服務器發送郵件的目的。
安裝mailx
$ sudo apt-get install heirloom-mailx
配置mailx
如果你不確定你的系統中的 mail/mailx 的配置文件的文件名,可以在終端執行下面的命令來查看:
strings `which mail` | grep '\.rc'
- 1
我的系統版本是Ubuntu 16.04
在/etc/s-nail.rc中加入配置文本
set from=User@163.com
set smtp=smtp.163.com
set smtp-auth-user=User
set smtp-auth-password=password
set smtp-auth=login
---說明
from:對方收到郵件時顯示的發件人
smtp:指定第三方發郵件的smtp服務器地址
set smtp-auth-user:第三方發郵件的用戶名
set smtp-auth-password:用戶名對應的密碼,有些郵箱填的是授權碼
smtp-auth:SMTP的認證方式,默認是login,也可以改成CRAM-MD5或PLAIN方式
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
測試
關閉系統的 sendmail 服務,如果開啟了的話。mail [option] [-a file] [-s subject] [-c c_adress] [-b b_adress] to-address ...
常用命令:
n:不讀入設置文件(本系統中是/etc/s-nail.rc)(這個文件允許用戶使用外部郵件傳輸代理而不是使用系統自帶的sendmail發送郵件)。
s:設置郵件的主題信息。
c:使用一個抄送列表。
b:使用一個密送列表。
- 1
- 2
- 3
- 4
- 5
無郵件正文
mail -s "主題" 收件地址
可以把當前shell當成編輯器來用,編輯完內容后按Ctrl-D結束。
有郵件正文
文件內容發送mail -s "主題" 收件地址 < 文件路徑文件名
mail -s "test" xxx@xxx.com < ./xxx/xxx.txtcat 郵件正文.txt | mail -s 郵件主題 xxx@xxx.com
單內容發送
echo "郵件正文內容" | mail -s "郵件主題" xxx@xxx.com
帶附件
注意-a的位置放置有講究。mail -a 附件 -s "主題" 收件地址 < 文件(郵件正文.txt)
mail -a /data/xxx.tar.gz -s "Linux mail test" xxx@xxx.com < ./xxx/xxx.txt
對於擔心郵件內容被非8-bit clean的機器污染,可以使用uuencode進行binary-to-text的轉換進行發送。
首先安裝$ sudo apt-get install sharutils
參數第一個 attachment 是需要編碼的文件名,第二個 attachment 是解碼時得到的文件名。
uuencode attachment attachment > attachment_uu
mail -a attachment_uu -s "Linux mail attachment" xxx@xxx.com < ./xxx/xxx.txt
- 1
- 2
- 3
接收方接收后使用uudecode attachment_uu即可解壓得到文件名為 attachment 的文件 (編碼時的第二個參數)。
uuencode 可以使用 -m 選項選擇base64的編碼方式,對具體原理感興趣的請自行查閱。
在 Winows 中,用 Outlook、Foxmail 等客戶端能自動識別經過 uuencode 編碼的附件。如果附件被收取到 Linux/Unix 等系統下,如果 Linux 下的 MUA 或者客戶端不識別,可以手工處理郵件提取相應的部分,用 uudecode 解碼即可。
查看郵件
常用命令(郵件命令提示符中常用命令)
h: 查看郵件標題。
d: 使用該命令加序號可以刪除指定的郵件。
f: 查看當前光標指向的郵件。
n: 跳轉到指定序號的郵件。
w: 保存郵件信息到文件,保存附件到單獨的文件。
q: 退出並將已閱讀的郵件存入文件~/mbox中。
x: 退出不保持之前的操作,如刪除郵件等。
!: 允許使用shell命令。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
sendmail
mailq或者sendmail -bp
可以查看當前仍在隊列里待發送的郵件,如何刪除該隊列呢?
刪除下面文件夾下的文件即可
/var/spool/postfix/deferred/
再次運行檢查隊列得到: Mail queue is empty
/var/log/syslog文件中也會保存發送失敗的信息
- 1
- 2
- 3
- 4
- 5
- 6
sendmail安裝
$ sudo apt-get install sendmail
$ sudo apt-get install sendmail-cf
其他附件:
spamassassin, 提供郵件過濾
- 1
- 2
- 3
- 4
- 5
sendmail配置
根據.mc文件生成配置.cf文件
m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
- 1
- 2
輸入ps aux | grep sendmail查看是否安裝成功,看到信息sendmail: MTA: accepting connections
關閉並重啟sendmail服務
/etc/init.d/sendmail stop
ps -ef | grep sendmail | awk '{print $2}' | xargs kill -5
/etc/init.d/sendmail start
- 1
- 2
- 3
- 4
- 5
郵件內容、附件處理
sudo apt-get install mpack 用於解析 MIME 類型的信息,使用 munpack 即可用於消息里的附件和內容分離。sudo apt-get install procmail 用於 MDA,過濾消息等。sudo apt-get install getmail4,並配置好 getmail,抓取 mail。
