※オンラインドキュメントのEXAMPLEに設定例がたくさん載っているので、そちらも参考にされてください。
書式
[ <item1>=<value>; <item2>=<value>; ... ] action=<result>- item=値と指定し、1つのルールセットに複数の条件を※1行で※指定する場合はセミコロンで区切ります
- 必ず、actionを一つ含む必要があります
- itemとactionの記述の順番は特に決まりがありません(どのような順番で指定しても大丈夫です)
itemについて
itemとしてしては、以下のものが指定できます。actionについて
actionとしては、以下のものが指定できます。- オンラインドキュメント ACTIONS内のpostfwd actionsに記載のあるもの
- postfix access(5)でACTIONSとして記載のあるもの
ルールセットの作成例
ここでは、メッセージサイズをトリガーにメールをHOLDする例をあげてみます。/etc/postfix/postfwd.conf:
# 1. 10MB以下だったら何もしない
# 2. 10MBを超えたら、HOLDする
id=SIZE001; protocol_state==END-OF-MESSAGE; action=DUNNO; size<=10000000
id=SIZE100; protocol_state==END-OF-MESSAGE; action=HOLD message too large
設定を反映するには、次のように実行します。
# /usr/local/sbin/postfwd2 --reload
連携するpostfixでは以下のように設定を追加します。
/etc/postfix/main.cf:
※メッセージサイズのルールのなので、smtpd_end_of_data_restrictionsで指定します
smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10045
動作確認
実際にメールを配送して動作を確認します。<id=SIZE001のルールが適用された場合: holdされずに配送された場合>
青字の箇所が実際の判定部分で、actionとしてDUNNOが適用されて、その後、配送処理が行われています。
Apr 8 00:40:32 cent6 postfix/smtpd[1731]: connect from unknown[192.168.0.11]
Apr 8 00:40:33 cent6 postfix/smtpd[1731]: 095AF2267C: client=unknown[192.168.0.11]
Apr 8 00:40:34 cent6 postfwd2/policy[1719]: [RULES] rule=0, id=SIZE001, queue=095AF2267C, client=unknown[192.168.0.11], sender=<user01@example.com>, recipient=<testuser@example.jp>, helo=<example.com>, proto=SMTP, state=END-OF-MESSAGE, delay=0s, hits=SIZE001, action=DUNNO
Apr 8 00:40:34 cent6 postfix/cleanup[1737]: 095AF2267C: message-id=<ACCE33A63DDA9Ftoshiaki@example.com>
Apr 8 00:40:34 cent6 postfix/qmgr[1671]: 095AF2267C: from=<user01@example.com>, size=475, nrcpt=1 (queue active)
Apr 8 00:40:34 cent6 postfix/smtpd[1731]: disconnect from unknown[192.168.0.11]
Apr 8 00:40:36 cent6 postfix/smtp[1740]: 095AF2267C: to=<testuser@example.jp>, relay=mail.example.jp[1xx.33.69.11]:25, delay=3.5, delays=1.4/0.01/2/0.03, dsn=2.0.0, status=sent (250 ok: Message 12768477 accepted)
Apr 8 00:40:36 cent6 postfix/qmgr[1671]: 095AF2267C: removed
<id=SIZE100のルールが適用された場合: holdされた場合>
青字の最初の1行目が判定部分で、actionとしてHOLDが適用され、次の2行目でpostfixがHOLDの処理を実行しています(メールの配送は行われていません)。
Apr 8 00:41:14 cent6 postfix/smtpd[1731]: connect from unknown[192.168.0.11]
Apr 8 00:41:14 cent6 postfix/smtpd[1731]: 1F7262267C: client=unknown[192.168.0.11]
Apr 8 00:41:14 cent6 postfix/cleanup[1737]: 1F7262267C: message-id=<ADCE33A6566291toshiaki@example.com>
Apr 8 00:41:15 cent6 postfwd2/policy[1719]: [RULES] rule=1, id=SIZE100, queue=1F7262267C, client=unknown[192.168.0.11], sender=<user01@example.com>, recipient=<testuser@example.jp>, helo=<example.com>, proto=SMTP, state=END-OF-MESSAGE, delay=0s, hits=SIZE100, action=HOLD message too large
Apr 8 00:41:15 cent6 postfix/smtpd[1731]: 1F7262267C: hold: END-OF-MESSAGE from unknown[192.168.0.11]: <END-OF-MESSAGE>: End-of-data message too large; from=<user01@example.com> to=<testuser@example.jp> proto=SMTP helo=<example.com>
Apr 8 00:41:15 cent6 postfix/smtpd[1731]: disconnect from unknown[192.168.0.11]
0 件のコメント:
コメントを投稿