菜鸟科技网

Ubuntu的mail命令如何配置SMTP服务器发送邮件?详细步骤和常见问题有哪些?

mail 命令是一个在 Linux 终端中发送和阅读邮件的强大工具,它有不同的实现版本,最常见的是 mailutils 包中的版本,它功能丰富且易于使用,另一个流行的是 heirloom-mailx,它的语法和配置稍有不同。

Ubuntu的mail命令如何配置SMTP服务器发送邮件?详细步骤和常见问题有哪些?-图1
(图片来源网络,侵删)

本指南将以 Ubuntu 默认情况下的 mailutils 版本为基础进行讲解,并会指出与其他版本的差异。


安装 mail 命令

如果你的系统中没有 mail 命令,首先需要安装它,推荐安装 mailutils,因为它功能更全面。

# 更新软件包列表
sudo apt update
# 安装 mailutils
sudo apt install mailutils

安装过程中,系统可能会提示你配置邮件发送程序(如 Postfix),对于初学者,最简单的选择是 "站点互联网站",然后选择 "仅发送",这样配置后,mail 命令就可以通过系统的本地邮件代理(如 Postfix)发送邮件,通常无需额外配置即可发送到互联网。


mail 命令的基本用法

mail 命令的核心功能有两个:发送邮件阅读邮件

Ubuntu的mail命令如何配置SMTP服务器发送邮件?详细步骤和常见问题有哪些?-图2
(图片来源网络,侵删)

A. 发送邮件

发送邮件的基本语法是:

mail -s "邮件主题" -a "附件文件路径" 收件人邮箱地址
  • -s:指定邮件的 主题
  • -a:附加一个 文件,可以多次使用 -a 来添加多个附件。
  • 收件人邮箱地址:邮件要发送到的地址。
  • 正文输入:执行命令后,光标会移到下一行,此时你可以输入邮件的正文内容。
  • 结束输入:输入完正文后,按 Ctrl + D 结束输入,或者在新的一行输入一个点号 然后按回车。

示例 1:发送一封简单的文本邮件

mail -s "这是一封测试邮件" your_email@example.com
你好,
这是一封通过 mail 命令发送的测试邮件。
祝好!
[按 Ctrl + D 结束]

示例 2:发送带有附件的邮件

假设你有一个名为 report.pdf 的文件要发送:

Ubuntu的mail命令如何配置SMTP服务器发送邮件?详细步骤和常见问题有哪些?-图3
(图片来源网络,侵删)
mail -s "周报 - 2025年10月" your_email@example.com -a report.pdf

Ctrl + D 结束。


B. 阅读和管理邮件

不带任何参数直接运行 mail 命令,会进入邮件交互模式,用于收件箱管理。

mail

进入交互模式后,你会看到类似下面的输出:

Heirloom mailx version 12.5 7/5/10.  See mailx(1) for help.
"/var/mail/your_username": 2 messages 2 new
>N   1 root@localhost    Mon Oct 23 10:30  23/785   "系统通知"
 N   2 your_friend@exa... Mon Oct 23 11:05  45/1543  "周末聚会"

输出解读:

  • > N 1> 表示当前光标所在行,N 表示新邮件,1 是邮件编号。
  • root@localhost:发件人。
  • Mon Oct 23 10:30:接收日期和时间。
  • "系统通知":邮件主题。

常用交互命令:

命令 描述 示例
h 显示邮件列表(默认命令,按回车也可以) h
数字 显示指定编号的邮件内容 1
n 显示下一封邮件 n
p 重新显示当前正在阅读的邮件内容 p
d 数字 删除指定编号的邮件 d 1 (删除邮件1)
d 删除当前正在阅读的邮件 d
u 数字 取消删除指定编号的邮件 u 1 (取消删除邮件1)
s 文件名 将当前邮件保存到指定文件中 s my_email.txt
m 收件人 回复邮件(进入发送模式) m friend@example.com
r 回复当前邮件给发件人(进入发送模式) r
q 退出 mail 程序,已删除的邮件会被永久移除。 q
x 退出 mail 程序,所有修改(包括删除)都会被丢弃,邮件恢复到进入时的状态。 x
help 显示所有可用命令的帮助

高级配置:通过外部 SMTP 服务器发送邮件

默认情况下,mail 命令依赖于本地系统配置的邮件服务器(如 Postfix),这通常只能发送到本地系统用户或需要复杂的中继配置,更常见的场景是,我们希望 mail 像使用 Outlook 或 Foxmail 一样,通过 Gmail、QQ邮箱、企业邮箱等外部 SMTP 服务器发送邮件。

这需要修改配置文件。mailutils 的配置文件是 /etc/nail.rc(注意是 nail.rc 而不是 mail.rc),heirloom-mailx 的配置文件是 /etc/mail.rc

以配置 Gmail 为例:

  1. 获取 Gmail 的“应用专用密码”

    • 登录你的 Google 账户。
    • 前往 Google 账户的安全性
    • 确保启用了“两步验证”。
    • 在“登录 Google”部分,点击“应用专用密码”。
    • 生成一个新的密码,给这个密码起个名字(如 "ubuntu-mail"),然后它会给你一个16位的字符串。请妥善保存这个密码
  2. 编辑配置文件 使用 sudo 编辑 /etc/nail.rc 文件。

    sudo nano /etc/nail.rc
  3. 添加 SMTP 配置 在文件末尾添加以下内容(请将 your_email@gmail.comyour_16_character_app_password 替换为你的信息):

    # Set Gmail as the default SMTP server
    set smtp-use-starttls
    set smtp=smtp://smtp.gmail.com:587
    set smtp-auth=login
    set smtp-auth-user=your_email@gmail.com
    set smtp-auth-password=your_16_character_app_password
    set from="Your Name <your_email@gmail.com>"
    set ssl-verify=ignore

    参数解释:

    • smtp-use-starttls: 强制使用 STARTTLS 进行加密连接。
    • smtp: 指定 SMTP 服务器地址和端口。
    • smtp-auth: 指定认证方式。
    • smtp-auth-user: 你的邮箱地址。
    • smtp-auth-password: 你刚才生成的16位应用专用密码。
    • from: 设置发件人显示的名称和地址。
    • ssl-verify=ignore: 忽略 SSL 证书验证(可选,用于自签名证书等场景,不推荐在生产环境使用)。
  4. 保存并退出nano 中按 Ctrl + X,然后按 Y,最后按 Enter

配置完成后,你就可以直接使用 mail 命令发送邮件到任何互联网邮箱了,它会自动通过 Gmail 的服务器中转。


常见问题与注意事项

  1. 命令版本差异

    • mailutilsheirloom-mailx 的配置文件名(nail.rc vs mail.rc)和部分命令选项可能略有不同,如果你发现命令不生效,请检查你安装的是哪个版本,并查阅对应的配置文件。
    • 你可以通过 mail --version 来查看版本。
  2. 为什么发件人是 root@localhost 如果你用 sudo 运行 mail 命令,或者直接在 root 用户下运行,发件人地址会显示为 root@your_hostname,要解决这个问题,可以在配置文件中添加 set from="Your Name <your_email@example.com>" 来覆盖默认发件人。

  3. 邮件正文编辑器 默认情况下,mail 命令在输入正文时是逐行编辑的,如果你想使用更强大的编辑器(如 vimnano),可以在配置文件中设置:

    set EDITOR=vim

    这样,当你发送邮件时,会自动调用 vim 来编辑邮件正文。

  4. 邮件没有收到?

    • 检查垃圾箱:邮件可能被误判为垃圾邮件。
    • 检查日志:查看系统邮件日志,tail /var/log/mail.logjournalctl -u postfix(如果你使用的是 Postfix),可以找到详细的发送和投递错误信息。
    • 防火墙:确保服务器的防火墙没有阻止 SMTP 端口(如 25, 465, 587)。
功能 命令示例
发送简单邮件 mail -s "主题" recipient@example.com
发送带附件的邮件 mail -s "主题" recipient@example.com -a file.txt
阅读邮件 mail
在交互模式中 h (列表), 1 (读邮件1), d (删除), q (退出)
配置外部SMTP 编辑 /etc/nail.rc/etc/mail.rc

mail 命令虽然界面简陋,但在服务器管理、自动化脚本(如备份报告、系统警报)中,它是一个非常轻量、可靠且强大的工具,希望这份指南对你有帮助!

分享:
扫描分享到社交APP
上一篇
下一篇