CentOS Postfix

メールサーバーで受信メールの転送設定をやってみた

CentOS

メール受信時メールの内容に寄って転送先を決定

メールサーバー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 ← 追加
後でわかったのだがユーザー毎に転送振り分けの設定の場合、mailbox_commandを設定すると各ユーザーの ~/.forward と~/.procmailrcが無いと受信メールがメールボックスに入らない。
したがってユーザー毎に設定する場合 mailbox_command は設定しない事。

Procmailの設定

メールシステム全体で共通設定の場合 /etc/procmail
ユーザー毎に設定する場合 ~/.forward ~/.procmailrc ←今回はこちら。転送設定必要者のみ

~/.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等に流れが変わっているのか?

コメント