最小限構成の CentOS8 に Postfix をインストールする

とあるテストサーバの WordPress で、あるプラグインを試したところ重大なエラーでリカバリーモードに入ってしまいました。

しかし、そのサーバには MTA がインストールされていなかったため、リカバリーモードの管理画面の案内メールが届きませんでした……。

今後はそうならないように、 MTA をきちんとインストールしておこうと思いました。

今回はメジャーどころの Postfix をサクッと入れて設定します。

ドメイン周りは既に名前解決できる前提で、 Postfix のみさっさと片付けます。

インストール

# dnf install postfix

## 略

完了しました!

サクッとインストール。うーん、ダンディ。

設定確認

# less /etc/postfix/main.cf

mydestination = $myhostname, localhost.$mydomain, localhost

メールサーバ自体は他に任せることにして、 $mydomain がないことを確認しておきます。

firewall

# firewall-cmd --add-port=25/udp --permanent
success
# firewall-cmd --add-port=25/tcp --permanent
success
# firewall-cmd --reload
success

ポートを開けます。

起動設定

# systemctl enable postfix
# systemctl start postfix

以降はサーバ起動時に起動する設定にし、手動で起動。

バージョン確認

# postconf | grep mail_version
mail_version = 3.3.1
milter_macro_v = $mail_name $mail_version

バージョンも一応確認。入っていますね。

動作確認

WordPress の管理者メールアドレス変更の通知
WordPress の管理者メールアドレス変更の通知

WordPress の管理者メールアドレス変更の通知が届いたので、OKです。

備考

今回はリカバリーモードに入れなかったのでプラグインの無効化はDB直接操作で行いました。

  1. wp_option テーブルの中から option_name 列の値が active_plugins となっているレコードを見付ける
  2. レコードを編集
    1. 該当プラグインの名称が含まれる、iから始まり;で終わる部分を見付ける
      • 例: i:X;s:YY:"PLUGIN-FILENAME";
    2. 1.の部分のみを綺麗に削除
    3. 2.で消したプラグインの後に続く他のプラグインのi:Xの数字を1ずつデクリメント(全体でiが連番になるように)
    4. レコードの値の先頭のa:XXの数字XXから削除するプラグインの数だけ差し引く

プラグインディレクトリもリネームしてあげた方が丁寧ですが、今回はDB操作だけで何とかなりました。

参考

Postfix のバージョン確認

well-known ポートの確認

WordPress のプラグインをDBから無効化

この記事を書いた人

アバター

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。