debian の exim4: -bh でテストする場合、この ACL が機能するが実際の使用では動作しないのはなぜですか。

debian の exim4: -bh でテストする場合、この ACL が機能するが実際の使用では動作しないのはなぜですか。

私はlocal_acl_check_dataにFrom:とTo:と同じアドレスを使用して拒否する一般的なスパマーポリシーを持っていますが、スパムの少ないソース(Yahooグループ)がこれを行うので、ホワイトリストも使用します。 ACLは次のとおりです。


# block spammers who use the same "from" and "to" address
accept
    senders = ${if exists{CONFDIR/local_sender_whitelist}\
                   {CONFDIR/local_sender_whitelist}\
                   {}}
deny
    condition = ${if eqi{${address:$h_from:}}{${address:$h_to:}}{true}{false}}
    log_message = rejecting spam with to:${address:$h_to:} and from:${address:$h_from:}
    message = Message identified as spam. If you think this is wrong, get in touch with postmaster

問題は私がテストしたとき:


jcomeau@tektonic:~$ cat bin/testacl 
exim4 -bh 66.163.168.186 <<EOT
helo tester
mail from: [email protected]
rcpt to: [email protected]
data
from: [email protected]
to: [email protected]
subject: should be ok

this one should not reject
.
mail from: [email protected]
rcpt to: [email protected]
data
from: [email protected]
to: [email protected]
subject: should reject

this one should be rejected
.
quit
EOT

期待どおりに動作します。最初のメッセージはホワイトリストで yahoogroups.com を見つけたので受け入れられますが、2 番目のメッセージは拒否されます。ただし、実際にはyahoogroups.comの電子メールはスパマーと一緒にこのACLによって拒否されます。私は4.72-6を使用していますが、ここ数年間使ってきたすべてのバージョンでこれが起こりました。アイデアが足りません。

要求に応じて、exim4のログは次のメッセージを拒否しました。

jcomeau@tektonic:~$ grep -C2 Freecycle /var/log/exim4/rejectlog
2011-02-25 09:52:00 1Psz1U-00020g-79 H=n52c.bullet.mail.sp1.yahoo.com [66.163.168.186] F=<sentto-15991578-2122-128 return.groups.yahoo.com> DATA以降拒否されました:スパム拒否:[Eメール保護]そして次から:[Eメール保護]
封筒の送信者:<sentto-15991578-2122-1298645513-jc=example.com@returns.groups.yahoo.com>
封筒の受信者:<[Eメール保護]>
-
  MIMEバージョン:1.0
メッセージID:
  メーリングリスト:リスト[Eメール保護];触れる[Eメール保護]
  配送先:メーリングリスト[Eメール保護]
  リストID:<PetalumaFreecycle.yahoogroups.com>
  優先順位:一括
  購読キャンセルリスト:<mailto:[Eメール保護]>
  日付: 2011年2月25日 14:51:53 -0000
から:[Eメール保護]
に:[Eメール保護]
  トピック:[ペタルルーマフリーサイクル] Abstract Number 2122
  X-Yahoo-Newman-Property: グループ-ダイジェスト-trad-m
R返信:「回答なし」<[Eメール保護]>
  コンテンツタイプ:テキスト/一般。 charset=ISO-8859-1
  コンテンツ転送エンコーディング:見積もり印刷可能

これは、最初のテストで私のtestaclスクリプトが示すものです。

>>> ACL "acl_check_data"を使用する
>>>「受け入れ」処理
>>>送信者の確認= ${存在する場合{/etc/exim4/local_sender_whitelist}{/etc/exim4/local_sender_whitelist}{}}
>>>「yahoogroups.com」のyahoogroups.com?はい(「yahoogroups.com」と一致)
>>>[Eメール保護]「/etc/exim4/local_sender_whitelist」にありますか?はい(/etc/exim4/local_sender_whitelistの「yahoogroups.com」と一致)
>>>承諾:条件テスト成功
ログ: 1PuxAz-0005jZ-B0 <=[Eメール保護]H=n52c.bullet.mail.sp1.yahoo.com (テスター) [66.163.168.186] P=smtp S=380
250 確認 ID=1PuxAz-0005jZ-B0

ベストアンサー1

私はこのパターンを見つけましたが、多くが理解されているとは思いません。この試み

  警告する
    message = スパムとして識別されたメッセージ。これが間違っていると思ったら、\
        郵便局長に連絡してください
    log_message =送信者と受信者が${h_to:}であるスパムの可能性
    !senders = ${if {CONFDIR/local_sender_whitelist}\
                          {CONFDIR/local_sender_whitelist} {}}
    条件 = ${if eqi{$h_from:}{$h_to:}{true}}
    制御=凍結

control = freezeルールをテストするときは、レビュー用にメッセージを保存することがよくあります。十分に正確であると判断された場合は、拒否規則に変更します。

編集:私のEメールデータベースでこのルールをテストしました。 DNSブラックリストとして使用すると、zen.spamhaus.orgほぼすべてのケース(483のうち467)をキャプチャできます。灰色のリストには、残りのほとんど(16個のうち11個)が含まれています。テストに合格した5つのメッセージが見つかりました。このうち3つ(60%)は合法的な電子メールでした。他には、ホスト名またはセカンダリドメインであるhelo名があります。 helo名が少なくとも3番目のレベルのドメインであることを確認する条件を追加すると、ルールはかなり安全になります。テスト中:

    条件 = ${if eq{${extract{3}{.}{$sender_helo_name}}}{}{true}}

おすすめ記事