10.16-17 mailq&mail:显示邮件传输队列&发送邮件
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