首页 > 技术文章 > 10.16-17 mailq&mail:显示邮件传输队列&发送邮件

fadewalk 2019-05-09 19:34 原文

mailq命令

  是mail queue(邮件队列)的缩写,它会显示待发送的邮件队列,显示的条目包括邮件队列ID、邮件大小、加入队列时间、邮件发送者和接受者。如果邮件进行最后一次尝试后还没有将邮件投递出去,则显示发送失败的原因。
 
 
-v 调试模式,显示详细信息
 
 
[root@cs6 ~]# /etc/init.d/postfix start
[root@cs6 ~]# #<==开启邮件服务,在Centos 6/7中,邮件服务名为postfix,Centos 5以前称为sendmail。
[root@cs6 ~]# mailq -v
postqueue: dict_eval: const  mail
postqueue: dict_eval: const  all
postqueue: dict_eval: const  
 

mail:发送和接收邮件

 
mail命令是命令行的电子邮件发送和接收的工具。mail命令是个软链接,真实的程序文件是mailx:
 
[root@cs6 ~]# yum install mail -y
[root@cs6 ~]# mail
No mail for root
[root@cs6 ~]# ll /bin/mail
lrwxrwxrwx. 1 root root 22 5月   7 05:30 /bin/mail -> /etc/alternatives/mail
[root@cs6 ~]# ll /etc/alternatives/mail
lrwxrwxrwx. 1 root root 10 5月   7 05:30 /etc/alternatives/mail -> /bin/mailx
[root@cs6 ~]#
 
-S    指定邮件主题
-a    发送邮件附件,多个附件使用多次-a选项即可
-b    指定密件抄送的收信人地址
-c    指定抄送的收信人地址
 

交互式发送电子邮件

mail -s 邮件主题 收件人1 收件人2
 
 
[root@cs6 ~]# mail -s "email from virtualmachine centos6" fadewalk@163.com
hello,this the content of mail.    
welcom to wenyule.top          
 
 
EOT  #<=在新的空行输入Ctrl+D表示结束输入,发送邮件。
 
 

使用管道传入内容并发送电子邮件

 [root@cs6 ~]# echo -e "hello,this is hte content of mail.\nwelcome to wenyule.top"|mail -s "hello from lewen" fadewalk@163.com 
  
 
 

使用文件发送电子邮件

[root@cs6 ~]# mail -s "Hello from cs6 linux" fadewalk@163.com </etc/hosts
[root@cs6 ~]# mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
567DE11F152*     595 Tue May  7 07:08:48  root@cs6.localdomain
                                         fadewalk@163.com
 
-- 0 Kbytes in 1 Request. 

  

 
 
You have mail in /var/spool/mail/root #<= 当我们看到这样的语句时,就说明我们的邮箱有邮件了。Linux系统将收到的邮件存放在/var/spool/mail/录下。不同用户的邮件保存在以用户名命名的文件中。例如,root用户的部件将保存在文件/var/spool/mail/root中。
 
 
 
2.生产案例

使用第三方邮箱发送邮件

    mail命令会默认使用本地postfix(sendmail)发送邮件,这就要求本地的机器必须安装和启动相关服务,这样不仅配置非常麻烦,而且还会带来不必要的资源占用。还有一个问题,很多时候,所发送的邮件会被视为垃圾邮件。
    修改配置文件/etc/mail.rc之后就可以使用外部邮件服务器了,比如QQ邮箱、163邮箱,但是因为邮件服务商频繁出现密码泄露的事件,因此对这些个人邮箱设置了一些安全措施,所以用起来会比较麻烦。因此建议大家准备一个企业邮箱,比如腾讯企业邮、l63企业邮等。
    以下是使用第三方邮件发送邮件的方法,先修改/etc/mail.rc,在文件的最后加入一行内容,如下:
 
 [root@cs6 ~]# vim /etc/mail.rc +$ set from=fadewalk@163.com smtp=smtp.163.com smtp-auth-user=fadewalk smtp-auth-password=xxxxxx smtp-auth=login 
from是发送邮件的地址。
smtp 是发信的外部smtp服务器的地址。
smtp-auth-user 是外部smtp服务器认证的用户名。
smtp-auth-password 是外部 smtp服务器认证的用户密码。
smtp-auth是邮件认证的方式。
配置成功之后,就可以使用了,可以发送一封邮件测试一下:
 

发送邮件附件

[root@cs6 ~]# echo "send pic"|mail -s "send pic" -a fav.jpg wylrev@163.com
 
 [root@cs6 ~]# echo "send pic"|mail -s "send pic" -a web.sh wylrev@163.com 
 
 
 

推荐阅读