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

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

コマンドラインからメールを送信する

mailコマンドは、さまざまなサービスやその他のWebアプリケーションが電子メールを生成および送信できるようにするために、すべてのLinuxサーバーで使用できる必要がある必須のコマンドです。

mailコマンドに関する以前の投稿で、mailコマンドを使用してLinuxサーバーのコマンドラインから電子メールを送信する方法を説明しました。

このチュートリアルでは、メールコマンドの拡張バージョンを使用します。これはmailx(またはインストール時に単にメール)と呼ばれ、gnumailutilsパッケージの古いメールコマンドよりも多くのことを実行できます。

どのように機能しますか

mail / mailxコマンドでは、電子メールを配信するためにローカルのSMTPサーバー(MTA)が実行されている必要があります。メールでたどるルートはこんな感じです-

メール->sendmail->ローカルMTA->受信者MTA[受信トレイ]

たとえば、受信者がgmail.comの誰かである場合、受信者のMTAはgmailのSMTPサーバーになります。ローカルMTAの場合、PostfixのようなSMTPサーバーをインストールする必要があります。ほとんどの場合、最小限の構成でPostfixの基本的なインストールが機能します。

mailxコマンドをインストールします

Ubuntu / Debianベースのシステムでは、mailxコマンドは2つの異なるパッケージから利用できます-

1. heirloom-mailx
2。 bsd-mailx

より多くの機能とオプションがあるため、heirloom-mailxパッケージを使用します。
CentOS / Fedoraベースのシステムでは、heirloomパッケージである「mailx」という名前のパッケージは1つだけです。

システムにインストールされているmailxパッケージを確認するには、「man mailx」の出力を確認し、最後までスクロールすると、役立つ情報が表示されます。

#ubuntu / debian $ sudo apt-get install heirloom-mailx#fedora / centos $ sudo yum install mailx 

mailxコマンドの使用

インストールすると、mailxコマンドをmailという名前で直接参照できるため、コマンドラインに入力するだけです。

1。簡単なメール

次のコマンドを実行すると、mailxは電子メールのメッセージが入力されるのを待ちます。 Enterキーを押すと、新しい行が表示されます。メッセージの入力が完了したら、Ctrl + Dを押すと、mailxにEOTが表示されます。

その後、mailxは自動的にメールを宛先に配信します。

 $ mail-s"これは件名です"[email protected]こんにちは誰かお元気ですか私は元気ですByeEOT

2。ファイルからメッセージを取得する

メールのメッセージ本文はファイルからも取得できます。

 $ mail -s "This is Subject" [email protected]  

メッセージは、echoコマンドを使用してパイプすることもできます-

 $echo"これはメッセージ本文です"| mail -s "This is Subject" [email protected] 

3。複数の受信者

複数の受信者にメールを送信するには、すべてのメールをカンマで区切って指定します

 $echo"これはメッセージ本文です"| mail -s "This is Subject" example @ unixlinux.online、example @ unixlinux.online 

4。 CCとBCC

「-c」および「-b」オプションを使用して、CCアドレスとBCCアドレスをそれぞれ追加できます。

 $echo"これはメッセージ本文です"| mail -s "This is Subject" -c [email protected] [email protected] 

5。差出人の名前と住所を指定

「FROM」の名前とアドレスを指定するには、「-r」オプションを使用します。名前の後には、「<>」で囲まれたアドレスを続ける必要があります。

 $echo"これはメッセージ本文です"| mail -s "This is Subject" -r "Harry " [email protected] 

6。 「返信先」アドレスを指定

アドレスへの返信は、「-S」オプションを使用して内部オプション変数「replyto」で設定されます。

#replyto email $echo"これはメッセージです"| mail -s "Testing replyto" -S replyto ="[email protected]" [email protected]#replyto email with name $ echo "This is message" | mail -s "Testing replyto" -S replyto ="Mark " [email protected] 

7。添付ファイル

添付ファイルは「-a」オプションで追加できます。

 $echo"これはメッセージ本文です"| mail -s "This is Subject" -r "Harry " -a /path/to/file [email protected] 

8。外部SMTPサーバーを使用する

これは排他的な機能であり、bsd mailxではなく、heirloom mailxでのみ取得できます。また、gnumailutilsのmailコマンドやmuttコマンドでも使用できます。

mailxコマンドは、外部のSMTPサーバーを使用して、メッセージを転送するために使用できます。構文は少し長いですが、理にかなっています。

 $ echo "これはメッセージ本文であり、メッセージが含まれています" | mailx -v -r "[email protected]"-s"これは件名です"-Ssmtp ="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 "これはメッセージ本文であり、メッセージが含まれています" | mailx -v \> -r "[email protected]" \>-s"これは件名です"\>-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 \> example @ unixlinux.online 

Gmail SMTPサーバーを使用して、Gmailアカウントを介してメールを送信できます。それはとてもクールです!
特にGmailの場合、そのようなメールを送信する前に、安全性の低いアプリの設定を有効にする必要があります。

9。冗長-SMTP通信を監視する

外部のSMTPサーバーを使用する場合、バックグラウンドで実行されるSMTP通信全体を監視することを選択できます。これは、SMTPサーバーをテストまたはデバッグするときに特に役立ちます。

 $ echo "これはメッセージ本文であり、heirloommailxからのメッセージが含まれています"| mailx -v-s"これは件名です"-Ssmtp ="smtp.gmail.com:587" -S smtp-use-starttls -S smtp-auth =login -S smtp-auth-user ="example @ unixlinux .online "-S smtp-auth-password =" mypassword "-S ssl-verify =ignore [email protected]。 。 。 74.125.68.109:587に接続しています。 。 。 connected.220 mx.google.com ESMTP je4sm32812877pbd.94 --gsmtp>
>> EHLO enlightened250-mx.google.com at your service、[122.163.43.21] 250-SIZE 35882577250-8BITMIME250-STARTTLS250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8>>> STARTTLS2202.0.0TLSを開始する準備ができました>>>EHLOenlightened250-mx.google.com at your service、[122.163.43.21] 250-SIZE 35882577250-8BITMIME250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER250-ENHANCEDSTATUSCODES250-PIPELINING250 -CHUNKING250 SMTPUTF8>>> AUTH LOGIN334 VXNlcmU6>>> YmnbWFpbC5jb20 =334 UGFzcmQ6>>> KnJgzKg ==235 2.7.0 Accepted>>> MAIL FROM: 250 2.1.0 OK je4sm32812877pbd.94 --gsmtp>
>> RCPT TO: 250 2.1.5 OK je4sm32812877pbd.94 --gsmtp>
>>DATA354先に進みますje4sm32812877pbd.94--gsmtp>
>> .250 2.0.0 OK 1417930703 je4sm32812877pbd.94 --gsmtp>
>>QUIT2212.0.0接続を閉じるje4sm32812877pbd.94--gsmtp

トラブルシューティング

メールが適切に配信されない場合は、いくつかのことを確認する必要があります。最初に確認することは、SMTPサーバー(mta)がローカルで実行されていることです。 netstatコマンドはそれを伝えることができます

 $ sudo netstat -ltnp | grep 25 [sudo] enlightened:tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2541 / mastertcp6 0 0 :::25 :::* LISTEN 2541 / master
のパスワード

Postfixのようなstmpサーバーが実行されていてもメールが送信されない場合は、たとえばPostfixを再構成してみてください。 Ubuntu / Debianシステムでは、これはdpkg-reconfigureコマンドで実行できます

 $ sudo dpkg-reconfigure postfix 

次に、mailコマンドを再試行すると、機能するはずです。それでも解決しない場合は、サーバープロバイダーに連絡してみてください。

ローカルシステムからのメールはありません

ローカルコンピュータからGmailアドレスにメールを送信しようとすると、メールが拒否される可能性が高いため、送信しないでください。

これは、インターネットアドレスに接続されている通常のコンピュータには、有効なドメインに関連付けられていないIPアドレスがあり、Gmailは、メールの通過を承認する前に、そのような資格情報を厳密に確認するためです。

メモとリソース

mailxとは別に、コマンドラインからメールを送信するために使用できるSwakやsmtp-cliなどの他のツールがあり、smtpサーバーの指定や添付ファイルの追加などのさまざまな機能をサポートします。

ただし、mailxコマンドは、ほとんどの一般的なディストリビューションのデフォルトリポジトリで使用できるため、簡単にインストールできます。さらに、mailコマンドの構文と非常によく似た構文を維持しているため、古いmailコマンドの代わりになります。

mailxコマンドは、リモートIMAPサーバーからのメールを読み取ることもできますが、これはこの投稿から除外し、後で説明します。詳細については、「manmailx」を使用してmailxコマンドのマニュアルページを確認してください。


Linux
  1. Linuxコマンドラインから電子メールの添付ファイルを送信する4つの方法

  2. Linuxのコマンドラインからトレントを検索

  3. Linuxコマンドラインの歴史をマスターするための15の例

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

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

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

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

  2. Linuxでmailxコマンドを使用して外部SMTPサーバー経由でメールを送信するにはどうすればよいですか?

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