整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          如何用 Linux 命令行發電子郵件

          inux 提供了幾個可以讓你通過終端發送電子郵件的命令,下面來展示一些有趣的方法。

          -- Sandra Henry-stocker(作者)

          Linux 可以用多種方式通過命令行發送電子郵件。有一些方法十分簡單,有一些相對會復雜一些,不過仍舊提供了很多有用的特性。選擇哪一種方式取決于你想要什么 —— 向同事快速發送消息,還是向一批人群發帶有附件的更復雜的信息。接下來看一看幾種可行方案:

          mail

          發送一條簡單消息最便捷的 Linux 命令是 mail。假設你需要提醒老板你今天得早點走,你可以使用這樣的一條命令:

          $ echo "Reminder: Leaving at 4 PM today" | mail -s "early departure" myboss
          

          另一種方式是從一個文件中提取出你想要發送的文本信息:

          $ mail -s "Reminder:Leaving early" myboss < reason4leaving
          

          在以上兩種情況中,你都可以通過 -s 來為郵件添加標題。

          sendmail

          使用 sendmail 命令可以發送一封不包含標題的快信。(用目標收件人替換 recip):

          $ echo "leaving now" | sendmail recip
          

          你可以用這條命令發送一條只有標題,沒有內容的信息:

          $ echo "Subject: leaving now" | sendmail recip
          

          你也可以用 sendmail 發送一條包含一條標題行的完整信息。不過使用這個方法時,你的標題行會被添加到要發送的文件中,如下例所示:

          Subject: Requested lyrics
          I would just like to say that, in my opinion, longer hair and other flamboyant
          affectations of appearance are nothing more ...
          

          你也可以發送這樣的文件(lyric 文件包含標題和正文):

          $ sendmail recip < lyrics
          

          sendmain 的輸出也可以很冗長。如果你感到好奇并希望查看發送系統和接收系統之間的交互,請添加 -v (verbose)選項。

          $ sendmail -v recip@emailsite.com < lyrics
          

          mutt

          mutt 是通過命令行發送郵件的一個很好的工具,在使用前你需要安裝它。mutt 的一個很方便的優勢就是它允許你在郵件中添加附件。

          使用 mutt 發送一條快速信息:

          $ echo "Please check last night's backups" | mutt -s "backup check" recip
          

          從文件中獲取內容:

          $ mutt -s "Agenda" recip < agenda
          

          使用 -a 選項在 mutt 中添加附件。你甚至可以添加不止一個附件 —— 如下一條命令所示:

          $ mutt -s "Agenda" recip -a agenda -a speakers < msg
          

          在以上的命令中,msg 文件包含了郵件中的正文。如果你沒有其他補充的內容,你可以這樣來代替之前的命令:

          $ echo "" | mutt -s "Agenda" recip -a agenda -a speakers
          

          mutt 另一個有用的功能是可以添加抄送(-c)和密送(-b)。

          $ mutt -s "Minutes from last meeting" recip@somesite.com -c myboss < mins
          

          telnet

          如果你想深入了解發送電子郵件的細節,你可以使用 telnet 來進行電子郵件交互操作。但正如所說的那樣,你需要“學習術語”。郵件服務器期望一系列命令,其中包括自我介紹(EHLO 命令)、提供發件人(MAIL FROM 命令)、指定收件人(RCPT TO 命令),然后添加消息(DATA)并以 . 結束消息。并不是所有的電子郵件服務器都會響應這些請求。此方法通常僅用于故障排除。

          $ telnet emailsite.org 25
          Trying 192.168.0.12...
          Connected to emailsite.
          Escape character is '^]'.
          220 localhost ESMTP Sendmail 8.15.2/8.15.2/Debian-12; Wed, 12 Jun 2019 16:32:13 -0400; (No UCE/UBE) logging access from: mysite(OK)-mysite [192.168.0.12]
          EHLO mysite.org <== introduce yourself
          250-localhost Hello mysite [127.0.0.1], pleased to meet you
          250-ENHANCEDSTATUSCODES
          250-PIPELINING
          250-EXPN
          250-VERB
          250-8BITMIME
          250-SIZE
          250-DSN
          250-ETRN
          250-AUTH DIGEST-MD5 CRAM-MD5
          250-DELIVERBY
          250 HELP
          MAIL FROM: me@mysite.org <== 指定發件人
          250 2.1.0 shs@mysite.org... Sender ok
          RCPT TO: recip <== 指定收件人
          250 2.1.5 recip... Recipient ok
          DATA <== 郵件內容開始
          354 Enter mail, end with "." on a line by itself
          This is a test message. Please deliver it for me.
          . <== 內容結束
          250 2.0.0 x5CKWDds029287 Message accepted for delivery
          quit <== 結束交互
          

          向多個收件人發送電子郵件

          如果你希望通過 Linux 命令行向一大組收件人發送電子郵件,你可以使用一個循環來幫助你完成任務,如下面應用在 mutt 中的例子:

          $ for recip in `cat recips`
          do
           mutt -s "Minutes from May meeting" $recip < May_minutes
          done
          

          總結

          有很多方法可以從 Linux 命令行發送電子郵件。有些工具提供了相當多的選項。


          via: https://www.networkworld.com/article/3402027/how-to-send-email-from-the-linux-command-line.html

          作者: Sandra Henry-Stocker 選題: lujun9972 譯者: Modrisco 校對: wxy

          本文由 LCTT 原創編譯, Linux中國 榮譽推出

          點擊“了解更多”可訪問文內鏈接

          oaccess了,它是一個日志分析工具,并不只是為nginx使用的,你也可以用它來分析apache,具有解析速度快,使用簡單,能生成json,html,csv等特點。

          1.goaccess的基本安裝

          wget http://tar.goaccess.io/goaccess-1.1.tar.gz
          yum install glib2 glib2-devel GeoIP-devel ncurses-devel
          tar xvf goaccess-1.1.tar.gz -C /usr/local
          cd /usr/local/
          cd goaccess-1.1/
          ./configure --enable-geoip --enable-utf8  --with-openssl
          make && make install
          goaccess -f /var/log/nginx/access.log -a 

          lanmp默認使用common log format日志格式

          2.日志分析結果的輸出的城市顯示

          wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
          gunzip GeoLiteCity.dat.gz
          goaccess -f /var/log/nginx/access.log  --log-format="%h %^[%d:%t %^] \"%r\" %s %b \"%R\" \"%u\"" --date-format="%d/%b/%Y" --time-format=%H:%M:%S -a --geoip-database=/usr/local/goaccess-1.1/GeoLiteCity.dat  > /tmp/nginx-log-`date +%F-%H-%M-%S`.html

          其中log format依實際nginx的格式自己設定,如果nginx的log format為默認,可以使用goaccess中推薦的common log format日志格式設置,如果nginx的日志中有使用引號,在命令行中須使用\進行轉義

          如果nginx格式自己有變動,可以依據https://goaccess.io/man對命令行中的格式進行自定義

          goaccess命令中的相關參數命令可以閱讀https://github.com/allinurl/goaccess中的詳細解釋

          --geoip-database=/usr/local/goaccess-1.1/GeoLiteCity.dat此條參數為輸出時加載GeoLiteCity.dat的數據,goaccess中默認使用的geoip數據不全,只能顯示到country,不能顯示到city。

          3.使用mutt和msmtp將生成的html文件自動發送至郵箱

          配置msmtp,只需要在用戶根目錄下創建.msmtprc 文件添加如下配置文件即可,msmtp主要配置發件的服務器地址,以及認證信息

          yum -y install mutt msmtp
          [root@iZ25b31bdp0Z tmp]# cat /root/.msmtprc
          defaults
          tls on
          logfile /var/log/msmtp/msmtp.log
          account default
          host smtp.126.com                          
          port 25                                         //不同的郵箱的smtp端口可能不一樣,自行去郵箱官網查詢
          from marility@126.com          //發件人的郵箱
          auth login                                    //授權選擇login就可以
          tls off
          user marility@126.com          //郵箱用戶
          password PASSWORD              //這處PASSWORD密碼為郵箱smtp的授權碼,不是網頁郵件登陸密碼,此處密碼為明文,也可以使用gpg2進行加密,詳細設定可以查看文尾
          [root@iZ25b31bdp0Z tmp]# cat /root/.muttrc
          
          set sendmail="/usr/bin/msmtp"            
          
          set use_from=yes
          
          set realname="marility"                                     //郵件發送時顯示的用戶名
          
          set from=marility@126.com                    //發件人的郵箱
          
          set envelope_from=yes
          
          set charset = "utf-8"
          
          set send_charset = "us-ascii:iso-8859-1:gb18030:utf-8"
          chmod +x nginxlogsend.sh
          
          echo " " | mutt -s "nginx-log-`date +%F-%H-%M-%S`" 85362119@qq.com -a /tmp/nginx-log-2016-11-21-14-59-32.html
          
          echo "郵件內容" | mutt –s "郵件標題" 收件人郵箱 –a 附件的路徑

          4.自動化發送生成的日志分析文件

          寫一個腳本,在腳本中執行如上兩條命令,然后加入到crontab中

          vim /root/nginxlogsend.sh
           
          #!/bin/bash
          #
          #
          
          goaccess -f /var/log/nginx/access.log  --log-format="%h %^[%d:%t %^] \"%r\" %s %b \"%R\" \"%u\"" --date-format="%d/%b/%Y" --time-format=%H:%M:%S -a --geoip-database=/usr/local/goaccess-1.1/GeoLiteCity.dat  > /data/nginx-log.html
          
          echo " " | mutt -s "nginx-log-`date +%F-%H-%M-%S`" 85362119@qq.com -a /data/nginx-log.html
          
          tar zcf /data/nginx-log-`date +%F-%H-%M-%S`.tar.gz /data/nginx-log.html
          crontab –e
          1 0 * * * /root/nginxlogsend.sh 

          5.msmtp密碼加密

          因為/root/.msmtprc中用戶郵箱的smtp的授權碼在上述示例中使用的明文,在此不安全。

          在msmtp中除了將密碼放置于配置文件中,還可以讀取gpg2加密文件

          5.1生成密鑰對

          在主機A.B兩邊各種生成自己的gpg2密鑰對

          gen –gen-key

          依次選擇1>0>4096>輸入用戶信息及解密密碼(解密密碼很重要,后期解密文件使用)>o

          之后提示移動鼠標鍵盤,在tty中無法使用,在此可以使用dd命令隨機寫入

          dd if=/dev/zero of=/dev/null bs=10 count=10000

          5.2查看密鑰對并導出自己的公鑰

          gen2 –K

          其中下圖中黑色部分為密鑰ID

          導出密鑰格式為gpg2 –a –o 公鑰文件名稱 –-export 密鑰ID

          5.3將A機器(A必須為msmtp主機)公鑰傳給B機器

          5.4在B機器上導入A機器公鑰

          5.5在B機器上將存有密碼的文件進行加密

          gpg2 –e –r marility msmpasswd

          其中marility為A機器上生成密鑰時的用戶,msmpasswd為存有密碼的文件,

          執行之后會生成一個msmpasswd.gpg的文件,使用cat查看得出亂碼,到達加密效果

          5.6將B機器上的加密文件回傳到A主機

          5.7對加密文件進行解密測試

          使用格式為gpg2 –no-tty –-passphrase=A機器上解密密碼 –q –d 加密文件

          5.8更改/root/.msmtprc中配置,如下

          ail命令是Linux系統中常用的命令之一,用于向指定用戶或組發送郵件。

          語法:

          mail [選項] [收件人]

          常用選項:

          1. -s 主題:指定郵件主題;

          2. -a 文件名:附加文件;

          3. -c 抄送給其他收件人;

          4. -b 密送給其他收件人;

          5. -r 發件人:指定發件人。

          使用示例:

          1. 發送純文本郵件:

          echo "郵件內容" | mail -s "郵件主題" 收件人

          2. 發送帶附件的郵件:

          mail -s "郵件主題" -a 文件名 收件人

          3. 抄送給其他收件人:

          mail -s "郵件主題" -c 其他收件人 收件人

          4. 密送給其他收件人:

          mail -s "郵件主題" -b 其他收件人 收件人

          5. 指定發件人:

          mail -s "郵件主題" -r 發件人 收件人

          注意事項:

          1. 如果沒有指定收件人,則需要在命令行中輸入收件人,并按下Ctrl+D鍵結束輸入;

          2. 發送HTML格式的郵件需要使用其他工具,如mutt命令;

          3. 發送郵件需要在系統中安裝郵件服務,如sendmail、postfix等。


          主站蜘蛛池模板: 精品亚洲AV无码一区二区三区| 无码AV天堂一区二区三区| 精品国产亚洲一区二区三区| 人妖在线精品一区二区三区| 亚洲国产成人久久一区久久| 日韩AV无码久久一区二区| 国产A∨国片精品一区二区| 亚洲一区二区三区无码国产| 成人区人妻精品一区二区不卡网站 | 国产精品亚洲一区二区在线观看| 亚洲av高清在线观看一区二区| 一本一道波多野结衣AV一区 | 精品国产免费一区二区| 日本精品一区二区三区在线观看| 国产成人av一区二区三区在线观看| 亚洲一区在线免费观看| 国产精品无码AV一区二区三区| 精品在线一区二区三区| 无码人妻av一区二区三区蜜臀| 久久无码AV一区二区三区| 国产av成人一区二区三区| 日本中文一区二区三区亚洲| 激情无码亚洲一区二区三区 | 99久久精品午夜一区二区| 国产午夜精品一区二区三区小说 | 无码AV动漫精品一区二区免费 | 久久婷婷色一区二区三区| 成人一区二区免费视频| 成人在线一区二区| 欧洲精品一区二区三区在线观看| 亚洲av无一区二区三区| 国产高清一区二区三区| 亚洲美女视频一区二区三区| 国产精品日本一区二区在线播放| 久久一区二区免费播放| 东京热无码一区二区三区av| 国产午夜三级一区二区三| 精品少妇一区二区三区在线| 国产福利电影一区二区三区,免费久久久久久久精 | 狠狠做深爱婷婷久久综合一区| 亚洲AV一区二区三区四区|