msmtp は、軽量で使いやすいSMTPクライアントです。
1. msmtpのインストール
sudo dnf install msmtp -y
Alma 10
sudo dnf --releasever-minor="" install msmtp
https://forum.directadmin.com/
2. 設定ファイルの作成
ユーザーごとの設定ファイルを作成します。ここでは、
vi ~/.msmtprc
以下の内容を記述します。
# Gmailアカウントの設定
account default
host smtp.gmail.com
port 587
auth on
tls on
tls_starttls on
from your_gmail_address@gmail.com
user your_gmail_address@gmail.com
password your_app_password
logfile ~/.msmtp.log
※your_app_passwordはGmailのアプリパス
3. 権限の設定
セキュリティのため、
chmod 600 ~/.msmtprc
4. スクリプトの作成
vi /usr/local/bin/login_
#!/bin/bash
# メールアドレス設定
MAIL_ADDRESS="your_email@
# サーバーホスト名取得
HOSTNAME=$(hostname)
# ログイン情報を変数に格納
USER_NAME=$PAM_USER
LOGIN_IP=$PAM_RHOST
LOGIN_DATE=$(date +"%Y-%m-%d %H:%M:%S")
# メール件名と本文の作成
SUBJECT="SSH Login Notification: $USER_NAME on $HOSTNAME"
BODY="
User: $USER_NAME
IP Address: $LOGIN_IP
Date: $LOGIN_DATE
Server: $HOSTNAME
"
# 除外したいユーザーのリスト
EXCLUDE_USERS=("root" "testuser" "guest")
# ログインユーザーが除外リストに含まれているかチェック
for user in "${EXCLUDE_USERS[@]}"; do
if [ "$USER_NAME" = "$user" ]; then
# 該当ユーザーの場合、何もしないでスクリプトを終了
exit 0
fi
done
# 除外リストに含まれていないユーザーの場合、通知処理を実行
# ここに通知を送るコマンド(例:msmtp、curlなど)
# msmtpを使ってメール送信
echo -e "Subject: $SUBJECT\nTo: $MAIL_ADDRESS\n\n$BODY" | msmtp -t
PostfixのようなフルMTAをインストールすること
4. スクリプトに実行権限を付与します。
sudo chmod +x /usr/local/bin/login_
5. PAM(Pluggable Authentication Modules)の設定
pam_execモジュールを使って、
sshdのPAM設定ファイル /etc/pam.d/sshdを編集します。
sudo vi /etc/pam.d/sshd
ファイルの末尾に以下の行を追加します。
account required pam_exec.so /usr/local/bin/login_