专栏首页DBA随笔Linux中的邮件功能mailx

Linux中的邮件功能mailx

//

Linux中的邮件功能mailx

//

这两天有个临时的任务,某个游戏的开发人员需要定时提取一个表里面的数据,用来做一些统计分析的处理。由于线上的权限控制的比较严格,所以需要DBA在每天早上的10:00准时发送前一天的数据。这个需求如果人工的去执行,那么每天都要记得这个事情,如果某一天忘记了,那就不好了。

最后想了一个方法,就是通过设置crontab定时执行数据导出脚本的方法来实现,但是执行完脚本还需要人工干预将数据从服务器拖拽到本地,然后通过邮件进行发送,这个流程未免有点麻烦。

仔细想想,似乎在上面的基础上,再多加一步邮件发送的功能就好了,如果能从服务器上直接通过邮件的方式发送出去,这样就能解决我们的痛点了。查了查linux的命令,真有这么一个mailx(或者mail命令,这俩用法差不多)的命令,之前没有用过,今天学习了一下:

01

mailx简介

mailx 命令是Linux中专门用来发送和接收邮件的命令,我们可以使用man mailx的命令来查看mailx的使用手册,如果你的机器里面没有mailx这个命令,请使用yum -y install mailx的方法来安装这个依赖。

02

命令介绍

mailx的命令用法这里介绍一下,它包含很多参数,这里我挑选几个最常用的、重要的介绍一下:

-a 这个参数是添加附件用的,也是我们本案例的解决方案

-b 邮件的秘密抄送列表,后面跟邮箱地址,邮箱地址需要使用逗号分隔

-c 邮件的抄送列表

-s 邮件的主题,也就是这封邮件的标题

-f 要发送的文件内容,后面接文件名称,当然,一般情况下,不这么使用该参数,都是利用<文件名的方法来读取文件中的内容

举几个例子说明一下:

1、发送邮件信息

方法一:
echo "Hello" | mail -s "这里是主题" yeyz@126.com
方法二:
mail -s "这里是主题" yeyz@126.com < article.txt

这里可以看到,有两个方法,其中一个使用echo+管道的方法输入文章内容,另一个是使用读入文件的方法来加载文章内容

2、增加附件

mail -s "这里是主题" -a 附件名称 yeyz@126.com < article.txt

上面这个命令,就有了邮件主题、附件、以及收件地址和邮件内容。

这里需要特别注意,-a参数要放在邮件地址的前面!!!网上好多教程都将-a参数放在邮件地址的后面,导致发送邮件的时候报错。当时我也是参考别人的博客,设置了半天,发现写错了,这样的博客在百度上一搜一大把,大家还是要有自己的判断力,不然就可能被带跑偏了。

当我们不知道一个命令的用法的时候,最好的方法还是使用man+命令的方法或者命令+--help的方法去获得该命令的详细介绍

03

重要配置

要使用上面的功能完全实现一封邮件的发送,少不了smtp协议内容的配置,mailx命令的系统级配置文件是/etc/mail.rc,用户级别的默认配置文件是~/.mailrc,也可以通过MAILRC环境变量设置配置文件路径。作为普通用户,我们在本地的~/.mailrc文件进行配置,以下几项配置比较关键:

set from=monit@xxxxx.cn    smtp=xxxxx.cn

set smtp-auth-user=monit@xxxxxcn smtp-auth-password=xxxxx

set smtp-auth=login

其中,

from是邮件的发送地址(注意和命令中的接收地址区分);

smtp是smtp服务器地址;

smtp-auth-user是smtp服务的认证用户;

smtp-auth-password是smtp服务的认证密码;

smtp-auth是smtp的认证方式

如果你们公司有自己的smtp服务器,那就用自己的服务器,如果没有,可以使用公网上的服务器,这里有个网址给出了一些例子:

https://blog.csdn.net/Gents_hu/article/details/92219811

举个例子:

set smtp=smtp.qq.com    //邮箱所在服务器和端口地址
set from="xxxxxxxxx@qq.com"  //你的qq邮箱
set smtp-auth-user="xxxxxxxx@qq.com" smtp-auth-password="*****"  //邮箱密码
set smtp-auth=login  //默认login即可

这样也是可以的,大家不妨自己试试

本文分享自微信公众号 - DBA随笔(gh_acc2bbc0d447),作者:AsiaYe

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ​MySQL中explain的结果字段介绍(1)

    我们在使用MySQL的时候,用的最多的情况可能就是select语句了,当我们在一个表查找数据的时候,经常会遇到查找的速度比较慢的情况,作为一名DBA,我...

    AsiaYe
  • MySQL中的全表扫描案例

    这两天看到了两种可能会导致全表扫描的sql,这里给大家看一下,希望可以避免踩坑:

    AsiaYe
  • Python之list、tuple

    前段时间看了看Python,最近在工作中频繁使用,发现自己对Python的掌握还是不够,于是决定,好好整理一阵子关于Python的东西,如果工作当天有更好...

    AsiaYe
  • Python3 使用smtplib和em

    SMTP (Simple Mail Transfer Protocol)   邮件传送代理 (Mail Transfer Agent,MTA) 程序使用SMTP...

    py3study
  • “太阳能电池板”panneaux-solaires.com超17万元结拍

    随着科技的发展,新能源技术不再那么陌生,渐渐的出现在人们生活的方方面,诸如太阳能路灯、太阳能汽车......这些都是大家比较熟悉的。他不仅给人们生活...

    躲在树上的域小名
  • 3.Nginx配置进阶(三)

    ==============================================================================

    py3study
  • 2017企业安全技术热词有哪些?

    元旦将至,2017年企业在构建安全体系时主要考虑哪些问题呢?FreeBuf 带你回顾企业安全应对指南中所调查的 2017 企业年度安全关键词! 在进行问卷调查之...

    企鹅号小编
  • 【Go】strings.Replace 与 bytes.Replace 调优

    标准库中函数大多数情况下更通用,性能并非最好的,还是不能过于迷信标准库,最近又有了新发现,strings.Replace 这个函数自身的效率已经很好了,但是在特...

    thinkeridea
  • 修改存储过程

    4.复制以下示例并将其粘贴到查询编辑器中,先创建存储过程。该过程返回 Adventure Works Cycles 数据库中所有供应商的名称、所提供的产品、信用...

    Vincent-yuan
  • 这算是ASP.NET MVC的一个大BUG吗?

    这是昨天一个同事遇到的问题,我觉得这是一个蛮大的问题,而且不像是ASP.NET MVC的设计者有意为之,换言之,这可能是ASP.NET MVC的一个Bug(不过...

    蒋金楠

扫码关注云+社区

领取腾讯云代金券