正規表現をアーカイブして、スパムとは異なるバウンスされた電子メールまたは一時的に配信不能な電子メールをフィルタリングしようとしています。
式に含まれる可能性のある特定の単語(コード+単語)を取得しますが、(SPAM |一時的に配信不能|ディスククォータを超えました)などの他の単語が含まれている場合は、行全体を無視します。これは永続的なバウンスとは見なされないためです。私たちは最初の部分を管理し、負の正規表現(http://stackoverflow.com/questions/1153856/string-negation-using-regular-expressions)についてここでいくつかの答えを見つけましたが、1つのグループで両方を混合することは完全に失敗しましたこれまでの文。
何かのようなもの:
.*(5.3.0|5.1.0).*(User unknown|invalid|Unknown address|doesn't have a)
ただし、同じ行の他の場所にxxx語が含まれている場合は一致しません。何かのようなもの:
^(?!(SPAM|temporarily undeliverable|disk quota exceeded)).*$
したがって、次の最初の行は一致しますが、2番目の行は一致しないはずです
診断コード:smtp; 5.3.0-その他のメールシステムの問題554-「配信エラー:ddこのユーザーはbtinternet.comアカウント(xxxxxxxx@xxxxxinternet.com)を持っていません[0]-mta1000.bt.mail.ird.yahoo.com」(配信試行:0)
診断コード:smtp; 5.1.0-不明なアドレスエラー550-「RCPTTO:メールボックスディスククォータを超えました」(配信試行:0)