メールサーバー構築
2025/10/24
バーチャルドメイン運用、SPF,DKIM,DMARC対応もします。
詳細は関連記事参照。
sudo cat /etc/almalinux-release uname -r ip -brief address lsblk df -hT sudo dnf repolist確認ポイント:
sudo dnf install -y glibc-langpack-ja sudo localectl set-locale LANG=ja_JP.UTF-8 cat /etc/locale.conf出力:
sudo timedatectl set-timezone Asia/Tokyo sudo systemctl enable --now chronyd timedatectl status想定結果:
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想定結果:
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確認:
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この項目の詳しい解説はこちら。
sudo dnf install -y nano vim-enhancedmicro エディタは、EPELには含まれていないので、スクリプトから導入(直接バイナリ導入)する必要があります。
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 systemctl enable --now firewalld sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload sudo firewall-cmd --list-all想定結果:
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
sudo systemctl is-enabled firewalld sudo systemctl is-enabled fail2ban sudo getenforce sudo hostnamectl sudo timedatectl sudo free -h sudo firewall-cmd --list-all
sudo dnf update -y