HPE Morpheus VM EssentialsのHCI構成を組んでみた

vSphere代替とも言われるHPE Morpheus VM Essentials (HPE VME, HVM, HPE VM Essentails) で、クラスタをセットアップする際に下記の選択肢がある。

「HVM 1.2 HCI Ceph Cluster on HVM/Ubuntu 24.04」ということで、共有ストレージとしてCephを使用するHCI構成があるらしい。

どういう構成を組めばいいのかわからなかったのですが、ドキュメントを探すと [Infrastructure]-[Clusters]-[HVM Clusters]-[Base Cluster Details]という非常にわかりづらいところに、HCI構成の場合に求める仕様が書いてあった。

・物理サーバが最低3台
・CPUコア数1以上
・メモリ4GB以上。Cephを使う場合ディスク1個ごとに4GB追加
・OSディスク 20GB以上、Ceph用データディスク500GB以上

Example Cluster Deployment」にサンプル構成がある

まずは、最低限のスペックでUbuntu 24.04+HVMをインストールして、Manager仮想マシンをセットアップした。

クラスタを作るところまでの手順は省略

で・・・私がはまった点の1つとして、レイアウト選択のバグ動作、というのがあります。

ver 8.0.10で実施したところ、「HVM 1.2 HCI Ceph Cluster on HVM/Ubuntu 24.04」を選択したところ下記の様にSSHホストが1つしか選択できない状態でした。

そういうものかと思って手順を進めて作成を開始すると指定してないサーバが2つ登場してプロセスが開始されるという状況に・・・

何度かクラスタレイアウトの選択をやり直すと、下記の様に3サーバ分の空欄が表示されるときがありました。この状態であればHCIクラスタの作成に成功しました。

下記の様に入力し作成を開始

作成完了

まあ、わかってしまえば構成自体は簡単だったのですが・・・

Cephのステータスを確認する画面が無いのはどうかと思うんですよ・・・

たとえば[インフラストラクチャ]-[クラスター]で作成したHCIクラスタを表示すると下記の様に「CEPH」って表示があります。

問題は「ステータス:WARN」って表示以上のことを調べるインタフェースが無い、ということ

[ストレージ]で確認できるものは下記の情報だけで、Cephの状態について確認できない

GMKtec NucBox G10 miniを買った

先日導入したTRIGKEY MINI PC Key Nに32GBメモリを増設したESXi 8サーバの運用状況がいい感じだったんですが、32GBだとHPE VM Essentialsの3ノードクラスタが立てられない

5月に買ったDDR4 SO-DIMM 32GB 2枚を使えるミニPCはないかなぁ、と探していたところ、GMKtec NucBox G10 miniが候補にあがった。

Ryzen 5 3500Uと、微妙に新しくは無いCPUなので敬遠してたのですが、大きさがいまのTRIGKEY MINIより小さい(まあ、電源内蔵のTRIGKEYと、外付けのG10 miniの違いとも言えますが)

ということで、Amazonで売ってたRAM 16GB+SSD 256GBモデルを 23,998円で購入(セール終わったら28999円になっていました)

ちなみにAliexpressではメモリ/SSDなし、電源はEUタイプで約2万円で売っています

今回の注文については、いろいろな問題がありましたが、なんとか解決し、到着

出してみるとコンパクトですね

上面はネジ止めされていない、蓋がツメでとまっているタイプなので、うまいこと外します

ヒートシンク付きのSSDの下側にWiFi/BluetoothのRTL8822CEがありました

裏面はゴム足を取るとネジが4つあるので、それを外して蓋を開きます

ホコリが詰まりそうなので、時々掃除した方がよさそうですね。

Windows11の初期状態確認

電源を入れて起動してみると、初期インストールの‘Windows11は24H2でしたが、キーボード配列が‘‘英語用になっていました

インストール日が2047年ってw

Windows 11 Proのライセンス区分はOEM_DMで問題なし

256GB SSDの場合の初期ディスクレイアウトはこんな感じでした。

タスクマネージャー上でのCPU/メモリなどの認識状況確認

CPUはAMD Ryzen 5 3500U, CPUコア4個、スレッドは8個

SSDはTWSC TSC18N256-F7T10A …メーカのTWSCにあるPCIe SSD ページみると製品型番っぽいのが無い(各ページにあるサンプル製品の型番っぽいところは 12345678912 という適当表記)

NICはRealtek PCIe 2.5GbE Family Controller…どうやらRTL8125 っぽい

GPU はAMD Radeon(TM) Graphics でGPUメモリは専用3GB/共有6.5GB

デバイスマネージャ上でのネットワーク系のデバイス認識状況を確認

初期でインストールされているプログラム

スタートメニューにはSystemInfoいないんだけど、インストールされてるらしい

インストールされているAMD Settingsを起動すると、AMD Software Adrenalin Edition 23.19.18 となっている。


Windows 11の再インストールとドライバ適用

続いてSSDを交換し、Windows 11 24H2メディアを使って再インストール実施試験

WIndows Update を行ったあとのデバイス認識状況を確認

一見大丈夫そうに見えるがディスプレイアダプタが汎用認識状態

AMDのWebからドライバー amd-software-adrenalin-edition-25.10.2-minimalsetup-251027_web.exeをインストールしてみたら、下記のドライバがインストールされる(注:あとでわかりますがこのドライバは誤りでした)

しかし適用されていないのでよくよく↑の結果を見てみるとグラフィックドライバーが含まれていないため、アンインストール&再起動を実施。

先ほどのやつは大区分からインストールしてたので、次は各製品ページである「AMD Ryzen™ 5 3500U Drivers and Downloads – Latest Version」からをwhql-amd-software-adrenalin-edition-25.8.1-win10-win11-aug-vega-polaris.exeインストールしようとしたところ失敗

最新版の問題を疑って、以前のバージョン「AMD Ryzen™ 5 3500U Drivers and Downloads – Previous Versions」からwhql-amd-software-adrenalin-edition-23.11.1-win10-win11-nov3-vega-polaris.exeをインストールしても失敗。

Windowsイベントログには特に何もなし

まあ、Secure Boot署名の有効期限切れ警告がありますけどね・・・

ログの名前:         System
ソース:           Microsoft-Windows-TPM-WMI
日付:            2025/11/03 10:34:30
イベント ID:       1801
タスクのカテゴリ:      なし
レベル:           エラー
キーワード:         
ユーザー:          SYSTEM
コンピューター:       gmktecg10
説明:
Secure Boot CA/keys need to be updated. This device signature information is included here.
DeviceAttributes: BaseBoardManufacturer:GMKtec;FirmwareManufacturer:American Megatrends Inc.;FirmwareVersion:Nucbox G10 1.04;OEMModelNumber:NucBox_G10;OEMModelBaseBoard:GMKtec;OEMModelSystemFamily:MINI;OEMManufacturerName:GMKtec;OEMModelSKU:G10-001;OSArchitecture:amd64;
BucketId: 55e726482bc0c005c1d679c0126136223bace851c219b806aa8b8594d8d17946
BucketConfidenceLevel: 
UpdateType: 0
HResult: この操作を正しく終了しました。
イベント XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-TPM-WMI" Guid="{7d5387b0-cbe0-11da-a94d-0800200c9a66}" />
    <EventID>1801</EventID>
    <Version>0</Version>
    <Level>2</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8000000000000000</Keywords>
    <TimeCreated SystemTime="2025-11-03T01:34:30.7530016Z" />
    <EventRecordID>1759</EventRecordID>
    <Correlation />
    <Execution ProcessID="1900" ThreadID="3344" />
    <Channel>System</Channel>
    <Computer>gmktecg10</Computer>
    <Security UserID="S-1-5-18" />
  </System>
  <EventData>
    <Data Name="DeviceAttributes">BaseBoardManufacturer:GMKtec;FirmwareManufacturer:American Megatrends Inc.;FirmwareVersion:Nucbox G10 1.04;OEMModelNumber:NucBox_G10;OEMModelBaseBoard:GMKtec;OEMModelSystemFamily:MINI;OEMManufacturerName:GMKtec;OEMModelSKU:G10-001;OSArchitecture:amd64;</Data>
    <Data Name="BucketId">55e726482bc0c005c1d679c0126136223bace851c219b806aa8b8594d8d17946</Data>
    <Data Name="BucketConfidenceLevel">
    </Data>
    <Data Name="UpdateType">0</Data>
    <Data Name="HResult">0</Data>
  </EventData>
</Event>

プレインストールはver23.19.18のバージョンだったけど、製品一覧にないな、と不思議に思っていたのですが「Radeon™ Vulkan® Drivers Version Table」にて”Adrenalin Release”と”Internal Driver”の数値が異なる、ということが判明

しかし、whql-amd-software-adrenalin-edition-23.11.1-win10-win11-nov3-vega-polaris.exe も whql-amd-software-adrenalin-edition-25.8.1-win10-win11-aug-vega-polaris.exe も本来正しいはずのもの

ちょっと状態がよくわからないのでWindows 11 25H2で再インストール

で、whql-amd-software-adrenalin-edition-25.8.1-win10-win11-aug-vega-polaris.exe をインストールしようとしてもダメ

デバイスマネージャからディスプレイドライバの適用を強行すればGPU認識などをちゃんとすることはできましたが、AMD Settingsアプリのインストールができない状態となるため、いまいちでした。

最終的には、GMKtec公式で配布しているドライバーセットを適用しなければ認識できない、という状態であることが判明

G10_Drivers_Win11_x64_v0.4_20250820.zip を展開し、「Install_AMD_ADB55_3500U_R21C_R22C.bat」を管理者権限で実行することでインストールが完了した。

そして再起動(再起動は要求されないけど)するとRadeonとして認識

インストールされたAMD Setting

先ほどは空欄だったWindows設定画面のグラフィックスカード表記

メモリーを64GBに交換

GPUメモリ割り当てを8GBにした場合のメモリ/GPU認識状況

専用GPUメモリ 8GB、共有GPUメモリ28GBに変化

OCI上でローカルユーザベースのメールサーバ構築

postfix/dovecotを使ったIMAPメールサーバをOracle Linux 9.6上でOracle Cloud上のFree Tierで構築してみた

2025/10/30時点の状況としては、以下の問題が出て常用には難しい状態で、限定された用途にしか使えない、という感じとなった。

・OCIのFree TierではIPv4/IPv6アドレスに対する逆引き(PTR)が設定できないため gmailにメールが拒否される
・OCI上の仮想マシンから、外部のIPv4アドレスのポート25に対して通信が通らない。IPv6アドレスのポート25なら通る。(OCIの仕様)

準備1: 一般的な前準備

準備1-1: 日本時間にする

日本に住んでいる場合、日本時間表記の方が使いやすいので、OSも日本時間表示に設定する。

$ sudo timedatectl set-timezone Japan
$ 

手順1-2: swap追加

EPELレポジトリを追加した場合、メモリ1GB構成の場合、swapは5GB程度ないとdnfコマンドが正常に動作しないので、swapを増量する

/var/oled パーテーションに ファイルスワップを作成

$ sudo fallocate -l 4G /var/oled/swapfile
$ ls -l /var/oled/swapfile 
-rw-r--r--. 1 root root 4294967296 Sep  9 13:35 /var/oled/swapfile
$ sudo chmod 600 /var/oled/swapfile 
$ ls -l /var/oled/swapfile 
-rw-------. 1 root root 4294967296 Sep  9 13:35 /var/oled/swapfile
$ sudo mkswap /var/oled/swapfile 
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=bdd4f7a6-1dcc-43c8-bb2d-8f42ac2faf3f
$ 

作成したファイルをスワップとして登録

$ sudo swapon /var/oled/swapfile 
$ swapon --show
NAME               TYPE SIZE   USED PRIO
/.swapfile         file 951M 161.6M   -2
/var/oled/swapfile file   4G   8.2M   -3
$ cat /proc/swaps 
Filename                                Type            Size            Used            Priority
/.swapfile                              file            973820          165524          -2
/var/oled/swapfile                      file            4194300         8412            -3
$ 

/etc/fstab にスワップファイルの記述「/var/oled/swapfile none swap sw 0 0」を追加

$ sudo vi /etc/fstab
$ cat /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Thu Jun 12 01:18:32 2025
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/ocivolume-root /                       xfs     defaults        0 0
UUID=dd88872e-0527-4193-8282-b8281f1ae6fd /boot                   xfs     defaults        0 0
UUID=AE3C-806E          /boot/efi               vfat    defaults,uid=0,gid=0,umask=077,shortname=winnt 0 2
/dev/mapper/ocivolume-oled /var/oled               xfs     defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults,nodev,nosuid,noexec      0 0
######################################
## ORACLE CLOUD INFRASTRUCTURE CUSTOMERS
##
## If you are adding an iSCSI remote block volume to this file you MUST
## include the '_netdev' mount option or your instance will become
## unavailable after the next reboot.
## SCSI device names are not stable across reboots; please use the device UUID instead of /dev path.
##
## Example:
## UUID="94c5aade-8bb1-4d55-ad0c-388bb8aa716a"   /data1    xfs       defaults,noatime,_netdev      0      2
##
## More information:
## https://docs.us-phoenix-1.oraclecloud.com/Content/Block/Tasks/connectingtoavolume.htm
/.swapfile      none    swap    sw      0       0
/var/oled/swapfile      none    swap    sw      0       0
$

準備2-3: パッケージを最新へアップデート

現時点での最新へアップデートする

$ sudo dnf update -y
<略>
$ sudo reboot

手順1-4: 日本語Locale対応

ja_JP.UTF-8など日本語Localeで設定した際、「Failed to set locale, defaulting to C.UTF-8」というメッセージが出力される場合があります。

その場合は日本語Localeを追加インストールします。

$ sudo dnf install langpacks-ja
<略>
$

手順1-5: kdump無効化

どうせ使わないのでkdumpを無効化

$ sudo systemctl disable kdump.service
Removed '/etc/systemd/system/multi-user.target.wants/kdump.service'.
$

手順2: EPELレポジトリの追加

EPELレポジトリを登録

$ sudo dnf config-manager --set-enabled ol10_u0_developer_EPEL
$  dnf repolist --all
repo id                                                                       repo name                                                                                                       status
ol9_MODRHCK                                                                   Latest RHCK with fixes from Oracle for Oracle Linux 9 (x86_64)                                                  disabled
ol9_RDMA                                                                      Oracle Linux 9 (x86_64) RDMA                                                                                    disabled
ol9_UEKR7                                                                     Oracle Linux 9 UEK Release 7 (x86_64)                                                                           disabled
ol9_UEKR8                                                                     Oracle Linux 9 UEK Release 8 (x86_64)                                                                           enabled
ol9_addons                                                                    Oracle Linux 9 Addons (x86_64)                                                                                  enabled
ol9_appstream                                                                 Oracle Linux 9 Application Stream Packages (x86_64)                                                             enabled
ol9_baseos_latest                                                             Oracle Linux 9 BaseOS Latest (x86_64)                                                                           enabled
ol9_codeready_builder                                                         Oracle Linux 9 CodeReady Builder (x86_64) - (Unsupported)                                                       disabled
ol9_developer                                                                 Oracle Linux 9 Development Packages (x86_64)                                                                    disabled
ol9_developer_EPEL                                                            Oracle Linux 9 EPEL Packages for Development (x86_64)                                                           enabled
ol9_developer_UEKR7                                                           Developer Preview of UEK Release 7 (x86_64)                                                                     disabled
ol9_developer_kvm_utils                                                       Oracle Linux 9 KVM Utilities for Development and test (x86_64)                                                  disabled
ol9_distro_builder                                                            Oracle Linux 9 Distro Builder (x86_64) - (Unsupported)                                                          disabled
ol9_ksplice                                                                   Ksplice for Oracle Linux 9 (x86_64)                                                                             enabled
ol9_kvm_utils                                                                 Oracle Linux 9 KVM Utilities (x86_64)                                                                           disabled
ol9_oci_included                                                              Oracle Linux 9 OCI Included Packages (x86_64)                                                                   enabled
ol9_u0_baseos_base                                                            Oracle Linux 9 BaseOS GA (x86_64)                                                                               disabled
ol9_u1_baseos_base                                                            Oracle Linux 9.1 BaseOS (x86_64)                                                                                disabled
ol9_u2_baseos_base                                                            Oracle Linux 9.2 BaseOS (x86_64)                                                                                disabled
ol9_u3_baseos_base                                                            Oracle Linux 9.3 BaseOS (x86_64)                                                                                disabled
ol9_u3_security_validation                                                    Oracle Linux 9 Update 3 (x86_64) Security Validations                                                           disabled
ol9_u4_baseos_base                                                            Oracle Linux 9.4 BaseOS (x86_64)                                                                                disabled
ol9_u5_baseos_base                                                            Oracle Linux 9.5 BaseOS (x86_64)                                                                                disabled
ol9_u6_baseos_base                                                            Oracle Linux 9.6 BaseOS (x86_64)                                                                                disabled
ol9_x86_64_userspace_ksplice                                                  Ksplice aware userspace packages for Oracle Linux 9 (x86_64)                                                    disabled
$

手順3: インターネット公開用設定

手順3-1: fail2ban導入

公開サーバは各種のアタックにさらされます。管理用sshポートにもやってきます。

多少なりとも軽減するためにEPELレポジトリ収録のfail2banを使用します。

$ sudo dnf install fail2ban -y
<略>
$

カスタム設定は/etc/fail2ban/jail.local に対して行います。

$ sudo vi /etc/fail2ban/jail.local 
$ cat /etc/fail2ban/jail.local 
[DEFAULT]
# 86400秒=24時間以内に5回不審なアクセスがあったら24時間BAN
bantime  = 86400
findtime  = 86400
maxretry = 5
# 259200秒=3日以内に5回不審なアクセスがあったら3日間BAN
#bantime  = 259200
#findtime  = 259200
#maxretry = 5
# 除外IP
ignoreip = 127.0.0.1 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
[sshd]
enabled = true
banaction = firewallcmd-ipset
$ 

上記設定では24時間BANにしていますが、まぁ、3日BANでもかまわないとは思います。(本当に間違えた場合に困るのでほどほどにしておくとよい)

fail2banをOS起動時に実行する設定と、今すぐfail2banを起動するコマンドを実行します。

$ sudo systemctl enable --now fail2ban
Created symlink '/etc/systemd/system/multi-user.target.wants/fail2ban.service' → '/usr/lib/systemd/system/fail2ban.service'.
$

以降、アタックがあると /var/log/fail2ban.log にログが出ます。

手順3-2: メールサーバ用ポート公開設定

初期設定では dhcpv6-client と ssh が許可されています。

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
$

とりあえずは smtp port 25, smtp-submission 587, imap 143 を開けます

[opc@ocimail ~]$ sudo firewall-cmd --permanent --add-service=smtp
success
[opc@ocimail ~]$ sudo firewall-cmd --permanent --add-service=smtp-submission
success
[opc@ocimail ~]$ sudo firewall-cmd --permanent --add-service=imap
success
[opc@ocimail ~]$ sudo firewall-cmd --reload
success
[opc@ocimail ~]$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources: 
  services: dhcpv6-client imap smtp smtp-submission ssh
  ports: 
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
[opc@ocimail ~]$ 

手順3-3: SSL更新用ポート

後述するのだが、SSLはLet’s Encryptを使う。

その際に、http ポート80と、https ポート 443が必要となるため、設定する

[opc@ocimail ~]$ sudo firewall-cmd --permanent --add-service=http
success
[opc@ocimail ~]$ sudo firewall-cmd --permanent --add-service=https
success
[opc@ocimail ~]$ sudo firewall-cmd --reload
success
[opc@ocimail ~]$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources: 
  services: dhcpv6-client http https imap smtp smtp-submission ssh
  ports: 
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
[opc@ocimail ~]$ 

手順4: ソフトウェアインストール

postfixとdovecotをインストールします。

[opc@ocimail ~]$ sudo dnf install postfix dovecot -y
Last metadata expiration check: 2:15:42 ago on Wed 29 Oct 2025 03:42:39 AM GMT.
Dependencies resolved.
======================================================================================================================================================================================================
 Package                                     Architecture                         Version                                                           Repository                                   Size
======================================================================================================================================================================================================
Installing:
 dovecot                                     x86_64                               1:2.3.16-15.el9                                                   ol9_appstream                               5.2 M
 postfix                                     x86_64                               2:3.5.25-1.el9                                                    ol9_appstream                               1.7 M
Installing dependencies:
 clucene-core                                x86_64                               2.3.3.4-42.20130812.e8e3d20git.el9                                ol9_appstream                               594 k
 libexttextcat                               x86_64                               3.4.5-11.el9                                                      ol9_appstream                               382 k

Transaction Summary
======================================================================================================================================================================================================
Install  4 Packages

Total download size: 7.8 M
Installed size: 24 M
Downloading Packages:
(1/4): libexttextcat-3.4.5-11.el9.x86_64.rpm                                                                                                                          1.9 MB/s | 382 kB     00:00    
(2/4): clucene-core-2.3.3.4-42.20130812.e8e3d20git.el9.x86_64.rpm                                                                                                     1.8 MB/s | 594 kB     00:00    
(3/4): dovecot-2.3.16-15.el9.x86_64.rpm                                                                                                                                12 MB/s | 5.2 MB     00:00    
(4/4): postfix-3.5.25-1.el9.x86_64.rpm                                                                                                                                6.0 MB/s | 1.7 MB     00:00    
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                  16 MB/s | 7.8 MB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                              1/1 
  Installing       : libexttextcat-3.4.5-11.el9.x86_64                                                                                                                                            1/4 
  Installing       : clucene-core-2.3.3.4-42.20130812.e8e3d20git.el9.x86_64                                                                                                                       2/4 
  Running scriptlet: dovecot-1:2.3.16-15.el9.x86_64                                                                                                                                               3/4 
  Installing       : dovecot-1:2.3.16-15.el9.x86_64                                                                                                                                               3/4 
  Running scriptlet: dovecot-1:2.3.16-15.el9.x86_64                                                                                                                                               3/4 
  Running scriptlet: postfix-2:3.5.25-1.el9.x86_64                                                                                                                                                4/4 
  Installing       : postfix-2:3.5.25-1.el9.x86_64                                                                                                                                                4/4 
  Running scriptlet: postfix-2:3.5.25-1.el9.x86_64                                                                                                                                                4/4 
  Running scriptlet: dovecot-1:2.3.16-15.el9.x86_64                                                                                                                                               4/4 
  Running scriptlet: postfix-2:3.5.25-1.el9.x86_64                                                                                                                                                4/4 
  Verifying        : clucene-core-2.3.3.4-42.20130812.e8e3d20git.el9.x86_64                                                                                                                       1/4 
  Verifying        : dovecot-1:2.3.16-15.el9.x86_64                                                                                                                                               2/4 
  Verifying        : libexttextcat-3.4.5-11.el9.x86_64                                                                                                                                            3/4 
  Verifying        : postfix-2:3.5.25-1.el9.x86_64                                                                                                                                                4/4 

Installed:
  clucene-core-2.3.3.4-42.20130812.e8e3d20git.el9.x86_64            dovecot-1:2.3.16-15.el9.x86_64            libexttextcat-3.4.5-11.el9.x86_64            postfix-2:3.5.25-1.el9.x86_64           

Complete!
[opc@ocimail ~]$ 

手順5: SSL証明書関連

手順5-1: dhパラメータファイルの作成

diffie-hellman パラメータファイル を /etc/dovecot/conf.d/10-ssl.conf にあるパス /etc/dovecot/dh.pem に作成。なお、30分以上かかる。

[opc@ocimail ~]$ sudo openssl dhparam -out /etc/dovecot/dh.pem 4096
Generating DH parameters, 4096 bit long safe prime
..............................................................................................................+......................................+................................................
<略>

手順5-2: dehydratedによるLet’s Encrypt導入

Let’s EncryptによるSSL証明書導入はcertbotを使うのが一般的ではあるのだが、python環境とあわせてパッケージサイズが大きいので、コンパクトでEPELにも収録されているdehydratedを使用する。

[opc@ocimail ~]$ sudo dnf install dehydrated -y
Last metadata expiration check: 3:29:19 ago on Wed 29 Oct 2025 03:42:39 AM GMT.
Dependencies resolved.
======================================================================================================================================================================================================
 Package                                       Architecture                              Version                                          Repository                                             Size
======================================================================================================================================================================================================
Installing:
 dehydrated                                    noarch                                    0.7.1-6.el9                                      ol9_developer_EPEL                                    154 k
Installing dependencies:
 s-nail                                        x86_64                                    14.9.22-6.el9                                    ol9_appstream                                         626 k

Transaction Summary
======================================================================================================================================================================================================
Install  2 Packages

Total download size: 780 k
Installed size: 1.4 M
<略>
Installed:
  dehydrated-0.7.1-6.el9.noarch                                                                      s-nail-14.9.22-6.el9.x86_64                                                                     

Complete!
[opc@ocimail ~]$

dehydratedによるSSL証明書取得処理にはhttp port80アクセスと /var/www/dehydrated が使用されるためhttpdのインストールとディレクトリを作成します。

[opc@ocimail ~]$ sudo dnf install httpd -y
Last metadata expiration check: 3:31:07 ago on Wed 29 Oct 2025 03:42:39 AM GMT.
Dependencies resolved.
======================================================================================================================================================================================================
 Package                                           Architecture                          Version                                               Repository                                        Size
======================================================================================================================================================================================================
Installing:
 httpd                                             x86_64                                2.4.62-4.0.1.el9_6.4                                  ol9_appstream                                     64 k
Installing dependencies:
 apr                                               x86_64                                1.7.0-12.el9_3                                        ol9_appstream                                    131 k
 apr-util                                          x86_64                                1.6.1-23.el9                                          ol9_appstream                                     99 k
 apr-util-bdb                                      x86_64                                1.6.1-23.el9                                          ol9_appstream                                     12 k
 httpd-core                                        x86_64                                2.4.62-4.0.1.el9_6.4                                  ol9_appstream                                    1.8 M
 httpd-filesystem                                  noarch                                2.4.62-4.0.1.el9_6.4                                  ol9_appstream                                     11 k
 httpd-tools                                       x86_64                                2.4.62-4.0.1.el9_6.4                                  ol9_appstream                                     93 k
 oracle-logos-httpd                                noarch                                90.4-1.0.1.el9                                        ol9_baseos_latest                                 37 k
Installing weak dependencies:
 apr-util-openssl                                  x86_64                                1.6.1-23.el9                                          ol9_appstream                                     14 k
 mod_http2                                         x86_64                                2.0.26-4.el9_6.1                                      ol9_appstream                                    171 k
 mod_lua                                           x86_64                                2.4.62-4.0.1.el9_6.4                                  ol9_appstream                                     58 k

Transaction Summary
======================================================================================================================================================================================================
Install  11 Packages

Total download size: 2.5 M
Installed size: 6.1 M
Downloading Packages:
<略>
Installed:
  apr-1.7.0-12.el9_3.x86_64                  apr-util-1.6.1-23.el9.x86_64                    apr-util-bdb-1.6.1-23.el9.x86_64                      apr-util-openssl-1.6.1-23.el9.x86_64            
  httpd-2.4.62-4.0.1.el9_6.4.x86_64          httpd-core-2.4.62-4.0.1.el9_6.4.x86_64          httpd-filesystem-2.4.62-4.0.1.el9_6.4.noarch          httpd-tools-2.4.62-4.0.1.el9_6.4.x86_64         
  mod_http2-2.0.26-4.el9_6.1.x86_64          mod_lua-2.4.62-4.0.1.el9_6.4.x86_64             oracle-logos-httpd-90.4-1.0.1.el9.noarch             

Complete!
[opc@ocimail ~]$ sudo mkdir /var/www/dehydrated
[opc@ocimail ~]$ 

http://~/.well-known/acme-challenge でアクセスした時に上記ディレクトリが開くようApacheの設定を /etc/httpd/conf.d/dehydrated.conf として作成します。(sudo vi /etc/httpd/conf.d/dehydrated.conf )

[opc@ocimail ~]$ sudo vi /etc/httpd/conf.d/dehydrated.conf 
[opc@ocimail ~]$ cat /etc/httpd/conf.d/dehydrated.conf 
Alias /.well-known/acme-challenge /var/www/dehydrated
<Directory /var/www/dehydrated/>
</Directory>
[opc@ocimail ~]$ 

httpdを起動します

[opc@ocimail ~]$ sudo systemctl enable --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[opc@ocimail ~]$ 

SSL証明書を発行するホスト名を /etc/dehydrated/domains.txt に記載する。(sudo vi /etc/dehydrated/domains.txt)

$ sudo vi /etc/dehydrated/domains.txt
$ sudo cat /etc/dehydrated/domains.txt
ホスト1名.ドメイン名 ホスト2名.ドメイン名
$

登録操作を開始します。

[opc@ocimail ~]$ sudo dehydrated --register
# INFO: Using main config file /etc/dehydrated/config
# INFO: Using additional config file /etc/dehydrated/conf.d/local.sh

To use dehydrated with this certificate authority you have to agree to their terms of service which you can find here: https://letsencrypt.org/documents/LE-SA-v1.5-February-24-2025.pdf

To accept these terms of service run "/bin/dehydrated --register --accept-terms".
[opc@ocimail ~]$ sudo dehydrated --register --accept-terms
# INFO: Using main config file /etc/dehydrated/config
# INFO: Using additional config file /etc/dehydrated/conf.d/local.sh
+ Generating account key...
+ Registering account key with ACME server...
+ Fetching account URL...
+ Done!
[opc@ocimail ~]$ 

初回のSSL証明書発行処理を実行します。

[opc@ocimail ~]$ sudo dehydrated --cron
# INFO: Using main config file /etc/dehydrated/config
# INFO: Using additional config file /etc/dehydrated/conf.d/local.sh
Processing ocimail.websa.jp
 + Signing domains...
 + Generating private key...
 + Generating signing request...
 + Requesting new certificate order from CA...
 + Received 1 authorizations URLs from the CA
 + Handling authorization for ホスト名
 + 1 pending challenge(s)
 + Deploying challenge tokens...
 + Responding to challenge for ocimail.websa.jp authorization...
 + Challenge is valid!
 + Cleaning challenge tokens...
 + Requesting certificate...
Warning: Will read cert request from stdin since no -in option is given
 + Checking certificate...
 + Done!
 + Creating fullchain.pem...
 + Done!
 + Running automatic cleanup
Moving unused file to archive directory: ホスト名/cert-1761722366.csr
Moving unused file to archive directory: ホスト名/cert-1761722366.pem
Moving unused file to archive directory: ホスト名/privkey-1761722366.pem
[opc@ocimail ~]$ 

これで/etc/dehydrated/certs/ホスト名/ にSSL証明書が作成される

[opc@ocimail ~]$ sudo ls -l /etc/dehydrated/certs/ホスト名/
total 20
-rw-------. 1 root root 1655 Oct 29 07:26 cert-1761722787.csr
-rw-------. 1 root root 2134 Oct 29 07:26 cert-1761722787.pem
lrwxrwxrwx. 1 root root   19 Oct 29 07:26 cert.csr -> cert-1761722787.csr
lrwxrwxrwx. 1 root root   19 Oct 29 07:26 cert.pem -> cert-1761722787.pem
-rw-------. 1 root root 1802 Oct 29 07:26 chain-1761722787.pem
lrwxrwxrwx. 1 root root   20 Oct 29 07:26 chain.pem -> chain-1761722787.pem
-rw-------. 1 root root 3936 Oct 29 07:26 fullchain-1761722787.pem
lrwxrwxrwx. 1 root root   24 Oct 29 07:26 fullchain.pem -> fullchain-1761722787.pem
-rw-------. 1 root root 3272 Oct 29 07:26 privkey-1761722787.pem
lrwxrwxrwx. 1 root root   22 Oct 29 07:26 privkey.pem -> privkey-1761722787.pem
[opc@ocimail ~]$ 

dovecot設定

dovecot ssl設定

/etc/dovecot/conf.d/10-ssl.conf にて

「ssl = required」を「ssl = yes」に変更

# SSL/TLS support: yes, no, required. &lt;doc/wiki/SSL.txt>
# disable plain pop3 and imap, allowed are only pop3+TLS, pop3s, imap+TLS and imaps
# plain imap and pop3 are still allowed for local connections
ssl = yes

ssl_certとssl_keyをdehydratedが出力したファイルに置き換え

# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
ssl_cert = &lt;/etc/dehydrated/certs/ホスト名/fullchain.pem
ssl_key = &lt;/etc/dehydrated/certs/ホスト名/privkey.pem

dhパラメータのコメントを取る

# SSL DH parameters
# Generate new params with `openssl dhparam -out /etc/dovecot/dh.pem 4096`
# Or migrate from old ssl-parameters.dat file with the command dovecot
# gives on startup when ssl_dh is unset.
ssl_dh = &lt;/etc/dovecot/dh.pem

dovecotのメイン設定ファイル

/etc/dovecot/dovecot.conf に以下の変更

標準だと「imap pop3 lmtp submission」となっているものから、imapとsubmissionとする

# Protocols we want to be serving.
#protocols = imap pop3 lmtp submission
protocols = imap submission

dovecotのメール保存に関するファイル

/etc/dovecot/conf.d/10-mail.conf に以下の変更

maildir形式で各ユーザのホームディレクトリに保存する設定

#   mail_location = maildir:~/Maildir
#   mail_location = mbox:~/mail:INBOX=/var/mail/%u
#   mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
#
# &lt;doc/wiki/MailLocation.txt>
#
mail_location = maildir:~/Maildir

quotaを有効化するため、mail_plugins に「$mail_plugins quota」を追加

# Space separated list of plugins to load for all services. Plugins specific to
# IMAP, LDA, etc. are added to this list in their own .conf files.
mail_plugins = $mail_plugins quota

mailboxのindexを有効にする設定「mailbox_list_index = yes」を入れる

##
## Mailbox handling optimizations
##

# Mailbox list indexes can be used to optimize IMAP STATUS commands. They are
# also required for IMAP NOTIFY extension to be enabled.
mailbox_list_index = yes

IMAPログイン時のパスワード取り扱い設定

IMAPログイン時のパスワードを暗号化して送信する、というのが現代の設定となる。

古い仕様のメールクラインとがいたとすると、平文パスワードを許可する設定を /etc/dovecot/conf.d/10-auth.conf に追加する必要がある。

その場合は下記を「disable_plaintext_auth = no」に変更する

# Disable LOGIN command and all other plaintext authentications unless
# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP
# matches the local IP (ie. you're connecting from the same computer), the
# connection is considered secure and plaintext authentication is allowed.
# See also ssl=required setting.
#disable_plaintext_auth = yes

また、下記を「auth_mechanism = plain login」に変更する

# Space separated list of wanted authentication mechanisms:
#   plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp
#   gss-spnego
# NOTE: See also disable_plaintext_auth setting.
auth_mechanisms = plain

dovecotのSMTP-auth動作時の設定

/etc/dovecot/conf.d/10-master.conf でコメントアウトされている smtp-authに関する設定を少し修正して設定する

  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }

dovecotのIMAP設定

/etc/dovecot/conf.d/20-imap.conf にて mail_plugin として「imap_quota」を追加

protocol imap {
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins imap_quota

  # Maximum number of IMAP connections allowed for a user from each IP address.
  # NOTE: The username is compared case-sensitively.
  #mail_max_userip_connections = 10
}

dovecotのメールボックス取り扱い設定

/etc/dovecot/conf.d/15-mailboxes.conf を修正することで、メールソフトによってフォルダ名に微妙な違いがあるのをある程度吸収できる。

##
## Mailbox definitions
##

# Each mailbox is specified in a separate mailbox section. The section name
# specifies the mailbox name. If it has spaces, you can put the name
# "in quotes". These sections can contain the following mailbox settings:
#
# auto:
#   Indicates whether the mailbox with this name is automatically created
#   implicitly when it is first accessed. The user can also be automatically
#   subscribed to the mailbox after creation. The following values are
#   defined for this setting:
# 
#     no        - Never created automatically.
#     create    - Automatically created, but no automatic subscription.
#     subscribe - Automatically created and subscribed.
#  
# special_use:
#   A space-separated list of SPECIAL-USE flags (RFC 6154) to use for the
#   mailbox. There are no validity checks, so you could specify anything
#   you want in here, but it's not a good idea to use flags other than the
#   standard ones specified in the RFC:
#
#     \All       - This (virtual) mailbox presents all messages in the
#                  user's message store.
#     \Archive   - This mailbox is used to archive messages.
#     \Drafts    - This mailbox is used to hold draft messages.
#     \Flagged   - This (virtual) mailbox presents all messages in the
#                  user's message store marked with the IMAP \Flagged flag.
#     \Important - This (virtual) mailbox presents all messages in the
#                  user's message store deemed important to user.
#     \Junk      - This mailbox is where messages deemed to be junk mail
#                  are held.
#     \Sent      - This mailbox is used to hold copies of messages that
#                  have been sent.
#     \Trash     - This mailbox is used to hold messages that have been
#                  deleted.
#
# comment:
#   Defines a default comment or note associated with the mailbox. This
#   value is accessible through the IMAP METADATA mailbox entries
#   "/shared/comment" and "/private/comment". Users with sufficient
#   privileges can override the default value for entries with a custom
#   value.

# NOTE: Assumes "namespace inbox" has been defined in 10-mail.conf.
namespace inbox {
  # These mailboxes are widely used and could perhaps be created automatically:
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox "下書き" {
    special_use = \Drafts
  }
  mailbox INBOX.Drafts {
    special_use = \Drafts
  }

  mailbox Junk {
    special_use = \Junk
  }
  mailbox "迷惑メール" {
    special_use = \Junk
  }
  mailbox "Junk Email" {
    special_use = \Junk
  }
  mailbox "INBOX.Junk Email" {
    special_use = \Junk
  }

  mailbox Trash {
    special_use = \Trash
  }
  mailbox "削除済みアイテム" {
    special_use = \Trash
  }
  mailbox "Deleted Items" {
    special_use = \Trash
  }
  mailbox "INBOX.Deleted Items" {
    special_use = \Trash
  }

  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox "送信済みアイテム" {
    special_use = \Sent
  }
  mailbox "Sent Items" {
    special_use = \Sent
  }
  mailbox "INBOX.Sent Items" {
    special_use = \Sent
  }

  # If you have a virtual "All messages" mailbox:
  #mailbox virtual/All {
  #  special_use = \All
  #  comment = All my messages
  #}

  # If you have a virtual "Flagged" mailbox:
  #mailbox virtual/Flagged {
  #  special_use = \Flagged
  #  comment = All my flagged messages
  #}

  # If you have a virtual "Important" mailbox:
  #mailbox virtual/Important {
  #  special_use = \Important
  #  comment = All my important messages
  #}
}

dovecotのquota設定

既存の /etc/dovecot/conf.d/90-quota.conf の最後に下記を追加する

これは100MBで制限する例

mailbox_list_index = yes

# Avoid spending excessive time waiting for the quota calculation to finish
# when mails' vsizes aren't already cached. If this many mails are opened,
# finish the quota calculation on background in indexer-worker process. Mail
# deliveries will be assumed to succeed, and explicit quota lookups will
# return internal error. (v2.2.28+)
protocol !indexer-worker {
  mail_vsize_bg_after_count = 100
}

plugin {
  quota = count:User quota
  quota_rule = *:storage=100M
  #quota_rule2 = Trash:storage=+100M

  # This is required - it uses "virtual sizes" rather than "physical sizes"
  # for quota counting:
  quota_vsizes = yes
}

dovecotのsmtp submission設定

/etc/dovecot/conf.d/20-submission.conf にて設定する

dovecot自体ではメール配送を行わないので、postfix側に引き渡すのだが、同じホスト上にあったとしてもlocalhost指定ではなく、外部から見えるホスト名で指定する。

# Relay server configuration:
#
# The Dovecot SMTP submission service directly proxies the mail transaction
# to the SMTP relay configured here.

# Host name for the relay server (required)
submission_relay_host = ホスト名.ドメン名

postfix側設定

postfix側は /etc/postfix/main.cf へ設定を行う

Oracle Cloud上だとホスト名が内部のみの ホスト名.subnet<数字>.vcn<数字>.oraclevcn.comといったものとなっているので、DNS上のホスト名をmyhostnameで設定する

# INTERNET HOST AND DOMAIN NAMES
# 
# The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many
# other configuration parameters.
#
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
myhostname = ホスト名.ドメイン名

続いてmydomain も 外部で認識させたいドメイン名を入れる

# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component.
# $mydomain is used as a default value for many other configuration
# parameters.
#
#mydomain = domain.tld
mydomain = ドメイン名

外部に送信するメールの@以降の部分はドメイン名としたいので「myorigin = $mydomain」の方を有効にします。

# SENDING MAIL
# 
# The myorigin parameter specifies the domain that locally-posted
# mail appears to come from. The default is to append $myhostname,
# which is fine for small sites.  If you run a domain with multiple
# machines, you should (1) change this to $mydomain and (2) set up
# a domain-wide alias database that aliases each user to
# user@that.users.mailhost.
#
# For the sake of consistency between sender and recipient addresses,
# myorigin also specifies the default domain name that is appended
# to recipient addresses that have no @domain part.
#
#myorigin = $myhostname
myorigin = $mydomain

外部からpostfixにアクセスする必要があるので「inet_interfaces = all」を有効にします

# The inet_interfaces parameter specifies the network interface
# addresses that this mail system receives mail on.  By default,
# the software claims all active interfaces on the machine. The
# parameter also controls delivery of mail to user@[ip.address].
#
# See also the proxy_interfaces parameter, for network addresses that
# are forwarded to us via a proxy or network address translator.
#
# Note: you need to stop/start Postfix when this parameter changes.
#
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost

# Enable IPv4, and IPv6 if supported
inet_protocols = all

自サーバで受信するメールドメインの設定は2番目のドメイン宛ても受け取るやつにします

# See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
#
#mydestination = $myhostname, localhost.$mydomain, localhost
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
#       mail.$mydomain, www.$mydomain, ftp.$mydomain

ローカルユーザとしてメールを受け取りたいので、local_recipient_mapsを明示的に有効にします。

# The right-hand side of the lookup tables is conveniently ignored.
# In the left-hand side, specify a bare username, an @domain.tld
# wild-card, or specify a user@domain.tld address.
# 
local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =

postfixでメールを送信できるようにする設定

メール送信を許可するネットワークを mynetworks で行う

#mynetworks = 168.100.189.0/28, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table

また、以下を追加

# With Postfix version before 2.10, use smtpd_recipient_restrictions
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

postfixのssl証明書設定

/etc/postfix/main.cf の最後の方にSSL関連の設定がある

# The full pathname of a file with the Postfix SMTP server RSA certificate
# in PEM format. Intermediate certificates should be included in general,
# the server certificate first, then the issuing CA(s) (bottom-up order).
#
smtpd_tls_cert_file = /etc/dehydrated/certs/ocimail.websa.jp/fullchain.pem
# The full pathname of a file with the Postfix SMTP server RSA private key
# in PEM format. The private key must be accessible without a pass-phrase,
# i.e. it must not be encrypted.
#
smtpd_tls_key_file = /etc/dehydrated/certs/ocimail.websa.jp/privkey.pem

postfix側からdovecotを起動する設定

/etc/postfix/master.cf の最終行に以下を追加

dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/dovecot-lda -f ${sender} -d ${recipient}

postfixからSASLを使ってdovecot連携する手法は使わない

今回はsmtp submissionはdovecot側で行うので、SASLを使ってdovecotと連携するための下記設定は行わない。

smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
# dovecot sasl configuration
smtpd_sasl_type = dovecot
# Can be an absolute path, or relative to $queue_directory
# Debian/Ubuntu users: Postfix is setup by default to run chrooted, so it is best to leave it as-is below
smtpd_sasl_path = private/auth
# and the common settings to enable SASL:
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous 

トラブル対応

gmail宛てがgmail側で受け取り拒否

gmailに送ったところ、メールがなかなか届かないので/var/log/maillogを確認

Oct 30 10:15:28 ocimail postfix/smtp[5898]: AA57A309E87E: to=&lt;アドレス@gmail.com>, relay=gmail-smtp-in.l.google.com[2404:6800:4008:c15::1b]:25, delay=2.6, delays=0.29/0.19/1.2/0.9, dsn=5.7.1, status=bounced (host gmail-
smtp-in.l.google.com[2404:6800:4008:c15::1b] said: 550-5.7.1 [2603:c023:f:9000:0:7a41:2e84:f27f] Gmail has detected that this 550-5.7.1 message does not meet IPv6 sending guidelines regarding PTR records 550-5.7.1 and auth
entication. For more information, go to 550 5.7.1  https://support.google.com/mail/?p=IPv6AuthError 41be03b00d2f7-b71f4ba78c7si7488417a12.1056 - gsmtp (in reply to end of DATA command))

「Gmail has detected that this 550-5.7.1 message does not meet IPv6 sending guidelines regarding PTR records 550-5.7.1 and authentication. For more information, go to 550 5.7.1 https://support.google.com/mail/?p=IPv6AuthError」という形で拒否されていた。

リンク先はGoogleの「メール送信者のガイドライン」の最後のあたりで下記の様に書かれている

IPv6 認証エラーを修正する
送信元サーバーの PTR レコードで IPv6 が使用されていない場合、IPv6 認証エラーが返される場合があります。メールサービス プロバイダを利用している場合は、プロバイダが IPv6 の PTR レコードを使用していることを確認してください。

IPv6 認証エラーの例を次に示します。
550-5.7.1: Message does not meet IPv6 sending guidelines regarding PTR records and authentication.(メールが PTR レコードと認証に関する IPv6 の送信ガイドラインに準拠していません。)

あと、最初の方に書かれているIPアドレスに対する要件も関係している

インフラストラクチャ設定の要件とガイドライン
IP アドレス
重要: 送信元 IP アドレスは、ポインタ(PTR)レコードで指定されたホスト名の IP アドレスと一致している必要があります。

送信元 SMTP サーバーのパブリック IP アドレスには、対応するホスト名を参照する PTR レコードが必要です。これは、リバース DNS ルックアップと呼ばれます。このホスト名には、送信元サーバーと同じパブリック IP アドレスを参照する A レコード(IPv4 の場合)または AAAA レコード(IPv6 の場合)も必要です。これは、フォワード DNS ルックアップと呼ばれます。
送信元サーバーの IP アドレスとドメインを対応付ける有効なリバース DNS レコードを設定します。Google 管理者ツールボックスの Dig ツールを使用して PTR レコードを確認します。
重要: 送信元 IP アドレスは、ポインタ(PTR)レコードで指定されたホスト名の IP アドレスと一致している必要があります。

つまり、IPv6アドレスのPTRレコードに対してちゃんとホスト名を設定する必要があるようだ。

じゃあ、Oracle Cloudの場合、それを設定できるのか?を確認

Oracle Cloud Infrastructureドキュメント:逆引きDNS (PTR)

クラウドIPアドレスに対してPTRレコードを確立するようにリクエストできます:
1. リクエストをオープンする前の完全修飾ドメイン名をIPに示したA (IPv4)またはAAAA (IPv6)フォワード・レコードを作成します。レコードは、Oracle Cloud Infrastructure DNSサービスまたはサードパーティDNSプロバイダを使用して作成できます。
2. サービス・リクエストをオープンして、次の情報を含めます:
a. PTRに必要なIPアドレスおよび完全修飾ドメイン名(FQDN)。
b. ステップ1で作成したフォワード・レコードのFQDN。

サービス・リクエストの受信後、フォワード(AまたはAAAA)レコード情報は、正常に解決できることが検証され、OracleによってPTRレコードが作成されます。

Web UIでは設定できないのでサービスリクエストから申請する必要がある、とのこと。

サービスリクエストのリンクを飛ぶと「サポート・リクエスト」になったが、読むと・・・

サポート・リクエストは有料アカウントでのみ利用可能です。Always Freeリソースのみを使用する顧客およびFree Tierアカウントを使用する顧客はOracle Supportの対象ではありません。サポートが必要な場合は、サポート・チャットおよびCloud Customer Connectを使用します。

とある、サポートチャットで、対応してもらえるんだろうか?

OCI CLIコマンドのdnsオプションで操作できないのか?

パッケージ oci-utils ではなく、パッケージ python39-oci-cli の方だった

[root@ocimail ~]# dnf install python39-oci-cli
Last metadata expiration check: 2:19:30 ago on Thu 30 Oct 2025 08:47:09 AM JST.
Dependencies resolved.
==============================================================================================================================================================================================================================
 Package                                                        Architecture                               Version                                               Repository                                              Size
==============================================================================================================================================================================================================================
Installing:
 python39-oci-cli                                               noarch                                     3.69.0-1.el9                                          ol9_oci_included                                        46 M
Upgrading:
 python39-oci-sdk                                               x86_64                                     2.162.0-1.el9                                         ol9_oci_included                                        91 M
Installing dependencies:
 python3-arrow                                                  noarch                                     1.2.3-5.el9                                           ol9_developer_EPEL                                     166 k
 python3-importlib-metadata                                     noarch                                     4.12.0-2.el9                                          ol9_oci_included                                        75 k
 python3-jmespath                                               noarch                                     0.10.0-4.el9                                          ol9_oci_included                                        78 k
 python3-prompt-toolkit                                         noarch                                     3.0.38-4.el9                                          ol9_oci_included                                       1.0 M
 python3-terminaltables                                         noarch                                     3.1.10-8.0.1.el9                                      ol9_oci_included                                        60 k
 python3-wcwidth                                                noarch                                     0.2.5-8.el9                                           ol9_appstream                                           65 k
 python3-zipp                                                   noarch                                     3.20.1-2.el9                                          ol9_oci_included                                        48 k

Transaction Summary
==============================================================================================================================================================================================================================
Install  8 Packages
Upgrade  1 Package

Total download size: 138 M
Is this ok [y/N]: y
<略>
Upgraded:
  python39-oci-sdk-2.162.0-1.el9.x86_64                                                                                                                                                                                       
Installed:
  python3-arrow-1.2.3-5.el9.noarch     python3-importlib-metadata-4.12.0-2.el9.noarch   python3-jmespath-0.10.0-4.el9.noarch   python3-prompt-toolkit-3.0.38-4.el9.noarch   python3-terminaltables-3.1.10-8.0.1.el9.noarch  
  python3-wcwidth-0.2.5-8.el9.noarch   python3-zipp-3.20.1-2.el9.noarch                 python39-oci-cli-3.69.0-1.el9.noarch  

Complete!
[root@ocimail ~]# 

いれたものの、DNSの逆引き設定ができそうな感じはなかった・・・

とりあえず、IPv6を使わないようにすればごまかせる、という話が「How I Fixed Gmail Rejecting Emails by Disabling IPv6 in Postfix」にあったので /etc/postfix/main.cfの「inet_protocols = all」を「inet_protocols = ipv4」に変更

# Enable IPv4, and IPv6 if supported
inet_protocols = ipv4

ただ、これをやったところ、dovecot submissionで受け取ったメールがpostfixに引き渡されてくれないという問題が発生・・・

how to set smtp-client -> submission_relay_host for IPv4 only?」で似たような感じで、IPv4だけでつなげたい場合設定はあるのか?という話があるが、/etc/hosts に書くぐらいの対処方法しかないようだ

で・・・さらに原因を調査してみて判明したこと

どうやら、Oracle Cloud内部の仮想マシン上から外部のIPv4アドレスに対してのポート25アクセスができない模様

IPv6アドレスであればいける

[root@ocimail ~]# telnet 外部メールサーバ 25
Trying <IPv6アドレス>...
Connected to 外部メールサーバ.
Escape character is '^]'.
220 外部メールサーバ ESMTP Postfix
quit
221 2.0.0 Bye
Connection closed by foreign host.
[root@ocimail ~]# telnet -4 外部メールサーバ 25
Trying <IPv4アドレス>...
^C
[root@ocimail ~]# 

ポート80だったらIPv4でも問題無いので、IPv4 ポート25に関してだけ規制されている模様

[root@ocimail ~]# telnet -4 外部メールサーバ 80
Trying <IPv4アドレス>...
Connected to 外部メールサーバ.
Escape character is '^]'.
GET / HTTP/1.0

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 30 Oct 2025 06:02:36 GMT
Content-Type: text/html
Content-Length: 162
Connection: close
Location: https://_/
X-Frame-Options: sameorigin
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Content-Security-Policy: default-src https: data: 'unsafe-inline' 'unsafe-eval'
Referrer-Policy: strict-origin

<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>
Connection closed by foreign host.
[root@ocimail ~]# 

試しにOCIのセキュリティリストのセキュリティルールにて、エグレスルールとして、ポート25を追加してみたものの状況は変わりませんでした。(ステートフルのチェックを入れた場合も変化無し)

・・・Oracle Cloudドキュメントにポート25はブロックしてると記載されていました。

アウトバウンドSMTPがブロックされます

ESXi上のWindows仮想マシンの仮想ディスクに対してSDeleteコマンドを実行してみたログ

ESXi上で仮想マシンを作った場合に、Thinディスクフォーマットで仮想ディスクを作ると、実際にデータを書き込んだ場合にのみ容量を消費する。

じゃあ、1回書き込んだデータを削除した場合に、自動的に開放してくれるかというと、なかなか難しいことがあるようだ(VMware Storage Space Reclamation in vSphere)

手動で開放する手法がKBにある「Reclaiming disk space from thin provisioned VMDK files when ESXI Host still sees blocks even after removed from GuestOS

Linuxの場合は仮想マシンを止めた後、ESXi shellから仮想ディスクVMDKファイルに対して「vmkfstool -K ディスクファイル名.vmdk」を実行する。

Windowsの場合は、Windows OS上でMicrosoftが配布しているSDeleteコマンド を各ドライブレターに対して実行する・・・ということになっている。

とりあえず実験してみることにした

ESXi上の認識

管理者権限でコマンドプロンプトかPowerShellを開き「sdelete.exe -z c:」を実行

初回は下記の様にEULAが表示されるので「Agree」(承諾)する

実行ログ

PS C:\Users\Administrator\Downloads\SDelete> .\sdelete.exe -z c:

SDelete v2.05 - Secure file delete
Copyright (C) 1999-2023 Mark Russinovich
Sysinternals - www.sysinternals.com

SDelete is set for 1 pass.
Free space cleaned on C:\
1 drive cleaned.
PS C:\Users\Administrator\Downloads\SDelete>

実行完了後の状態を確認すると、特に変わらないような気がする・・・

うーん・・・

効果がわからないので他のWindowsサーバでも試してみる

sdeleteを実行

なんか大量にPurgeが発生している模様で表示がおかしい・・・

14時間経過後・・・

終わらない・・・

そこから10分・・・終わった

PS C:\Users\Administrator> .\Downloads\SDelete\sdelete.exe -z c:

SDelete v2.05 - Secure file delete
Copyright (C) 1999-2023 Mark Russinovich
Sysinternals - www.sysinternals.com

SDelete is set for 1 pass.
Free space cleaned on C:\
1 drive cleaned.
PS C:\Users\Administrator> .\Downloads\SDelete\sdelete.exe -z d:

SDelete v2.05 - Secure file delete
Copyright (C) 1999-2023 Mark Russinovich
Sysinternals - www.sysinternals.com

SDelete is set for 1 pass.
Free space cleaned on D:\
1 drive cleaned.
PS C:\Users\Administrator>

なんで、そんなことになってるのかな?と思ったら作業してたDドライブに対してスケジュールジョブによりたくさんのデータが書き込まれていたためでした・・・ジョブ停止忘れてましたね・・・

よって、SDeleteコマンドを実行した意味がなくなってしまったということに・・・

ただ、実行中にいろいろ調べてみたところ、NVMe上のVMFS領域だと、わざわざsdeleteコマンド実行しなくても勝手に相当する動作をやってくれるのでは?という話もあった

とりあえず、Windows Server 2025環境で実行してみた限り、なんか影響があったようには感じなかった

Oracle Linux 10でWordPressサーバを立てる

Oracle Cloud InfrastructureでOracle Linux 10イメージがリリースされました。

2025/09/09時点では Oracle-Linux-10.0-2025.08.31-0 というバージョンでした。

こちらを使用してWordPressサーバを立ててみる手順です

ただ、2025/09/09時点ではOracle Linux 10用のOracle Cloud Agentが完成していない、ということで、いまいちお勧めできない状況です。

記事修正履歴

2025/09/09: 作成
2025/09/10:
 手順14 SSL証明書自動更新設定を追加
 準備1-3: イングレスルールとエグレスルールにIPv6用設定を追加

2025/09/19: トラブル対応手順
 トラブル対応手順1: python3-pyOpenSSLのconflict問題

準備1: Oracle Cloud用手順

準備1-1: IPv6アドレス割り当て:Oracle Cloudコンソール側

Oracle Cloudのコンソールを開いて、インスタンスにIPv6アドレスを割り当てます。

また、割り当てられたIPv6アドレスを確認します。

準備1-2: インスタンス側操作

Oracle Linux 10のイメージではIPv6が有効化されていたので、特に設定する必要はありませんでした。

準備 1-3: クラウドネットワークのセキュリティリストにhttp,https用設定

Oracle Cloudの[ネットワーキング]-[仮想クラウドネットワーク]にて、作成されているvcnを選択

[セキュリティ]をクリックし、「セキュリティリスト」を開き、登録されている「Default Security List for vcn~」をクリック

[セキュリティルール]タブにて、「イングレスルール」として以下を追加する

ソースタイプ: CIDR
ソースCIDR: 0.0.0.0/0
IPプロトコル: TCP
ソースポート範囲: all
宛先ポート範囲: 80,443
説明: http

ソースタイプ: CIDR
ソースCIDR: ::/0
IPプロトコル: TCP
ソースポート範囲: all
宛先ポート範囲: 80,443
説明: http for IPv6

また、IPv6経由のsshでアクセスしたい場合にルールがない場合は下記も追加

ソースタイプ: CIDR
ソースCIDR: ::/0
IPプロトコル: TCP
ソースポート範囲: all
宛先ポート範囲: 22
説明: ssh for IPv6

[セキュリティルール]タブにて、「エグレスルール」として以下を追加する(IPv4用の登録はすでにあるが、IPv6用の登録がないので追加する)

宛先タイプ: CIDR
宛先CIDR: ::/0
IPプロトコル: すべてのポートのすべてのトラフィック
説明:

準備2: 一般的な前準備

準備2-1: 日本時間にする

日本に住んでいる場合、日本時間表記の方が使いやすいので、OSも日本時間表示に設定する。

$ sudo timedatectl set-timezone Japan
$ 

手順2-2:swap追加

Oracle Linux 8からメモリ1GB環境ではEPELレポジトリ追加後のdnfコマンド処理で応答がなくなることが多発している。

調査した結果、メモリとスワップが少ないと発生し、Oracle Linux 9環境では合計で5GB程度ないと支障がでる、ということがわかった。

2025/09/09時点での Oracle-Linux-10.0-2025.08.31-0 ではスワップは約1GBと足らない状態となっている。

追加のファイルスワップを作成できそうな領域は「/パーテーション」か「/var/oledパーテーション」となるので、どちらかにファイルスワップを作成する

[opc@oci10 ~]$ sudo fallocate -l 4G /var/oled/swapfile
[opc@oci10 ~]$ ls -l /var/oled/swapfile 
-rw-r--r--. 1 root root 4294967296 Sep  9 13:35 /var/oled/swapfile
[opc@oci10 ~]$ sudo chmod 600 /var/oled/swapfile 
[opc@oci10 ~]$ ls -l /var/oled/swapfile 
-rw-------. 1 root root 4294967296 Sep  9 13:35 /var/oled/swapfile
[opc@oci10 ~]$ sudo mkswap /var/oled/swapfile 
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=bdd4f7a6-1dcc-43c8-bb2d-8f42ac2faf3f
[opc@oci10 ~]$ 

作成したファイルをスワップとして登録

[opc@oci10 ~]$ sudo swapon /var/oled/swapfile 
[opc@oci10 ~]$ swapon --show
NAME               TYPE SIZE   USED PRIO
/.swapfile         file 951M 144.4M   -2
/var/oled/swapfile file   4G     0B   -3
[opc@oci10 ~]$ cat /proc/swaps 
Filename                                Type            Size            Used            Priority
/.swapfile                              file            973820          147908          -2
/var/oled/swapfile                      file            4194300         0               -3
[opc@oci10 ~]$ 

/etc/fstabにスワップファイルの記述「/var/oled/swapfile none swap sw 0 0」を追加

[opc@oci10 ~]$ sudo vi /etc/fstab 
[opc@oci10 ~]$ cat /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Wed Jul 16 02:09:25 2025
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=7d252e5c-0a4d-4f09-afca-58d232b956c2 /                       xfs     defaults        0 0
UUID=02208839-bc64-488a-9f5f-b87452a0f76d /boot                   xfs     defaults        0 0
UUID=9A6D-CFD1          /boot/efi               vfat    defaults,uid=0,gid=0,umask=077,shortname=winnt 0 2
UUID=81c1f07e-ee73-470f-b0ec-d21ad8693c3e /var/oled               xfs     defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults,nodev,nosuid,noexec      0 0
######################################
## ORACLE CLOUD INFRASTRUCTURE CUSTOMERS
##
## If you are adding an iSCSI remote block volume to this file you MUST
## include the '_netdev' mount option or your instance will become
## unavailable after the next reboot.
## SCSI device names are not stable across reboots; please use the device UUID instead of /dev path.
##
## Example:
## UUID="94c5aade-8bb1-4d55-ad0c-388bb8aa716a"   /data1    xfs       defaults,noatime,_netdev      0      2
##
## More information:
## https://docs.cloud.oracle.com/Content/Block/Tasks/connectingtoavolume.htm
/.swapfile      none    swap    sw      0       0
/var/oled/swapfile      none    swap    sw      0       0
[opc@oci10 ~]$ 

準備2-3: パッケージを最新にアップデートする

現時点でインストール済みパッケージを最新にします。

$ sudo dnf update -y
<略>
$ sudo reboot

2025/09/19時点ではpython3-pyOpenSSL関連で失敗するので後述の「トラブル対応手順1: python3-pyOpenSSLのconflict問題」を行う

手順2-4:日本語Locale対応

ja_JP.UTF-8など日本語Localeで設定した際、「Failed to set locale, defaulting to C.UTF-8」というメッセージが出力される場合があります。

その場合は日本語Localeを追加インストールします。

$ sudo dnf install langpacks-ja 
<略>
$

手順2-5:kdump無効化

メモリが1GBしかないので、kdump.serviceの実行に失敗したりしている。

[opc@oci10 ~]$ systemctl status kdump
× kdump.service - Crash recovery kernel arming
     Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Tue 2025-09-09 12:01:53 JST; 1h 24min ago
 Invocation: 1833096bfd314195995486c8d6963173
   Main PID: 2556 (code=exited, status=1/FAILURE)
   Mem peak: 3.3M
        CPU: 59ms

Sep 09 12:01:52 oci10 systemd[1]: Starting kdump.service - Crash recovery kernel arming...
Sep 09 12:01:53 oci10 kdumpctl[2586]: kdump: No memory reserved for crash kernel
Sep 09 12:01:53 oci10 kdumpctl[2586]: kdump: Starting kdump: [FAILED]
Sep 09 12:01:53 oci10 systemd[1]: kdump.service: Main process exited, code=exited, status=1/FAILURE
Sep 09 12:01:53 oci10 systemd[1]: kdump.service: Failed with result 'exit-code'.
Sep 09 12:01:53 oci10 systemd[1]: Failed to start kdump.service - Crash recovery kernel arming.
[opc@oci10 ~]$ 

ダンプとっても使わないし、エラーとならないようkdumpを無効化してしまいます。

[opc@oci10 ~]$ sudo systemctl disable kdump.service
Removed '/etc/systemd/system/multi-user.target.wants/kdump.service'.
[opc@oci10 ~]$ 

手順3: EPELレポジトリの追加

EPELレポジトリを使うので、使用できるようにします。

手順3-1:レポジトリの状態を確認

現状のレポジトリ設定状況を「sudo dnf repolist –all」を実行して確認します。

[opc@oci10 ~]$ sudo dnf repolist --all
repo id                                                                                                                                 repo name                                                                                                                                                                status
ol10_RDMA                                                                                                                               Oracle Linux 10 (x86_64) RDMA                                                                                                                                            disabled
ol10_UEKR8                                                                                                                              Oracle Linux 10 UEK Release 8 (x86_64)                                                                                                                                   enabled
ol10_addons                                                                                                                             Oracle Linux 10 Addons (x86_64)                                                                                                                                          enabled
ol10_appstream                                                                                                                          Oracle Linux 10 Application Stream Packages (x86_64)                                                                                                                     enabled
ol10_baseos_latest                                                                                                                      Oracle Linux 10 BaseOS Latest (x86_64)                                                                                                                                   enabled
ol10_codeready_builder                                                                                                                  Oracle Linux 10 CodeReady Builder (x86_64) - (Unsupported)                                                                                                               disabled
ol10_developer                                                                                                                          Oracle Linux 10 Development Packages (x86_64)                                                                                                                            disabled
ol10_distro_builder                                                                                                                     Oracle Linux 10 Distro Builder (x86_64) - (Unsupported)                                                                                                                  disabled
ol10_ksplice                                                                                                                            Ksplice for Oracle Linux 10 (x86_64)                                                                                                                                     enabled
ol10_oci_included                                                                                                                       Oracle Linux 10 OCI Included Packages (x86_64)                                                                                                                           enabled
ol10_u0_baseos_base                                                                                                                     Oracle Linux 10 BaseOS GA (x86_64)                                                                                                                                       disabled
ol10_u0_developer_EPEL                                                                                                                  Oracle Linux 10.0 EPEL Packages for Development (x86_64)                                                                                                                 disabled
ol10_x86_64_userspace_ksplice                                                                                                           Ksplice aware userspace packages for Oracle Linux 10 (x86_64)                                                                                                            disabled
[opc@oci10 ~]$ 

有効化するために「sudo dnf config-manager –set-enabled ol10_u0_developer_EPEL」を実行します。

[opc@oci10 ~]$ sudo dnf config-manager --set-enabled ol10_u0_developer_EPEL
[opc@oci10 ~]$ sudo dnf repolist --all
repo id                                                                                                                                 repo name                                                                                                                                                                status
ol10_RDMA                                                                                                                               Oracle Linux 10 (x86_64) RDMA                                                                                                                                            disabled
ol10_UEKR8                                                                                                                              Oracle Linux 10 UEK Release 8 (x86_64)                                                                                                                                   enabled
ol10_addons                                                                                                                             Oracle Linux 10 Addons (x86_64)                                                                                                                                          enabled
ol10_appstream                                                                                                                          Oracle Linux 10 Application Stream Packages (x86_64)                                                                                                                     enabled
ol10_baseos_latest                                                                                                                      Oracle Linux 10 BaseOS Latest (x86_64)                                                                                                                                   enabled
ol10_codeready_builder                                                                                                                  Oracle Linux 10 CodeReady Builder (x86_64) - (Unsupported)                                                                                                               disabled
ol10_developer                                                                                                                          Oracle Linux 10 Development Packages (x86_64)                                                                                                                            disabled
ol10_distro_builder                                                                                                                     Oracle Linux 10 Distro Builder (x86_64) - (Unsupported)                                                                                                                  disabled
ol10_ksplice                                                                                                                            Ksplice for Oracle Linux 10 (x86_64)                                                                                                                                     enabled
ol10_oci_included                                                                                                                       Oracle Linux 10 OCI Included Packages (x86_64)                                                                                                                           enabled
ol10_u0_baseos_base                                                                                                                     Oracle Linux 10 BaseOS GA (x86_64)                                                                                                                                       disabled
ol10_u0_developer_EPEL                                                                                                                  Oracle Linux 10.0 EPEL Packages for Development (x86_64)                                                                                                                 enabled
ol10_x86_64_userspace_ksplice                                                                                                           Ksplice aware userspace packages for Oracle Linux 10 (x86_64)                                                                                                            disabled
[opc@oci10 ~]$ 

手順4: インターネット公開用設定

手順4-1: fail2ban導入

公開サーバは各種のアタックにさらされます。管理用sshポートにもやってきます。

多少なりとも軽減するためにEPELレポジトリ収録のfail2banを使用します。

$ sudo dnf install fail2ban -y
<略>
$

カスタム設定は/etc/fail2ban/jail.local に対して行います。

[opc@oci10 ~]$ sudo vi /etc/fail2ban/jail.local
[opc@oci10 ~]$ cat /etc/fail2ban/jail.local 
[DEFAULT]
# 86400秒=24時間以内に5回不審なアクセスがあったら24時間BAN
bantime  = 86400
findtime  = 86400
maxretry = 5
# 259200秒=3日以内に5回不審なアクセスがあったら3日間BAN
#bantime  = 259200
#findtime  = 259200
#maxretry = 5
# 除外IP
ignoreip = 127.0.0.1 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
[sshd]
enabled = true
banaction = firewallcmd-ipset
[opc@oci10 ~]$ 

上記設定では24時間BANにしていますが、まぁ、3日BANでもかまわないとは思います。(本当に間違えた場合に困るのでほどほどにしておくとよい)

fail2banをOS起動時に実行する設定と、今すぐfail2banを起動するコマンドを実行します。

[opc@oci10 ~]$ sudo systemctl enable --now fail2ban
Created symlink '/etc/systemd/system/multi-user.target.wants/fail2ban.service' → '/usr/lib/systemd/system/fail2ban.service'.
[opc@oci10 ~]$ 

以降、アタックがあると /var/log/fail2ban.log にログが出ます。

手順4-2: Webサーバ用ポート公開設定

この段階では、dhcpv6-clientとsshのみが許可されています。

Webサーバ公開用にhttp(ポート80)とhttps(ポート443)を追加します。

[opc@oci10 ~]$ sudo firewall-cmd --list-all
public (default, active)
  target: default
  ingress-priority: 0
  egress-priority: 0
  icmp-block-inversion: no
  interfaces: ens3
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
[opc@oci10 ~]$ 
[opc@oci10 ~]$ sudo firewall-cmd --permanent --add-service=http
success
[opc@oci10 ~]$ sudo firewall-cmd --permanent --add-service=https
success
[opc@oci10 ~]$ sudo firewall-cmd --reload
success
[opc@oci10 ~]$ sudo firewall-cmd --list-all
public (default, active)
  target: default
  ingress-priority: 0
  egress-priority: 0
  icmp-block-inversion: no
  interfaces: ens3
  sources: 
  services: dhcpv6-client http https ssh
  ports: 
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
[opc@oci10 ~]$ 

手順5: php 追加

Oracle Linux 8と9であったmoduleで複数バージョン提供という機能はOracle Linux 10ではなくなりました。(Using DNF Modules and Application Streams)

No modular packages are available for Oracle Linux 10. Different versions of userspace packages continue to be available as Application Streams but don’t use the package modularity available in previous releases.

なので、単純に「dnf install php」でインストールします。

[opc@oci10 ~]$ sudo dnf install php -y
Last metadata expiration check: 0:13:46 ago on Tue 09 Sep 2025 01:42:02 PM JST.
Dependencies resolved.
=========================================================================================================================================================================================================================================================================================================================
 Package                                                                       Architecture                                                      Version                                                                             Repository                                                                     Size
=========================================================================================================================================================================================================================================================================================================================
Installing:
 php                                                                           x86_64                                                            8.3.19-1.el10_0                                                                     ol10_appstream                                                                 75 k
Installing dependencies:
 apr                                                                           x86_64                                                            1.7.5-2.el10                                                                        ol10_appstream                                                                135 k
 apr-util                                                                      x86_64                                                            1.6.3-21.el10                                                                       ol10_appstream                                                                102 k
 apr-util-lmdb                                                                 x86_64                                                            1.6.3-21.el10                                                                       ol10_appstream                                                                 14 k
 capstone                                                                      x86_64                                                            5.0.1-6.el10                                                                        ol10_appstream                                                                1.0 M
 httpd-core                                                                    x86_64                                                            2.4.63-1.0.1.el10_0.2                                                               ol10_appstream                                                                1.8 M
 httpd-filesystem                                                              noarch                                                            2.4.63-1.0.1.el10_0.2                                                               ol10_appstream                                                                9.1 k
 httpd-tools                                                                   x86_64                                                            2.4.63-1.0.1.el10_0.2                                                               ol10_appstream                                                                 91 k
 libxslt                                                                       x86_64                                                            1.1.39-8.el10_0                                                                     ol10_appstream                                                                208 k
 mailcap                                                                       noarch                                                            2.1.54-8.el10                                                                       ol10_baseos_latest                                                             39 k
 nginx-filesystem                                                              noarch                                                            2:1.26.3-1.0.1.el10                                                                 ol10_appstream                                                                 31 k
 oracle-logos-httpd                                                            noarch                                                            100.1-1.0.3.el10                                                                    ol10_baseos_latest                                                             53 k
 php-common                                                                    x86_64                                                            8.3.19-1.el10_0                                                                     ol10_appstream                                                                815 k
Installing weak dependencies:
 apr-util-openssl                                                              x86_64                                                            1.6.3-21.el10                                                                       ol10_appstream                                                                 16 k
 httpd                                                                         x86_64                                                            2.4.63-1.0.1.el10_0.2                                                               ol10_appstream                                                                 63 k
 mod_http2                                                                     x86_64                                                            2.0.29-2.el10_0.1                                                                   ol10_appstream                                                                177 k
 mod_lua                                                                       x86_64                                                            2.4.63-1.0.1.el10_0.2                                                               ol10_appstream                                                                 55 k
 php-cli                                                                       x86_64                                                            8.3.19-1.el10_0                                                                     ol10_appstream                                                                3.7 M
 php-fpm                                                                       x86_64                                                            8.3.19-1.el10_0                                                                     ol10_appstream                                                                1.9 M
 php-mbstring                                                                  x86_64                                                            8.3.19-1.el10_0                                                                     ol10_appstream                                                                584 k
 php-opcache                                                                   x86_64                                                            8.3.19-1.el10_0                                                                     ol10_appstream                                                                430 k
 php-pdo                                                                       x86_64                                                            8.3.19-1.el10_0                                                                     ol10_appstream                                                                158 k
 php-xml                                                                       x86_64                                                            8.3.19-1.el10_0                                                                     ol10_appstream                                                                225 k

Transaction Summary
=========================================================================================================================================================================================================================================================================================================================
Install  23 Packages

Total download size: 12 M
Installed size: 57 M
Downloading Packages:
<略>
  Running scriptlet: httpd-2.4.63-1.0.1.el10_0.2.x86_64                                                                                                                                                                                                                                                            23/23 
  Running scriptlet: php-8.3.19-1.el10_0.x86_64                                                                                                                                                                                                                                                                    23/23 

Installed:
  apr-1.7.5-2.el10.x86_64                            apr-util-1.6.3-21.el10.x86_64                 apr-util-lmdb-1.6.3-21.el10.x86_64      apr-util-openssl-1.6.3-21.el10.x86_64      capstone-5.0.1-6.el10.x86_64            httpd-2.4.63-1.0.1.el10_0.2.x86_64        httpd-core-2.4.63-1.0.1.el10_0.2.x86_64         
  httpd-filesystem-2.4.63-1.0.1.el10_0.2.noarch      httpd-tools-2.4.63-1.0.1.el10_0.2.x86_64      libxslt-1.1.39-8.el10_0.x86_64          mailcap-2.1.54-8.el10.noarch               mod_http2-2.0.29-2.el10_0.1.x86_64      mod_lua-2.4.63-1.0.1.el10_0.2.x86_64      nginx-filesystem-2:1.26.3-1.0.1.el10.noarch     
  oracle-logos-httpd-100.1-1.0.3.el10.noarch         php-8.3.19-1.el10_0.x86_64                    php-cli-8.3.19-1.el10_0.x86_64          php-common-8.3.19-1.el10_0.x86_64          php-fpm-8.3.19-1.el10_0.x86_64          php-mbstring-8.3.19-1.el10_0.x86_64       php-opcache-8.3.19-1.el10_0.x86_64              
  php-pdo-8.3.19-1.el10_0.x86_64                     php-xml-8.3.19-1.el10_0.x86_64               

Complete!
[opc@oci10 ~]$ 

php 8.3.19がインストールされました。

手順6: MySQL設定編

Oralce Linux 10ではMySQL 8.4.4 か mariadb 10.11.11が提供されています。

とりあえず、Oracle直営なのでMySQLを使っておきます。

[opc@oci10 ~]$ sudo dnf install mysql8.4-server -y
Last metadata expiration check: 0:17:41 ago on Tue 09 Sep 2025 01:42:02 PM JST.
Dependencies resolved.
=========================================================================================================================================================================================================================================================================================================================
 Package                                                                               Architecture                                                      Version                                                                     Repository                                                                     Size
=========================================================================================================================================================================================================================================================================================================================
Installing:
 mysql8.4-server                                                                       x86_64                                                            8.4.4-2.el10                                                                ol10_appstream                                                                 18 M
Installing dependencies:
 libicu                                                                                x86_64                                                            74.2-5.el10_0                                                               ol10_baseos_latest                                                             10 M
 mariadb-connector-c-config                                                            noarch                                                            3.4.4-1.el10                                                                ol10_baseos_latest                                                            8.8 k
 mecab                                                                                 x86_64                                                            0.996-9.el10                                                                ol10_appstream                                                                390 k
 mysql-selinux                                                                         noarch                                                            1.0.13-2.el10                                                               ol10_appstream                                                                 37 k
 mysql8.4                                                                              x86_64                                                            8.4.4-2.el10                                                                ol10_appstream                                                                2.4 M
 mysql8.4-common                                                                       noarch                                                            8.4.4-2.el10                                                                ol10_appstream                                                                102 k
 mysql8.4-errmsg                                                                       noarch                                                            8.4.4-2.el10                                                                ol10_appstream                                                                545 k
 protobuf-lite                                                                         x86_64                                                            3.19.6-11.el10                                                              ol10_appstream                                                                262 k

Transaction Summary
=========================================================================================================================================================================================================================================================================================================================
Install  9 Packages

Total download size: 32 M
Installed size: 199 M
Downloading Packages:
<略>
  Running scriptlet: mysql8.4-server-8.4.4-2.el10.x86_64                                                                                                                                                                                                                                                             9/9 

Installed:
  libicu-74.2-5.el10_0.x86_64            mariadb-connector-c-config-3.4.4-1.el10.noarch    mecab-0.996-9.el10.x86_64    mysql-selinux-1.0.13-2.el10.noarch    mysql8.4-8.4.4-2.el10.x86_64    mysql8.4-common-8.4.4-2.el10.noarch    mysql8.4-errmsg-8.4.4-2.el10.noarch    mysql8.4-server-8.4.4-2.el10.x86_64   
  protobuf-lite-3.19.6-11.el10.x86_64   

Complete!
[opc@oci10 ~]$ 

mysqldを自動起動する設定といますぐ起動する設定をします。

[opc@oci10 ~]$ sudo systemctl enable --now mysqld
Created symlink '/etc/systemd/system/multi-user.target.wants/mysqld.service' → '/usr/lib/systemd/system/mysqld.service'.
[opc@oci10 ~]$ 

WordPress用データベースを作成します。

[opc@oci10 ~]$ sudo mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.4.4 Source distribution

Copyright (c) 2000, 2025, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database DB名 character set utf8;
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> create user wordpress@localhost identified by 'パスワード';
Query OK, 0 rows affected (0.02 sec)

mysql> grant all privileges on DB名.* to wordpress@localhost;
Query OK, 0 rows affected (0.01 sec)

mysql> quit
Bye
[opc@oci10 ~]$ 

手順7-1: httpdインストール

httpdをインストールします。

Oracle Linux 10.0ではWebサーバとして Apache(httpd) 2.4.63 、nginx 1.26.3が使えるが、apacheを使う。

[opc@oci10 ~]$ sudo dnf install httpd -y
Last metadata expiration check: 0:23:31 ago on Tue 09 Sep 2025 01:42:02 PM JST.
Package httpd-2.4.63-1.0.1.el10_0.2.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[opc@oci10 ~]$ 

よく見たらphpインストール時にインストールされていました。

手順7-2: dehydratedによるLet’s Encrypt導入

Let’s EncryptによるSSL証明書導入はcertbotを使うのが一般的ではあるのだが、python環境とあわせてパッケージサイズが大きいので、コンパクトでEPELにも収録されているdehydratedを使用する。

[opc@oci10 ~]$ sudo dnf install dehydrated -y
Last metadata expiration check: 0:25:08 ago on Tue 09 Sep 2025 01:42:02 PM JST.
Dependencies resolved.
=========================================================================================================================================================================================================================================================================================================================
 Package                                                                  Architecture                                                         Version                                                                        Repository                                                                            Size
=========================================================================================================================================================================================================================================================================================================================
Installing:
 dehydrated                                                               noarch                                                               0.7.1-6.el10_0                                                                 ol10_u0_developer_EPEL                                                               156 k
Installing dependencies:
 s-nail                                                                   x86_64                                                               14.9.24-12.el10                                                                ol10_appstream                                                                       641 k

Transaction Summary
=========================================================================================================================================================================================================================================================================================================================
Install  2 Packages

Total download size: 797 k
Installed size: 1.4 M
Downloading Packages:
<略>
Installed:
  dehydrated-0.7.1-6.el10_0.noarch                                                                                                                             s-nail-14.9.24-12.el10.x86_64                                                                                                                            

Complete!
[opc@oci10 ~]$ 

dehydratedによるSSL証明書取得処理には /var/www/dehydrated が使用されるためディレクトリを作成します。

[opc@oci10 ~]$ sudo mkdir /var/www/dehydrated
[opc@oci10 ~]$

http://~/.well-known/acme-challenge でアクセスした時に上記ディレクトリが開くようApacheの設定を /etc/httpd/conf.d/dehydrated.conf として作成します。(sudo vi /etc/httpd/conf.d/dehydrated.conf )

[opc@oci10 ~]$ sudo vi /etc/httpd/conf.d/dehydrated.conf
[opc@oci10 ~]$ cat /etc/httpd/conf.d/dehydrated.conf 
Alias /.well-known/acme-challenge /var/www/dehydrated
<Directory /var/www/dehydrated/>
</Directory>
[opc@oci10 ~]$ 

httpdを起動します

[opc@oci10 ~]$ sudo systemctl start httpd
[opc@oci10 ~]$ 

SSL証明書を発行するホスト名を /etc/dehydrated/domains.txt に記載する。(sudo vi /etc/dehydrated/domains.txt)

$ sudo vi /etc/dehydrated/domains.txt
$ sudo cat /etc/dehydrated/domains.txt
ホスト1名.ドメイン名 ホスト2名.ドメイン名
$

登録操作を開始します。

[opc@oci10 ~]$ sudo dehydrated --register
# INFO: Using main config file /etc/dehydrated/config
# INFO: Using additional config file /etc/dehydrated/conf.d/local.sh

To use dehydrated with this certificate authority you have to agree to their terms of service which you can find here: https://letsencrypt.org/documents/LE-SA-v1.5-February-24-2025.pdf

To accept these terms of service run "/bin/dehydrated --register --accept-terms".
[opc@oci10 ~]$ sudo dehydrated --register --accept-terms
# INFO: Using main config file /etc/dehydrated/config
# INFO: Using additional config file /etc/dehydrated/conf.d/local.sh
+ Generating account key...
+ Registering account key with ACME server...
+ Fetching account URL...
+ Done!
[opc@oci10 ~]$ 

初回のSSL証明書発行処理を実行します。

$ sudo dehydrated --cron
# INFO: Using main config file /etc/dehydrated/config
# INFO: Using additional config file /etc/dehydrated/conf.d/local.sh
 + Creating chain cache directory /etc/dehydrated/chains
Processing ホスト1名.ドメイン名 with alternative names: ホスト2名.ドメイン名
 + Creating new directory /etc/dehydrated/certs/ホスト1名.ドメイン名 ...
 + Signing domains...
 + Generating private key...
 + Generating signing request...
 + Requesting new certificate order from CA...
 + Received 2 authorizations URLs from the CA
 + Handling authorization for ホスト1名.ドメイン名
 + Handling authorization for ホスト2名.ドメイン名
 + 2 pending challenge(s)
 + Deploying challenge tokens...
 + Responding to challenge for ホスト1名.ドメイン名 authorization...
 + Challenge is valid!
 + Responding to challenge for ホスト2名.ドメイン名 authorization...
 + Challenge is valid!
 + Cleaning challenge tokens...
 + Requesting certificate...
 + Checking certificate...
 + Done!
 + Creating fullchain.pem...
 + Done!
 + Running automatic cleanup
$

手順7-3: WebサーバへのSSL証明書設定

まず、httpdにmod_sslを追加します。

[opc@oci10 ~]$ sudo dnf install mod_ssl -y
Last metadata expiration check: 0:33:34 ago on Tue 09 Sep 2025 01:42:02 PM JST.
Dependencies resolved.
=========================================================================================================================================================================================================================================================================================================================
 Package                                                                Architecture                                                          Version                                                                                Repository                                                                     Size
=========================================================================================================================================================================================================================================================================================================================
Installing:
 mod_ssl                                                                x86_64                                                                1:2.4.63-1.0.1.el10_0.2                                                                ol10_appstream                                                                113 k
Installing dependencies:
 sscg                                                                   x86_64                                                                3.0.5-9.el10                                                                           ol10_appstream                                                                 50 k

Transaction Summary
=========================================================================================================================================================================================================================================================================================================================
Install  2 Packages

Total download size: 163 k
Installed size: 366 k
Downloading Packages:
<略>
Installed:
  mod_ssl-1:2.4.63-1.0.1.el10_0.2.x86_64                                                                                                                             sscg-3.0.5-9.el10.x86_64                                                                                                                            

Complete!
[opc@oci10 ~]$ 

標準の /etc/httpd/conf.d/ssl.conf は使わず、Mozilla SSL Configuration Generatorベースの設定を /etc/httpd/conf.d/ssl-mozilla.conf として作成します。(なお、ssl.conf には”Listen 443 https”設定もあるので、そのままにしています)

また、Let’s encryptingを使用する場合2025年5月以降OCSPに対応しなくなりました(Removing OCSP URLs from Certificates)

このため、「SSLUseStapling Off」を設定します

# generated 2025-09-09, Mozilla Guideline v5.7, Apache 2.4.63, OpenSSL 3.2.2, intermediate config
# https://ssl-config.mozilla.org/#server=apache&amp;version=2.4.63&amp;config=intermediate&amp;openssl=3.2.2&amp;guideline=5.7

# this configuration requires mod_ssl, mod_rewrite, mod_headers, and mod_socache_shmcb
&lt;VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/
    RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,QSA,L]
&lt;/VirtualHost>

&lt;VirtualHost *:443>
    SSLEngine on

    # curl https://ssl-config.mozilla.org/ffdhe2048.txt >> /path/to/signed_cert_and_intermediate_certs_and_dhparams
    SSLCertificateFile      /etc/dehydrated/certs/<ホスト名>/fullchain.pem
    SSLCertificateKeyFile   /etc/dehydrated/certs/<ホスト名>/privkey.pem

    # enable HTTP/2, if available
    Protocols h2 http/1.1

    # HTTP Strict Transport Security (mod_headers is required) (63072000 seconds)
    Header always set Strict-Transport-Security "max-age=63072000"
&lt;/VirtualHost>

# intermediate configuration
SSLProtocol             -all +TLSv1.2 +TLSv1.3
SSLOpenSSLConfCmd       Curves X25519:prime256v1:secp384r1
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
SSLHonorCipherOrder     off
SSLSessionTickets       off

SSLUseStapling Off
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

httpdを再起動します。

[opc@oci10 ~]$ sudo systemctl restart httpd
[opc@oci10 ~]$ 

手順8: WordPress導入

手順8-1: WordPressの基本インストール

WordPressのWebから最新版をダウンロードして、/var/www/html以下に展開します。
(日本語環境向けのlatest-ja.tar.gzファイルを使っていないのはWordpressプラグインが正常にインストールできるかを確認するためにWP Multibyte Patchを手動インストールする手順を入れているためです)

[opc@oci10 ~]$ cd /var/www/html
[opc@oci10 html]$ ls
[opc@oci10 html]$ sudo curl -O https://wordpress.org/latest.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 25.6M  100 25.6M    0     0  4909k      0  0:00:05  0:00:05 --:--:-- 5921k
[opc@oci10 html]$ ls
latest.tar.gz
[opc@oci10 html]$ sudo tar xfz latest.tar.gz 
[opc@oci10 html]$ ls -l
total 26300
-rw-r--r--. 1 root root 26925441 Sep  9 14:33 latest.tar.gz
drwxr-xr-x. 5 root root     4096 Jul 16 00:09 wordpress
[opc@oci10 html]$ sudo rm latest.tar.gz 
[opc@oci10 html]$ ls
wordpress
[opc@oci10 html]$

WordPressディレクトリの所有者をWebサービスのユーザである「apache」に変更します。

[opc@oci10 html]$ ps -ef|grep http
root       66623       1  0 14:30 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     66624   66623  0 14:30 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     66625   66623  0 14:30 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     66639   66623  0 14:30 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     66644   66623  0 14:30 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     66808   66623  0 14:31 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
opc        66961    7040  0 14:34 pts/0    00:00:00 grep --color=auto http
[opc@oci10 html]$ sudo chown -R apache:apache wordpress/
[opc@oci10 html]$ ls -l
total 4
drwxr-xr-x. 5 apache apache 4096 Jul 16 00:09 wordpress
[opc@oci10 html]$ 

/var/www/html/wordpress をDocumentRootとするように ssl-mozilla.conf に追加して、httpdを再起動します。

[opc@oci10 html]$ sudo vi /etc/httpd/conf.d/ssl-mozilla.conf 
[opc@oci10 html]$ cat /etc/httpd/conf.d/ssl-mozilla.conf 
# generated 2025-09-09, Mozilla Guideline v5.7, Apache 2.4.63, OpenSSL 3.2.2, intermediate config
# https://ssl-config.mozilla.org/#server=apache&version=2.4.63&config=intermediate&openssl=3.2.2&guideline=5.7

# this configuration requires mod_ssl, mod_rewrite, mod_headers, and mod_socache_shmcb
<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/
    RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,QSA,L]
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot /var/www/html/wordpress
    SSLEngine on

    # curl https://ssl-config.mozilla.org/ffdhe2048.txt >> /path/to/signed_cert_and_intermediate_certs_and_dhparams
    SSLCertificateFile      /etc/dehydrated/certs/<ホスト名>/fullchain.pem
    SSLCertificateKeyFile   /etc/dehydrated/certs/<ホスト名>/privkey.pem 

    # enable HTTP/2, if available
    Protocols h2 http/1.1

    # HTTP Strict Transport Security (mod_headers is required) (63072000 seconds)
    Header always set Strict-Transport-Security "max-age=63072000"
</VirtualHost>

# intermediate configuration
SSLProtocol             -all +TLSv1.2 +TLSv1.3
SSLOpenSSLConfCmd       Curves X25519:prime256v1:secp384r1
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
SSLHonorCipherOrder     off
SSLSessionTickets       off

SSLUseStapling Off
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
[opc@oci10 html]$ 
[opc@oci10 html]$ sudo systemctl restart httpd
[opc@oci10 html]$ 

手順8-2: 「missing the MySQL extension」がでる場合の手順

いまの状態でブラウザからアクセスすると、下記の表示になります。

これはphpからMySQLにアクセスするためのパッケージがインストールされていないためなので、php-mysqlndを追加して、httpdを再起動します。

[opc@oci10 ~]$ sudo dnf install php-mysqlnd -y
Last metadata expiration check: 0:55:51 ago on Tue 09 Sep 2025 01:42:02 PM JST.
Dependencies resolved.
=========================================================================================================================================================================================================================================================================================================================
 Package                                                                     Architecture                                                           Version                                                                         Repository                                                                      Size
=========================================================================================================================================================================================================================================================================================================================
Installing:
 php-mysqlnd                                                                 x86_64                                                                 8.3.19-1.el10_0                                                                 ol10_appstream                                                                 211 k

Transaction Summary
=========================================================================================================================================================================================================================================================================================================================
Install  1 Package

Total download size: 211 k
Installed size: 378 k
Downloading Packages:
<略>
Installed:
  php-mysqlnd-8.3.19-1.el10_0.x86_64                                                                                                                                                                                                                                                                                     

Complete!
[opc@oci10 ~]$ sudo systemctl restart httpd
[opc@oci10 ~]$ 

WordPressの設定手順を進めると wp-config.php に書き込めない、と出ますので、「sudo vi /var/www/html/wordpress/wp-config.php」を実行し、指定された内容を記載します。

よくヤル凡ミスとして、wordpress DBのユーザ名を指定するところで「ユーザ名@localhost」としてしまう、ということ。「ユーザ名」だけじゃないと接続できません

なお、wordpressの表示言語を日本語にすることは手順9-3で、パーマリンクのURL型式を変更する、というのは手順12の .htaccess に関する設定を入れてからにします。

手順9: SELinux設定

手順9-1: httpdのネットワーク接続問題

一見するとここまででうまく動いているように見えます。

しかし、プラグインをインストールしようとするとエラーになります。

/var/log/audit/audit.logを確認すると下記のようなログが出ています。

type=AVC msg=audit(1622095859.957:2064): avc:  denied  { name_connect } for  pid=8908 comm="php-fpm" dest=443 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket permissive=0
type=AVC msg=audit(1622095868.397:2065): avc:  denied  { name_connect } for  pid=8313 comm="php-fpm" dest=443 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket permissive=0
type=AVC msg=audit(1622095868.401:2066): avc:  denied  { name_connect } for  pid=8313 comm="php-fpm" dest=80 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket permissive=0

これはhttpd_can_network_connect という値で制御されている

現在の設定値を「sudo getsebool -a |grep httpd_can_network」で確認し、「sudo setsebool -P httpd_can_network_connect on」で有効にする

[opc@oci10 ~]$ sudo vi /var/www/html/wordpress/wp-config.php
[opc@oci10 ~]$ sudo getsebool -a |grep httpd_can_network
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_redis --> off
httpd_can_network_relay --> off
[opc@oci10 ~]$ sudo setsebool -P httpd_can_network_connect on
[opc@oci10 ~]$ sudo getsebool -a |grep httpd_can_network
httpd_can_network_connect --> on
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_redis --> off
httpd_can_network_relay --> off
[opc@oci10 ~]$ 

この変更ではhttpdの再起動は不要。

手順9-2: php-fpmの書き込み権限問題

プラグインやテーマのインストールについては問題なくても、WordPressのアップデートが出来ない。

このときの/var/log/audit/audit.logは下記

type=AVC msg=audit(1694506911.363:1538): avc:  denied  { write } for  pid=51364 comm="php-fpm" name="wordpress" dev="dm-0" ino=34891933 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:httpd_sys_content_t:s0 tclass=dir permissive=0

こちらは/var/www/html/wordpress に対して httpdから書き込みが行えるような SELinuxのコンテキストをつけることで解決する。

「sudo chcon -R -t httpd_sys_script_rw_t /var/www/html/wordpress」

[opc@oci10 ~]$ sudo ls -lZ /var/www/html/
total 4
drwxr-xr-x. 5 apache apache unconfined_u:object_r:httpd_sys_content_t:s0 4096 Sep  9 14:39 wordpress
[opc@oci10 ~]$ sudo chcon -R -t httpd_sys_script_rw_t /var/www/html/wordpress
[opc@oci10 ~]$ sudo ls -lZ /var/www/html/
total 4
drwxr-xr-x. 5 apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 4096 Sep  9 14:39 wordpress
[opc@oci10 ~]$ 

手順9-3:Wordpressプラグイン追加の動作確認

WordPressプラグインがインストールできる状態になっているかを確認するために「WP Multibyte Patch」をインストールします。

これをインストールするとWordpressの設定画面([Settings]-[General])に「Site language(サイトの言語)」が追加され、「日本語」表示に切り替えることができるようになります。

手順10: WordPressで取り扱えるファイルサイズの拡大

WordPressで取り扱えるファイルは標準状態だと2MBになっている。

WordPressのドキュメントのFile Upload Sizes を見ると、これはphpの設定ファイル /etc/php.ini による制限となっている。

Oracle Linux 10の標準設定では下記の値となっている。

<略>
post_max_size = 8M
<略>
upload_max_filesize = 2M
<略>

よくある手順だと軽率に /etc/php.ini を書き換えていますが、 /etc/php.d/ 以下にファイルを追加することで、そちらの設定項目を優先させることができる機能があるため、 /etc/php.d/90-wordpress.ini に変更したい2行だけを記載したファイルを作成します。

[opc@oci10 ~]$ sudo vi /etc/php.d/90-wordpress.ini
[opc@oci10 ~]$ cat /etc/php.d/90-wordpress.ini 
post_max_size = 100M
upload_max_filesize = 100M
[opc@oci10 ~]$ 

phpの設定変更を反映させるために「sudo systemctl restart php-fpm」を実行します。

[opc@oci10 ~]$ sudo systemctl restart php-fpm
[opc@oci10 ~]$ 

手順11: WordPressのSite Health Status対応

WordPressのサイトステータスを見てみると、いくつかパッケージを要求されている。

Oracle Linux 10.0では php-pecl-imagick php-pecl-zip php-intl をインストールする

[opc@oci10 ~]$ sudo dnf install php-pecl-imagick php-pecl-zip php-intl -y
Last metadata expiration check: 1:10:03 ago on Tue 09 Sep 2025 01:42:02 PM JST.
Dependencies resolved.
=========================================================================================================================================================================================================================================================================================================================
 Package                                                                                    Architecture                                                 Version                                                                      Repository                                                                    Size
=========================================================================================================================================================================================================================================================================================================================
Installing:
 php-intl                                                                                   x86_64                                                       8.3.19-1.el10_0                                                              ol10_appstream                                                               228 k
 php-pecl-imagick                                                                           x86_64                                                       3.8.0-1.el10_0                                                               ol10_u0_developer_EPEL                                                       163 k
 php-pecl-zip                                                                               x86_64                                                       1.22.3-5.el10                                                                ol10_appstream                                                                82 k
Installing dependencies:
 ImageMagick-libs                                                                           x86_64                                                       1:7.1.1.43-1.el10_0                                                          ol10_u0_developer_EPEL                                                       2.7 M
 LibRaw                                                                                     x86_64                                                       0.21.3-1.el10_0                                                              ol10_u0_developer_EPEL                                                       430 k
 adobe-mappings-cmap                                                                        noarch                                                       20230622-5.el10                                                              ol10_appstream                                                               2.3 M
 adobe-mappings-cmap-deprecated                                                             noarch                                                       20230622-5.el10                                                              ol10_appstream                                                               128 k
 adobe-mappings-pdf                                                                         noarch                                                       20190401-9.el10                                                              ol10_appstream                                                               728 k
 cairo                                                                                      x86_64                                                       1.18.2-2.el10                                                                ol10_appstream                                                               725 k
 cairo-gobject                                                                              x86_64                                                       1.18.2-2.el10                                                                ol10_appstream                                                                17 k
 cups-filesystem                                                                            noarch                                                       1:2.4.10-11.el10                                                             ol10_baseos_latest                                                            13 k
 cups-libs                                                                                  x86_64                                                       1:2.4.10-11.el10                                                             ol10_baseos_latest                                                           266 k
 fftw-libs-double                                                                           x86_64                                                       3.3.10-15.el10                                                               ol10_appstream                                                               1.1 M
 fontconfig                                                                                 x86_64                                                       2.15.0-7.el10                                                                ol10_appstream                                                               333 k
 fribidi                                                                                    x86_64                                                       1.0.14-4.el10                                                                ol10_appstream                                                               101 k
 gd                                                                                         x86_64                                                       2.3.3-20.el10_0                                                              ol10_appstream                                                               149 k
 gdk-pixbuf2                                                                                x86_64                                                       2.42.12-4.el10_0                                                             ol10_appstream                                                               605 k
 giflib                                                                                     x86_64                                                       5.2.1-22.el10                                                                ol10_appstream                                                                57 k
 google-droid-sans-fonts                                                                    noarch                                                       20200215-22.el10                                                             ol10_appstream                                                               2.7 M
 gpgmepp                                                                                    x86_64                                                       1.23.2-6.el10                                                                ol10_appstream                                                               139 k
 graphviz                                                                                   x86_64                                                       9.0.0-15.el10                                                                ol10_appstream                                                               1.6 M
 highway                                                                                    x86_64                                                       1.2.0-7.el10_0                                                               ol10_u0_developer_EPEL                                                       455 k
 imath                                                                                      x86_64                                                       3.1.10-4.el10                                                                ol10_appstream                                                               104 k
 jasper-libs                                                                                x86_64                                                       4.1.0-5.el10                                                                 ol10_appstream                                                               166 k
 jbig2dec-libs                                                                              x86_64                                                       0.20-7.el10                                                                  ol10_appstream                                                                79 k
 jbigkit-libs                                                                               x86_64                                                       2.1-31.el10                                                                  ol10_appstream                                                                59 k
 lcms2                                                                                      x86_64                                                       2.16-6.el10                                                                  ol10_appstream                                                               188 k
 libXft                                                                                     x86_64                                                       2.3.8-8.el10                                                                 ol10_appstream                                                                77 k
 libXpm                                                                                     x86_64                                                       3.5.17-5.el10                                                                ol10_appstream                                                                70 k
 libXrender                                                                                 x86_64                                                       0.9.11-8.el10                                                                ol10_appstream                                                                28 k
 libdatrie                                                                                  x86_64                                                       0.2.13-11.el10                                                               ol10_appstream                                                                32 k
 libgs                                                                                      x86_64                                                       10.02.1-16.el10_0                                                            ol10_appstream                                                               3.7 M
 libijs                                                                                     x86_64                                                       0.35-24.el10                                                                 ol10_appstream                                                                29 k
 libjpeg-turbo                                                                              x86_64                                                       3.0.2-4.el10                                                                 ol10_appstream                                                               256 k
 libjxl                                                                                     x86_64                                                       1:0.10.4-1.el10_0                                                            ol10_u0_developer_EPEL                                                       1.2 M
 liblerc                                                                                    x86_64                                                       4.0.0-8.el10                                                                 ol10_appstream                                                               221 k
 liblqr-1                                                                                   x86_64                                                       0.4.2-26.el10_0                                                              ol10_u0_developer_EPEL                                                        57 k
 libpaper                                                                                   x86_64                                                       1:2.1.1-7.el10                                                               ol10_appstream                                                                32 k
 libraqm                                                                                    x86_64                                                       0.10.1-1.el10_0                                                              ol10_u0_developer_EPEL                                                        25 k
 librsvg2                                                                                   x86_64                                                       2.57.1-9.el10                                                                ol10_appstream                                                               1.5 M
 libthai                                                                                    x86_64                                                       0.1.29-10.el10                                                               ol10_appstream                                                               219 k
 libtiff                                                                                    x86_64                                                       4.6.0-6.el10_0                                                               ol10_appstream                                                               239 k
 libtool-ltdl                                                                               x86_64                                                       2.4.7-13.el10                                                                ol10_appstream                                                                35 k
 libwebp                                                                                    x86_64                                                       1.3.2-8.el10                                                                 ol10_appstream                                                               298 k
 libwmf-lite                                                                                x86_64                                                       0.2.13-6.el10_0                                                              ol10_u0_developer_EPEL                                                        87 k
 libzip                                                                                     x86_64                                                       1.10.1-5.el10                                                                ol10_appstream                                                                67 k
 openexr-libs                                                                               x86_64                                                       3.1.10-8.el10                                                                ol10_appstream                                                               1.1 M
 openjpeg2                                                                                  x86_64                                                       2.5.2-4.el10_0.1                                                             ol10_appstream                                                               203 k
 pango                                                                                      x86_64                                                       1.54.0-3.el10                                                                ol10_appstream                                                               367 k
 pixman                                                                                     x86_64                                                       0.43.4-2.el10                                                                ol10_appstream                                                               286 k
 poppler                                                                                    x86_64                                                       24.02.0-6.el10                                                               ol10_appstream                                                               1.2 M
 poppler-data                                                                               noarch                                                       0.4.11-9.el10                                                                ol10_appstream                                                               2.2 M
 poppler-glib                                                                               x86_64                                                       24.02.0-6.el10                                                               ol10_appstream                                                               191 k
 rsvg-pixbuf-loader                                                                         x86_64                                                       2.57.1-9.el10                                                                ol10_appstream                                                                15 k
 urw-base35-bookman-fonts                                                                   noarch                                                       20200910-21.el10                                                             ol10_appstream                                                               861 k
 urw-base35-c059-fonts                                                                      noarch                                                       20200910-21.el10                                                             ol10_appstream                                                               888 k
 urw-base35-d050000l-fonts                                                                  noarch                                                       20200910-21.el10                                                             ol10_appstream                                                                80 k
 urw-base35-fonts                                                                           noarch                                                       20200910-21.el10                                                             ol10_appstream                                                               9.5 k
 urw-base35-fonts-common                                                                    noarch                                                       20200910-21.el10                                                             ol10_appstream                                                                20 k
 urw-base35-gothic-fonts                                                                    noarch                                                       20200910-21.el10                                                             ol10_appstream                                                               656 k
 urw-base35-nimbus-mono-ps-fonts                                                            noarch                                                       20200910-21.el10                                                             ol10_appstream                                                               808 k
 urw-base35-nimbus-roman-fonts                                                              noarch                                                       20200910-21.el10                                                             ol10_appstream                                                               870 k
 urw-base35-nimbus-sans-fonts                                                               noarch                                                       20200910-21.el10                                                             ol10_appstream                                                               1.3 M
 urw-base35-p052-fonts                                                                      noarch                                                       20200910-21.el10                                                             ol10_appstream                                                               987 k
 urw-base35-standard-symbols-ps-fonts                                                       noarch                                                       20200910-21.el10                                                             ol10_appstream                                                                45 k
 urw-base35-z003-fonts                                                                      noarch                                                       20200910-21.el10                                                             ol10_appstream                                                               280 k
 xml-common                                                                                 noarch                                                       0.6.3-65.el10                                                                ol10_appstream                                                                42 k

Transaction Summary
=========================================================================================================================================================================================================================================================================================================================
Install  67 Packages

Total download size: 36 M
Installed size: 128 M
Downloading Packages:
<略>
Installed:
  ImageMagick-libs-1:7.1.1.43-1.el10_0.x86_64                   LibRaw-0.21.3-1.el10_0.x86_64                               adobe-mappings-cmap-20230622-5.el10.noarch                 adobe-mappings-cmap-deprecated-20230622-5.el10.noarch       adobe-mappings-pdf-20190401-9.el10.noarch                         
  cairo-1.18.2-2.el10.x86_64                                    cairo-gobject-1.18.2-2.el10.x86_64                          cups-filesystem-1:2.4.10-11.el10.noarch                    cups-libs-1:2.4.10-11.el10.x86_64                           fftw-libs-double-3.3.10-15.el10.x86_64                            
  fontconfig-2.15.0-7.el10.x86_64                               fribidi-1.0.14-4.el10.x86_64                                gd-2.3.3-20.el10_0.x86_64                                  gdk-pixbuf2-2.42.12-4.el10_0.x86_64                         giflib-5.2.1-22.el10.x86_64                                       
  google-droid-sans-fonts-20200215-22.el10.noarch               gpgmepp-1.23.2-6.el10.x86_64                                graphviz-9.0.0-15.el10.x86_64                              highway-1.2.0-7.el10_0.x86_64                               imath-3.1.10-4.el10.x86_64                                        
  jasper-libs-4.1.0-5.el10.x86_64                               jbig2dec-libs-0.20-7.el10.x86_64                            jbigkit-libs-2.1-31.el10.x86_64                            lcms2-2.16-6.el10.x86_64                                    libXft-2.3.8-8.el10.x86_64                                        
  libXpm-3.5.17-5.el10.x86_64                                   libXrender-0.9.11-8.el10.x86_64                             libdatrie-0.2.13-11.el10.x86_64                            libgs-10.02.1-16.el10_0.x86_64                              libijs-0.35-24.el10.x86_64                                        
  libjpeg-turbo-3.0.2-4.el10.x86_64                             libjxl-1:0.10.4-1.el10_0.x86_64                             liblerc-4.0.0-8.el10.x86_64                                liblqr-1-0.4.2-26.el10_0.x86_64                             libpaper-1:2.1.1-7.el10.x86_64                                    
  libraqm-0.10.1-1.el10_0.x86_64                                librsvg2-2.57.1-9.el10.x86_64                               libthai-0.1.29-10.el10.x86_64                              libtiff-4.6.0-6.el10_0.x86_64                               libtool-ltdl-2.4.7-13.el10.x86_64                                 
  libwebp-1.3.2-8.el10.x86_64                                   libwmf-lite-0.2.13-6.el10_0.x86_64                          libzip-1.10.1-5.el10.x86_64                                openexr-libs-3.1.10-8.el10.x86_64                           openjpeg2-2.5.2-4.el10_0.1.x86_64                                 
  pango-1.54.0-3.el10.x86_64                                    php-intl-8.3.19-1.el10_0.x86_64                             php-pecl-imagick-3.8.0-1.el10_0.x86_64                     php-pecl-zip-1.22.3-5.el10.x86_64                           pixman-0.43.4-2.el10.x86_64                                       
  poppler-24.02.0-6.el10.x86_64                                 poppler-data-0.4.11-9.el10.noarch                           poppler-glib-24.02.0-6.el10.x86_64                         rsvg-pixbuf-loader-2.57.1-9.el10.x86_64                     urw-base35-bookman-fonts-20200910-21.el10.noarch                  
  urw-base35-c059-fonts-20200910-21.el10.noarch                 urw-base35-d050000l-fonts-20200910-21.el10.noarch           urw-base35-fonts-20200910-21.el10.noarch                   urw-base35-fonts-common-20200910-21.el10.noarch             urw-base35-gothic-fonts-20200910-21.el10.noarch                   
  urw-base35-nimbus-mono-ps-fonts-20200910-21.el10.noarch       urw-base35-nimbus-roman-fonts-20200910-21.el10.noarch       urw-base35-nimbus-sans-fonts-20200910-21.el10.noarch       urw-base35-p052-fonts-20200910-21.el10.noarch               urw-base35-standard-symbols-ps-fonts-20200910-21.el10.noarch      
  urw-base35-z003-fonts-20200910-21.el10.noarch                 xml-common-0.6.3-65.el10.noarch                            

Complete!
[opc@oci10 ~]$ 

これで、サイトヘルスステータスのパッケージ関連のメッセージは消えた。

手順12: WordPressの.htaccess有効化

/var/www/html/wordpress/.htaccess が作成されているが、Oracle Linux 10のhttpd標準設定ではこれを読み込むようにはなっていない。

これが有効になっていないと、パーマリンク設定を「基本」から変えた場合に個別記事にアクセスできなくなる。

/etc/httpd/conf.d/wordpress.conf にファイルを作って設定する。

[opc@oci10 ~]$ sudo vi /etc/httpd/conf.d/wordpress.conf
[opc@oci10 ~]$ cat /etc/httpd/conf.d/wordpress.conf 
&lt;Directory /var/www/html/wordpress/>
 Allowoverride All
&lt;/Directory>
[opc@oci10 ~]$ sudo systemctl restart httpd
[opc@oci10 ~]$ 

手順13: OS自動更新の設定

メンテナンスがめんどくさくなって忘れる可能性があるので、Oracle Linux 10の自動更新設定を実施。

dnf-automatic パッケージをインストールします。

[opc@oci10 ~]$ sudo dnf install dnf-automatic -y
Last metadata expiration check: 1:14:05 ago on Tue 09 Sep 2025 01:42:02 PM JST.
Dependencies resolved.
=========================================================================================================================================================================================================================================================================================================================
 Package                                                                    Architecture                                                        Version                                                                            Repository                                                                       Size
=========================================================================================================================================================================================================================================================================================================================
Installing:
 dnf-automatic                                                              noarch                                                              4.20.0-12.0.1.el10_0                                                               ol10_baseos_latest                                                              191 k

Transaction Summary
=========================================================================================================================================================================================================================================================================================================================
Install  1 Package

Total download size: 191 k
Installed size: 77 k
Downloading Packages:
<略>
Installed:
  dnf-automatic-4.20.0-12.0.1.el10_0.noarch                                                                                                                                                                                                                                                                              

Complete!
[opc@oci10 ~]$ 

/etc/dnf/automatic.conf 内の「apply_updates = no」を「apply_updates = yes」に変更

[opc@oci10 ~]$ sudo vi /etc/dnf/automatic.conf 
[opc@oci10 ~]$ cat /etc/dnf/automatic.conf 
[commands]
#  What kind of upgrade to perform:
# default                            = all available upgrades
# security                           = only the security upgrades
upgrade_type = default
random_sleep = 0

# Maximum time in seconds to wait until the system is on-line and able to
# connect to remote repositories.
network_online_timeout = 60

# To just receive updates use dnf-automatic-notifyonly.timer

# Whether updates should be downloaded when they are available, by
# dnf-automatic.timer. notifyonly.timer, download.timer and
# install.timer override this setting.
download_updates = yes

# Whether updates should be applied when they are available, by
# dnf-automatic.timer. notifyonly.timer, download.timer and
# install.timer override this setting.
apply_updates = yes

# When the system should reboot following upgrades:
# never                              = don't reboot after upgrades
# when-changed                       = reboot after any changes
# when-needed                        = reboot when necessary to apply changes
reboot = never

# The command that is run to trigger a system reboot.
reboot_command = "shutdown -r +5 'Rebooting after applying package updates'"


[emitters]
# Name to use for this system in messages that are emitted.  Default is the
# hostname.
# system_name = my-host

# How to send messages.  Valid options are stdio, email and motd.  If
# emit_via includes stdio, messages will be sent to stdout; this is useful
# to have cron send the messages.  If emit_via includes email, this
# program will send email itself according to the configured options.
# If emit_via includes motd, /etc/motd file will have the messages. if
# emit_via includes command_email, then messages will be send via a shell
# command compatible with sendmail.
# Default is email,stdio.
# If emit_via is None or left blank, no messages will be sent.
emit_via = stdio


[email]
# The address to send email messages from.
email_from = root@example.com

# List of addresses to send messages to.
email_to = root

# Name of the host to connect to to send email messages.
email_host = localhost

# Port number to connect to at the email host.
email_port = 25

# Use TLS or STARTTLS to connect to the email host.
email_tls = no


[command]
# The shell command to execute. This is a Python format string, as used in
# str.format(). The format function will pass a shell-quoted argument called
# `body`.
# command_format = "cat"

# The contents of stdin to pass to the command. It is a format string with the
# same arguments as `command_format`.
# stdin_format = "{body}"


[command_email]
# The shell command to use to send email. This is a Python format string,
# as used in str.format(). The format function will pass shell-quoted arguments
# called body, subject, email_from, email_to.
# command_format = "mail -Ssendwait -s {subject} -r {email_from} {email_to}"

# The contents of stdin to pass to the command. It is a format string with the
# same arguments as `command_format`.
# stdin_format = "{body}"

# The address to send email messages from.
email_from = root@example.com

# List of addresses to send messages to.
email_to = root


[base]
# This section overrides dnf.conf

# Use this to filter DNF core messages
debuglevel = 1
[opc@oci10 ~]$

そしてdnf-automatic.timerを有効化し、開始します。

$ sudo systemctl enable dnf-automatic.timer
Created symlink /etc/systemd/system/timers.target.wants/dnf-automatic.timer → /usr/lib/systemd/system/dnf-automatic.timer.
$ sudo systemctl status dnf-automatic
○ dnf-automatic.service - dnf automatic
     Loaded: loaded (/usr/lib/systemd/system/dnf-automatic.service; static)
     Active: inactive (dead)
TriggeredBy: ○ dnf-automatic.timer
$ sudo systemctl start dnf-automatic.timer
$ sudo systemctl status dnf-automatic.timer
● dnf-automatic.timer - dnf-automatic timer
     Loaded: loaded (/usr/lib/systemd/system/dnf-automatic.timer; enabled; pres>
     Active: active (waiting) since Tue 2023-09-12 13:11:00 JST; 5s ago
      Until: Tue 2023-09-12 13:11:00 JST; 5s ago
    Trigger: Wed 2023-09-13 06:44:33 JST; 17h left
   Triggers: ● dnf-automatic.service
Sep 12 13:11:00 ホスト名 systemd[1]: Started dnf-automatic timer.
$

手順14 SSL証明書の自動更新設定

dehydratedによるLet’s Encrypt SSL証明書を自動的に更新する設定を行う。

更新した場合だけ、httpdを再起動させたいので /etc/dehydrated/hook.sh の deploy_cert()関数定義のところで「systemctl restart httpd」を追加する

ただ、せっかく /etc/dehydrated/hook.d/ というディレクトリがあり、/etc/dehydrated/hook.shの最後の方で /etc/dehydrated/hook.d/*.sh を読み込んでいるという処理をしているので、そちらで設定を独立させたい。

ということで /etc/dehydrated/hook.d/httpd.sh を作成し、以下を記載

#!/bin/bash

case "$1" in
    "deploy_cert")
        /bin/systemctl restart httpd
    ;;
esac

exit 0

強制的にSSL証明書再発行を実行「sudo dehydrated –cron –force」

[opc@oci10 ~]$ sudo dehydrated --cron --force
# INFO: Using main config file /etc/dehydrated/config
# INFO: Using additional config file /etc/dehydrated/conf.d/local.sh
Processing <ホスト名>
 + Checking expire date of existing cert...
 + Valid till Dec  9 01:51:44 2025 GMT (Longer than 30 days). Ignoring because renew was forced!
 + Signing domains...
 + Generating signing request...
 + Requesting new certificate order from CA...
 + Received 1 authorizations URLs from the CA
 + Handling authorization for <ホスト名>
 + Found valid authorization for <ホスト名>
 + 0 pending challenge(s)
 + Requesting certificate...
Warning: Will read cert request from stdin since no -in option is given
 + Checking certificate...
 + Done!
 + Creating fullchain.pem...
 + Done!
 + Running automatic cleanup
Moving unused file to archive directory: <ホスト名>/cert-1757472608.csr
Moving unused file to archive directory: <ホスト名>/cert-1757472608.pem
Moving unused file to archive directory: <ホスト名>/chain-1757472608.pem
Moving unused file to archive directory: <ホスト名>/fullchain-1757472608.pem
[opc@oci10 ~]$

ちゃんとhttpdが再起動しているかを「systemctl status httpd」を実行して確認

下記の「Active:」のsinceの後ろの時刻がつい最近であることを確認する

[opc@oci10 ~]$ systemctl status httpd
● httpd.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; preset: disabled)
    Drop-In: /etc/systemd/system/httpd.service.d
             └─php-fpm.conf
     Active: active (running) since Wed 2025-09-10 11:51:21 JST; 7s ago
 Invocation: cae425cfbaae4ba68fa746588b2dde05
       Docs: man:httpd.service(8)
   Main PID: 110426 (httpd)
     Status: "Started, listening on: port 443, port 80"
      Tasks: 177 (limit: 5249)
     Memory: 14.6M (peak: 14.8M)
        CPU: 216ms
     CGroup: /system.slice/httpd.service
             ├─110426 /usr/sbin/httpd -DFOREGROUND
             ├─110427 /usr/sbin/httpd -DFOREGROUND
             ├─110428 /usr/sbin/httpd -DFOREGROUND
             ├─110429 /usr/sbin/httpd -DFOREGROUND
             └─110430 /usr/sbin/httpd -DFOREGROUND

Sep 10 11:51:21 oci10 systemd[1]: Starting httpd.service - The Apache HTTP Server...
Sep 10 11:51:21 oci10 (httpd)[110426]: httpd.service: Referenced but unset environment variable evaluates to an empty string: OPTIONS
Sep 10 11:51:21 oci10 systemd[1]: Started httpd.service - The Apache HTTP Server.
Sep 10 11:51:21 oci10 httpd[110426]: Server configured, listening on: port 443, port 80
[opc@oci10 ~]$ 

次にdehydratedが定期的に実行される設定になっているかを「systemctl status dehydrated.timer」を実行して確認する

[opc@oci10 ~]$ systemctl status dehydrated.timer
● dehydrated.timer - dehydrated client for signing certificates with an ACME server
     Loaded: loaded (/usr/lib/systemd/system/dehydrated.timer; enabled; preset: enabled)
     Active: active (waiting) since Tue 2025-09-09 14:07:18 JST; 21h ago
 Invocation: d81b66fc4dd943368689b90f756ab156
    Trigger: Thu 2025-09-11 01:41:37 JST; 13h left
   Triggers: ● dehydrated.service

Sep 09 14:07:18 oci10 systemd[1]: Started dehydrated.timer - dehydrated client for signing certificates with an ACME server.
[opc@oci10 ~]$ 

Oracle Linux 10においては標準でenabledとなっているので、自動的に実行されるようになっていた。

(dehydrated.service は disable だが、これはdehydrated.timer から起動されるやつなのでそのままで良い)


トラブル対応手順1: python3-pyOpenSSLのconflict問題

2025/09/19時点ではdnf updateが失敗する。

[opc@oci10 ~]$ sudo dnf update -y
Last metadata expiration check: 1:18:42 ago on Fri 19 Sep 2025 12:26:32 PM JST.
Error: 
 Problem: package python3-oci-sdk-2.159.0-1.el10.x86_64 from ol10_oci_included requires (python3.12dist(pyopenssl) &lt; 25~~ with python3.12dist(pyopenssl) >= 17.5), but none of the providers can be installed
  - cannot install both python3-pyOpenSSL-25.0.0-1.el10_0.noarch from ol10_u0_developer_EPEL and python3-pyOpenSSL-24.2.1-1.0.1.el10.noarch from @System
  - cannot install both python3-pyOpenSSL-25.0.0-1.el10_0.noarch from ol10_u0_developer_EPEL and python3-pyOpenSSL-24.2.1-1.el10_0.noarch from ol10_u0_developer_EPEL
  - cannot install both python3-pyOpenSSL-24.2.1-1.0.1.el10.noarch from ol10_appstream and python3-pyOpenSSL-25.0.0-1.el10_0.noarch from ol10_u0_developer_EPEL
  - cannot install the best update candidate for package python3-pyOpenSSL-24.2.1-1.0.1.el10.noarch
  - cannot install the best update candidate for package python3-oci-sdk-2.158.0-1.el10.x86_64
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
[opc@oci10 ~]$

python3-pyOpenSSLがOracle Linux 10標準提供の python3-pyOpenSSL-24.2.1 系列と、EPEL提供の python3-pyOpenSSL-25.0.0 系列の2種類があるために発生している模様

とりあえず、EPEL側のpython3-pyOpenSSL-25.0.0 を使用しないようにしたところ、問題はなさそう。

設定は /etc/yum.repos.d/oracle-epel-ol10.repoに「exclude=python3-pyOpenSSL*」を追加する

[opc@oci10 ~]$ cat /etc/yum.repos.d/oracle-epel-ol10.repo 
[ol10_u0_developer_EPEL]
name=Oracle Linux $releasever.0 EPEL Packages for Development ($basearch)
baseurl=https://yum$ociregion.$ocidomain/repo/OracleLinux/OL10/0/developer/EPEL/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
exclude=python3-pyOpenSSL*
[opc@oci10 ~]$