メールフィルター Kuzuha・Kuzunohaのインストールと設定

Cent OSでのインストール、設定は Ntools リポジトリを使用するので非常に楽ですが作者のサーバー環境であるHP N54Lでのカーネル動作がNGになり、Ubuntuでの開発がメインになっていくことになりそうです。
Cent OS7での開発は継続しますがどうしても実動作での確認は難しくなりそうです。

Ubuntu版は バイナリーは14.04,16.04で作成したものですが、ALIENで簡易的に作成されています。
今後はPPAをサポート予定です。

 

Ubuntu でのインストール

$ sudo apt-get -y install libldns1 sqlite3 libmilter1.0.1
$ sudo dpkg -i kuzuha_1.x.x-x_amd64.deb
$ sudo dpkg -i kuzunoha_0.x.x-x_amd64.deb

ダウンロードはリンク先 または

Ntoolsアーカイブ

 

Cent OSでのインストール

  1. CentOS用のNtoolsリポジトリを設定する。これでNtoolsからリリースされている Kuzuha、nkfなどのパッケージがyumでインストールしたりアンインストールできる。 尚、不要になれば  rpm -e ntools で削除
$ sudo rpm -ivh http://ntools.net/arc/RPMS/ntools-2.1-2.noarch.rpm
  1. 葛葉 Kuzunoha Kuzuhaをインストール Kuzunohaだけを指定すれば、 必要なパッケージは自動で選択してくれます。
$ sudo yum -y install Kuzunoha

 

kuzuha 設定

$ sudo vi /etc/postfix/main.cf

デフォルトではたったこれだけ
Postfix設定ファイル(main.cf)編集 最終行に追加

# milter
smtpd_milters = inet:10028
milter_default_action = accept

$ sudo kuzuhactl daemon
$ sudo systemctl restart postfix

これで全てOKなのだが、もしポート番号を10028から変更したいだとか 評価を減らしたいなどと 動作変更したい場合は /etc/kuzuha-check.conf を編集すればOKだ。
ちなみに当方のメールサーバーにはあともうひとつ、アンチウィルス(clamav-milter)を導入してあり、 これもmilterとして動作させている。KuzuhaもClam AntiVirusも問題なく動作中だ。 socketは inet: port番号 という表現だ もちろん unix:/var/run/kuzuha/kuzuha.sock でもOKだがパーミッション管理なども考慮しなければならない。
評価項目は “true” が評価する “false” では評価しないという意味だ。 最後の項目は評価結果がどういう物をメール拒否するかという項目で有効なものは
none neutral hardfail softfail temperror permerror syserror
なのだが、neutral hardfail softfail が標準だろう。
ただし悪質なSpamはあえてエラーを起こすようにして temperror を返してくる事もある。そのような場合は その国の temperror を拒否したり、国内中心で受信するなら jp 以外の unknown IPや temperrorを mkspfdbを使用して拒否することも可能だ。domain:の項目は常に受信許可したい場合のみ ドメイン名をスペースで区切って列挙する。複数行の「domain: ドメイン名」も有効。
smtp認証を使用して外部からの接続に関しては記述する必要はない。
実ファイルは以下のとおり。また付属コマンドは rpm -ql Kuzuha などで確認し、man chkcoutry のように manを利用のこと。

example additional main.cf

# milter conection
# exsample socket: unix:/var/run/kuzuha/kuzuha.sock or inet:10028 and so on.
socket:         inet:10028

# fake rcpt address check
fromcheck:          true

# time out parameter second. default 7210 sec.
# timeout:           7210

# Check spf record type true or false
spf1:               true
sender-id-mfrom:    true
sender-id-pra:      true

# Reject score List
rejection:      neutral hardfail softfail

# domain parameter specifies the list of non check domains.
# All domain non reject in the list.
#domain: example.com mustrec.net

# if not use smtp connection from no LAN (WAN), set false 
# if available SMTP authentication set true
authentic:		true

 

標準添付Kuzunoha プラグインによる機能

  1. mkspfdb
    国単位でspf評価による設定を行います。

    MKSPFDB:(1) MKSPFDB MKSPFDB:(1)NAME
    mkspfdb: - manual page for mkspfdbSYNOPSIS
    mkspfdb [options]
    
    DESCRIPTION
    mkspfdb: Manegement spf-country Database.-- 'h'
    
    OPTIONS
    -S [-c country] [-u user] -r show data
    
    -s -c country [-u user] -r show score data
    
    -a -c country -r softfail,hardfail,syserr,... append new data
    
    -U -c country -r softfail,hardfail,syserr,... update data
    
    -d -c country -r delete data
    
    Country code is 2 characters code, ex us jp cn ...
    all. all means reject by country
    
    reject code: none,neutral,softfail,hardfail,temperror,permerror,syser‐
    ror,
    
    special code:
    `unknownip` connect from Lookup fail host in Country. `except` connect
    from Lookup fail host not in Country. if non use -u option (re)set all
    user ! -s option operation sample. it means copy jp data to us.
    mkspfdb -a -c us -r `mkspfdb -s -c jp`
    
    AUTHOR
    Nobby N Hirano <nobby@kuzuha.org>
    
    SEE ALSO
    spfauth(1) http://kuzuha.org/
    
    MKSPFDB August 2014 MKSPFDB:(1)
  2. mkacsdb
    メールアドレス・アクセスIPの拒否・許可の設定を行います。

    MKACSDB:(1)                      mkacsdb                     MKACSDB:(1)
    
    NAME
           mkacsdb: - Management access Database for Kuzunoha -access-user.so
    
    SYNOPSIS
           mkacsdb [OPTIONS]...
    
    [options]
    OPTIONS
           -S [-i in4] [-m mail address] [-u user]  show formated data
    
           -s [-i in4] [-m mail address] [-u user]  show data
    
           -a [-i in4] or [-rm mail address] or [-fm mail address] -R
                  Apend ´Reject selected conditions´.
    
           -a [-i in4] or [-rm mail address] or [-fm mail address] -O
                  Apend ´accept selected conditions´.
    
           -d [-i  or -rm  or-fm]
                  Delete selected condition data.
    
       example:
           mkacsdb mkacsdb -a -O -i 192.168.1.0/24
                  Apend data ´Non check Receive from 192.168.1.0/24´.
    
           mkacsdb mkacsdb -a -R -fm spam@xxx.net
                  Apend data ´Reject from spam@xxx.net´.
    
       What´s defferent -f and -r
           -f means From Header
    
           -f means Return-Path Header
    
    AUTHOR
           Nobby N Hirano <nobby@kuzuha.org>
    
    mkacsdb                           August 2014                   MKACSDB:(1)