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を使用するように指示します。
その他のオプションについては、マニュアルページを確認してください。