Linux 命令速查
网络 man ssmtp

ssmtp

极简的 sendmail 兼容 SMTP 转发客户端(已过时)

返回

补充说明

ssmtp 是一个只做“转发”的 MTA:它不接受本地投递,也不排队重试,而是把本机程序产生的邮件直接通过上游 SMTP 服务器(常见是邮件服务商的中继)发送出去。它提供与 sendmail 兼容的命令行接口,因此 cron、PHP、Nagios 等只认 sendmail 的程序可以直接使用。

配置集中在 /etc/ssmtp/ssmtp.conf,关键项有 mailhub、AuthUser、AuthPass、FromLineOverride、UseTLS、UseSTARTTLS;/etc/ssmtp/revaliases 用于把本地用户映射成对外发件地址。配置文件含明文密码,权限应设为 640 且属主为 root:mail。

ssmtp 已停止维护,Debian 等发行版建议改用 msmtp 或 nullmailer,二者的 sendmail 兼容接口类似。它没有本地邮箱、没有队列,上游不可达时邮件会直接失败,不适合作为完整邮件服务器。

语法

ssmtp [选项] [收件人...]
ssmtp -t < 邮件内容

选项

  • -t:从邮件头(To/Cc/Bcc)中读取收件人
  • -v:显示与 SMTP 服务器交互的详细过程
  • -F 全名:设置发件人显示名
  • -f 地址:设置信封发件地址

实例

# 安装(Debian/Ubuntu)
sudo apt install ssmtp

# 配置上游 SMTP 服务器
sudo tee /etc/ssmtp/ssmtp.conf >/dev/null <<'EOF'
mailhub=smtp.example.com:587
AuthUser=bot@example.com
AuthPass=your-password
UseSTARTTLS=YES
FromLineOverride=YES
EOF

# 发送一封测试邮件
printf 'Subject: test\n\nhello from ssmtp\n' | ssmtp you@example.com

# 兼容 sendmail 的调用方式
echo -e "Subject: cron\n\njob done" | sendmail -t

参考链接