メール受信時メールの内容に寄って転送先を決定
メールサーバーPostfixでのメールの振分け、転送設定について調査したがあまり情報なし。
procmailを使う方法があったが、現在procmailのメンテナンスは終了しているらしい。
以前、迷惑メール対策としてSpamAssassinとProcmailを組み合わせて対応したことがある。
が、設定とメンテンナンスが大変な割に結果はイマイチだった。現在はFortiGateのスパムフィルタリング機能を使っている。他に有力な選択肢が無いのでprocmail を使ってみることにした。
検証環境 2サイト
Azure
CentOS 7.5 Postfix Dovecot
オンプレ
CentOS 6.9 Postfix Dovecot
Procmailのインストール
[root@azure ~]# which procmail /usr/bin/which: no procmail in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
procmail は未インストールの様だ
[root@azure ~]# yum install -y procmail インストール: procmail.x86_64 0:3.22-36.el7_4.1 完了しました!
postfix の設定
procmail のパス確認
[root@azure postfix]# which procmail /bin/procmail
mailbox_command
[root@azure postfix]# postconf | grep mailbox_command mailbox_command = mailbox_command_maps =
指定が無いので追加
/etc/postfix/main.cf 編集
mailbox_command = /bin/procmail ← 追加
Procmailの設定
~/.forwad 作成
[root@azure bin]# postconf -n home_mailbox home_mailbox = Maildir/
Maildir 形式の場合は ~/.forwadを下記のように
[root@azure mail-user]# vi .forward [root@azure mail-user]# cat .forward "|IFS=' ' && exec /bin/procmail -f- || exit 75 #~/Maildir/"
~/.procmailrc 作成
[root@azure mail-user]# vi .procmailrc [root@azure mail-user]# cat .procmailrc SHELL=/bin/bash PATH=$HOME/bin:/usr/bin:/usr/local/bin:/bin MAILDIR=$HOME/Maildir/ DEFAULT=$MAILDIR LOGFILE=$MAILDIR/procmail.log ←メールオーナーアカウントでもログファイル参照出来ず。後日コメントアウト #レシピ :0 HB c ← :0 ここから次の:0 の前までが1セクション HB ヘッダ・ボディ対象 c 元の受信者にも送信 * ^From:.*from-address1@from-domain1 ← * 条件(複数行の*はand条件) ^ 先頭 .* ワイルドカード * ? nkf -w | egrep -i 'マッチング 文字列 1' ← ? プログラム使用 日本語は nkf必須 -w UTF-8コードを出力する ! forward1@forward-domain1 ← !転送実行 転送先(複数は半角スペース) :0 HB c * ^From:.*from-address2@from-domain2 * ? nkf -w | egrep -i 'マッチング 文字列 2' ! forward1@forward-domain1 forward2@forward-domain2
LOGFILE の設定は中止
確認の為 $MAILDIR/procmail.log を確認しようとしたがアクセスできない。
-rw------- 1 mail-user mail-user 297 12月01 00:00
オーナーでもrootでも参照できないのでお手上げ状態。→ LOGFILE の設定はとりあえず使用せず
nkf インストール
procmailで日本語を扱えない様だ。
nkf を使うらしい
[root@azure ~]# which nkf /usr/bin/which: no nkf in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin) [root@azure ~]# yum install nkf 読み込んだプラグイン:fastestmirror, langpacks Loading mirror speeds from cached hostfile base | 3.1 kB 00:00 extras | 2.5 kB 00:00 openlogic | 2.9 kB 00:00 updates | 2.6 kB 00:00 パッケージ nkf は利用できません。 エラー: 何もしません [root@azure ~]# yum install nkf 読み込んだプラグイン:fastestmirror, langpacks Loading mirror speeds from cached hostfile パッケージ nkf は利用できません。 エラー: 何もしません
yumではインストールできなかった
下記のサイトから nkf-2.1.5.tar.gz をダウンロード インストール
[root@azure ~]# wget 'https://ja.osdn.net/projects/nkf/downloads/70406/nkf-2.1.5.tar.gz/' -O nkf-2.1.5.tar.gz [root@azure ~]# tar zxvf nkf-2.1.5.tar.gz [root@azure ~]# cd nkf-2.1.5 [root@azure nkf-2.1.5]# make cc -g -O2 -Wall -pedantic -c nkf.c make: cc: コマンドが見つかりませんでした make: *** [nkf.o] エラー 127
make失敗したので、gccがインストールされているか確認
[root@azure nkf-2.1.5]# whereis gcc 見つからないのでインストール [root@azure ~]# yum -y install gcc [root@azure nkf-2.1.5]# make cc -g -O2 -Wall -pedantic -c nkf.c cc -g -O2 -Wall -pedantic -c utf8tbl.c cc -g -O2 -Wall -pedantic -o nkf nkf.o utf8tbl.o [root@azure nkf-2.1.5]# make install mkdir /usr/local/bin mkdir: ディレクトリ `/usr/local/bin' を作成できません: ファイルが存在します make: [install-main] エラー 1 (無視されました) cp -f nkf /usr/local/bin/ mkdir /usr/local/man mkdir /usr/local/man/man1 cp -f nkf.1 /usr/local/man/man1/ mkdir /usr/local/man/ja mkdir /usr/local/man/ja/man1 cp -f nkf.1j /usr/local/man/ja/man1/nkf.1 [root@azure nkf-2.1.5]# nkf --version Network Kanji Filter Version 2.1.5 (2018-12-15) Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa). Copyright (C) 1996-2018, The nkf Project.
nkf について
まとめ
Procmail だのnkf だの 最近触れてないものを使ってみた。
Procmail に代わるものが何かあるのだろうか?そもそも、postfixからOffice365等に流れが変わっているのか?
コメント