web-dev-qa-db-ja.com

特定の送信者/サーバーでのみスキャンするようにamavisd-newを構成するにはどうすればよいですか?

特定のクライアント(IP、CIDR、またはホスト名)または送信者の電子メールドメインでのみスパムをスキャンするようにamavisd-newを構成する方法を知りたいです。

受信者のメールアドレスでそれを行うことは可能ですが、送信者のメールアドレスでそれを行う方法ではできないことを私は知っています。ポリシーバンクを使用して、受信者のIPアドレスでそれを行うことも可能です。しかし、私のアプローチは、受信者から独立し、送信者のみを中継することです。

私が達成したいのは、Yahoo、Google、Hotmail、およびその他の大きな送信者から発信されたメールのみをスキャンすることです。したがって、監視すべきでない送信者よりも監視すべき送信者を設定する方が簡単です。

私はMTA側で達成する方が簡単であることを知っていましたが、私はすでにMTA側で解決策を講じているので、それは問題の一部ではありません。 amavisd-newでやりたいです。また、送信者をホワイトリストに登録する方法を知ることは役に立ちません。これは、メールがすべてのスキャンを通過した後、高い負のスコアを取得することを意味するためです。大手企業から送信されない限り、メールをスキャンしないでください。

では、amavisd-newのどのパラメーターが、特定の送信者とこれらのみのスキャンを有効にするのに適切なパラメーターですか?

10
mailq

特定のドメインを除くすべてのAmavisdホワイトリスト

必要なのは、ホワイトリスト_sender_map( ここ )と正規表現のルックアラウンド( ここ )です。

Domain.Xを除くすべてのホワイトリスト

 @ whitelist_sender_maps =(new_RE(
 qr '@(?!(gmail\.com $ | hotmail\.com $ | aol\.com $))' i 
) ); 

Xのドメインとサブドメインを除くすべてをホワイトリストに登録

 @ whitelist_sender_maps =(new_RE(
 qr '[@。](?!(gmail\.com $ | hotmail\.com $ | aol\.com $))' i 
)); 

変更

たとえば、msn.comをホワイトリストの例外に追加します

 @ whitelist_sender_maps =(new_RE(
 qr '[@。](?!(gmail\.com $ | hotmail\.com $ | aol\.com $ | msn\.com $) )'私
));

そのルールを複数のルールに分割しないでください、IT ISあなたが望むものではありません

2行以上でルールを破ると、すべてがホワイトリストに登録されます!!

(可能であれば、このセクションを赤で表示します)

簡単に言うと、ホワイトリストは、一度に1行/ルールのシーケンシャルチェックです。

次の[〜#〜]間違った[〜#〜]の例を見てみましょう

#これをコピーしないでください
 @ whitelist_sender_maps =(new_RE(
 qr '@(?!(gmail\.com $ | hotmail\.com $))' i、
 qr '@(?!(aol\.com $ | msn\.com $))' i 
)); 
#これをコピーしないでください
  1. 1行目が[〜#〜] true [〜#〜]を返し、チェックが停止するため、msn.comからのすべてが合格します。
  2. Gamil.comのすべてが合格します。これは、1行目に失敗した後、amavisdが2行目に移動し、[〜#〜] true [〜#〜]が返されるためです。
  3. リストにないドメインはどうですか?彼らは合格します。これがルールの意図です!

最終的にすべての送信者をホワイトリストに登録します!!

Perlテストプログラム

#!/ usr/bin/Perl 
 
 use strict; 
 
#ドメインとサブドメインを拒否
#my $ REGinfo = '==ドメインとサブドメインを拒否==' 
#my $ REG = qr '[@。](?!(gmail\.com $ | hotmail\.com $ | aol \。 com $)) 'i; 
 
#正確なドメインのみ
 my $ REGinfo =' ==正確なドメインのみ== '; 
 my $ REG = qr '@(?!(gmail\.com $ | hotmail\.com $ | aol\.com $))' i; 
 
 print $ REGinfo。 "\ n"; 
 print '$ REG ='。$ REG。 "\ n\n"; 
 
 my @strTest =(
 '[email protected]'、
 '[email protected]'、
 '[email protected]'、
 '[email protected]'、
 '[email protected]'、
 '[email protected]'、
 '[email protected]' 
); 
 
私の$ i( 0 .. $#strTest){
 if($ strTest [$ i] =〜$ REG){
 print( "Pass $ strTest [$ i]\n"); 
} 
 else {
 print( "Fail $ strTest [$ i]\n"); 
} 
} 
1
John Siu