web-dev-qa-db-ja.com

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を介してメッセージを送信する必要がありますサーバー(ローカルサーバーのメールキューではありません)。

この目的に使用できるコマンドラインユーティリティは何ですか?

6
Chris

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/stretch/msmtp

パッケージ:msmtp(1.6.6-1)
サーバープロファイルをサポートする軽量SMTPクライアント

msmtpは、Muttおよびおそらく他のMUA(メールユーザーエージェント)からメールを送信するために使用できるSMTPクライアントです。最終的な配信を処理するSMTPサーバー(無料のメールプロバイダーなど)にメールを転送します。プロファイルを使用すると、さまざまな構成のさまざまなSMTPサーバーを使用するように簡単に構成できるため、モバイルクライアントに最適です。

7
AnFi

残念ながら、sendmailおよびmailxでは、別のSMTPサーバーを指定できません。しかし、Andrzejからの回答をsshと組み合わせることができます。私は-tオプションを使用して、読み取られているファイル/データから受信者を読み取ります。

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

<messagefile>はMIMEメッセージを含むファイルで、mailhostはSMTPサーバーです。 userは、SMTPサーバー上のログインIDです。

2
Deathgrip

s-nailmailxの大幅に強化された代替手段であり、他の多くの改良点の中で、コマンドラインで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

1
cas