Linuxコマンドラインでノンストップで作業する開発者であろうと、管理システムからログやその他のデータを抽出したいサーバー管理者であろうと、コマンドラインからメールを送信する方法を知ることは非常に役に立ちます。
この記事では、端末からメールを送信する方法の例を見つけることができます。 しんのカスタム構成およびタッチの設定方法などについてSMTP接続へのメールアカウントまたはメールサービス提供者にあります。, んのインストール方法は、必要なコンソールメーラのパッケージを背景にはコマンドラインオプションに基づくパッケージのドキュメントへの対応等です。
コマンドラインメーラパッケージのセットアップ
チュートリアル全体のすべてのメーラパッケージはDebianの高度なパッケージマネージャから入手できるので、以下の例のインストール手順はすべての展示されたパッケージに使用できます。,
これらのソフトウェアは、Linuxシステムのディストリビューションに応じて、yum
またはdnf
などの他のデフォルトパッケージマネージャーによってインストールされる可能性があることに注意してください。
ほとんどの場合、sendmail
またはpostfix
各Linuxディストリビューションですぐに利用できるか、少なくとも同様のブログ記事が言う 私は不運だか、他の人が間違っていたが、私は手動でインストールしなければならなかった。 ただし、必須事項と位置づけ、そのうちの一つのメールします。,
SSMTPパッケージでSendmailをセットアップする
sendmail
とSSMTPパッケージを続行します。 SSMTPには、sendmail
パッケージが含まれており、構成が容易になります。sendmail
それ以外の場合はかなり難しいです。
ステップ1., パッケージがインストールされている場合、コマンドが実行され、コマンドを実行しようとしている間にプロンプトが変更され、カーソルが点滅し、Recipient names must be specified
sendmail
—– 結論:このパッケージをインストール。,
パッケージがインストールされていない場合、警告メッセージとインストール方法の提案が表示されます。
この例では、sendmail
コマンド SSMTPパッケージを追加した後、このコマンドとssmtp
コマンドは両方とも機能し、ターミナルのコマンドプロンプトを変更します。 それを見てみましょう!
ステップ2。, Sendmailコマンドラインメーラーパッケージのインストール
端末の出力が示唆しているように、必要なパッケージをインストールするには、Advanced Package Managerのinstallコマンド(通常はroot権限)を実行する必要があります。 前述したように、構成の複雑さを抽象化すると、sendmail
構成がはるかに簡単になります。 これはSSMTPで行うことができます:
sudo apt install ssmtp
ステップ3。 インストールの確認
インストールが完了したら、sendmail
がメッセージを転送できるかどうかを確認できます。, ターミナルに以下のコードを入力します。
echo "Subject: hello" | sendmail [email protected]
すべてが正常に動作する場合は、メールを送信する必要があります。 ここでは、"hello"
sendmail
コマンドにパイプされた文字列が送信されたメッセージの件名になりますが、定義された電子メールアドレスは当然電子メールの受信者です。
コマンドを実行します。.. そして、おっと:sendmail: Cannot open mailhub:25
。 この理由は、mailhubの設定をまったく提供していなかったためです。 メッセージを転送するには、SMTPサーバーを設定する必要があります。, それはSSMTPが本当にうまく機能するところです:設定ファイルを一度編集するだけで、あなたは行ってもいいです。
ステップ4. SSMTPの設定
設定ファイルを見つけましょう/etc/ssmtp/ssmtp.conf
。 ここでは、SMTPリレーを設定するには、以下のコードを配置する必要があります。
これは、実際に転送する外部サービスを設定することを意味します
あなたの たとえば、Gmailに資格情報を提供すると、メールボックスの”送信済みメール”ディレクトリに端末から送信されたメッセージが表示されます。 構成も他のサービスと似ています。,
これは、sendmail
の基本構成と、頻繁に使用されるコマンドラインメーラーパッケージのインストール手順でした。 次に、他のさまざまなパッケージをインストールして試してみます。
SSMTPコマンドを使用してメールを送信する
これは、メール配信用に設定したばかりの素敵な小さなツールです。 そのようman
ページが示唆するように、それは最小限のエミュレータですsendmail
。 そのため、SSMTPでは、LinuxコマンドラインからSMTPサーバーを介して電子メールを転送できます。, これは、適切な設定ファイルを使用してmailhubに接続する手段を提供します。 設定ファイルが正しく設定されていれば、コマンドラインメール送信に関する心配はすべて消えます。
SSTMPコマンドの基本的な実装:
あなただけのSSMTPを使用する場合、コマンドは次のようになります:
ssmtp [email protected] < mail.txt
ssmtp
コマンドに続いて、あなたは、電子メール本文に表示されますファイルを含めることができ、受信者アドレスを置く必要があります。 ここで定義することができヘッダーのメッセージ一覧を更に受賞者およびコンテンツタイプを設定します。, この方法でHTMLメールを送信できます。 SSMTPはあなたのメッセージを解釈し、提供された値を適切に使用します。 ここにあなたが送るかもしれないHTMLの例があります:
ssmtpでそれ以上のオプションを与えることはできません。
トラブルシューティング:
コマンドラインで次のエラーが発生した場合:
これは、GmailがSSMTPを安全なアプリケーションとして扱っていないためです。 このエラーを取り除くには、Gmailアカウントの設定を変更する必要があります–あなたは同様にそこに潜在的なリスクに関する詳細を検索することがで,
Sendmailコマンドを使用してメールを送信する
かなりの時間のためにsendmailはUNIXの世界からの古典的なメール転送エージェントです。 1979年に初めて導入され、高度に設定可能な性質とスケーラビリティにより、サーバー管理者にとってデフォルトのgo-toになりました。,
ssmtp
コマンドで基本的なメールを送信する方法をすでに見てきましたので、sendmail
:
echo "Subject: hello" | sendmail -v [email protected] < mail.txt
-v
引数を投げました。目に見える。
独自のメールサーバーをセットアップしてsendmailを実装する場合に使用できる構成はたくさんあります。 しかし、それはこの記事の範囲外です。 私たちは、今後のもので話題に戻ります。 お楽しみに。,
CURLコマンドを使用して電子メールを送信する
このツールは、サーバーからのデータ転送にも非常に一般的です。 HTTP、FTP、POP3、SMTPなどの多くのプロトコルをサポートしています。 CURLパッケージは世界中で広く使用されていますが、主な理由の一つは、phpがネイティブのPHP実装を持っており、PHPが長い間デフォルトのサーバー側スクリプ
インストール:
パッケージが既にインストールされているかどうかを確認します。, 以下を実行しない場合:
sudo apt install curl
完了したら、curl -h
を実行して、CURLで利用可能なオプションのチートシートにアクセスできます。 より詳細なバージョンは、man curl
またはcurl --manual
のいずれかでアクセスできます。 CURLを使用して深い知識を得たい場合は、知りたいことがすべて含まれているこの便利な電子ブックがあります。
CURLでメールを送信するための基本的な実装:
CURLでメールを送信するには、SMTP接続を設定する必要があります。, ほとんどの場合、GOOGLEやYahooの送信メールサーバーは、SMTPによる電子メール送信のテストに使用されます。 Gmailの設定で安全性の低いアプリのアクセスをオンにする必要があり、同様の追加のセキュリティ設定がYahooにも適用される場合があります。
上記のターミナルコマンドスニペットでは、--url
および--user
パラメーターによってSMTP接続設定が定義されます。 --user
パラメーターのパスワードセクションは、指定されたメールアドレスのアカウントのパスワードです。 当然、このまま用クラウドメールサービス提供者にあります。, 次のセクションでMailgunを使用していることを示します。
CURLを使用した電子メール送信の高度な実装:
電子メール配信プラットフォームで作業するには、まずAPIキーを取得する必要があります。 このチュートリアルでは、Mailgunを使用したCURLメール送信の例を示しますので、登録プロセス中に動けなくなった場合は、このセットアップガイドに従って正
構文は非常に簡単です。 前に気づいたかもしれませんが、コマンドの各行を\
文字で終了する必要があります。, これは行継続文字であり、コマンドはそれらをすべて一行で実行することもできます。 もう一つ覚えておくべきことは、-F
オプションです。 Manページからの抜粋:
-F, --form <name=content> (HTTP) This lets curl emulate a filled-in form in which a user has pressed the submit button. This causes curl to POST data using the Content-Type multipart/form-data according to RFC 2388. This enables uploading of binary files etc. To force the 'content' part to be a file, prefix the file name with an @sign.
前にお勧めしたように、これらのコマンドラインメーラーコマンドを使用するときは、マニュアルに飛び込むことをお勧め CURLマニュアルによると、基本的には送信するフォームを作成しています。 各行は、name=content
ペアとして与えられるエントリです。 ローカルマシンからファイルを添付する場合は、ファイル名の前に@
が必要です。,
これは、配信されたメールがどのように見えるかです。
Sendgridなどの他のほとんどのメール配信プラットフォームを使用して同じことを行うことができます。
CURLを使用してコマンドラインからHTMLメールを送信する:
テキストファイルにフォームを構築するのと同じロジックを適用することができ、HTMLメッセージを簡単に送ることができます。
最初の例から簡単なコマンドを実行すると、
..
トラブルシューティング:
--insecure
スイッチが必要な場合があり、CURLで”安全でない”SSL接続および転送を実行できるようにします。, リモートサーバーが自己署名証明書を使用している場合、またはリモートサーバー証明書がCA証明書ファイルにリストされているCAによって署名されていな
Swaksコマンドを使用した電子メールの送信
ドキュメントに記載されているように、Swaksは柔軟でスクリプト可能なトランザクション指向のSMTPテストツールです。 TLS、認証、パイプライン処理、SMTPプロトコルの複数バージョンなどのSMTP機能と拡張機能を処理できます。 また複数の輸送方法は、UNIXドメインソケット、インターネットドメインソケット、パイプへの芽生ます。,
インストール:
sudo apt install swaks
Swaksで送信する電子メールの基本的な実装:
SMTPアカウントに接続するには、サーバー-s
、ユーザー-au
、パスワード-ap
-t
(メールを送信する場所)フラグ。 -tls
ポート587
に接続する場合、-tls
フラグも重要です。,
swaks --to [email protected] -s smtp.gmail.com:587 -tls -au <user-account> -ap <account-password>
資格情報は、-a
を認証するようにのみ指定し、コマンドラインオプションでユーザーとパスワードを入力しない場合、コマンドライン
Swaksを使用した電子メール送信のための高度な実装:
swaks --to [email protected] -s smtp.gmail.com:587 -tls -au <user-account> -ap <account-password> --attach -d ./mail.txt
今は触れない他のオプションがあります。 次のメーラーパッケージに向かいましょう!
Muttコマンドを使用したメール送信
Muttは、機能豊富なコマンドラインメールクライアントであるため、以前のメールクライアントとは異なります。, 使用できるメールを読んだりからLinux端末の接続地域のユーザーのメールボックスやPOP/IMAPサーバー Muttは、mbox、MH、maildir、MMDF、電子メール合成中のメッセージヘッダーの完全な制御、およびメッセージを処理するための複数のメッセージのタグ付けと色などのいくつかのメール
インストール:
sudo apt install mutt
muttでメール送信するための基本的な実装:
この時点で、コマンドの構造に驚くことはありません。, 空のメッセージ本文に< /dev/null
:
# mutt -s "Test Email" [email protected] < /dev/null
muttを使用したメール送信の高度な実装
添付ファイルを含むメールを送信するには、-a
フラグが必要です。 これにより、システムログなどの有用なファイルを指定したアドレスに送信できます。
# mutt -s "System logs" -a /opt/backup.sql [email protected] < /dev/null
メッセージ本文に追加するファイル拡張子がHTML形式の場合、HTMLメールを送信することもできます。, Muttはファイルタイプを認識して解決し、HTMLをプレーンテキストとして送信しないようにします。
mutt -s "Email subject" [email protected] < email.html
これはmuttでのメール送信用です。 まで利用するマシンからみどのように作業できると着信設定メールボックスや取り扱い受信メッセージ あなたがそうする場合は、以下のコメント欄に自分の考えを共有してください。 したことを歓迎の意見つのパッケージのチュートリアルです。
Mailxコマンドを使用して電子メールを送信する
Mailutilsは、複数のユースケース用の複合パッケージです。, このとして確立されている正規ユーザーは、システム管理者、開発者向けです。 私たちは、電子メール転送に関する基本的な機能にのみ触れます。 より多くの機能に興味がある場合は、man
ページをチェックしてください。
インストール:
sudo apt install mailutils
mailxでメール送信するための基本的な実装:
mailxパッケージには2つの等しいコマンド構文があります(mail
とmailx
どちらもまったく同じ方法で動作します)。, 最も単純なコマンドは、mail/mailx
コマンドとメールを送信するアドレスで構成されますが、件名と少なくともテキストベースのメッセージ本文 このようなコマンドは次のようになります。
echo "message body" | mail -s "subject" [email protected]
echo
コマンドを使用し、出力をmail
コマンドにパイプすることで、mailxのCcアドレスとメッセージ本文に対する追加のプロンプトを避けることができます。,
mailxによるメール送信のための高度な実装:
高度な例では、本格的なHTMLメールを再び送信します。 選択した電子メールHTMLファイルに<
文字を指定し、コンテンツタイプに”append flag”を追加する必要があります。 完全なコードは次のようになります。
mailx -a 'Content-Type: text/html' -s "This is advanced mailx indeed!" < email.html "[email protected], [email protected]"
戻りアドレスを設定することもできます--return-address=<EMAIL-ADDRESS>
、これは役に立つかもしれません。, HTMLメールを並列に処理するために解決できなかった別の便利なオプションは、同じメッセージに添付ファイルを提供することです:-A "mail.txt"
。 複数の受信者を一覧表示できますが、添付できるのは単一の添付ファイルのみです。 それがあなたを空想する場合は、外部SMTPサーバーを設定できます。
Telnet代替Opensslコマンドを使用する
Telnetは、別のホストと通信するための対話型通信プロトコルです。 別のサーバーへのSMTP接続を開き、電子メールメッセージを転送するために使用できます。, しかし、プロトコルを確保できておらず、サーバのメンテナンスを拒否するこのコミュニケーションタイプです。 これは、OpensslがSSL/TLSセキュリティを含んで構築されているため、opensslが登場する場所です。 これは、ホスト引数を指定してtelnetと同様に呼び出され、暗黙的にopenコマンドを実行します。
通信チャネルが開いている間に提供する必要がある入力をインデントしました。 これらの入力は自明ですが、私が詳細にする必要があることの一つは、パスワードハッシュです。 Base64でエンコードされたハッシュにすることができ、echo -en '\[email protected]\000gmailpassword' | base64
コマンドで取得できます。, 文字列からのエスケープ文字を省略することはできません。 Base64パッケージがインス
あなたが上で見ることができるように、電子メール送信のこの手段は、テキストベースのメッセージのためのインターフェイスを提供するだけなので、ユースケース 一方、メールサーバーと交換されるすべての情報を表示するため、デバッグが非常に簡単になります。
メールの問題のトラブルシューティング
メールログを確認します
対応するフォルダに移動してログファイルを見つける必要があります。 私は自分のコードエディタ(例えば。, このため、構文ハイライト付きのログを作成できます。
$ sudo subl /var/log
現在のLinuxディストリビューションによっては、別のソースを確認する必要があるかもしれません。
をログについての情報が載せられている到達性です。 この時点で、この下部までスクロールすると、
配信が成功したかどうかを調べるか、プロセスが失敗した理由を理解することができます。,
コンソールにエラーが表示されないことがありますが、メールログには、メッセージが配信用にキューに入れられていることがわかりますので、プロセスはマシン
シーケンス内のすべてのコマンドを実行します
だから、すべてが最終テストの準備ができています。 すべてのメーラー端子のコマンドがここに集結!!スクリプトファイルです。 スクリプトファイルが含まれている作業フォルダをダウンロードしたら、含まれているフォルダに移動し、スクリプトを実行可能にします:chmod u+x mail.sh
。, いすべてのファイルを提供した準備を開始することができ試験のメーラーのコマンドのチュートリアルです。 コード内のテストメールアドレスに"<RECIPIENT ADDRESS>"
を置き換え、コマンドラインで./mail.sh
を実行するだけです。
スクリプトの実行が終了すると、受信トレイにテストメールが入力されます。
よくやった!
概要
この記事では、Linuxのコマンドラインからメールを送信するための多くの方法を示しました。 思に基づいたインストールすることができ、設定をこれらのサービスを利用するマシンを自分でします。,
この記事では、最も一般的に使用されるコマンドラインメーラーパッケージとそれらと一緒にメールを送信する方法を示し、最後に、記事で使用されるすべてのコマンドを収集するシェルスクリプトを作成しました。 チュートリアルで紹介されたパッケージをインストールし、資格情報と受信者の詳細を入力すると、スクリプトを自由に実行できます。