zoukankan      html  css  js  c++  java
  • Linux发送邮件命令mail,mutt

    邮件常常是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
  • 相关阅读:
    分组PARTITION BY及游标CURSOR的用法
    dotnet core 3.1+consul 学习(1)
    常用状态码
    docker 安装consul以及部署consul集群
    泛型
    redis面试题(1)
    asp net core 3.1启动过程源码解读
    .net core 2.x到3.x变化 -> Endpoint Routing
    jwt登录验证逻辑
    .Net Core3.1+Jenkins+Docker+Git实现自动化部署
  • 原文地址:https://www.cnblogs.com/zoe233/p/12016132.html
Copyright © 2011-2022 走看看