fedora 39を40にアップグレードしたらRspamdが動いていなかった…。のでその一時的な対策。
標準パッケージ以外のパッケージを利用している場合、OSのアップグレードを行うときは、dump相当のバックアップかsnapshotを取っておこう。(ま、簡単に戻せない場合もあるけど、とっておいたほうが戻すとき楽(な場合が多いきがする))
原因
アップグレード(fedora39→fedora40)の時に–allowerasingオプションをつけたからなのかどうかわからないが、rspamdのパッケージがアンインストールされていた。
その原因は…
Rspamdをcopr(lorbus/rspamdおよびjohan/rspamdのどちらも)のリポジトリでインストールしているのだが、これ(ら)がlibsodium.so.23を要求する。しかしfedora40にアップグレードするとlibsodium.so.26がインストールされるので、この依存関係でアンインストールされたようだ。
そこで、再インストールをしようとすると、以下のようになってインストールさせてくれない。
# dnf install rspamd
Last metadata expiration check: 1:00:30 ago on Sat 27 Apr 2024 09:46:49 PM JST.
Error:
Problem: conflicting requests
- nothing provides libsodium.so.23()(64bit) needed by rspamd-3.6-1.fc40.x86_64 from copr:copr.fedorainfracloud.org:lorbus:rspamd
(try to add '--skip-broken' to skip uninstallable packages)
#
つづいて、libsodium.so(libsodium-develに含まれている)をダウングレードしようとした。そのためにlibsodium-develを削除したところ、これに依存しているdovecotが消えてしまった。これは困るので、dovecotおよび関連ソフトを急いで再インストールし設定を元に戻した。libsodium-develはdovecotの必要なパッケージとして自動的にインストールされた。
結局、2024/4/27の時点でfedora40でcoprのrspamdをインストールするのはあきらめた。
一時的な回避策
回避策としては、いくつか方法がある。
放置
/etc/postfix/main.cfのmilter_default_actionをacceptにして放置。
野良build
公式のここにbuild方法がのっている。rspamdの最新が利用できるのでいいかもしれない。でも、やらない(やれない)。
docker/その他のOS
dockerバージョンなら楽なんだろうけど。
別サーバ(fedora 39)
別VMにてfedora39を新規インストールし、Rspamdをインストールする。
定義や証明書等は前のサーバのものをそのまま持ってくる。
待ち受けポート11332をどこからでも受け取れるように/etc/rspamd/local.d/worker-proxy.incに以下の行を追加する。
bind_socket = "*:11332";
ポート11332/tcpをメールサーバからアクセスできるようにfirewalldに設定。
メールサーバのpostfixでsmtpd_miltersに指定しているアドレス(127.0.0.1)をRspamdサーバのアドレスに変更する。
実際にはこちらの方法で回避した。
別サーバ(fedora 40)
別途fedora 40のサーバを用意する。
libsodium-1.0.18-15.fc39.x86_64.rpmをダウンロードし、インストール。
これで、lorbus:rspamdリポジトリでrspamdがインストールできる。
postfixの設定をこちらにむけてテストしてみたがこちらでも動作した。
コメント