질문:

질문:

내 서버:
- CentOS 7.6
- 엑심 4.91-5

내가 무엇을 성취하고 싶어?
Exim을 사용하여 사용자 설정 목록에서 수신 이메일을 자동으로 삭제하고 싶습니다.와일드카드 일치. SpamAssassin 및 기타 도구는 이러한 상황에 적합하지 않습니다.

예를 들어:

다음에서 보낸 이메일을 차단하고 싶습니다 .icu.

내가 지금까지 무엇을 읽었나요?
이를 위해 나는 읽었습니다.이 답변게다가문서 가져오기 및 내보내기그러나 첫 번째 시도는 실패했고 그 결과모두서버로 전송된 이메일이 거부되었습니다.

편집 방법
내 시스템에 추가 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의 목적: 또는 로 끝나는 도메인의
모든 이메일을 차단합니다 .<anything>@<anything>.opskee.gq<anything>@<anything>.icu

시험
의 참조를 사용하여 시스템을 테스트해 보았습니다.다른 문제그러나 이것은 단지 SSH를 중단시킵니다.

/usr/sbin/exim -bF <scriptfile> -f <sender>

질문:

  • 위의 PCRE가 정확합니까(또는 적어도 명백한 가져오기/내보내기 특정 오류를 방지합니까)?
  • <sender>위 프롬프트의 명령에 대한 전체 예제를 제공/링크할 수 있습니까?
  • 일부 문서(제3자)에는 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 파일에는 금지된 주소 및/또는 정규 표현식이 한 줄에 하나씩 포함되어야 합니다.

## 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을 다시 시작하십시오.

관련 정보