Linux怎么通过命令行发送邮件 Linux下mailx配置SMTP详解
Air Explorer Pro是一款跨平台多网盘管理工具,可实现一站式完成不同网盘间文件的互传、搜索和同步等操作。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。
在Linux环境下通过命令行发送邮件,是很多运维和开发人员需要掌握的基础技能。但不少朋友在配置时都会遇到一个共同的困惑:明明照着教程配好了/etc/mail.rc,为什么邮件就是发不出去? 其实,mail或mailx命令本身并不发送邮件,它只是一个客户端,本质是调用外部的SMTP服务。所以,配置的核
在Linux环境下通过命令行发送邮件,是很多运维和开发人员需要掌握的基础技能。但不少朋友在配置时都会遇到一个共同的困惑:明明照着教程配好了/etc/mail.rc,为什么邮件就是发不出去?

其实,mail或mailx命令本身并不发送邮件,它只是一个客户端,本质是调用外部的SMTP服务。所以,配置的核心在于让这个客户端能够正确地连接上你的邮件服务商(比如QQ邮箱、Gmail等)。直接修改/etc/mail.rc文件确实是最快的方法,但其中端口、认证方式和SSL证书这三项配置,只要有一处不匹配,就会导致静默失败——尤其是在默认封锁25端口的云服务器上,不切换到465或587端口,几乎不可能成功。
为什么 mail 命令发不出去?先查这三件事
大多数配置失败,问题并不在于语法写错,而是底层网络或认证就没通。排查可以按以下顺序进行:
- 先用
nc -zv smtp.qq.com 465测试端口连通性。看到返回succeeded才算网络通畅;如果连接超时,那很可能是服务器防火墙或云服务商屏蔽了该端口。 - 执行
echo "test" | mail -s "test" your@domain.com后,立刻去检查/var/log/maillog日志文件。寻找SSL handshake failed或Authentication failed这类关键错误信息。 - 仔细核对认证信息:授权码是否填错、
smtp-auth-user和from地址是否完全一致、是否错误地使用了邮箱登录密码而非专用的授权码——这三个是最高频的错误点。
mail.rc 配置必须写的五项(以 QQ 邮箱为例)
配置时务必精简,只保留关键项,避免注释和空行导致解析异常。以下是QQ邮箱的标准配置:
set from="yourname@qq.com" set smtp="smtps://smtp.qq.com:465" set smtp-auth-user="yourname@qq.com" set smtp-auth-password="your_16bit_app_password" set smtp-auth=login
这里有两点需要特别注意:smtp的值必须包含smtps://前缀和端口号,不能只写域名;from和smtp-auth-user的邮箱地址必须一字不差,包括大小写和域名,否则腾讯系邮箱会直接拒绝认证请求。
465 端口必须加 SSL 配置,否则连接被重置
即使你已经正确写上了smtps://smtp.qq.com:465,mailx在默认情况下仍可能尝试使用STARTTLS协议而非直接的SSL握手。因此,必须额外补充以下两行配置:
set ssl-verify=ignore set nss-config-dir=/etc/pki/nssdb
这背后的原因是,mailx底层依赖NSS库来处理SSL连接。如果不指定信任证书的目录或忽略验证,它会在证书链校验阶段失败。如果你的系统尚未安装相关工具,需要先执行yum install nss-tools(CentOS系列)或apt install libnss3-tools(Ubuntu/Debian系列)。
测试命令要带 -v 参数才看得清哪步断了
测试时,不要只用简单的echo "ok" | mail -s "test" a@b.com。加上-v(verbose)参数,才能看到完整的SMTP交互日志,这对于定位问题至关重要:
echo "body" | mail -v -s "subject" a@b.com
典型的成功日志,末尾会显示Sending message...和250 Ok。如果命令卡在EHLO之后没有响应,基本可以断定是端口不通。如果看到535 Error: authentication failed,那就需要回头仔细核对smtp-auth-user和授权码了。
说到底,在云服务器上配置命令行发邮件,真正的难点从来不是记住那几行配置,而是确保你使用的端口、协议和证书路径这三者能严丝合缝地匹配起来——缺了任何一环,mail命令都只会沉默地失败,不留下太多线索。
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。





