Linux伺服器mail程式本身就是調用sendmail來進行郵件發送的,sendmail伺服器提供對外的郵件發送功能。CentOS預設不能發送郵件,需要發送郵件的童鞋可以安裝一個sendmail程式
1
2
3
4
5
6
7
8
9
10
11
12
<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>
<code>[root@ProxyServer ~]</code><code>#</code>
第一行是輸入的指令,-s表示郵件的主題,後面的[email protected]則是郵件的接收人,輸入完這行指令後回車,會進入郵件正文的編寫,可以輸入任何文字,比如上面的三行。當郵件正文輸入完成後,需要按CTRL+D結束輸入,此時會提示你輸入Cc位址,即郵件抄送位址,沒有直接回車就完成了郵件的發送。
<a href="http://s1.51cto.com/wyfs02/M01/77/13/wKioL1Zi16XwUtfqAACiBqolEFA725.png" target="_blank"></a>
2、使用管道進行郵件發送
<code>[root@ProxyServer ~]</code><code># echo "hello,echo"|mail -s "echo" [email protected]</code>
使用管道直接敲入這行指令即可完成郵件的發送,其中echo後的是郵件正文。
3、使用檔案進行郵件發送
<code>[root@ProxyServer ~]</code><code># mail -s "password" [email protected] < /etc/passwd</code>
使用上面的指令後,我們就可以把/etc/passwd檔案的内容作為郵件的内容發送給[email protected]了
<a href="http://s3.51cto.com/wyfs02/M00/77/14/wKiom1Zi133RwroAAAIOD5bPGIE048.png" target="_blank"></a>
<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] < /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>set</code> <code>[email protected] </code>
<code> </code><code>set</code> <code>smtp=smtp.51cto.com</code>
<code> </code><code>set</code> <code>[email protected] </code>
<code> </code><code>set</code> <code>smtp-auth-password=51cto </code>
<code> </code><code>set</code> <code>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 < /etc/passwd</code>
from:發送的郵件位址(真實位址,我測試時候直接寫justin發送郵件失敗),對方顯示的發件人
smtp:發生的外部smtp伺服器的位址
smtp-auth-user:外部smtp伺服器認證的使用者名
smtp-auth-password:外部smtp伺服器認證的使用者密碼
smtp-auth:郵件認證的方式
<a href="http://s3.51cto.com/wyfs02/M02/76/1B/wKioL1ZKqgzBo0p-AAA0OtsRubo776.png" target="_blank"></a>
如果提示mail: command not found
<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>
5、mail日志在log下
<code>[root@CHINFO3 ~]</code><code># cd /var/log/</code>
<code>[root@CHINFO3 log]</code><code># cat mail</code>
<code>mail/ maillog maillog.1 maillog.2 maillog.3 maillog.4 </code>
6、使用sendmail -bp 或者 mailq 可以檢視到郵件發送隊列,裡邊會列出有幾個郵件等待發送
13
14
15
16
17
18
19
20
21
<code>[root@CHINFO3 mqueue]</code><code># mailq</code>
<code> </code><code>/var/spool/mqueue</code> <code>(5 requests)</code>
<code>-----Q-ID----- --Size-- -----Q-Time----- ------------Sender</code><code>/Recipient-----------</code>
<code>tB36BqUi005128 1716 Thu Dec 3 14:11 <infa@chinfo3></code>
<code> </code><code>(Deferred: mx.263.net.: No route to host)</code>
<code> </code><code><[email protected]></code>
<code>tB21TicN013397 415 Wed Dec 2 09:29 <infa@chinfo3></code>
<code>[root@CHINFO3 mqueue]</code><code># sendmail -bp</code>
<code>tB36BqUi005128* 1716 Thu Dec 3 14:11 <infa@chinfo3></code>
<code>[root@CHINFO3 mqueue]</code><code>#</code>
郵件隊列的檔案都儲存在 /var/spool/mqueue/ 檔案夾内,檢視此檔案夾時,可以看到郵件隊列内的郵件:
<code>[root@CHINFO3 mqueue]</code><code># pwd</code>
<code>/var/spool/mqueue</code>
<code>[root@CHINFO3 mqueue]</code><code># ls</code>
<code>dftB111d4Q031164 dftB213omV012806 dftB36BqUi005128 qftB117J4b006323 qftB21TicN013397</code>
<code>dftB117J4b006323 dftB21TicN013397 qftB111d4Q031164 qftB213omV012806 qftB36BqUi005128</code>
如果需要删除隊列,直接清空該檔案夾即可:
<code>[root@CHINFO3 mqueue]</code><code># rm -f *</code>
<code>/var/spool/mqueue</code> <code>is empty</code>
<code> </code><code>Total requests: 0</code>
或者直接使用sendEmail來發送郵件,
<code>[root@Zabbix_Server ~]</code><code># wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz</code>
<code>[root@Zabbix_Server ~]</code><code># tar zxvf sendEmail-v1.56.tar.gz </code>
<code>[root@Zabbix_Server ~]</code><code># cp -a sendEmail-v1.56/sendEmail /usr/local/bin/</code>
<code>[root@Zabbix_Server ~]</code><code># ll /usr/local/bin/sendEmail </code>
<code>-rwxr-xr-x 1 root root 80213 Sep 30 2009 </code><code>/usr/local/bin/sendEmail</code>
<code>[root@Zabbix_Server ~]</code><code># sendEmail -h</code>
-f 表示發送者的郵箱
-t 表示接收者的郵箱
-cc 表示抄送發給誰
-bcc 表示暗抄送給誰
-o message-content-type=html 郵件内容的格式,html表示它是html格式
-o message-charset=utf8 郵件内容編碼
-s 表示SMTP伺服器的域名或者ip
-u 表示郵件的主題
-xu 表示SMTP驗證的使用者名
-xp 表示SMTP驗證的密碼(注意,這個密碼貌似有限制,例如我用d!5neyland就不能被正确識别)
-m 郵件的内容
-a 要發送的附件
<code>[root@Zabbix_Server sendEmail-v1.56]</code><code># /usr/local/bin/sendEmail -s smtp.51cto.com -xu [email protected] -xp 51cto2016 -f [email protected] -t [email protected] -u test -m 123456 -o message-content-type=text -o message-charset=gb2312 </code>
<code>Sep 20 10:20:19 zabbix_server sendEmail[6090]: Email was sent successfully!</code>
<code>[root@Zabbix_Server sendEmail-v1.56]</code><code>#</code>
發送成功之後會有如下提示:
Jul 29 15:02:53 e10074 sendEmail[26347]: Email was sent successfully!
本文轉自 justin_peng 51CTO部落格,原文連結:http://blog.51cto.com/ityunwei2017/1713425,如需轉載請自行聯系原作者