天天看點

CentOS下使用mail指令發送郵件

如果提示mail: command not found

<code>[root@ProxyServer ~]</code><code># mail -s "password" [email protected] &lt; /etc/passwd</code>

<code>-</code><code>bash</code><code>: mail: </code><code>command</code> <code>not found</code>

那麼就是沒有安裝mail指令,此時需要安裝mail指令

<code>[root@ProxyServer ~]</code><code># yum install mailx -y</code>

<code>[root@ProxyServer ~]</code><code># rpm -qa|grep mail</code>

<code>libreport-plugin-mailx-2.0.9-19.el6.x86_64</code>

<code>mailx-12.4-7.el6.x86_64</code>

<code>procmail-3.22-25.1.el6.x86_64</code>

<code>mailcap-2.1.31-2.el6.noarch</code>

<code>sendmail-8.14.4-8.el6.x86_64</code>

<code>[root@ProxyServer ~]</code><code>#</code>

Linux伺服器mail程式本身就是調用sendmail來進行郵件發送的,sendmail伺服器提供對外的郵件發送功能。CentOS預設不能發送郵件,需要發送郵件的童鞋可以安裝一個sendmail程式

<code>[root@ProxyServer ~]</code><code># yum -y install sendmail</code>

<code>[root@ProxyServer ~]</code><code># /etc/init.d/sendmail start</code>

<code>Starting sendmail:                                         [  OK  ]</code>

<code>Starting sm-client:                                        [  OK  ]</code>

<code>[root@ProxyServer ~]</code><code># chkconfig sendmail on</code>

<code>[root@ProxyServer ~]</code><code># man mail</code>

<code>......</code>

<code>       </code><code>mailx [-BDdEFintv~] [-s subject] [-a attachment ] [-c cc-addr] [-b bcc-addr] [-r from-addr] [-h hops] [-A account]</code>

<code>              </code><code>[-S variable[=value]] to-addr . . .</code>

<code>       </code><code>mailx [-BDdeEHiInNRv~] [-T name] [-A account] [-S variable[=value]] -f [name]</code>

<code>       </code><code>mailx [-BDdeEinNRv~] [-A account] [-S variable[=value]] [-u user]</code>

1、通過指令行發送郵件

<code>[root@ProxyServer ~]</code><code># mail -s "test" [email protected] </code>

<code>dfdafd</code>

<code>dfadf</code>

<code>fadf</code>

<code>EOT</code>

第一行是輸入的指令,-s表示郵件的主題,後面的[email protected]則是郵件的接收人,輸入完這行指令後回車,會進入郵件正文的編寫,可以輸入任何文字,比如上面的三行。當郵件正文輸入完成後,需要按CTRL+D結束輸入,此時會提示你輸入Cc位址,即郵件抄送位址,沒有直接回車就完成了郵件的發送。

2、使用管道進行郵件發送

<code>[root@ProxyServer ~]</code><code># echo "hello,echo"|mail -s "echo" [email protected]</code>

使用管道直接敲入這行指令即可完成郵件的發送,其中echo後的是郵件正文。

3、使用檔案進行郵件發送

使用上面的指令後,我們就可以把/etc/passwd檔案的内容作為郵件的内容發送給[email protected]

  很多情況下,我們也需要使用郵件來發送附件,在linux下使用mail指令發送附件也很簡單,不過首先需要安裝uuencode軟體包,這個程式是對二進制檔案進行編碼使其适合通過郵件進行發送,直接使用centos的yum源可能找不到uuencode指令的包sharutils,我這裡使用了網易Yum源

<code>[root@ProxyServer yum.repos.d]</code><code># yum -y install sharutils</code>

<code>[root@ProxyServer yum.repos.d]</code><code># uuencode CentOS6-Base-163.repo 163_yum_repo |mail -s "附件" [email protected] &lt; /etc/passwd</code>

<code>[root@ProxyServer yum.repos.d]</code><code>#</code>

CentOS6-Base-163.repo 檔案作為郵件的附件發送出去了。uuencode有兩個參數,第一個是要發送的檔案CentOS6-Base-163.repo,第二個是顯示的檔案名稱163_yum_repo。

4、使用外部smtp(qq的SMTP)來發送郵件

bin/mail會預設使用本地sendmail發送郵件,這樣要求本地的機器必須安裝和啟動Sendmail服務,而通過修改配置檔案/etc/mail.rc(/etc/nail.rc)可以使用外部SMTP伺服器,可以達到不使用sendmail而用外部的smtp伺服器發送郵件的目的。

<code>[root@ProxyServer ~]</code><code># vim /etc/mail.rc          #文末添加以下</code>

<code> </code><code>67 </code><code>set</code> <code>[email protected] smtp=smtp.51cto.com</code>

<code> </code><code>68 </code><code>set</code> <code>[email protected] smtp-auth-password=51cto smtp-auth=login</code>

<code>[root@ProxyServer ~]</code><code># source /etc/mail.rc</code>

<code>[root@ProxyServer ~]</code><code># mail -s "51cto" 15001*****@139.com &lt; /etc/passwd</code>

from:發送的郵件位址,對方顯示的發件人

smtp:發生的外部smtp伺服器的位址

smtp-auth-user:外部smtp伺服器認證的使用者名

smtp-auth-password:外部smtp伺服器認證的使用者密碼

smtp-auth:郵件認證的方式

     本文轉自yzy121403725 51CTO部落格,原文連結:http://blog.51cto.com/lookingdream/1868855,如需轉載請自行聯系原作者

繼續閱讀