sendmail、mutt、SSMTP、telnetなどの電子メールの送信にも使用できる端末ベースのコマンドラインクライアントは他にもありますが、このガイドではmail
に焦点を当てます。 コマンド。
mailコマンドは、標準のsendmailバイナリ(/ usr / sbin / sendmail)を呼び出し、ローカルMTAに接続して、メールを宛先に送信します。ローカルMTAは、ポート25でメールを受け入れるローカルで実行されるSMTPサーバーです。
これは、メールコマンドを使用する予定のマシンでPostfixのようなSMTPサーバーが実行されている必要があることを意味します。何も実行されていない場合は、「send-mail:Cannot openmail:25」というエラーメッセージが表示されます。
インストール
次のコマンドでインストールします:
Ubuntuの場合
sudo apt-get install mailutils
CentOS7の場合
sudo yum install -y mailx
centos 8 / Alma Linux / Rhel
の場合sudo dnf install -y mailx
次のコマンドを使用して、コマンドが正常にインストールされていることをテストします。
mail
上記のコマンドは、現在のユーザーの電子メールがあるかどうかを確認します。次のような出力が表示されます:
➜ mail
No mail for centos
使用法
簡単なメールの送信
このコマンドを使用して、[email protected]
にメールを送信します 。 -s
コマンドライン引数は、件名を指定するためのものです。
mail -s "Test mail" [email protected]
上記のコマンドは、Enterキーを押すとブロックされ、メッセージの入力を待機します。完了したら、Ctrl-D
を使用します 完了し、メールを送信する準備ができたことをメールクライアントに通知します。
❯ mail -s "Test mail" [email protected]
Hey John,
Please remember to send me the Linux Book.
Regards,
Me.
EOT
EOT
Ctrl-D
を押したときに入力されました 。これを行うと、mailコマンドはメッセージを配信用にディスパッチして完了します。
ファイルの内容を含むメッセージを送信する
このコマンドを使用して、ファイル/path/to/file.txt
からメッセージを送信します。 。
mail -s "Test mail" [email protected] < /path/to/file.txt
この1つのライナーを使用して、コンテンツをエコーアウトして送信し、メールコマンドにパイプすることもできます。
echo "Hello world" | mail -s "Test mail" [email protected]
複数の受信者にメールを送信する
複数の受信者にメールを送信するには、次の例のように、カンマで区切られたメールのリストを使用できます。
echo "Hello world" | mail -s "Test mail" [email protected],[email protected]
CCおよびBCC受信者の追加
ブラインドカーボンコピー(BCC)およびカーボンコピー(CC)アドレスも添付できます。 -c <email>
を使用します CCおよび-b <email>
の場合 bccの場合。
この例では、CCとBCCを指定しています:
echo "Hello world" | mail -s "Test mail" -c [email protected] -b [email protected]
名前と住所から指定
オプション-r
を使用できます 以下に示すように、差出人の名前とアドレスを指定します。
echo "Hello world" | mail -s "Test mail" –r "Kip<[email protected]>" [email protected]
または、-a
を使用することもできます メッセージに添付する追加のヘッダーを追加します。 FROM
を提供する方法の例を次に示します。 その一環として。
echo "Hello world" | mail -s "Test mail" [email protected] -aFrom:[email protected]
from名を指定するには、次の構文を使用します。
echo "Hello world" | mail -s "Test mail" [email protected] --aFrom:Kip\<[email protected]\>
シェルプロンプトに対して特別な意味があるため、小さい矢印と大きい矢印をエスケープする必要があることに注意してください。スクリプト内からコマンドを発行する場合は、それを省略します。
「返信先」アドレスを指定
replyto
を使用する この例のようにアドレスへの返信を指定するには:
echo "Hello world" | mail -s "Test mail" [email protected] [email protected]
添付ファイル付きのメール
[email protected]
からメールを送信する [email protected]
アタッチメント付き。
mail -s "The File you requested" -a ~/Documents/file.txt -r [email protected] [email protected] <<EOF
Hi jane,
Please find the file requested attached.
Kind Regards,
John.
EOF
ローカルシステムユーザーへのメール
ローカルシステムユーザーに電子メールを送信するには、受信者の代わりにユーザー名のみを指定します。ホスト名を追加できますが、@hostname
を使用する必要はありません。 。
mail -s "Test Subject" username
Verboseの有効化
メールの処理中に何が起こっているかを確認する必要がある場合は、引数-v
を使用して詳細出力を有効にします。 。これは、mailコマンドで使用されているSMTPコマンドを確認する場合などのトラブルシューティングに適しています。次に例を示します:
mail -v -s "Hello theere" [email protected] <<< 'This is the message'