Linux Mintでmailコマンドを使いメールを送信する

Linux

Thunderbirdのようなメーラーではなく、端末からmailコマンドを使ってメールを送信する方法です。備忘録として書き残しておきます。

環境は Linux Mint 21.3 “Virginia” MATE Edition です。

必要なものをインストール

mailutils と bsd-mailx のインストール

まず「mailutils」と「bsd-mailx」がインストールされているか以下のコマンドを実行して確認します。

$ which mail bsd-mailx

以下のように /usr/bin/mail/usr/bin/bsd-mailx と出ればインストールされていますので「msmtp と msmtp-mtaのインストール」までスキップしてください。

インストールされていなければ以下の手順でインストールしてください。

$ sudo apt install mailutils

Tab」キーを押して「了解」を選択し、「Enter」キーをタイプ押します。

取消」を選択し、「Enter」キーをタイプします。

今回はmsmtpを入れるので、不要な postfix をアンインストールし、bsd-mailxをインストールします。

$ sudo apt remove --purge postfix
$ sudo apt install bsd-mailx

msmtp と msmtp-mta のインストール

以下のコマンドを実行し、msmtpとmsmtp-mtaをインストールします。

$ sudo apt install msmtp msmtp-mta

設定ファイルの編集

設定ファイルの雛形(テンプレート)を /etc/msmtprc にコピーします。

$ sudo cp /usr/share/doc/msmtp/examples/msmtprc-system.example /etc/msmtprc

コピー先の設定ファイルを編集します。エディターは何でも構いませんが、ここでは nano を使います。

$ sudo nano /etc/msmtprc

「smtp.server.com」のところは、利用するsmtpサーバーのアドレスに置き換えてください。また、passwordにはメールパスワードを入力します。

# Example for a system wide configuration file

# A system wide configuration file is optional.
# If it exists, it usually defines a default account.
# This allows msmtp to be used like /usr/sbin/sendmail.
account default

# The SMTP smarthost
host smtp.server.com

# Use TLS on port 465
port 465
tls on
tls_starttls off
tls_trust_file /etc/ssl/certs/ca-certificates.crt
auth on

# Construct envelope-from addresses of the form "user@oursite.example"
from YourMailAddress@xxxyyyzzz.com
user YourMailAddress@xxxyyyzzz.com
password ***************

# Syslog logging with facility LOG_MAIL instead of the default LOG_USER
syslog LOG_MAIL
$ sudo chown root:msmtp /etc/msmtprc
$ sudo chmod 640 /etc/msmtprc

以上で設定や準備は完了です。

mailコマンドを使ってメールを送信

試しにテストでメールを送信します。以下のコマンドでは題名が「テストメール」で「これはテストメールです。」という内容のメールを「xxxyyyzzz@example-mail.com」というアドレスに送信します。

$ echo "これはテストメールです。" | mail -s "テストメール" xxxyyyzzz@example-mail.com

本文が複数行にまたがる場合「echo “本文”」の代わりに以下の方法でメールを送信することも可能です。

まず touch コマンドで空のファイル「test.mail」を作成します。ここでは「test.mail」というファイル名を付けていますが、ファイル名は何でも構いません。

$ touch test.mail

テキストエディタなどで先程作成した「test.mail」を開きます。テキストエディタは何でも構いませんが、ここでは nano を使って話を進めたいと思います。

$ nano test.mail

以下のようにメールで送りたい内容を書いて保存します。テキストエディタにnanoを使う場合「Ctrl」+「O」を押し「Enter」で保存後、「Ctrl」+「X」でnanoを閉じます。

これはテストメールです。
あああああああああああ。
いいいいいいいいいいい。
ううううううううううう。
えええええええええええ。
おおおおおおおおおおお。

以下のコマンドを実行することで、先程の内容のメールが題名「テストメール」で「xxxyyyzzz@example-mail.com」に送信されます。

$ cat test.mail | mail -s "テストメール" xxxyyyzzz@example-mail.com

また、コマンドの実行結果をメールで送ることもできます。以下の例では題名が「ディスクの使用量」で「df -h」の実行結果をメールで送信します。

$ sudo df -h | mail -s "ディスクの使用量" xxxyyyzzz@example-mail.com

参考にさせていただいたサイト様

msmtpでGmailのSMTPでメール送信
How to Configure Gmail SMTP in msmtp

コメント