🧰 Ubuntu 上设置发邮件功能

✔️ 卸掉 ssmtp,改用 msmtp 配合 mailutils,最轻量、最兼容、最稳定。

1️⃣ 安装邮件工具:

清理旧配置,卸载冲突组件

sudo apt remove ssmtp -y
sudo apt purge mailutils -y
sudo rm -f /etc/mail.rc

安装

sudo apt install msmtp msmtp-mta mailutils ca-certificates -y

手动设置 sendmail 路由到(msmtp  /usr/sbin/sendmail → /etc/alternatives/mta → /usr/bin/msmtp)

sudo ln -sf /usr/bin/msmtp /etc/alternatives/mta
sudo ln -sf /etc/alternatives/mta /usr/sbin/sendmail

这一步安装了 mail 命令和配置文件。


2️⃣ 配置邮件发送(以 Gmail 为例):

编辑配置文件:

sudo nano /root/.msmtprc

内容示例

defaults
auth           on
tls            on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile        ~/.msmtp.log

account        gmail
host           smtp.gmail.com
port           587
from           admin@gmail.com
user           admin@gmail.com
password       16位应用专用密码(不是你的 Gmail 密码)

account default : gmail

📌 注意:

  • 不是 Gmail 登录密码,而是你生成的 应用专用密码
  • 你可以在 Google 账户 → 安全性 → 应用专用密码里创建(如“Ubuntu Mail”)

3️⃣ 使用方式 1:在任何 shell 脚本中直接写:

echo "邮件正文内容" | mail -s "邮件标题" 收件人邮箱

示例:

echo "Immich 备份失败,请检查服务状态。" | mail -s "【Immich 告警】PostgreSQL 备份失败" admin@gmail.com

4️⃣ 使用方式 2:多行正文 / 脚本函数中使用

可以这样写更复杂的正文:

mail -s "Immich 备份成功 ✅" admin@gmail.com <<EOF
Hi,

Immich PostgreSQL 已于 $(date "+%F %T") 备份成功。
文件保存在:/mnt/immich/sql-backup

-- 自动备份系统
EOF

5️⃣ 使用方式 3:封装成函数,其他脚本通用

你可以在 /usr/local/bin/send_mail.sh 创建一个通用发送脚本:

#!/bin/bash
# 用法:send_mail.sh "标题" "内容"

SUBJECT="$1"
BODY="$2"
TO="admin@gmail.com"

echo "$BODY" | mail -s "$SUBJECT" "$TO"

赋权:

chmod +x /usr/local/bin/send_mail.sh

以后其他脚本就可以这样调用:

send_mail.sh "Immich 异常告警" "数据库导出失败,请检查 PostgreSQL 容器状态!"

6️⃣ 使用方式 4:发送带附件(可选)

uuencode /path/to/immich.sql immich.sql | mail -s "Immich 手动备份" admin@gmail.com

7️⃣ 在实际脚本中(结合逻辑)示例

#!/bin/bash

BACKUP_DIR="/mnt/immich/sql-backup"
FILENAME="immich_pg_backup_$(date +%F).sql"

if ! docker exec -t immich-db pg_dump -U postgres -d immich > "$BACKUP_DIR/$FILENAME"; then
  echo "Immich PostgreSQL 备份失败,时间:$(date)" | mail -s "❌ Immich 备份失败告警" admin@gmail.com
  exit 1
else
  echo "Immich PostgreSQL 已成功备份于 $(date)" | mail -s "✅ Immich 备份成功" admin@gmail.com
fi
如果觉得我的文章对你有用,请随意赞赏