从 Linux 命令行发送电子邮件的最明智方法
尽管自第一封电子邮件发送以来已经过去了半个世纪,我们仍然每天依赖古老的技术。现代电子邮件客户端和服务时尚、易于使用,并且包含大多数用户不知道如何使用的更高级功能。
然而,有时您所需要做的只是发送一条简单的纯文本消息,并且您可能并不总是能够启动 GUI 应用程序或登录到 Web 邮件界面来完成工作。在这种情况下,了解如何从 Linux 命令行发送电子邮件会很方便,本文将介绍如何做到这一点。
在我们开始之前
在我们描述从 Linux 命令行发送电子邮件的最智能方法之前,您可以通过阅读本文了解以下内容:
您将学习通过电子邮件提供商的 SMTP 服务器向任何电子邮件地址发送电子邮件。
您将不会学习如何设置电子邮件服务器并使用它直接发送电子邮件。
为什么不?因为无论如何没有人会接受从您的电子邮件服务器发送的电子邮件。如您所知,垃圾邮件是电子邮件中的一个大问题,几乎所有电子邮件服务提供商和邮件服务器现在都至少包含基本的垃圾邮件防护,这会导致来自可疑来源的所有电子邮件被拒绝。
拥有 DIY 电子邮件服务器的狂热 Linux 用户被认为是可疑的电子邮件来源。此外,大多数互联网服务提供商都会阻止端口 25,这是用于 SMTP 连接的标准端口,因此您很可能一开始就无法发送消息。
使用像 Gmail 这样的电子邮件服务(我们将在本文中使用)比费尽心思让家庭电子邮件服务器正常工作要容易得多。
如果您还没有这样做,请登录您的 Gmail 帐户,然后从“设置”中的“转发和 POP/IMAP”选项卡启用 IMAP 访问。您还应该允许使用安全性较低的登录技术的应用程序。
方法#1:杂种狗
Mutt 是一个值得尊敬的电子邮件客户端。它由 Michael Elkins 于 1995 年创建,此后一直在以稳定的速度接收更新。尽管 Mutt 具有命令行特性,但它支持许多有用的功能,包括键盘宏、PGP/MIME、消息线程、附件等等。您可以将其与任何提供 POP3 或 IMAP 访问的电子邮件服务一起使用。
首先,您需要从发行版的存储库安装 Mutt:
然后你可以启动 Mutt:
系统将要求您创建一个邮件目录。选择“是”来创建它。 Mutt 应该启动并告诉您没有邮箱打开。现在您已经确认 Mutt 正在工作,是时候创建一些基本目录和主配置文件(称为 muttrc)了。
$ mkdir ~/.mutt/cache/bodies
$ touch ~/.mutt/certificates
$ touch ~/.mutt/muttrc
现在,在您喜欢的文本编辑器中打开配置文件,然后复制并粘贴以下配置(确保将默认设置更改为与您的 Gmail 电子邮件帐户匹配的设置):
set smtp_url = "smtp://username@smtp.gmail.com:587/"
set smtp_pass = $imap_pass
set ssl_force_tls = yes
# IMAP
set imap_user = username@gmail.com
set imap_pass = password
set spoolfile = imaps://imap.gmail.com/INBOX
set folder = imaps://imap.gmail.com/
set record="imaps://imap.gmail.com/[Gmail]/Sent Mail"
set postponed="imaps://imap.gmail.com/[Gmail]/Drafts"
set mbox="imaps://imap.gmail.com/[Gmail]/All Mail"
set header_cache = "~/.mutt/cache/headers"
set message_cachedir = "~/.mutt/cache/bodies"
set certificate_file = "~/.mutt/certificates"
# EDITOR
set editor = "nano"
您现在可以启动 Mutt,它应该会自动为您获取电子邮件。要从命令行发送第一封电子邮件,请按键盘上的“m”。选择不撤回推迟的邮件,然后输入收件人的电子邮件地址、电子邮件主题,最后输入邮件正文。
在 Mutt 发送电子邮件之前,它允许您对其进行修改并附加文件。一旦您对此感到满意,您可以按“y”发送。从 Linux 命令行发送电子邮件就是这么简单!
方法#2:aerc
当您得知 Mutt 不是唯一的 Linux 命令行电子邮件客户端时,您可能不会感到惊讶,尽管它肯定是最受欢迎的客户端。虽然描述 Linux 的所有命令行电子邮件客户端超出了本文的范围,但我们希望您了解另外两个客户端,首先是 aerc。
aerc 旨在高效且可扩展,为多个帐户、Vim 风格的键绑定、能够呈现 HTML 电子邮件的交互式终端 Web 浏览器等提供支持。
最重要的是,aerc 比 Mutt 更容易设置,但它有可能不会包含在您的发行版的存储库中。这种情况下,你可以按照官方说明上的说明自行编译。
当您的系统上安装了 aerc 后,您可以使用“aerc”命令启动它。 Aerc 包含一个方便的设置向导,可帮助您配置帐户 - 无需手动编辑配置文件!
输入基本帐户信息并配置一些基本设置后,您可以阅读捆绑的教程或直接进入收件箱。
要撰写新消息,您只需按 Shift + C。
方法#3:swak
要以最智能的方式从 Linux 命令行发送电子邮件,您需要跳出框框思考并以非预期的方式使用软件工具。 swaks 应用程序是一个通用 SMTP 事务测试器,可用于通过 Gmail 和其他提供商发送电子邮件。
首先像安装任何其他应用程序一样安装它:
现在,输入以下命令(确保包含您自己的 Gmail 地址)来测试您的连接:
系统会要求您输入 Gmail 用户名(您的电子邮件地址)和密码。您应该会收到自己的电子邮件地址,确认测试成功。要发送实际的电子邮件,请使用以下语法:
这就是您如何使用 swaks 和单个终端命令发送电子邮件。
方法#4:sSMTP
sSMTP 是一种电子邮件传送程序,旨在将邮件从计算机传送到邮件中心(SMTP 服务器)。这意味着您可以使用它向其他人发送电子邮件,但不能使用它接收其他人发送给您的电子邮件。
您可以通过从存储库安装相应的包来安装 sSMTP:
配置是通过编辑 /etc/ssmtp/ssmtp.conf 配置文件来完成的:
root=username@gmail.com
# The mail server (where the mail is sent to), both port 465 or 587 should be acceptable
# See also https://support.google.com/mail/answer/78799
mailhub=smtp.gmail.com:587
# The address where the mail appears to come from for user authentication.
rewriteDomain=gmail.com
# The full hostname. Must be correctly formed, fully qualified domain name or Gmail will reject the connection.
hostname=yourlocalhost.yourlocaldomain.tld
# Use SSL/TLS before starting negotiation
TLS_CA_FILE=/etc/ssl/certs/ca-certificates.crt
UseTLS=Yes
UseSTARTTLS=Yes
# Username/Password
AuthUser=username
AuthPass=password
AuthMethod=LOGIN
# Email 'From header's can override the default domain?
FromLineOverride=yes
要发送电子邮件,您需要安装 mailutils(基于 Debian 的系统)或 mailx(基于 RHEL 的系统)软件包,以使用 mail 命令将电子邮件传递到 sSMTP,以便将其传送到 Gmail。像这样:
方法#5:远程登录
我们想了解的最后一种方法是所有方法中最极客的一种,但它可能会在你生活中的某个时刻派上用场,所以至少意识到它的存在是很好的。此方法依赖于 Telnet,这是一种客户端-服务器协议,用于通过网络建立远程纯文本连接。
此方法的优点在于您的 Linux 发行版上很可能已经安装了 Telnet 客户端。不太好的地方是需要执行很多步骤。由于我们在本文中使用 Gmail,因此您需要确保您的 telnet 客户端支持 SSL 加密:
然后,您可以启动 Telnet 客户端并将其连接到 Gmail 的 SMTP 服务器:
由于不自我介绍是不礼貌的,你可以这样向服务员打招呼:
如果您收到肯定答复,则可以继续进行身份验证:
首先,输入以 Base64 编码的用户名,然后输入同样以 Base64 编码的密码。 SMTP 服务器每次应响应“334 UGFzc3dvcmQ6”。
现在是时候指定您的电子邮件地址了:
然后,指定收件人:
最后,告诉 SMTP 服务器您要写一封电子邮件:
您现在可以输入电子邮件的主题,然后按 Enter 键确认。继续处理邮件正文并按 Enter 键确认。要关闭您的电子邮件,请输入:
。
您应该看到如下所示的确认消息:250 2.0.0 OK 1630506266 n10sm56478ejk.86 – gsmtp
输入以下命令终止连接并发送电子邮件:
结论
从 Linux 命令行发送电子邮件是否不切实际?也许吧,但你永远不知道这个技能什么时候有用。即使您从未充分利用过它,至少您可以自我感觉良好,因为您知道自己作为 Linux 用户已经变得更先进了。