Linux如何在Shell中发送邮件通知_Linux Shell中发送邮件通知教程

梦枫吖_8406

梦枫吖_8406

2026-04-04

501人浏览

原创

linux系统中mail命令需依赖本地mta(如postfix/sendmail)才能发外网邮件;先用which mail确认命令存在,再用mailq或postqueue -p检查mta状态,debian默认无mta,centos/rhel 7+默认装postfix;发信失败常因dns、rdns、防火墙或垃圾邮件策略导致。

linux如何在shell中发送邮件通知_linux shell中发送邮件通知教程

Linux Shell 中发邮件,别急着装 mailx 或配 SMTP —— 大多数系统自带 mail 命令就能用,但默认不发外网邮件,得先确认本地 MTA 是否在跑。

怎么判断系统有没有可用的邮件发送能力

直接运行 which mail 或 which sendmail。如果返回路径(比如 /usr/bin/mail),说明命令存在;但存在 ≠ 能发外网邮件。接着检查本地邮件队列:mailq(对应 sendmail)或 postqueue -p(对应 postfix)。若报 “command not found”,大概率没装 MTA,mail 命令只是个空壳。

  • Debian/Ubuntu 默认不装 MTA,mail 是 mailutils 提供的,但背后没服务,只能写入本地 mbox
  • CentOS/RHEL 7+ 默认装了 postfix,启动后 mail 才真能发出去
  • 用 systemctl is-active postfix 或 systemctl is-active sendmail 看状态

mail 命令发邮件的基本写法和常见失败点

最简用法:echo "body" | mail -s "subject" user@example.com。但它依赖本地 MTA 正确配置:收件人域名要能被解析,发信主机要有反向 DNS(很多外网邮箱拒收无 rDNS 的邮件),且不能被当成垃圾邮件。

  • 加 -r 指定发件人(如 mail -r "alert@myhost.local" -s "test"),否则可能被当匿名信拦截
  • 附件要用 uuencode 或改用 mutt:echo "log" | mutt -s "log" -a /var/log/syslog -- admin@example.com
  • 如果收件人收不到,先查 /var/log/mail.log(Debian)或 /var/log/maillog(RHEL),看有没有 “relaying denied” 或 “connection refused”

不想配 MTA?用 curl 调第三方 SMTP API 更稳

绕过本地邮件服务,直接走 HTTPS 发送,适合脚本告警。例如用 Mailgun、SendGrid 或腾讯云 SES,只需 API Key 和模板 ID。

  • Mailgun 示例:curl -s --url 'smtps://api:key-xxx@smtp.mailgun.org:465' --ssl-reqd --mail-from 'alert@mg.mydomain.com' --mail-rcpt 'admin@example.com' --upload-file /tmp/email.txt,其中 /tmp/email.txt 是符合 SMTP 协议的原始邮件内容(含 To:、From:、空行分隔头与正文)
  • 更轻量做法:用 Python 的 smtplib 写三行脚本,比 shell + curl 更易处理认证和编码
  • 注意:不要把 API Key 硬编码进脚本,用 export MAILGUN_API_KEY="xxx" + ${MAILGUN_API_KEY} 引用

真正卡住人的往往不是“怎么写命令”,而是“为什么明明没报错却收不到邮件”——本地 MTA 配置、DNS 解析、反垃圾策略、防火墙屏蔽 25/465 端口,这些环节任何一个断掉,mail 就静默失败。建议首次调试时,先用 logger 记日志,再盯 /var/log/mail* 的每一行输出。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

2023.06.14

3503

6

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

2023.10.30

795

4

alert怎么实现换行
alert怎么实现换行

alert通过使用br标签来实现换行。更多关于alert相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.07

1277

8

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.08.16

5390

6

SSL检测工具介绍
SSL检测工具介绍

SSL检测工具有SSL Labs、SSL Check、SSL Server Test、SSLMate、SSL/TLS Analyzer等。详细介绍:1、SSL Labs是一个由Qualys提供的在线SSL检测工具,可以评估服务器证书的部署情况、加密套件、协议支持等方面的安全性,它提供了一个详细的报告,包括证书的颁发者、有效期、安全性配置等;2、SSL Check等等。

2023.10.20

730

3

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3930

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3373

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2533

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6110

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习