
드론부터 룸바까지 모든 복제품을 대량으로 판매하는 유명 조직의 스팸은 , 및 필드에서 임의의 도메인을 From:
사용 Message-ID:
합니다 Reply-To:
.
모두 다르다, 공통 후행도 없이 xyz.com
.
(스팸이 아닌 메일은 최소한 Message-ID:
및 의 도메인 이름을 공유하는 경향이 있습니다 Reply-To:
.)
~/.procmailrc의 레시피가 이러한 스팸을 감지하여 스팸 폴더로 전달할 수 있습니까?
명명된 캡처 그룹이 포함된 멋진 정규식을 원하시나요?
'A' 또는 'a'로 동작을 연결하는 것에 대한 내용이 있나요?
맨페이지에서 제안한 대로 procmail을 재귀적으로 호출하시겠습니까?
더 나은 문자열 처리 기능을 갖춘 언어로 작성된 스크립트에 메일 헤더를 전달하는 '필터'가 있습니까?
예: namebrandwigs.com, mysuburbankitchen.com, aliyun.com.
From [email protected] Wed Mar 17 09:27:54 2021
Return-Path: <[email protected]>
X-Original-To: ---
Delivered-To: ---
Received: from mysuburbankitchen.com (unknown [5.253.84.113])
by --- (Postfix) with ESMTP id 332025E236
for <--->; Wed, 17 Mar 2021 09:27:53 -0500 (CDT)
To: ---
Subject: drone with new features
Message-ID: <[email protected]>
Date: Wed, 17 Mar 2021 08:13:03 +0100
From: "Jake Allen" <[email protected]>
Reply-To: [email protected]
MIME-Version: 1.0
X-Mailer-Sent-By: 1
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Status: RO
<html>
<head>
</head>
<body>
<span style="display: block; text-align: left;"><span style="display:
block; text-align: left;">Hi,<br /><br /><span>Hope all is well.</span><br
/>We are contacting you today to let you know that we have got the
following new drone, ready to ship to worldwide customers.<span><span><br
/><br /></span></span></span></span><span style="display: block;
text-align: left;"><span style="display: block; text-align:
left;"></span></span><span style="display: block; text-align: left;"><span
style="display: block; text-align: left;"><span style="display: block;
text-align: left;"></span></span></span><span style="display: block;
text-align: left;">Explore new places and amp up your videography skills
with the our F9 4K HD camera drone.
...
비슷한 형식이지만 메시지 본문에 플래그 지정 가능한 텍스트가 없는 다른 예:
- Momentumwatch.com/musicalley.com의 가죽 마사지 의자
- mtndewkid.com / myhondafitev.com / constructiongear.com의 룸바
- hairrehablondon.com / hairocean.com / hotmail.com의 비디오 프로젝터
답변1
다음은 내가 구현한 Procmail 레시피입니다.생각하다당신은 물어볼 수도 있습니다.
그것은 사용한다득점이는 약간 모호하지만 가끔 유용한 기능입니다. 간단히 말해서 도메인 이름이 포함된 헤더가 있으면 From:
(항상 그렇듯이) 점수 1을 할당하고, Reply-To:
또는 Message-Id:
헤더 뒤에 동일한 문자열이 있으면 점수에서 1을 뺍니다 @
.
:0:
* 1^0 ^From:.*@\/[^@<> ]+
* $ -1^0 ^Message-Id:.*@$\MATCH\>
* $ -1^0 ^Reply-To:.*@$\MATCH\>
suspicious
나는 이것이 상당히 높은 오탐률을 가질 것으로 예상하지만, 이 특정 패턴이 포함된 스팸을 많이 받는 경우, 특히 이를 화이트리스트와 결합할 수 있는 경우 가치를 제공할 수 있습니다.
suspicious
나는 여전히 폴더를 정기적으로 확인하고 일반 받은 편지함으로 오탐지를 찾아내는 것이 좋습니다 .
다음은 귀하가 제공한 샘플을 사용한 데모 실행입니다. /dev/null
데모용으로만 제공됩니다.
bash$ procmail -m VERBOSE=yes /tmp/procmailrc </tmp/sample
procmail: [16] Fri Mar 19 09:06:29 2021
procmail: Rcfile: "/tmp/procmailrc"
procmail: Assigning "MAILDIR=/home/tripleee"
procmail: Assigning "MATCH="
procmail: Matched "namebrandwigs.com"
procmail: Score: 1 1 "^From:.*@\/[^@<> ]+"
procmail: Score: 0 1 "^Message-Id:.*@()namebrandwigs\.com\>"
procmail: Score: 0 1 "^Reply-To:.*@()namebrandwigs\.com\>"
procmail: Assigning "LASTFOLDER=/dev/null"
procmail: Opening "/dev/null"
Subject: drone with new features
Folder: /dev/null 1373
구체적인 문제는 이것이 하위 도메인 조회를 허용하지 않는다는 것입니다. 발신자를 허용하는 것은 그리 어렵지 않지만 반대 시나리오는 훨씬 더 까다롭습니다. 왜냐하면 일반적인 경우에는 도메인 이름이 ( 예를 들어 및 TLD에서와 같이) 또는 (예를 들어 TLD에서와 같이) 실제로 알 수 없기 때문입니다. , 등 TLD) 또는 그 이상(경우에 따라 일본의 일부 현 등에 해당될 수 있음)Message-id: <[email protected]>
From: real name <[email protected]>
From: sender <[email protected]>
labels.here
.com
.fr
many.labels.here
.co.uk
.com.au
k12.place.name.us
좀 더 자세히 설명하면 첫 번째 레시피 라인의 첫 번째 히트에 점수를 1^0
할당 하고 추가 히트에 대해서는 추가 점수를 할당하지 않습니다. 1
토큰 \/
은 일치하는 문자열에서 그 뒤의 문자열, 즉 @
헤더의 마지막 기호 뒤의 모든 문자열을 캡처합니다. 그런 다음 변수 MATCH
는 캡처된 문자열을 다시 참조하기 위해 다음 레시피 줄에서 사용됩니다. 구문은 $\MATCH
리터럴 문자열과 일치하는 정규식 이스케이프 패턴을 생성합니다. 후속 레시피에는 Procmail에게 모든 변수(예: )를 레시피 조건에 $
삽입하도록 지시하는 플래그 와 조건의 첫 번째 히트에 대해 1을 빼고 다시 일치하면 아무것도 빼지 않는 채점 지침이 있습니다.$MATCH
-1^0
매뉴얼 페이지는 이러한 모든 구성을 설명하지만 다소 복잡할 수 있습니다. 아마도 또한 참조Procmail 빠른 참조이는 훨씬 더 밀도가 높지만 아마도 읽고 이해하는 것이 더 빠를 수도 있습니다.
나는 여기에 있는 내용을 내 다른 답변과 혼동하지 않기 위해 별도의 답변으로 게시했습니다. 이 답변은 기본적으로 Procmail만 사용하여 스팸 필터를 직접 만들지 못하도록 설득하려고 합니다.
답변2
몇 가지 제한된 예를 토대로 오늘 효과가 있고 내일도 계속 효과가 있는 구체적인 것을 생각해 내기는 어렵습니다. 만약 당신의실제질문은 실제로 "Procmail에서 스팸을 방지할 수 있는 방법"입니다. 이에 대한 명확하고 간단하며 잘 문서화된 대답은 "SpamAssassin과 같은 전체 스펙트럼 스팸 필터를 실행하고 그 결과를 검사합니다"입니다. 그렇더라도 정확도는 결코 100%가 될 수 없습니다. 그러나 SpamAssassin은 기본적으로 구성하고 잊어버린 도구에 대해 적절한 작업을 수행합니다. 이는 스패머가 사용하는 IP 주소, URL 및 기타 네트워크 리소스에 대한 동적 평판 정보를 제공하는 외부 서비스에 광범위하게 의존하므로 실제로 그 뒤에서 상당한 양의 작업이 진행되고 있습니다.
SpamAssassin 위키의 UsedViaProcmail자세한 지침이 있습니다. 간단히 말해서 SpamAssassin을 설치하고 구성한 후에는 다음과 같은 것을 시도해 보십시오.
:0fw
* < 512000
| spamassassin
:0:
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
almost-certainly-spam
:0:
* ^X-Spam-Status: Yes
probably-spam
의 두 번째 콜론은 :0:
잠금이 필요한 사서함(예: mbox 파일이지만 확실히 Maildir 디렉터리는 아니지만 질문의 샘플에 따르면 mbox에 있는 것 같습니다)으로 배달하는 경우에만 정확합니다. 정기적으로 대용량 스팸 메시지를 받는다면 사이즈 조건을 빼 * < 512000
거나 개수를 조정해 보세요. SpamAssassin 표준 Procmail 상용구에는 개인 시스템에는 불필요하고 공유 호스트에서는 의심스러운 잠금 파일과 From
실제로는 결코 올바르지 않다고 생각되는 파선 주변의 이상한 화물 컬트 부두가 포함되어 있습니다.
귀하가 제공한 샘플에 특정한 조언을 원할 경우, 오탐이 없을 것이라는 완전한 확신을 가지고 이러한 특정 메시지를 폐기할 수 있는 깊이 연구되고 절대적으로 진실한 사실이라 할지라도 다른 메시지를 처리하는 데 거의 쓸모가 없다는 점을 이해하십시오. 메시지 및/또는 내일이나 다음 주에 더 이상 사용되지 않습니다.