Linuxで電子メールを送信するためのBash/シェルスクリプト–ハウツー、例
この記事では、Linuxコマンドライン/シェルおよびBash/Shellスクリプトからメールを送信するいくつかの方法を紹介します。
コマンドラインからメールを送信する理由 おそらく通信しないでください。ほとんどの人は、優れたユーザーインターフェイスを備えた電子メールクライアントを使用して、毎日互いにメッセージを送信しますが、タスクの完了時またはイベントの発生時に、コンピューターに電子メール通知を送信させることをお勧めします。
このようなメールアラートは、ディスク容量が不足していることを警告したり、エラーが発生したり電源が切れたりした場合に誰かに通知するためによく使用されます。通知を書き込んで、最新のアプリへの新規ユーザー登録の毎日の概要を提供することもできます。これを可能にするいくつかのツールを例とともに示します。
メール送信に関する注意
この記事の例はすべて、外部SMTPサーバーを使用してメールを送信していることを前提としています。これは、Amazon SESやMailGunなどの専用の電子メール送信サービスである場合もあれば、オンライン電子メールプロバイダー(Gmail、Outlook.com)が提供するSMTPの詳細を使用して電子メールを送信する場合もあります。
この記事では、1つの単純な理由で、自分のSMTPホストから直接メールを設定して送信する方法については説明していません。メッセージが住宅のIPアドレスから送信された場合、メッセージがブロックされる可能性があり、メールアラートかどうかのトラブルシューティングに苦労します。正しく機能していてブロックされている、または単に機能していない。
適切なプログラムの選択
多くのソフトウェアパッケージが電子メールを送信できます–多数。それらすべてを網羅するつもりはありません。ここでは、うまく機能するものを探しているので…
MSMTPはこの仕事に理想的なツールなので、この記事ではそのプログラムの使用方法に焦点を当てていきます。
以前は、SSMTPが私の優先選択でしたが、そのパッケージの開発は停止しました–MSMTPは優れた代替品です。
その他のオプションには、 sendmail 、メール、 およびmutt コマンド。すべてが機能しますが、MSMTPは使いやすく構成が簡単で、システムメールに干渉しない独立した構成を維持できます。
MSMTPを使用した電子メールの送信
MSMTPは、メールを送信するプログラムです(のみ )メールを送信–Bashスクリプトからメールを送信するのに最適です。
MSMTPをインストールすると、次のコマンドを実行してユーザーマニュアルを表示できます。
man msmtp
MSMTPのインストール
Debian / Ubuntuベースのシステムでは、次のコマンドを実行して、必要な MSMTPをインストールします。 パッケージとca-certificates まだインストールされていない場合はパッケージ:
sudo apt update sudo apt install msmtp ca-certificates
sudo コマンドは、この記事全体でroot/管理者権限でコマンドを実行するために使用されます。
MSMTPの構成
MSMTPは、ユーザーごとの構成またはグローバルシステム構成をサポートします。これをグローバル構成で設定して、すべてのサービスがMSMTPを使用してメールを送信できるようにします。
MSMTPには、テンプレートとして使用できる構成ファイルの例が付属しています。使用するには、/etc/フォルダーにそのコピーを作成する必要があります。
sudo cp /usr/share/doc/msmtp/examples/msmtprc-system.example /etc/msmtprc
nanoを使用して構成ファイルを編集します テキストエディタ:
sudo nano /etc/msmtprc
これで、電子メールの送信に使用するSMTPサーバーの詳細を入力できます。異なるサーバーまたはアドレスから送信する場合は、複数のメールアカウントを定義できます。
以下は、2つのGmailアドレスを使用した設定例です。
# Set default values for all following accounts. defaults auth on tls on tls_trust_file /etc/ssl/certs/ca-certificates.crt logfile ~/.msmtp.log # Gmail 1 account gmail1 host smtp.gmail.com port 587 from [email protected] user username1 password password1 # Gmail 2 account gmail1 host smtp.gmail.com port 587 from [email protected] user username2 password password2 # Set a default account account default : gmail1
ファイルを保存する–MSMTPを使用する準備ができました。
メールを送信
MSMTPがセットアップされると、準備が整います。 MSMTPからメールを送信するために追加のソフトウェアは必要ありません。printfを使用するだけです。 メールを作成してmsmtpコマンドにパイプするコマンド:
printf "Subject: Testing\nHello there!." | msmtp -a gmail2 [email protected]
「件名:テスト中\ nこんにちは!」 –これは送信される電子メールです。件名は、件名:を使用して定義されます 件名のテキストが続きます。 \ n 改行を定義し、その後に電子メールの本文テキストが続きます。追加の\n 必要に応じて改行を追加して、書式設定されたプレーンテキストメッセージを作成できます。
-a オプションは、電子メールの送信元の電子メールアカウントを設定するために使用されます。設定されていない場合は、デフォルトが使用されます。
Muttを使用して添付ファイル付きのメールを送信する
添付ファイル付きの電子メールを送信するのは少し注意が必要です。簡単にするために追加のソフトウェアが必要です。 mutt は、スクリプトで使用するための最小限の手間でこの機能を追加する電子メールクライアントです。
次のコマンドを実行してインストールします:
sudo apt install mutt
mutt 依存関係としてPostfixメール転送エージェントをインストールするかもしれません–それはメール設定を要求します。 構成なしを安全に選択できます –接尾辞を構成する必要はありません。この記事で前述したように、スパムフィルタリングが原因で宛先に到達しない可能性があるため、このシステムから直接メールを送信することは望ましくありません。
MSMTPと同様に、 mutt ユーザーごとの構成とグローバル構成があります。すべてのユーザー/サービスが添付ファイル付きのメールを送信できるように、グローバル構成を使用します。 nanoを使用してファイルを作成および編集します 実行によるテキストエディタ:
nano /etc/muttrc
以下の構成を入力します(値は独自のメール構成の値に置き換えられます):
set sendmail="/usr/bin/msmtp" set use_from=yes set realname="Your Name" set [email protected] set envelope_from=yes
mutt が構成され、添付ファイル付きの電子メールを送信するために使用できるようになりました:
mutt -a attachment.txt -s "My Subject" -- [email protected] < "Email message body"
ユーザーごとの構成とグローバル構成
上記で、グローバル構成が定義されています。構成を特定のユーザーにのみ適用する場合(たとえば、各ユーザーが自分のユーザーアカウントからのみ送信できるようにする場合)、代わりにユーザーのホームディレクトリにある次のファイルに構成を配置します。
~/.msmtprc ~/.muttrc
-
Windows 10 に Linux Bash シェルをインストールする方法
Bash Shell は、非常に長い間 Linux の一部であった単純なコマンドライン ユーティリティであり、現在、Microsoft はそれを Windows 10 に直接追加しています。これは、仮想マシンでも、コンテナーでも、Windows 用にコンパイルされたソフトウェアでもありません。代わりに、Linux ソフトウェアを実行するための完全な Windows サブシステムであり、Windows で Android アプリを実行するための Microsoft の廃止された Project Astoria に基づいています。 これで、デュアルモード オペレーティング システムとは何かがわか
-
5 つの実用的な例を含む Bash スクリプト入門チュートリアル
進行中の Unix Sed および Unix Awk シリーズと同様に、Bash スクリプトに関するいくつかの記事を投稿します。実用的な例ですべての bash スクリプト テクニックをカバーします。 シェルは、ユーザー コマンドを解釈するプログラムです。コマンドは、ユーザーが直接入力するか、シェル スクリプトと呼ばれるファイルから読み取るかのいずれかです。ユーザーからの入力を直接読み取る場合、シェルは対話型シェルとして呼び出されます。 シェルは、ファイルからコマンドを読み取って実行するときに、非対話型シェルとして呼び出されます。この場合、シェルはスクリプト ファイルの各行を上から下に読み取