私のサーバー:
- CentOS 7.6
- Exim 4.91-5
私は何を達成したいですか?
Eximを使用してユーザー設定リストから受信メールを自動的に削除したいと思います。ワイルドカードマッチ。 SpamAssassinやその他のツールは、このような状況には適していません。
たとえば、
以下から送信したメールをブロックしたいです.icu
。
[email protected]
封じ込め[email protected]
許可する[email protected]
許可する[email protected]
封じ込め
私は今まで何を読んだのですか?
このために私は読んだ。この回答しかも文書のインポートとエクスポートしかし、最初の試みは失敗し、その結果みんなサーバーに送信された電子メールが拒否されました。
編集方法
私のシステムに追加のEximリストがあります。カスタムフィルタルールフォルダへ。/usr/local/cpanel/etc/exim/sysfilter/options/
そのフォルダにある私のファイルは次のとおりです。
#block email domains
if
( $h_from: matches ".*@.*\.opskee\.gq\$"
or $h_from: matches ".*@.*\.icu\$" )
#then noerror seen finish
then
deliver "SpamTest <[email protected]>"
seen finish
endif
上記のPCREの目的:またはで終わるドメイン内の
すべてのEメールをブロックします。<anything>@<anything>.opskee.gq
<anything>@<anything>.icu
テスト
の参照を使ってシステムをテストしてみました。その他の問題しかし、これは単にSSHを中断します。
/usr/sbin/exim -bF <scriptfile> -f <sender>
質問:
- 上記のPCREは正しいですか(または少なくとも明らかなインポート/エクスポートの特定のエラーを防ぐのですか?)
<sender>
上記のプロンプトのコマンドの完全な例を提供/リンクできますか?- 一部の文書(第三者)には
if
宣言の周りに引用符があり(現在持っている)、どの文書が優れていますか?
ベストアンサー1
正しい方法は、フィルタリングの代わりに exim の ACL を使用することです。
次の行で始まる構成セクションを見つけます。
acl_rcpt:
構成は異なる場合がありますが、acl、rcpt、およびセミコロンが必要です。その後、受け入れ、拒否、要求などの動詞で始まる多くのブロックが必要です。
新しいブロックを追加する必要があります。
deny condition = ${lookup{$sender_address}nwildlsearch{/path/black.list}{yes}}
message = Not that time, sorry.
/path/black.listファイルには、禁止されたアドレスおよび/または正規表現を1行に1つずつ含める必要があります。
## You can block the certain sender
^some_spammer@domain\.icu
## Or everybody from some domain
^.*@domain\.icu
## Or even all top-level domain at once
^.*@.*\.icu
を表すPCRE.
トークンです。厳密に言えば、このパターンは次のことを意味します。any symbol
.*
any number of any symbols
\.
the dot
^.*@domain\.icu
Sender address starting with any number (0..n) of any symbols,
then symbol '@',
then 'domain' substring,
and ending with '.icu' symbols
文字列は[email protected]
REと一致します。
ACLルールは、構成ファイルで定義されている順序で適用されることに注意してください。実装するACLは、RCPTフェーズでACL定義の先頭に配置する必要があります。
再構成後、exim を再始動します。