ダレカノブログ
2026年7月20日月曜日
2025年9月15日月曜日
サーバーログイン通知:msmtp を使用したメール送信
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_
2025年5月21日水曜日
Raspberry Piにk8s - kubeadm
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 6.12.25+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.25-1+rpt1 (2025-04-30) aarch64 GNU/Linux
こちらを3台。
hostname
pi@raspberrypi:~ $ sudo hostnamectl set-hostname k8s-master
pi@raspberrypi:~ $ sudo hostnamectl set-hostname k8s-node1
pi@raspberrypi:~ $ sudo hostnamectl set-hostname k8s-node2
hosts
192.168.1.201 k8s-master
192.168.1.202 k8s-node1
192.168.1.203 k8s-node2
kernel modules
pi@k8s-node1:~ $ cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
overlay
br_netfilter
pi@k8s-node1:~ $
kernel parameters
pi@k8s-node1:~ $ cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
pi@k8s-node1:~ $
cntainerd
wget https://github.com/containerd/containerd/releases/download/v2.1.0/containerd-2.1.0-linux-arm64.tar.gz
wget https://github.com/containerd/containerd/releases/download/v2.1.0/containerd-2.1.0-linux-arm64.tar.gz.sha256sum
sha256sum -c containerd-2.1.0-linux-arm64.tar.gz.sha256sum
sudo tar Cxzvf /usr/local containerd-2.1.0-linux-arm64.tar.gz
sudo systemctl daemon-reload
sudo systemctl enable --now containerd
runc
wget https://github.com/opencontainers/runc/releases/download/v1.3.0/runc.arm64
sudo install -m 755 runc.arm64 /usr/local/sbin/runc
CNI plugins
wget https://github.com/containernetworking/plugins/releases/download/v1.7.1/cni-plugins-linux-arm-v1.7.1.tgz
mkdir -p /opt/cni/bin
sudo mkdir -p /opt/cni/bin
sudo tar Cxzvf /opt/cni/bin cni-plugins-linux-arm-v1.7.1.tgz ./
sudo swapoff -a
kubeadm
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.33/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
kubeadm version
pi@k8s-master:~ $ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"33", EmulationMajor:"", EmulationMinor:"", MinCompatibilityMajor:"", MinCompatibilityMinor:"", GitVersion:"v1.33.1", GitCommit:"8adc0f041b8e7ad1d30e29cc59c6ae7a15e19828", GitTreeState:"clean", BuildDate:"2025-05-15T08:25:51Z", GoVersion:"go1.24.2", Compiler:"gc", Platform:"linux/arm64"}
cgroup
/boot/firmware/cmdline.txt に cgroup_memory=1 cgroup_enable=memory
swapoff
sudo dphys-swapfile swapoff && sudo dphys-swapfile uninstall && sudo systemctl disable dphys-swapfile
2025年5月20日火曜日
Raspberry Pi
pi@raspberrypi:~ $ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
インストール後、スタティックIPにしたい。DHCPで振られたIPアドレスにSSH後、nmcliで設定する。
pi@raspberrypi:~ $ sudo nmcli c show
NAME UUID TYPE DEVICE
Wired connection 1 243310b8-ea95-3f02-a82a-0d48d2222b2e ethernet eth0
lo 82987325-fd00-45b8-9709-f81470c274b6 loopback lo
pi@raspberrypi:~ $ sudo nmcli c mod 'Wired connection 1' ipv4.addresses 192.168.1.203/24 ipv4.method manual
pi@raspberrypi:~ $ sudo nmcli con mod 'Wired connection 1' ipv4.gateway 192.168.1.1
pi@raspberrypi:~ $ sudo nmcli con mod 'Wired connection 1' ipv4.dns 1.1.1.1
pi@raspberrypi:~ $ sudo nmcli c down 'Wired connection 1' && sudo nmcli c up 'Wired connection 1'