mutt不是开箱即用的邮件服务器,而是依赖外部SMTP客户端(如msmtp)发送邮件的命令行MUA;默认调用sendmail但现代Linux常无MTA,需手动配置~/.muttrc指向msmtp并设use_from/envelope_from,同时确保~/.msmtprc权限600、启用TLS及专用密码。

mutt 不是开箱即用的“邮件服务器”,它只是一个命令行邮件客户端(MUA),必须配合 SMTP 服务(如 msmtp、sendmail 或系统自带的 MTA)才能真正发信。直接装完 mutt 就跑 mutt -s "test" user@example.com,大概率会卡住或报错:SMTP authentication requires SASL、Connection refused 或 No such file or directory(找不到 sendmail)。
为什么装了 mutt 还发不出邮件?
因为 mutt 默认依赖系统 MTA(比如 sendmail 或 postfix)来投递邮件,但大多数现代 Linux 发行版(尤其是最小化安装的服务器)根本不带 MTA。你看到的“安装成功”只是装了个外壳,没配好投递通道。
- Debian/Ubuntu 默认不装
sendmail或postfix,mutt会尝试调用/usr/sbin/sendmail,但该路径不存在 - CentOS/RHEL 8+ 默认用
ssmtp已废弃,mutt找不到可用的发送代理 - 即使有
sendmail,它默认只接受本地投递(localhost:25),无法直连 Gmail、QQ 邮箱等外部 SMTP
推荐方案:mutt + msmtp(轻量、可控、无需 root)
不用折腾 postfix 或 sendmail 全套,msmtp 是个纯 SMTP 客户端,专为脚本和命令行设计,配置简单且支持 TLS/SSL、密码认证。
- 安装:
sudo apt install mutt msmtp(Debian/Ubuntu)或sudo yum install mutt msmtp(CentOS/RHEL) - 配置
~/.msmtprc(注意权限必须是 600):account default host smtp.qq.com port 587 from yourname@qq.com auth on user yourname@qq.com password your_app_password tls on tls_starttls on tls_trust_file /etc/ssl/certs/ca-certificates.crt
- 测试 msmtp:
echo "test body" | msmtp -a default recipient@example.com—— 成功才继续配 mutt
mutt 怎么调用 msmtp 而不是 sendmail?
mutt 本身不内置 SMTP 实现,它靠 sendmail 接口转发。要让它走 msmtp,得在 ~/.muttrc 里重定义 sendmail 命令:
set sendmail="/usr/bin/msmtp" set use_from=yes set envelope_from=yes set from="yourname@qq.com" set realname="Your Name" set charset="utf-8"
-
sendmail必须指向msmtp的绝对路径(用which msmtp确认) -
use_from和envelope_from缺一不可,否则 QQ/Gmail 会拒收(提示 “Sender address rejected”) - 别漏掉
charset,否则中文主题/正文可能乱码
实际发信命令和常见坑
最简命令:echo "hello world" | mutt -s "测试邮件" -r yourname@qq.com -- recipient@example.com
-
-r指定 reply-to(可选),但from必须和msmtp配置里的from一致,否则认证失败 - 发附件用
-a /path/to/file,路径必须绝对或相对当前目录;多个附件写多次-a - 如果收件人是中文邮箱名(如含“+”号),用双引号包住:
"user+tag@gmail.com" - 报错
Can't canonicalize sender address?检查.muttrc里from是否为空或格式错误(必须是完整邮箱)
mutt 的复杂点不在安装,而在链路打通:.muttrc → sendmail 路径 → msmtp 配置 → SMTP 认证参数 → TLS 证书信任。任意一环断开,邮件就发不出去,而且错误提示往往不直观。最容易被忽略的是 ~/.msmtprc 的文件权限(必须 600)和 QQ/Gmail 的“开启 SMTP”及“生成专用密码”这两步——用网页登录密码是不行的。


















