日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Linux使用mail发送电子邮件

發布時間:2023/12/19 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 Linux使用mail发送电子邮件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、說明

mail和mailx就像我們windows上的foxmail,是個客戶端工具,在Linux運維環境中可能會用到一些報警之類的功能,可通過系統mail命令直接發送電子郵件到指定的郵箱用來實現告警,本文就mail客戶端配置和常見使用格式做下學習。

二、不加密發送郵件

1、安裝mail,使用yum install mailx即可直接安裝。

2、編輯mail配置文件,對發件人身份、服務器、端口等進行基本配置,/etc/mail.rc

###vim /etc/mail.rc
## smtp服務器發信的用戶名和昵稱 set from=test@tompig.cn(nickname)
## smtp服務器的地址 set smtp=smtp://smtp.mxhichina.com

## 郵件認證的方式 set smtp-auth=login

## smtp服務器認證的用戶名 set smtp-auth-user=test@tompig.cn
## smtp服務器認證的用戶密碼(授權碼) set smtp-auth-password=password

至此,配置文件配置完成,可使用下面的命令進行發信測試

echo "mail warning test,this is a test email" | mail -s "mail report" 150xxxxxxxx@139.com

注意:1)smtp發信需要郵件系統管理員配置該認證賬戶的發信權限,允許使用smtp協議發信,認證密碼根據實際情況填寫,有的云郵箱可能是個動態授權碼。

   2)有些云郵箱本身自帶反垃圾功能,如果由于郵件內容寫的比較簡單或其他原因導致被識別為垃圾郵件,可能會出現報錯“Unexpected EOF on SMTP connection”,也可能本地沒有報錯,但是登陸到郵箱網頁會收到退信,此退信并不是最終的收件人郵箱服務器產生的退信,而是發信服務器在發信之前就判斷成了垃圾郵件,產生退信。可以適當修改郵件內容、主題等信息,避免因為內容被識別成垃圾郵件。加密傳輸也可能出現"Unexpected EOF on SMTP connection",基本上是由于端口只支持SMTPS導致,將協議改成smtps://,參考下文配置。

三、加密發送郵件

上述情況在使用smtp發信時用的是25端口,而有些郵件服務器端是不允許開啟25端口的,可能會使用smtps(465)、starttls(587)等加密端口發信,這里以465端口舉例。

修改配置文件(/etc/mail.rc)如下:

## smtp服務器發信的用戶名
set from=test@tompig.cn
## smtp服務器的地址,注意"smtps"協議名和后面的端口號 set smtp=smtps://smtp.mxhichina.com:465
## 郵件認證的方式 set smtp-auth=login

## smtp服務器認證的用戶名 set smtp-auth-user=test@tompig.cn
## smtp服務器認證的用戶密碼(授權碼) set smtp-auth-password=password

## 忽略驗證錯誤 set ssl-verify=ignore
##指定證書文件存放目錄,自定義 set nss-config-dir=/root/.cert/

這里在配置文件中多加入驗證配置和證書文件存放目錄配置2行,需要手動導入認證郵件服務器的證書,添加信任。

執行步驟如下:

##創建自定義目錄
mkdir /root/.certs
##進入證書目錄 cd /root/.certs ##獲取郵件服務器證書秘鑰(465端口) echo -n "" | openssl s_client -connect smtp.mxhichina.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > aliyun_smtps.crt
##附:獲取郵件服務器證書秘鑰(587端口) #echo -n | openssl s_client -starttls smtp -connect smtp.mxhichina.com:587 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > aliyun_starttls.crt

##將證書添加到受信任列表 certutil -A -n 'aliyun' -t "P,P,P" -d . -i ./aliyun_smtps.crt

上述certutil命令中-A表示添加,-n是nickname(昵稱),可以隨意取,例如126或qq;-t表示受信任的標簽,可取值是t/c/p三種或者其組合;-d表示證書所在目錄,-i指示證書文件的位置。

至此,配置完成,可使用mail命令直接發信,這里簡單說明一下:

1)如果是465端口,需要加上smtps://協議;如果是587端口,不需要加smtps://或者寫smtp://;
2)如果使用587端口通訊,應當顯示設置smtp-use-starttls;
3)郵件的來源應當與郵箱相同,或者將發信人姓名寫在郵箱后的括號中。例如:set from=user@xxxx.com或set from=user@xxx.com(nickname);如果郵箱與認證的不一致,將出現“smtp-server: 553 Mail from must equal authorized user”的錯誤;
4)有些郵件服務器的587端口不是使用STARTTLS而是SMTPS,此時仍需加上smtps://協議,例如126郵箱

四、mail常用命令簡介

1、在標準輸入中輸入郵件內容:

~]# mail -s 'mail test' xxx@139.com

this is a test email

輸入完成后成按Ctrl+D結束并發送郵件。連按兩次Ctrl+C鍵則中斷工作,不送此信件。

2、通過管道傳送郵件正文

~]# echo 'test mail' | mail -s 'mail test' xxx@139.com

其中echo值為郵件內容,-s參數指定郵件主題,最后面跟收件人郵箱地址

3、使用輸入重定向,從文件中獲取郵件內容

mail -s 'mail test' xxx@139.com < file.txt

4、如果需要發送給多個收件人,收件人之間用逗號隔開即可。如下:

mail -s 'mail test' xxx@139.com,xxx@126.com < file.txt

5、其他參數補充

-b<地址>:指定密件副本的收信人地址;
-c<地址>:指定副本的收信人地址;
-f<郵件文件>:讀取指定郵件文件中的郵件;
-i:不顯示終端發出的信息;
-I:使用互動模式;
-n:程序使用時,不使用mail.rc文件中的設置;
-N:閱讀郵件時,不顯示郵件的標題;
-s<郵件主題>:指定郵件的主題;
-u<用戶帳號>:讀取指定用戶的郵件;
-v:執行時,顯示詳細的信息。

參考資料:

https://tlanyan.me/config-mail-use-smtp/

總結

以上是生活随笔為你收集整理的Linux使用mail发送电子邮件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。