このページでは、Linux サーバーからメール通知を送信するために msmtp を利用し、SMTP を使ったメール送信を設定する手順をまとめる。
Linux サーバーの運用では、セキュリティやシステム状態の変化を管理者へ通知するために、メール通知を利用することが多い。たとえば Fail2Ban の BAN 通知、AIDE の改ざん検知通知、cron 実行時のエラー通知、Logwatch のレポートなどが代表的な例である。
これらの通知を利用するためには、まずサーバー自身がメールを送信できる状態になっている必要がある。Linux にはさまざまなメール送信ツールがあるが、本ページではシンプルな SMTP クライアントである msmtp を利用して設定を行う。
SMTP サーバーの例として Microsoft 365 の SMTP サービスを使用し、Linux サーバーから外部メールサーバー経由でメールを送信する構成を設定する。
| 項目 | 設定例 |
|---|---|
| 送信元アドレス(例) | notify@example.com |
| 送信先アドレス(例) | admin@example.com |
| SMTPサーバー(例) | smtp.office365.com |
| ポート | 587 |
| 暗号化 | STARTTLS |
Linuxサーバーから送信されるメールは、次のような流れで配送される。
通知処理は mail コマンドから始まり、実際の SMTP 通信は msmtp が行う。
Linuxでメール送信を行う方法はいくつかある。
・Postfix
・Sendmail
・msmtp
Postfix や Sendmail は本格的なメールサーバーとして利用できるが、ログ通知や監視通知だけの用途では設定が少し大きくなる。
msmtp は SMTPサーバーへメール送信だけを行う軽量ツール のため、監視通知用途では扱いやすい。
まずメール送信に必要なパッケージを導入する。
dnf install msmtp mailx
mail コマンドから msmtp を利用して
SMTP サーバーへメール送信を行う。
msmtp の設定ファイルを作成する。
vi /etc/msmtprc
Microsoft365 SMTP の例。
defaults
auth on
auth login
tls on
tls_starttls on
tls_trust_file /etc/pki/tls/certs/ca-bundle.crt
account m365
host smtp.office365.com
port 587
from notify@example.com
user notify@example.com
password XXXXXXXXXX
account default : m365
認証情報を含むため、rootのみ閲覧可能にする。
chmod 600 /etc/msmtprc
認証情報が含まれる設定ファイルは、一般ユーザーから参照できないようにする。
設定後、メール送信テストを行う。
echo "SMTP test mail" | mail -s "SMTP Test" admin@example.com
メールが受信できれば設定は成功。
SMTPメール送信設定は、Linuxサーバーの監視通知の基盤となる。
この設定があることで、次の通知機能を利用できる。
・Fail2Ban 通知
・AIDE 改ざん検知通知
・Logwatch
・cron エラー通知
Linuxサーバーの監視やセキュリティ運用では、メール通知は基本的な仕組みのひとつである。
msmtp を利用すると、シンプルな構成で SMTPメール送信環境を構築できる。
この設定を先に用意しておくことで、Fail2Ban や AIDE などの通知機能をスムーズに追加できる。