GNU/Linux >> Linux の 問題 >  >> Linux

Linux上の外部SMTPサーバーを使用してコマンドラインからメールを送信する

SMTPサーバー経由でメールを送信

Linux端末のデフォルトのmailコマンドは、ポート25のローカルSMTPサーバー(mta)を使用して電子メールを送信します。ただし、メールの送信に使用する外部SMTPサーバーを指定する必要がある場合があります。

たとえば、PostfixやEximなどのSMTPサーバーをセットアップしたばかりの場合は、それをテストして、電子メールを適切に受信および中継しているかどうかを確認する必要があります。

この外部SMTPサーバーを使用してコマンドラインからメールを送信できるようになると、ローカルマシンにThunderbirdのようなメールクライアントをセットアップする必要がなくなります。

外部のSMTPサーバーを使用してメールを送信するために使用できるmailxとswaksと呼ばれる2つのコマンドラインユーティリティがあります。これらは、bashスクリプトから自動化された方法でメールを送信する必要がある場合に非常に役立ちます。

1。 mailxコマンド

mailxコマンドは、mailutils、heirloom-mailxなどのさまざまなパッケージから利用できます。まず、aptitudeコマンドを使用して、システムで使用可能なmailxパッケージを検索する必要があります。これが例です

$ aptitude search mailx
p   bsd-mailx                                                              - simple mail user agent
p   bsd-mailx:i386                                                         - simple mail user agent
v   mailx                                                                  -
v   mailx:i386

システムが使用しているmailxコマンドを見つけるには、readlinkコマンドを実行します。これが出力例です。

$ readlink -f /usr/bin/mailx
/usr/bin/bsd-mailx
$ readlink -f /usr/bin/mailx
/usr/bin/mail.mailutils

すべてのmailxバリアントが外部SMTPサーバーを使用してメールを送信できるわけではありません。 s-nailパッケージ(heirloom-mailxによってプルされた)からのものだけがそれを行うことができます。

単一のコマンドでSMTP接続の詳細を指定し、すばやく発行して電子メールで送信できるため、heirloom-mailxを使用します。

$ sudo apt-get install heirloom-mailx

次に、次のような外部SMTPサーバーを使用してメールを送信します-

echo "This is the message body and contains the message" | mailx -v -r "[email protected]" -s "This is the subject" -S smtp="mail.example.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="[email protected]" -S smtp-auth-password="abc123" -S ssl-verify=ignore [email protected]

これが同じコマンドのステップバイステップバージョンです-

$ echo "This is the message body and contains the message" | mailx -v \
> -r "[email protected]" \
> -s "This is the subject" \
> -S smtp="mail.example.com:587" \
> -S smtp-use-starttls \
> -S smtp-auth=login \
> -S smtp-auth-user="[email protected]" \
> -S smtp-auth-password="abc123" \
> -S ssl-verify=ignore \
> [email protected]

ポート番号、認証メカニズムなどの正しい設定を使用してください。このコマンドは、背後で行われるSMTP通信の完全な詳細を提供する詳細な出力を生成し、テストとデバッグを非常に簡単にします。

注: パッケージheirloom-mailxは、Ubuntuバージョン18以降から削除されました。次に、s-nailパッケージをインストールする必要があります。

$ sudo apt-get install s-nail

s-nailコマンドは、heirloommailxコマンドと同じです。名前だけが違います。 mailxをs-nailに置き換えて上記と同じコマンドを実行すると、機能するはずです。

最新バージョンのs-nail(14.9.x)を使用している場合、SMTPサーバーの詳細を指定するための構文が少し異なる場合があります。こちらで最新のマニュアルを確認してください

http://manpages.ubuntu.com/manpages/bionic/en/man1/s-nail.1.html

ここでmailxコマンドに関する以前の投稿を確認してください-
Linuxのコマンドラインからメールを送信するための9つのmail/mailxコマンドの例

2。 Swaksコマンド

Swaks(SMTP用のスイスアーミーナイフ)は、SMTPサーバーをテストして、サーバーが適切に機能しているかどうかを確認するために使用できるシンプルなコマンドラインツールです。 TLSもサポートしています。

次のコマンドを使用して、Ubuntu/Debianにswakをインストールします

$ sudo apt-get install swaks

メールを送信します

$ echo "This is the message body" | swaks --to [email protected] --from "[email protected]" --server mail.example.com --auth LOGIN --auth-user "[email protected]" --auth-password "abc123" -tls

すべてのオプションはかなり自明です。 「--server」オプションは使用する外部SMTPサーバーを指定し、「-auth」は認証のタイプを指定します。 「-tls」オプションは、SWAKにSTARTTLSを使用するように指示します。

その他のオプションについては、マニュアルページを確認してください。


Linux
  1. mailコマンドを使用してLinuxターミナルまたはスクリプトから電子メールを送信する

  2. Gmailを使用してコマンドラインから画像を添付してメールを送信する最も簡単な方法は?

  3. Linuxのコマンドラインからメールを送信するための9つのmail/mailxコマンドの例

  1. コマンドラインからのLinuxサーバーの移行

  2. Linux で Mailx を使用して外部ユーザーにメールを送信する方法

  3. コマンド ラインから電子メールを送信するにはどうすればよいですか?

  1. Linux 端末からメールを 1 行で送信する

  2. Linux のコマンドラインから socket.io websocket にメッセージを送信するにはどうすればよいですか?

  3. Linux コマンドラインから gpg 暗号化メールを自動的に送信するにはどうすればよいですか?