나는 local_acl_check_data가 From: 및 To:와 동일한 주소를 사용하여 거부하도록 하는 일반적인 스패머 정책을 가지고 있지만 스팸이 덜한 소스(예: Yahoo 그룹)가 이를 수행하므로 화이트리스트도 사용합니다. ACL은 다음과 같습니다.
# block spammers who use the same "from" and "to" address
accept
senders = ${if exists{CONFDIR/local_sender_whitelist}\
{CONFDIR/local_sender_whitelist}\
{}}
deny
condition = ${if eqi{${address:$h_from:}}{${address:$h_to:}}{true}{false}}
log_message = rejecting spam with to:${address:$h_to:} and from:${address:$h_from:}
message = Message identified as spam. If you think this is wrong, get in touch with postmaster
문제는 내가 테스트할 때:
jcomeau@tektonic:~$ cat bin/testacl
exim4 -bh 66.163.168.186 <<EOT
helo tester
mail from: [email protected]
rcpt to: [email protected]
data
from: [email protected]
to: [email protected]
subject: should be ok
this one should not reject
.
mail from: [email protected]
rcpt to: [email protected]
data
from: [email protected]
to: [email protected]
subject: should reject
this one should be rejected
.
quit
EOT
예상대로 작동합니다. 첫 번째 메시지는 화이트리스트에서 yahoogroups.com을 찾았기 때문에 수락되지만 두 번째 메시지는 거부됩니다. 그러나 실제로 yahoogroups.com 이메일은 스패머와 함께 이 ACL에 의해 거부됩니다. 저는 4.72-6을 사용하고 있는데 지난 몇 년간 사용해 본 모든 버전에서 이런 일이 일어났습니다. 아이디어가 부족해요.
요청에 따라 exim4의 로그는 다음을 거쳐야 하는 메시지를 거부했습니다.
jcomeau@tektonic:~$ grep -C2 Freecycle /var/log/exim4/rejectlog 2011-02-25 09:52:00 1Psz1U-00020g-79 H=n52c.bullet.mail.sp1.yahoo.com [66.163.168.186] F=<sentto-15991578-2122-1298645513-jc=example.com@ return.groups.yahoo.com> DATA 이후 거부됨: 스팸 거부:[이메일 보호됨]그리고 다음에서 :[이메일 보호됨] 봉투 발신자: <sentto-15991578-2122-1298645513-jc=example.com@returns.groups.yahoo.com> 봉투 수신자: <[이메일 보호됨]> -- MIME 버전: 1.0 메시지 ID: 메일링 리스트: 목록[이메일 보호됨];만지다[이메일 보호됨] 배송 대상: 메일링 리스트[이메일 보호됨] 목록 ID: <PetalumaFreecycle.yahoogroups.com> 우선순위: 일괄 구독 취소 목록: <mailto:[이메일 보호됨]> 날짜: 2011년 2월 25일 14:51:53 -0000 에서:[이메일 보호됨] 에게:[이메일 보호됨] 주제: [페탈루마 프리사이클] Abstract Number 2122 X-Yahoo-Newman-Property: 그룹-다이제스트-trad-m R 답장: "답변 없음"<[이메일 보호됨]> 콘텐츠 유형: 텍스트/일반; charset=ISO-8859-1 콘텐츠 전송 인코딩: 견적 인쇄 가능
이것이 첫 번째 테스트에서 내 testacl 스크립트가 보여주는 내용입니다.
>>> ACL "acl_check_data" 사용 >>> "수락" 처리 >>> 발신자 확인 = ${존재하는 경우{/etc/exim4/local_sender_whitelist}{/etc/exim4/local_sender_whitelist}{}} >>> "yahoogroups.com"의 yahoogroups.com? 예("yahoogroups.com"과 일치) >>>[이메일 보호됨]"/etc/exim4/local_sender_whitelist"에 있습니까? 예(/etc/exim4/local_sender_whitelist의 "yahoogroups.com"과 일치) >>>수락: 조건 테스트 성공 로그: 1PuxAz-0005jZ-B0 <=[이메일 보호됨]H=n52c.bullet.mail.sp1.yahoo.com (테스터) [66.163.168.186] P=smtp S=380 250 확인 ID=1PuxAz-0005jZ-B0
답변1
나는 이 패턴을 발견했지만 많은 것이 이해되고 있다고 생각하지 않습니다. 이 시도
경고하다 message = 스팸으로 식별된 메시지입니다. 이것이 잘못되었다고 생각하시면,\ 우체국장에게 연락하세요 log_message = 보낸 사람과 받는 사람이 ${h_to:}인 스팸 가능성 !senders = ${if {CONFDIR/local_sender_whitelist}\ {CONFDIR/local_sender_whitelist} {}} 조건 = ${if eqi{$h_from:}{$h_to:}{true}} 제어=동결
control = freeze
규칙을 테스트할 때 검토를 위해 메시지를 저장하는 경우가 많습니다. 충분히 정확하다고 판단되면 거부 규칙으로 변경하겠습니다.
편집: 내 이메일 데이터베이스에서 이 규칙을 테스트했습니다. DNS 블랙리스트 로 사용하면 zen.spamhaus.org
거의 모든 사례(483개 중 467개)를 포착할 수 있습니다. 회색 목록에는 나머지 대부분(16개 중 11개)이 포함됩니다. 테스트를 통과한 메시지 5개를 찾았습니다. 이 중 3개(60%)는 합법적인 이메일이었습니다. 다른 것들은 호스트 이름이나 2차 도메인인 helo 이름을 가지고 있습니다. helo 이름이 최소한 세 번째 수준 도메인인지 확인하는 조건을 추가하면 규칙이 상당히 안전해집니다. 테스트 중:
조건 = ${if eq{${extract{3}{.}{$sender_helo_name}}}{}{true}}
답변2
Exim은 "from"을 return.groups.yahoo.com 도메인에 있는 봉투 보낸 사람 주소로 간주합니다. 해당 도메인(완전히 groups.yahoo.com은 작동하지 않고 yahoo.com은 작동하지 않음)을 local_sender_whitelist에 넣으면 ACL이 작동했습니다.
보낸 사람: 주소와 동일한 yahoogroups.com의 봉투 보낸 사람 주소를 사용했기 때문에 테스트 중에 작동했습니다. 이것이 사실인지 확인하기 위해 야후 그룹 이메일을 확인하지 마십시오.
답변3
귀하는 해결책을 찾았고 귀하의 ACL에 효과가 있을 수 있지만 귀하의 특정 사용 사례에서는 문제가 되지 않더라도 다른 사람들이 이 문제를 겪을 수 있기 때문에 이것을 추가하고 싶었습니다.
exim -bh
많은 것을 확인하지만 다른 호스트에 연결하지 않습니다. ACL이 실패하거나 일시적으로 실패하고 주석 확인이 실패하는 경우 를 사용해야 합니다 -bhc
.