作为系统与用户的交互工具,mail有着很重要的作用,系统或者程序可以把一些关键事件或消息放在mail中,供用户查看。作为一个linux脚本开发人员和系统维护人员,了解mail命令和使用sendmail发送邮件是必不缺少的前提。
- 1、mail查看邮件
命令行输入mail
[boco@redhat5 ~]$ mail Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/boco": 2 messages 2 new >N 1 root@redhat5.4-baby Fri Feb 14 09:02 18/600 "hello boco" N 2 root@redhat5.4-baby Fri Feb 14 11:13 17/567 & ? Mail Commands t <message list> type messages 显示指定邮件 n goto and type next message e <message list> edit messages f <message list> give head lines of messages d <message list> delete messages 删除指定邮件,可以使用d 2-100 删除第2到100条邮件 s <message list> file append messages to file 写到文件中 u <message list> undelete messages R <message list> reply to message senders r <message list> reply to message senders and all recipients pre <message list> make messages go back to /usr/spool/mail m <user list> mail to specific users q quit, saving unresolved messages in mbox 保存已看过的邮件到~/mbox 中,若执行pre ,则不保存 x quit, do not remove system mailbox 效果好像没有看过似得 h print out active message headers 显示邮件列表 ! shell escape 执行命令 cd [directory] chdir to directory or home if none given A <message list> consists of integers, ranges of same, or user names separated by spaces. If omitted, Mail uses the last message typed. A <user list> consists of user names or aliases separated by spaces. Aliases are defined in .mailrc in your home directory. &
如果邮件被收取放到 ~/mbox 可以这样查看它们:
# mail -f ~/mbox
- 2、发送内部邮件
mail -s "hi, boco, i'm root" boco < 邮件内容
或者
mail -s "hi, boco, i'm root" snail
plz reply me, snail.
.
Cc:【注意】使用.或者Ctrl+D或者 . 来结束内容输入
【注意】默认情况下连按两次Ctrl+C键中断工作 - 3、发送外部邮件
mail -s "fff" god_is_coming@163.com
这种是用当前用户名@主机名 作为用户名进行发送的。
因为mail的还得靠sendmail来投递邮件,根据网上资料可以这样查看sendmail是否有邮件待发,如果没有,说明邮件全都发送出去了。(当然你的sendmail服务要开着)
[root@pps ~]# sendmail -bp /var/spool/mqueue is empty Total requests: 0
网上说用sendmail 可以实现用特定用户名来发送外部邮件,但我在redhat 5.4上面没有试成功。但用下面的方法就可以实现。
下载新的sendEmail
sendEmail的主页http://caspian.dotconf.net/menu/Software/SendEmail/
下载地址http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
解压,运行
#tar –zxvf sendEmail-v1.56.tar.gz
#cd sendEmail-v1.56
然后给确认确实它具有执行权限
[root@redhat5 sendEmail-v1.56]# ./sendEmail -f god_is_coming@163.com -t weichaofan@boco.com.cn -u "from sendmail" -xu god_is_coming@163.com -xp ××××(密码) -m happy3 -s smtp.163.com Feb 14 13:15:19 redhat5 sendEmail[684]: Email was sent successfully! [root@redhat5 sendEmail-v1.56]#
解释:
-f 表示发送者的邮箱
-t 表示接收者的邮箱
-s 表示SMTP服务器的域名或者ip
-u 表示邮件的主题
-xu 表示SMTP验证的用户名
-xp 表示SMTP验证的密码(不能有特殊字符哟)
-m 表示邮件的内容如果你不带-m参数的话,就会提示你自行输入
Reading message body from STDIN because the ‘-m’ option was not used.
If you are manually typing in a message:
- First line must be received within 60 seconds.
- End manual input with a CTRL-D on its own line输入完成后使用CTRL-D来结束
当然我们也可以将一个文件的内容作为邮件的正文发出去的
那么就可以使用:
cat 文件名 | /usr/local/bin/sendEmail –f sender@163.com –t receiver@163.com –s smtp.163.com –u "subject” –xu sender –xp 123456 –m happy