Mailサーバー用-almalinuxセットアップ

2025/10/24

almalinuxの基礎構築 最初にやっておくこと

AlmaLinux 9.x(最小構成)をクリーンインストール直後から安全・再現性高く構築するための完全手順書です。
Postfix等の導入前に、システム基盤を整える目的です。

1. システム初期確認

目的:インストール直後のシステム情報を確認。
sudo cat /etc/almalinux-release
uname -r
ip -brief address
lsblk
df -hT
sudo dnf repolist
確認ポイント:
  • AlmaLinux 9.x と表示される
  • NIC名(例:ens160)を確認
  • `/` に十分な空き容量がある
この項目の詳しい解説はこちら。

2. ロケール設定(ja_JP.UTF-8)

sudo dnf install -y glibc-langpack-ja
sudo localectl set-locale LANG=ja_JP.UTF-8
cat /etc/locale.conf
出力:
LANG=ja_JP.UTF-8
この項目の詳しい解説はこちら。

3. タイムゾーンと時刻同期設定

sudo timedatectl set-timezone Asia/Tokyo
sudo systemctl enable --now chronyd
timedatectl status
想定結果:
Time zone: Asia/Tokyo
System clock synchronized: yes

この項目の詳しい解説はこちら。

4. SELinux 状態確認と無効化(構築が完了したら有効化する)

さくらインターネットVPSのalmalinuxでは、SElinuxは当初からdisableなので、さくらVPSの場合は不要
getenforce
sudo cp -a /etc/selinux/config /etc/selinux/config.bak-$(date +%Y%m%d)
sudo setenforce 0 || true
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
getenforce
grep '^SELINUX=' /etc/selinux/config
想定結果:
`Disabled`

この項目の詳しい解説はこちら。

5. スワップ領域(4GB)作成・永続化

VPSの契約は、メモリ4GBですので、今後のメールサーバー構築を見据え、スワップ領域4GBを確保しておきます。
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
grep -q "/swapfile" /etc/fstab || echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab
確認:
swapon --show
free -h

この項目の詳しい解説はこちら。

6. 基本パッケージ導入

sudo dnf install -y epel-release
sudo dnf install -y bash-completion curl wget git tar zip unzip bind-utils firewalld glibc-langpack-ja telnet nc rsync screen  htop tree jq
この項目の詳しい解説はこちら。

7.エディタ導入

自分の好みのエディタをいれて構いませんが、ここでは vim-enhanced 、nano、microの3つを入れておきます。両方とも定評のあるエディタです。
nanoはシンプルで使いやすいですが、ショートカットキーがunixライクなので、windows環境に慣れている方はmicroのほうがいいかもしれません(好みです)。
vimは、プロには好まれますが、初学者には習熟するまで時間がかかるかも知れません。
エディタは複数インストールしておいて使いやすいのを使えばよいと思います。

nanoの導入
sudo dnf install -y nano vim-enhanced  
micro エディタは、EPELには含まれていないので、スクリプトから導入(直接バイナリ導入)する必要があります。

microの導入
cd ~
curl https://getmic.ro | bash
sudo mv ~/micro /usr/local/bin/micro

#microはそのままではパスが通らないので、通しておく。
#`sudo micro` 実行時に「command not found」になる問題の対策。
#sudo secure_path に /usr/local/bin を追加(恒久対策)

grep -Rq "/usr/local/bin" /etc/sudoers /etc/sudoers.d 2>/dev/null || {
echo 'Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin' | sudo tee /etc/sudoers.d/10-secure-path >/dev/null
sudo chmod 440 /etc/sudoers.d/10-secure-path
sudo visudo -cf /etc/sudoers.d/10-secure-path
}
#デフォルトエディタにmicoroを指定(デフォルトをnanoにしたい場合は下記のmicroをnanoに変更)
環境変数設定(冪等):
grep -q "EDITOR=micro" ~/.bashrc || echo 'export EDITOR=micro' >> ~/.bashrc
grep -q "VISUAL=micro" ~/.bashrc || echo 'export VISUAL=micro' >> ~/.bashrc
リポジトリにあるソフト(vim,nano)は、/usr/bin/ にインストールされますが、ここはOSやディストリビューションが管理するディレクトリなので、ディストリに含まれないmicroは/usr/local/binにインストールしています。今後、リポジトリにmicroが含まれるようになれば、nanoと一緒のディレクトリにインストールすることになるでしょう。


確認:
sudo -V | sed -n 's/^Secure Path: //p'

出力例:
`/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin`

この項目の詳しい解説はこちら。

8. firewalld 設定

ここでは最小限の設定。今後のメールサーバー設定時には、さらに拡張する。
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
想定結果:
services: ssh

この項目の詳しい解説はこちら。

9. fail2ban 導入

sudo dnf install -y fail2ban
sudo systemctl enable --now fail2ban
sudo mkdir -p /etc/fail2ban/jail.d
cat <<'EOF' | sudo tee /etc/fail2ban/jail.d/sshd.local
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 5
bantime = 3600
EOF
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

10. 再起動前の整合チェック

sudo systemctl is-enabled firewalld
sudo systemctl is-enabled fail2ban
sudo getenforce
sudo hostnamectl
sudo timedatectl
sudo free -h
sudo firewall-cmd --list-all

11. システム更新

sudo dnf update -y

覚え書き

SElinux有効時にswapファイルのrestoreを忘れずに!!
sudo restorecon /swapfile