Amavisdホワイトリスト、特定のドメインを除くすべて
あなたが必要とするものは、正規表現の見回り(ここ)を持つwhitelist_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 $))' i
));
このルールを複数のルールに分解しないでください。意図したものではありません。
ルールを2行以上で破ると、すべてがホワイトリストに登録されます。
(可能な場合、このセクションを赤で表示します)
簡単に言えば、ホワイトリストは、一度に1行/ルールの順次チェックです。
次の間違った例を見てみましょう
#これはコピーしないでください
@whitelist_sender_maps =(new_RE(
qr'@(?!(gmail\.com$|hotmail\.com$))'i、
qr'@(?!(aol\.com$|msn\.com$))'i
));
#これはコピーしないでください
- 1行目がTRUEを返し、チェックが停止するため、msn.comからのすべてが通過します。
- 1行目が失敗した後、amavisdは2行目に移動してTRUEを返すため、gamil.comからのすべてが通過します。
- リストにないドメインはどうですか?彼らは通過します。これがルールの意図です!
すべての送信者をホワイトリストに登録することになります!!
Perlテストプログラム
#!/ usr / bin / perl
厳格な使用;
#ドメインとサブドメインを拒否
#my $ REGinfo = '==ドメインとサブドメインを拒否=='
#my $ REG = qr '[@。](?!(gmail \ .com $ | hotmail \ .com $ | aol \ .com $))' i;
#正確なドメインのみ
$ REGinfo = '==正確なドメインのみ==';
私の$REG=qr'@(?!(gmail\.com$|hotmail\.com$|aol\.com$))'i;
$ REGinfoを出力します。 "\ n";
'$ REG ='。$ REG。 "\ n \ n";
私の@strTest =(
'test@hotmail.com'、
'test@gmail.com'、
'test@aol.com'、
'test@msn.com'、
'test@yahoo.com'、
'test@yahoo.aol.com'、
'aol.com@somethingelse.com'
);
私の$ i(0 .. $#strTest){
if($ strTest [$ i] =〜$ REG){
print( "パス$ strTest [$ i] \ n");
}
そうしないと {
print( "失敗$ strTest [$ i] \ n");
}
}