frcd 发表于 2015-11-25 11:48:47

关于linux mail和sendmail的研究与学习

         作为系统与用户的交互工具,mail有着很重要的作用,系统或者程序可以把一些关键事件或消息放在mail中,供用户查看。作为一个linux脚本开发人员和系统维护人员,了解mail命令和使用sendmail发送邮件是必不缺少的前提。



1、mail查看邮件  
  
   命令行输入mail


  

$ mail
Mail version 8.1 6/6/93.Type ? for help.
"/var/spool/mail/boco": 2 messages 2 new
>N1 root@redhat5.4-baby   Fri Feb 14 09:0218/600   "hello boco"
N2 root@redhat5.4-baby   Fri Feb 14 11:1317/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                   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 &quot;hi, boco, i'm root&quot; boco < 邮件内容

或者

mail -s &quot;hi, boco, i'm root&quot; snail

plz reply me, snail.

.

Cc:
  
   【注意】使用.或者Ctrl&#43;D或者 . 来结束内容输入

【注意】默认情况下连按两次Ctrl&#43;C键中断工作
  

3、发送外部邮件  
  
   mail -s &quot;fff&quot; god_is_coming@163.com

这种是用当前用户名@主机名 作为用户名进行发送的。
   因为mail的还得靠sendmail来投递邮件,根据网上资料可以这样查看sendmail是否有邮件待发,如果没有,说明邮件全都发送出去了。(当然你的sendmail服务要开着)



# 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

然后给确认确实它具有执行权限



# ./sendEmail -f god_is_coming@163.com -t weichaofan@boco.com.cn -u &quot;from sendmail&quot; -xu god_is_coming@163.com -xp ××××(密码) -m happy3 -s smtp.163.com
Feb 14 13:15:19 redhat5 sendEmail: Email was sent successfully!
#
  



解释:

-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 &quot;subject” –xu sender –xp 123456 –m happy
  


  
  

页: [1]
查看完整版本: 关于linux mail和sendmail的研究与学习