Linuxで生の電子メールメッセージを送信する方法は?

Linuxで生の電子メールメッセージを送信する方法は?

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

sendmailpostfix / 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は、Muttや他のメールユーザーエージェント(MUA)からメールを送信するために使用できるSMTPクライアントです。最終的な配信を担当するSMTPサーバー(無料の電子メールプロバイダなど)にメッセージを転送します。プロファイルを使用すると、さまざまな構成のさまざまなSMTPサーバーを使用するように簡単に構成できるため、モバイルクライアントに最適です。

答え2

残念ながら、sendmail他のmailxSMTPサーバーを指定することはできません。しかし、Andrzejの答えをsshと組み合わせることができます。-t読んでいるファイル/データから受信者を読むには、そのオプションを使用します。

cat <messagefile> | ssh user@mailhost /usr/sbin/sendmail -i -t

<messagefile>MIMEメッセージを含むファイルで、mailhostはSMTPサーバーです。userSMTPサーバーのログイン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

関連情報