Linux 终端邮件管理命令 mailx

2018年7月24日 1.11k 次阅读 0 条评论 2 人点赞

很多时候我们需要通过邮件来发送消息通知维护人员当前的服务器状态,Linux 服务器下有很多种选择,而 Ubuntu 默认的情况下,mail 虚拟命令指向的就是 s-nail。

[root@localhost ~]# which mail
/usr/bin/mail
[root@localhost ~]# ls -l /usr/bin/mail
lrwxrwxrwx 1 root root 22 7月  23 10:41 /usr/bin/mail -> /etc/alternatives/mail
[root@localhost ~]# ls -l /etc/alternatives/mail
lrwxrwxrwx 1 root root 15 7月  23 10:41 /etc/alternatives/mail -> /usr/bin/s-nail

当然,也可以安装下面列举的其他邮件命令来替换掉 s-nail 这个程序,有兴趣可以自己研究一下:

s-nail 14.8.6-1kord
mailutils 1:2.99.99-1kord2
bsd-mailx 8.1.2-0.20160123cvs-2kord

命令选项

选项
说明
-b 密送给一个联系人
-c 抄送给一个联系人
-f 读取邮件内容
-n 启动时禁止读取 /etc/s-nail.rc 文件
-s 发送邮件的主题
-a 需要发送的附件文件
-v 打印邮件详细发送信息,并等待邮件发送成功才返回

发送邮件

发送邮件的方式有很多种,可以选择其中一种适合自己的方式。

标准输入编写邮件

这种方式直接在终端输入邮件内容,然后按 Ctrl + D 结束输入。

[root@localhost ~]# mail -s "邮件主题" 10086@qq.com
hello  world
^D

管道模式

这种模式其实也是标准输入类似原理的另外一种使用模式,自然能使用终端模式就能使用管道模式。

[root@localhost ~]# echo "邮件正文" | mail -s "邮件主题" 10086@qq.com

文件重定向模式

好吧,其实也很好理解,很多命令都是包含这三种接受数据输入的方式。

[root@localhost ~]# mail -s "邮件主题" 10086@qq.com < file.txt

配置外部 smtp

上面未经配置的 mail 是直接通过本机发送邮件,这样的邮件会显示为<本地用户名@Host>,这也是最简单的方式,不过这种方式最容易被接收方拦截,因为这会被当做是垃圾邮件轰炸,我们当然不希望好不容易发送的邮件被邮件屏蔽系统给过滤掉,所以除了看天意之外,最好的方式就是利用正规的第三方邮件系统开放的 smtp 协议。我这里以腾讯企业邮为示例,其他邮箱也可以找到类似的设置方法。

按照上图打开自己的邮箱 SMTP 服务,然后进入 Linux 打开配置文件 /etc/s-nail.rc

[root@localhost ~]# sudo cat > /etc/s-nail.rc << EOF
set from=10086@xxx.com
set smtp=smtps://smtp.exmail.qq.com:465
set smtp-auth-user=10086@xxx.com
set smtp-auth-password=password
set smtp-auth=login
EOF

发送附件

附件通过 s-nail 是很简单的,直接通过 -a 参数接上文件名即可。

[root@localhost ~]# echo "邮件正文" | mail -s "邮件主题" -a file.txt 10086@qq.com

发送紧急邮件

某些时候,需要标识发送出去的邮件为紧急状态,这样可以使接受客户端第一时间标记该邮件状态,在很多客户端上都是直接设置一个紧急的标识项即可,那么在终端又是如何使用呢?很简单,添加一个属性即可。

[root@localhost ~]#  echo "邮件正文" | mail -s "$(echo -e "邮件主题\nX-Priority: 1")" -a file.txt 10086@qq.com

等待邮件发送成功,你就可以在接受邮件客户端看到标记为紧急的邮件已经到达。

标签:
最后编辑:2018年7月24日

文章评论(0)