AlmaLinux/RockyLinux8以降のメーリングリストを考える

メーリングリストとして長らくMailmanのお世話になっていたものの、CentOS 7のサポート終了が近く、OSを移行する事に。

ここで、AlmaLinux/RockyLinuxでMailmanを使おうとすると、以下の点に気が付く。

  • CenOS7まで使っていたMailmanは、python2で書かれたmailman2である
  • AlmaLinux/RockyLinux8では、python2は Retirement Date:Jun 2024 (末尾のLife Cycleを参照)
  • そもそも、python2はとっくにEOL(2020年)


AlmaLinux/RockyLinux8では、Mailman2をOSのサポート期限終了(2029年)まで安心して使えないため、使い慣れたMailman2を諦める事に・・・。

という訳で、Mailman2だった環境からMLを乗り換える時の選択肢を調べた。
(移行先はクラウドNG、オンプレ限定)

Mailman3(python3)

Mailman」と冠しているが、Mailman2と互換性は無い。
Fedora向けのepel9ではRPMパッケージがある。

mlmmj(本体はC、WebUIはperlまたはPHP

機能は少なくシンプル。
本体はCで書かれているため高速と思われる。
epel8/9でパッケージ提供あり。
公式のソースが2017年で開発が止まっている。EOLでは無さそう。
件名のprefixに連番を付ける機能が標準で無さそう(たぶん)
WebUIが微妙な感じ。

sympa(perl

mailmanのように高機能。
epel8/9でパッケージ提供あり。
件名のprefixに連番を付ける機能がある。(テキストのファイルを修正すれば、値を途中からにも変更可能)
GUIにはmod_proxyが必要。
(動作させて分かったが)メモリ消費が多く、sympaだけで1GB以上必要。
メモリが少ない環境では厳しい可能性あり。

fml(perl

ソースからインストールするしかない。
公式のソースが2018年で開発が止まっている。EOLでは無さそう?
WebUI環境を使えるようにするまでの敷居が高く見える。

majordomo(perl

ソースからインストールするしかない。
公式のソースが2000年で開発が止まっている。
こちらを選択する理由は無い。


なお、他にもezmlm(qmail環境下で利用)があるが、postfix環境のため除外。

インストールやアップデートのし易さから考えると、mlmmj または sympaが良さそう。

mlmmjはシンプル・省リソース、sympaは高機能・要メモリといった特徴になる。

awstatsでgeoipfreeプラグインが動作しない

久々にawstatsを触る機会があり、セットアップしたものの解析が動作しない。

特定のプラグインを有効化していたが、その動作に必要なperlモジュールをインストールし忘れていただけ、というオチだった(´・ω・`)

環境

AlmaLinux release 8.9 (Midnight Oncilla)

症状と原因

awstasを設置したが、ログが解析されない。

何が起こっているのか調べるために、
/etc/cron.hourly/awstats に記述されているコマンドから、/dev/null への出力を無しにして手動で実行してみる。

# cat /etc/cron.hourly/awstats
#!/bin/bash
exec /usr/share/awstats/tools/awstats_updateall.pl now -configdir="/etc/awstats" -awstatsprog="/usr/share/awstats/wwwroot/cgi-bin/awstats.pl" >/dev/null
exit 0

以下だけ実行。

# exec /usr/share/awstats/tools/awstats_updateall.pl now -configdir="/etc/awstats" -awstatsprog="/usr/share/awstats/wwwroot/cgi-bin/awstats.pl"

次のようなエラーが出た。

Error: Plugin load for plugin 'geoipfree' failed with return code: Error: Can't locate Geo/IPfree.pm in @INC (you may need to install the Geo::IPfree module) (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 /usr/share/awstats/lib /usr/share/awstats/plugins /usr/share/awstats/wwwroot/cgi-bin/plugins) at (eval 2) line 1.


aestatsのconfファイルにて、

LoadPlugin="geoipfree"

の行を有効化しているにもかかわらず、そのプラグインを動作するためのGeo/IPfree.pmが無いらしい。

解決法

cpanからGeo::IPfreeをインストール。

cpan> install Geo::IPfree

これでログが解析されるようになる。
但し、パッケージ同梱の国判定DBは古く、定義を更新しなければ精度が良くならない。

DB定義を更新する geoipupdate パッケージをインストールしても、ライセンスを投入しなければ定義ファイルが更新されないので注意。
ライセンスは、maxmind へユーザ登録して入手する必要あり。

MaxMind / Updating GeoIP and GeoLite Databases
Updating GeoIP and GeoLite Databases | MaxMind Developer Portal

Firefox 121.0 で全角スペースが謎の動作をする

2023/12/20に、Firefox 121.0 がリリースされた。
その影響のためか、Webサイトがバグったという情報を耳にしたので調べてみた。

環境

Firefox 121.0(Windows版)

Ver 121.0.x がリリースされれば、修正されて以下の現象は再現しない可能性がある。

謎の挙動

selectタグのoptionの値で、前後に全角スペースが含まれていると値がバグるらしい。

以下の図で、左側がFirefox 121.0、右側はEdge 120.0.2210.91 で試したもの。

このように、optionの値が途中で切れてしまう。

再現したhtmlタグは、以下の通り。

<p>先頭にスペースなし</p>
<select>
	<option>オプション1</option>
	<option>オプション2</option>
	<option>オプション3</option>
	<option>オプション3-1</option>
	<option>オプション3-2</option>
</select>

<p>先頭に全角スペースあり</p>
<select>
	<option> オプション1</option>
	<option> オプション2</option>
	<option> オプション3</option>
	<option>  オプション3-1</option>
	<option>  オプション3-2</option>
</select> 

<p>末尾に全角スペースあり</p>
<select>
	<option>オプション1 </option>
	<option>オプション2 </option>
	<option>オプション3 </option>
	<option>オプション3-1 </option>
	<option>オプション3-2 </option>
</select>


おかしくなっている箇所をFirefoxの開発者ツールで見てみると、改行?か何かが入っているのか、値が変な事になっている。


なお、全角スペースでは問題が発生するが、「&emsp;」を使っている場合には問題ない。

原因を探る

Firefox 120までは問題なく、Firefox以外のブラウザでも問題ない。

どうやらFirefox 121.0で変になったように思え、Bugzillaから情報を探してみると以下が該当していそう。
bugzilla.mozilla.org


Bugzillaではbuttonタグも例に挙げられている。
スレッドを見ると、「何らかの問題へ対処する修正が入っていたが、それが仇となったので元に戻した」といった感じ。

selectタグのoptionやbuttonタグで確認したが、他にも影響を受けるものがあるかもしれない。

対処

Firefox 122 ではFixされてリリース(1/23予定)されるらしい。
また、121.x dot-release(121.0.1 など)があれば、修正されてリリースされると思われる。

自分がクライアント側であれば、次期Firefoxリリースまで待つか、他ブラウザを利用する事で対処できる。
自分が開発者側であれば、次期Firefoxリリースまで待つか、全角スペースをやめるしかない。
前述の「&emsp;」に置き換える方法も考えられる。


余談だが、そもそも「なぜoptionの値の前後に全角スペースがあるの?」と思い、今回の情報元へ尋ねてみたところ、

  • 値の先頭にあるスペースは、インデントの目的で使っていた
  • 値の末尾にあったスペースは、おそらく誤入力

ということだった。


【1/7追記】
他にも関連除法があったので追記。
bugzilla.mozilla.org

bugzilla.mozilla.org


【1/10追記】
本記事の不具合は、1/9リリースの Firefox 121.0.1 で修正済となりました。
www.mozilla.org

Fixed unexpected line wrapping in some CJK contexts caused by changes in ideographic space handling. (Bug 1870973)

RHEL8以降におけるOpenLDAP Server

RHELでは、7.4以降はopenldap-servers パッケージは非推奨となっている。
RHEL8以降では、ベースのリポジトリに存在せず、OpenLDAPサーバを構築しようとした際に、パッケージを探すことから始めなければならない。

Red Hat Enterprise Linux に同梱される LDAP サーバーのサポート状況について - Red Hat Customer Portal

今回は、RHEL8以降のクローンOS(RockyやAlma)にて、OpenLDAPサーバのパッケージがどうなっているかをメモ。

RHEL8クローンにおけるLDAPサービスの提供方法

RHEL9クローンにおけるLDAPサービスの提供方法

RockyLinux9では、plusリポジトリopenldap-servers 2.6 がある。(OS9では、バージョンが2.4→2.6になっている)

https://dl.rockylinux.org/vault/rocky/9.0/plus/x86_64/os/Packages/o/
https://dl.rockylinux.org/vault/rocky/9.1/plus/x86_64/os/Packages/o/
https://ftp.riken.jp/Linux/rocky/9.2/plus/x86_64/os/Packages/o/  ←9.2は、まだVaultに無いのでrikenサーバ

AlmaLinux9では、openldap-servers の提供が見当たらない。(2023/7、AlmaLinux9.2時点まで)

epelには存在する。
https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/Packages/o/

Symasがビルドしたリポジトリも、openldap-servers 2.6 がある。

https://repo.symas.com/soldap/rhel9/

SymasはOpenLDAP 2.5(LTSらしい)もリリースしており、RHEL 7/8/9 向けにビルド・リポジトリがある。
https://repo.symas.com

plus/PowerToolsリポジトリなどの使い方

次のようにする

# dnf install --enablerepo=powertools openldap-servers

EPELの場合は、予めepel-releaseパッケージを導入しておく。

PHPの画面が真っ白に表示される、しかもソース丸見え

色々な要因はあるけど、「PHPのページの画面が真っ白で表示される」という状況に遭遇。

他人がセットアップしたWebサーバにて、後からPHPが動作するようにPHP関連パッケージを追加したものの、PHPが動作しないという経緯。

AlmaLinux8で起こったことだけど、php-fpmで動作するAlmaLinux9やRockyLinuxなどでも同様。

症状としては、以下の通り。

  • httpdアクセスログに *.php へのアクセスは記録される。
  • httpdのエラーログには何も記録されない。(LogLevelをdebugまで上げても、それらしいログは出ない)
  • phpinfoやechoだけのページへアクセスすると、真っ白になる。
  • Webブラウザでソースを開くと、PHPソースが丸見え。
  • PHPのエラーレベルを上げても何も出力されない。
  • サーバ上にて、コマンドではPHPが動作する。


コマンドではPHPが動作することから、Webサーバ関連の設定を疑う。
このWebサーバ、メモリを節約するために色々なモジュールがオフになっているとのことで、
設定を見て回ると、proxy関係のモジュールが無効化(コメントアウト)されているのを発見。

/etc/httpd/conf.modules.d/00-proxy.conf
にて、以下の2つを有効化すれば良い。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so


これらのモジュールが必要な理由としては、
httpdが /etc/httpd/conf.d/php.conf で次のようにPHPを呼び出していることが該当する。

    <FilesMatch \.(php|phar)$>
        SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>

ここに設定されている通り、httpdがproxyモジュールを経てphp-fpmへ処理を渡している。
proxyモジュールを無効化してしまうと、php-fpmへ処理を渡せず、そもそもPHPhttpd経由で動作しない。

RHEL 7以降で推奨されるパーティション設定スキーム

ちょっと大きめのメモリ構成にOSをインストールする機会があり、RHEL9のドキュメントを見た。
それより前と違いがあるか気になったのでメモ。

結論としては、推奨されるswapサイズは長らく変わっていない。
推奨されるパーティションサイズも、7~9までは同等で、6以前は異なる。

RHEL7以降(~現行は9まで)

/boot

  • 最小限 1 GiB を推奨
  • /boot/efi は、200MiB以上を推奨(BIOSシステムでは、EFIパーティションは不要)
  • LVM ボリュームを /boot に使用できない。/ とは別にする必要あり。

/(ルート)

10GiB 以上を推奨

/home

最小限1GiB

swap

最小限1GiB

<ハイバネートを許可しない場合の推奨swapサイズ計算式(単位:GB)>
If RAM < 2
 Swap = RAM * 2
Else If 2 <= RAM < 8
 Swap = RAM
Else If 8 <= RAM < 64
 Swap = 4~RAM/2
Else If 64 <= RAM
 Swap = ワークロードによる(最小4GB)

<計算例>
物理メモリ[GB]    Swapサイズ[GB]
1                2
2                2
4                4
8                4
16               48
24               412
32               416
64               4 ~?

RHEL6

/boot

  • 最小限 250MB を推奨
  • /boot/efi は、50-150MB以上を推奨

/(ルート)

3-5GB 以上を推奨

/home

最小限100MB

swap

最小限256MB
ハイバネートを許可しない場合の推奨swapサイズ計算式は、RHEL 7以降と同じ。

AlmaLinux9 でcifsモジュールが無かったためマウントエラーになった

【環境】
$ cat /etc/redhat-release
AlmaLinux release 9.1 (Lime Lynx)


AlmaLinux9から、NASをCIFSマウントしようとしたら、エラーになった。

# mount -t cifs -o username=USER_NAME //192.168.1.20/hoge /mnt/path
Password for USER_NAME@//192.168.1.20/hoge:
mount error: cifs filesystem not supported by the system
mount error(19): No such device
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)


cifs関連のパッケージを入れ忘れたかと思い確認すると、cifs-utilsパッケージはインストール済み。

# rpm -qa | grep cifs
cifs-utils-6.14-1.el9.x86_64

cifsモジュールの状況を確認すると、存在しなかった。

# lsmod | grep cifs
(何も表示されない)

# modinfo cifs
modinfo: ERROR: Module cifs not found.


カーネル周りで不足があると思い、AlmaLinux8 の方でパッケージを確認。
まずはkernelと名前のつくパッケージをリストアップ。

$ rpm -qa | grep kernel | grep $(uname -r)
kernel-core-4.18.0-372.19.1.el8_6.x86_64
kernel-modules-4.18.0-372.19.1.el8_6.x86_64
kernel-4.18.0-372.19.1.el8_6.x86_64

上記のパッケージにて、cifsというキーワードが含まれているものを確認。

$ rpm -ql kernel-core-4.18.0-372.19.1.el8_6.x86_64 | grep cifs
/lib/modules/4.18.0-372.19.1.el8_6.x86_64/kernel/fs/cifs

$ rpm -ql kernel-modules-4.18.0-372.19.1.el8_6.x86_64 | grep cifs
/lib/modules/4.18.0-372.19.1.el8_6.x86_64/kernel/fs/cifs/cifs.ko.xz ←これが欲しかったもの

$ rpm -ql kernel-4.18.0-372.19.1.el8_6.x86_64 | grep cifs
(何も表示されない)


AlmaLinux9 にて、kernel-modules パッケージが入っていなかったので追加。

# dnf install kernel-modules

AlmaLinux9でも、このパッケージにcifsモジュールが含まれている事を確認

# rpm -ql kernel-modules-5.14.0-162.18.1.el9_1.x86_64 | grep cifs
/lib/modules/5.14.0-162.18.1.el9_1.x86_64/kernel/fs/cifs/cifs.ko.xz

モジュールの詳細を確認

# modinfo cifs
・・・省略(詳細が表示)

これでcifsマウントできるようになった。