Fedora の公式アナウンスをメールで受け取りたい場合は、メーリングリスト一覧から必要なものを探して登録しときましょう。私はパッケージの更新情報が欲しいので、package-announce に登録しました。

このメーリングリスト、配信は 1日 1回ですが、4~50通のメールが届くこともよくあります。インストールしていないパッケージに関する情報が大多数のため、効率的に読むにはちょっと工夫が必要です。

まずは観察からです。

  • メンテナンス期間内のパッケージの情報(2021-08-19 時点では Fedora 33 と Fedora 34 に関するパッケージ)が配信される
  • 1パッケージに対して 1通のメールが配信される
  • Subject: [SECURITY] Fedora 34 Update: kernel-5.13.10-200.fc34 のような件名が付けられている

procmail を使って、不要なメールを削除することにします。procmail のレシピは以下のような感じです。

:0
*^To:.*package-announce@lists.fedoraproject.org
{
	:0
	*^Subject:.*Fedora.33.Update:.\/.*
	/dev/null

	:0
	*^Subject:.*Fedora.34.Update:.\/.*
	{
		PACKAGE_NAME=`echo "$MATCH" | perl -ne 'print $1 if /([\w\-]+?)(?=\-\d)/'`
		:0
		*!? rpm -ql "$PACKAGE_NAME"
		/dev/null
	}
}

まず、Fedora 33 の情報は要らないので、/dev/null へ捨てます。

次に、Fedora 34 の情報の場合は、件名からパッケージ名を取り出し(kernel-5.13.10-200.fc34 であれば kernel)、rpm -ql でそのパッケージがインストール済みかどうかをチェックします。インストール済みの場合は、終了コードが 0 に、そうでない場合は 1 になります。インストールされていないパッケージの場合は、メールを /dev/null へ捨てます。インストール済みのパッケージの情報の場合は、デフォルトの動作とします。

外から来た情報をコマンドライン引数へ渡すので、OS コマンドラインインジェクションが発生しないように、エスケープ処理をしっかり書く、正規表現で特殊文字を除外するように気をつけていますが、何かお気付きの点があればコメントでご指摘いただけると幸いです。