2017-02-22 10 views
1

R commandのsendmail正規表現にいくつかの除外項目を追加しようとしています。以下の構成&正規表現は動作します:sendmail Rコマンド正規表現Kcheckaddress regex -a @ MATCHに除外項目を追加

LOCAL_CONFIG 
# 
Kcheckaddress regex [email protected] 
    [a-zA-Z_0-9.-]+<@[a-zA-Z_0-9-]+?\.+[a-zA-Z_0-9.-]+?\.(us|info|to|br|bid|cn|ru) 
LOCAL_RULESETS 
SLocal_check_mail 
# check address against various regex checks 
R$*        $: $>Parse0 $>3 $1 
R$+        $: $(checkaddress $1 $) 
[email protected]       $#error $: "553 Your Domain is Blocked for Unsolicited Mail" 

だから我々は[email protected] [email protected]をブロックしたがされていません。私は都市や学校のために除外項目を追加して[email protected]とuser @ subdomainを許可したいと思っています。 ([状態]はDCを含む50の州のうちの1つを意味することに注意してください)。

この正規表現は、(テストとして、カリフォルニアのためのCAを使用して)動作していない:

(?!.*\@ci\..+?\.us$)(?!.*\@*\..+?\.ca.us$)([a-zA-Z_0-9.-][email protected][a-zA-Z_0-9-]+?\.+[a-zA-Z_0-9.-]+?\.(us)$) 

私はこのエラーを取得する:

sendmail -bt 
/etc/mail/sendmail.cf: line 199: pattern-compile-error: Invalid preceding regular expression 

私に驚き何、ない正規表現を得るために先頭のスペースが必要な作業と、私は正規表現の一部の+<@の機能は何ですか?ここでは(<)未満は何ですか?それはより大きい正規表現に追加する必要がありますか?

編集:私はかなりsendmail's R & Kコマンドが否定的な先読みをサポートしていないことを確信しています。ですから、誰かがsedにやさしい形式で正規表現を書き直すことができれば、私は感謝しています!

答えて

0

私はsuggested on the SpamAssassin mailingリストと異なるアプローチを取った。私はsendmailのaccess.dbを使用しました。

From:us  REJECT 
From:ma.us OK 
From:mi.us OK 

Iの避難所」:私はホワイトリストにしたいlocality namespacesはフォーム「<organization-name>.<locality>.<state>.us」私は単純に以下のようなすべての状態のための50個のエントリを作成し、拒否anything.usで始まるすべての第4レベルドメインの登録がされているので、これは数日後に有効になって以来、偽のネガティブなもの、つまり迷子になったスパムが見られました。