メール件名で配送先フォルダ自動振り分け設定メモ【procmail Almalinux 8.9】

2024年2月20日

件名による振り分けフォルダをいちいちローカルに作らずメールアプリでログインしたら表示できるようprocmailの設定をした
最小インストールのalmalinuxで時間がかかったのでメモ

前提: postfix,dovecot spamassassinなどでProcmail設定済み
参考にしたProcmailの設定(centossrv様)

1. 振り分け用フォルダ作成

#!/bin/bash

for user in `ls /home`
do
    id -u $user > /dev/null 2>&1
    if [ $? -eq 0 ] && [ ! -d /home/$user/Maildir/.{任意の振り分けフォルダ名}/new ]; then
        mkdir -p /home/$user/Maildir/.{任意の振り分けフォルダ名}/new
        mkdir -p /home/$user/Maildir/.{任意の振り分けフォルダ名}/cur
        mkdir -p /home/$user/Maildir/.{任意の振り分けフォルダ名}/tmp
        chmod -R 700 /home/$user/Maildir/.{任意の振り分けフォルダ名}
        chown -R $user. /home/$user/Maildir/.{任意の振り分けフォルダ名}
        echo $user
    fi
done

任意のディレクトリで以下スクリプトを実行
.{任意の振り分けフォルダ名}の形式で各ユーザーの振り分けフォルダ作成
権限と所有者も一括設定

単に迷惑メールをprocmailで振り分けたいだけならdovecotインストール時に作られている
であろう.Junkフォルダ( /home/ユーザー名/Maildir/.Junk ) を振り分け先に使うのが無難
振り分けフォルダが増えないので管理が楽

2. Procmailに設定を記載

2.1 nkfインストール

自分の環境ではデフォルトでnkfがなかったため,以下コマンドでインストール

# rpm -Uvh http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/n/nkf-2.1.3-5.el7.x86_64.rpm
# dnf install nkf

2.2 /etc/procmailrcで振り分け設定(一番下の:0Hが振り分け設定部分)

procmailrcファイルの文字コードによってnkfオプションが変わる(これ大事)
UTF-8の場合→"nkf -Zmw"
EUCの場合→"nkf -meZ2″

SHELL=/bin/bash
PATH=/usr/bin:/bin
DROPPRIVS=yes
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
LOGFILE=$HOME/.procmail.log # ログ出力先
VERBOSE=ON # 詳細ログ出力
# SpamAssassinがスパム判定したメールはスパム専用メールボックス(/home/xxxx/Maildir/.{任意の振り分けフォルダ名})へ配送
:0
*^X-Spam-Flag: YES
$HOME/Maildir/.{任意の振り分けフォルダ名}/
:0H
* ^Subject: \/.*
* ? echo "$MATCH" | /usr/bin/nkf -Zmw | /bin/grep '{振り分け用の文字列(この文字が件名にあったら振り分け実行)}'
#文字列に一致したら以下ディレクトリに配送
$HOME/Maildir/.{任意の振り分けフォルダ名}/

procmailrcで設定した振り分けがうまくできないという人はprocmailrcの文字コードを一度確認してみてほしい

以上で任意のフォルダへの振り分けができた