邮件常常是Linux下监控报警手段之一。Linux下的mail命令可以方便,快速的完成发送邮件。

1. Linux发邮件2种常见客户端命令

1.1 mail命令(推荐)

语法:

  • 无邮件正文

    • mail -s "Title" 123456789@qq.com
  • 有邮件正文
    • mial -s "Title" 123456789@qq.com </etc/hosts
    • echo "Contents"| mail -s "Title" 123456789@qq.com
    • cat /etc/hosts |mail -s "Title" 123456789@qq.com
  • 带附件的邮件
    • mail -s "Title" 123456789@qq.com -a /etc/hosts2

参数:

  • -s 主题,邮件标题
  • -a  attach file添加附件
  • -c  给多个用户发送邮件

查看是否安装mail服务:

[root@nfs-31 scripts]# rpm -qa mailx
mailx-12.4-10.el6_10.x86_64

如未安装:

yum install mailx -y

配置文件:/etc/mail.rc

示例:在/etc/mail.rc文件尾加上如下配置

因为163的设置相对简单些,以163邮箱为例,QQ邮箱等,其他邮箱因为安全等因素,需要设置的比较多,具体的可以搞下,本文不作重点。

set from=usr1@163.com
set smtp=smtp.163.com
set smtp-auth-user=usr1
set smtp-auth-password=邮箱密码
set smtp-auth=login

参数说明:

from 是发送的邮件地址

smtp 是发生的外部smtp服务器地址

smtp-auth-user 是外部smtp服务器认证的用户名

smtp-auth-password 密码

smtp-auth 认证方式

发送邮件测试:

echo "Content" | mail -s "Title" dongjunjie@cmcm.com

配置文件/var/spool/mail/[用户名]

查看所有的邮件信息

1.2 mutt命令

语法:

  • 无邮件正文

    • mutt -s "Title" 123456789@qq.com
  • 有邮件正文
    • mutt -s "Title" 123456789@qq.com </etc/hosts
    • echo "Contents"| mutt -s "Title" 123456789@qq.com
    • cat /etc/hosts |mutt -s "Title" 123456789@qq.com
  • 带附件的邮件
    • mutt -s "Title" 123456789@qq.com -a /etc/hosts2

例如:定期删除脚本

#!/bin/sh
# 2019-12-09
# by zoe
# 轮询删除java日志,只保留7天日志
MailContent = /dev/shm/mailContent
LogFile = /dev/shm/cleanJavaLog.log
LogDir = /home/java/java_*/log
MailList = "system@okoo.net" echo "轮询删除java日志,只保留7天日志,详情请查看邮件!删除日志:`date +%Y%m%d`" >$MailContent if [ -n "$LogDir" ];then
  find $LogDir -type f -mtime +7 > $LogFile 2>&1
  find $LogDir -type f -mtime +7 -delete > $LogFile 2>&1
  mutt -s "Clean the java log 7 days ago" $MailList -a $LogFile<$MailContent
else
  echo "删除日志失败,log目录不存在"|mutt -s "Clean the java log Wrong" $MailList
fi

2. 邮件发送原理

Linux本地常见邮件服务有:

CentOS 5 默认使用sendmail邮件服务,开启方式为/etc/init.d/sedmail start

CentOS 6 默认使用postfix邮件服务,开启方式为/etc/init.d/postfix start

2.2 配置mail使用外部SMTP发邮件

通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail/postfix等内部邮件服务而用外部的smtp服务器发送邮件的目的:

  • 修改/etc/mail.rc配置文件,配置信息放在最后

    • set from=usr1@163.com smtp=smtp.163.com smtp-auth-user=usr1 smtp-auth-password=123456 smtp-auth=login

最新文章

  1. 图标字体 VS 雪碧图——图标字体应用实践
  2. Dagger2 (三) 总结篇
  3. JSP复习整理(一)表单
  4. OD使用教程10
  5. jQuery.swatches – 把 Div 变成可爱的调色板
  6. 如何通过SecureCRTPortable.exe 软件远程连接某个计算机(或者虚拟机)中的某个数据库
  7. HTML DOM 实例-Document 对象
  8. java 对象的this使用 java方法中参数传递特性 方法的递归
  9. Java对数组对象进行排序
  10. PHP ajax实现数组返回
  11. RPC通信编程
  12. js——BOM
  13. [SignalR]Groups操作
  14. avalon1.0正式发布
  15. Centos7 安装keepalived实现高可用
  16. [NOIp 2017]宝藏
  17. concurrent.futures模块(进程池/线程池)
  18. 手机号是SIM卡的号呢,还是买手机时就带的
  19. 输出的数据格式是如何决定的-------Asp.net WebAPI学习笔记(二)
  20. mvc5.0-路由

热门文章

  1. 如何查看网页的header
  2. 《Three.js 入门指南》0 - 说明
  3. Python内置函数分类汇总
  4. django-rest-framework视图和url
  5. docker win10 基本指令
  6. 37.2 net-- tcp传输 ServerSocket、Socket
  7. Powershell 输出信息过多,结尾显示省略号
  8. IntelliJ IDEA 在方法大括号中{}点击回车多出一个},如何取消
  9. x聊之后,又一波新的诈骗套路
  10. 360众测考试 Drupal 漏洞 CVE-2018-7600 远程代码执行-复现