私は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}}
答え2
Eximは「from」をreturn.groups.yahoo.comドメイン内の封筒の送信者アドレスと見なします。そのドメイン(完全にgroups.yahoo.comは機能せず、yahoo.comは機能しません)をlocal_sender_whitelistに配置すると、ACLは機能しました。
送信者:アドレスと同じyahoogroups.comの封筒送信者アドレスを使用したため、テスト中に機能しました。これが真であることを確認するために、Yahoo Groupの電子メールを確認しないでください。
答え3
あなたは解決策を見つけ、あなたのACLにうまくいくかもしれませんが、あなたの特定のユースケースでは問題にならない場合でも、他の人がこの問題に遭遇する可能性があるので、これを追加したかったのです。
exim -bh
多くを確認しますが、他のホストに接続しません。 ACLが失敗した場合、または一時的に失敗し、コメントの確認が失敗した場合に使用する必要があります-bhc
。