青岛红树林度假世界 | 拍摄地
分类
标签
阿里邮箱 阿里云 发送邮件 掘金 免费 签到 邮件 域名邮箱 原生 自动化 AI ant-design-x biome Blogging brew brew services chat command commitizen component library Custom Element Customization cz-git Demo dns 解析 Example fish shell Fuwari git Github Actions google highlight hyosan-chat i18n JavaScript juejin juejin-helper lib Linux Lit LitElement macos Markdown markdown markdown-it msmtp postgresql postgresql 17 prompts shadow dom shell shikijs shoelace simple-git-hooks slot systemctl template terminal ts Video vite vitepress vue web components Web Components
1111 字
6 分钟
服务器请求阿里邮箱服务器发送邮件
有时在服务器上触发某些事件时, 需要向用户(主要是我自己)发送邮件, 使用 msmtp
实现发送邮件, 如果已经开通了阿里邮箱, 就 无需自己搭建邮件服务器
TIP之前我已经配置好了 阿里邮箱 - 免费版(参考 📚 阿里云配置域名邮箱), 但是阿里邮箱的 API 开放平台 免费版并不支持, 所以无法通过
API
实现发送邮件的功能, 但好在 阿里邮箱 允许第三方客户端收发邮件, 所以只要 配置好阿里邮箱, 并通过 msmtp 发送邮件即可
msmtp
配置好解析规则后, 就需要在服务器上安装并配置 msmtp
msmtp
是一个轻量级的 msmtp
客户端(命令行工具), 适用于 只需要发送邮件的场景
安装 msmtp
sudo apt update && sudo apt install msmtp msmtp-mta -y
# 安装时会提示是否启用 AppArmor, 直接选择 No
配置 msmtp
vim /etc/msmtprc
# 设置默认账户
account default
# 启用 STARTTLS
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# 465 端口使用的是 SSL/TLS, 而不是 STARTTLS
tls_starttls off
# 你的 SMTP 服务器
host smtp.qiye.aliyun.com
# 端口号(465 是 SMTPS,587 是 STARTTLS)
port 465
# 你的邮件账户
auth on
user no-reply@example.com
password your-password
# 发送者邮箱
from no-reply@example.com
这里需要注意:
- 阿里邮箱只开放
465
端口, 所以需要将tls_starttls
设置为off
- 将
example.com
替换为你的域名
这里创建了 msmtp
的配置文件, 配置文件也可以放到 ~/.msmtprc
, 配置好后最好设置一下权限为 600
配置阿里邮箱
我们 不在服务器自己搭建邮件服务, 直接通过阿里邮箱实现发送邮件, 所以此场景下, 服务器需要安装用户发送邮件的客户端(msmtp
), 阿里邮箱需要创建账号并开启 SMTP
创建 no-reply 账号
创建一个用于发送邮件的账号
- 进入 阿里邮箱网页端
- 进入 组织与用户 - 员工账号管理 - 新建账号(
no-reply@example.com
), 必须勾选 开启 IMAP/SMPT 服务
配置安全策略
阿里邮箱默认不允许第三方客户端登录, 需要在 安全管理 - 账号安全策略 中进行配置
- 进入 安全管理 - 账号安全策略
- (可选) 自由端双重认证 > 启用范围 中排除
no-reply@example.com
, 此时可以通过邮件客户端登录no-reply@example
- 三方客户端安全, 开启 允许使用第三方客户端, 启用范围根据需要修改, 必须包含
no-reply@example.com
- 定期修改密码提醒 > 例外账号, 添加
no-reply@example.com
发送邮件
由于是在命令行中调用 msmtp
发送邮件, 所以需要注意一下邮件内容的格式:
Subject: 邮件标题
From: 邮件发送者 <no-reply@example.com>
To: 邮件接收者 <no-reply@example.com>
邮件内容
echo -e "Subject: 这是一封测试发送的邮件, 来自服务器\n\n这里是邮件内容, 仅用于测试" | msmtp me@test.com
WARNING如果内容过于简单, 可能会直接进入邮件接受者的垃圾箱
参考
服务器请求阿里邮箱服务器发送邮件
http://blog.xiaban.run/posts/2025/server-mail/