如果我有 MIME 消息的完整内容,Linux 上发送消息的最佳实用程序是什么? MIME 消息将包括完整的标头和邮件正文,例如:
Received: (qmail 32389 invoked by uid 0); 13 Jun 2017 09:24:51 -0400
Date: Tue, 13 Jun 2017 09:24:51 -0400
From: [email protected]
To: [email protected]
Subject: Test Email
Message-ID: <593fe7a3.IgSR+/BLy+NYXlVZ%[email protected]>
User-Agent: Heirloom mailx 12.5 7/5/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
The mail body goes here
我希望能够将上述内容提供给命令行实用程序,然后该实用程序将“按原样”重新处理消息,而无需解析发件人、主题等字段。它应该通过指定的外部 SMTP 发送消息服务器(不是本地服务器的邮件队列)。
我可以使用什么命令行实用程序来实现此目的?
答案1
您可以使用sendmail
postfix/exim/... 提供的“sendmail Look alike”。
/usr/sbin/sendmail -i -- $recipients < message_file
-i
- 不要特殊对待带有前导点的行
您可以使用更奇特的“sendmail Look alike”(例如由 提供msmtp
)通过另一个 smtp 主机直接发送,无需“系统范围”配置。
msmtp
是在 debian 中分发的,因此它很可能包含在其他 Linux 发行版中。
https://packages.debian.org/search?searchon=names&keywords=msmtp
https://packages.debian.org/bookworm/msmtp
软件包:msmtp(...)
支持服务器配置文件的轻型 SMTP 客户端msmtp 是一个 SMTP 客户端,可用于从 Mutt 和可能的其他 MUA(邮件用户代理)发送邮件。它将邮件转发到 SMTP 服务器(例如免费邮件提供商),由该服务器负责最终投递。使用配置文件,可以轻松地将其配置为使用具有不同配置的不同 SMTP 服务器,这使其成为移动客户端的理想选择。
答案2
不幸的是sendmail
,mailx
不允许您指定不同的 SMTP 服务器。但你可以将 Andrzej 的答案与 ssh 结合起来。尽管我将使用该-t
选项从正在读取的文件/数据中读取收件人。
cat <messagefile> | ssh user@mailhost /usr/sbin/sendmail -i -t
<messagefile>
是包含 MIME 消息的文件,mailhost 是 SMTP 服务器。user
是 SMTP 服务器上的登录 ID。
答案3
蜗牛是一个大大增强的替代方案mailx
,除了许多其他改进之外,还允许您在命令行上指定 SMTP 服务器。
例如
s-nail -S "smtp=smtp://remote-server:port" < message.txt
它甚至支持加密的 SMTP(使用 STARTTLS、SMTPS 或 SUBMISSION)和 SMTP AUTH。man s-nail
详情请参阅。
s-nail
可以为多个 Linux 发行版预先打包(例如,在 debian apt-get install s-nail
.