2013年4月21日日曜日

Postfwdでmynetworksからの接続情報をログに出力

postfwdを使ってもう※ひとねた※書いてみます。

postfixの場合、mynetwoksからの接続は、基本的にpermit_mynetwoksで無条件にリレーを許可されます。
mynetwoksに記述されているネットワークあるいはIPアドレスが少ないなら、mynetwoksからの接続である事を判断出来ますが、その数が非常に多くなった時はログを見てもmynetworksからの接続だとすぐに判断がつかないケースが出てきます(扱うドメインが多ければさらに判断が難しくなります)。

前置きが長くなりなしたが、今回は通常ログに出力されないそれらの情報を一手間かけてログに出してみます。



postfwdのルールセット


itemのclient_addressに、postfixのmynetworksパラメータで指定している値を指定します。
※ネットワークアドレス、IPアドレスはご自身の環境で読みかえてください

ログに出力するだけなので、actionには全てdunnoを指定しています。



 例1:カンマ区切りで複数指定する場合
id=MYNETWORKS
  action=dunno permit_mynetworks was matched
  protocol_state==RCPT
  client_address=192.168.0.0/24, 192.168.1.0/.24, 10.0.x.x


例2: リストを含むテキストを指定する場合
id=MYNETWORKS
  action=dunno permit_mynetworks was matched
  protocol_state==RCPT
  client_address==file:/etc/postfix/mynetworks.txt
  client_address==file:/etc/postfix/mynetworks2.txt
  …
/etc/postfix/mynetworks.txt:
192.168.0.0/24
192.168.1.0/24
10.0.x.x

 例3: key=value形式のリストを含むテキストを指定する場合
      ※postfixで既に利用しているマップテーブルを再利用するような場合に便利です
id=MYNETWORKS
  action=dunno permit_mynetworks was matched
  protocol_state==RCPT
  client_address==table:/etc/postfix/mynetworks.txt
  client_address==table:/etc/postfix/mynetworks2.txt
  …
/etc/postfix/mynetworks.txt:
192.168.0.0/24    OK
192.168.1.0/24    OK
10.0.x.x           OK


postfix側での設定

smtpd_client_restrictionsでposfwdでの評価を行うように設定します。

smtpd_client_restrictions = check_policy_service inet:127.0.0.1:10045
smtpd_recipient_restrictions = permit_mynetworks
                               reject_unauth_destination
                          …

(注意)以下のように指定した場合、permit_mynetwoksでpostfixでの評価が完了してしまうので、その下のpostfwdによる評価は行われず、ログが出力されません。

smtpd_recipient_restrictions = permit_mynetworks
                               reject_unauth_destination
                               check_policy_service inet:127.0.0.1:10045




動作確認

これで以下のようにログが出力されるようになります。
※青字の部分が新たに出力されるようになった部分です


Apr 21 16:37:00 cent6 postfix/smtpd[2279]: connect from unknown[192.168.0.11]
Apr 21 16:37:00 cent6 postfwd2/policy[2148]: [RULES] rule=0, id=MYNETWORKS, client=unknown[192.168.0.11], sender=<user01@example.com>, recipient=<testuser@example.net>, helo=<mail.example.com>, proto=SMTP, state=RCPT, delay=0s, hits=MYNETWORKS, action=dunno permit_mynetworks was matched
Apr 21 16:37:00 cent6 postfix/smtpd[2279]: 8A5A321A6E: client=unknown[192.168.0.11]
Apr 21 16:37:01 cent6 postfix/cleanup[2285]: 8A5A321A6E: message-id=<F2CE3E63028A7Buser01@example.com>
Apr 21 16:37:01 cent6 postfix/qmgr[1801]: 8A5A321A6E: from=<user01@example.com>, size=487, nrcpt=1 (queue active)
Apr 21 16:37:01 cent6 postfix/smtpd[2279]: disconnect from unknown[192.168.0.11]
Apr 21 16:37:02 cent6 postfix/smtp[2287]: 8A5A321A6E: to=<testuser@example.net>, relay=mail.example.net[xx.xx.xx.xx]:25, delay=1.5, delays=1.4/0.02/0.04/0.12, dsn=2.0.0, status=sent (250 2.0.0 r3L7b27w006351 Message accepted for delivery)
Apr 21 16:37:02 cent6 postfix/qmgr[1801]: 8A5A321A6E: removed




0 件のコメント:

コメントを投稿