내 서버:
- 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을 다시 시작하십시오.