rspamd 필터링 전 도메인당 Whitelis/블랙리스트

rspamd 필터링 전 도메인당 Whitelis/블랙리스트

슬프게도 rspamd의 GitHub 토론 게시판에서 어떤 응답도 얻지 못했기 때문에 여기 누군가가 rspamd 사전 필터 모드에 대한 경험이 있을 수 있습니다.

나는 rspamd가 그것이 얼마나 스팸이라고 생각하는지에 관계없이 주어진 도메인 목록에서 오는 모든 메일을 받아들이도록 노력하고 있습니다. 안타깝게도 너무 많은 사람들이 보낸 사람을 조작하거나 일반적으로 숨길 것이 있는 사람들이 사용하는 다른 수상한 일을 하는 것이 좋은 생각이라고 생각하기 때문에 이는 필요합니다. 이는 메일이 스팸인지 아닌지 평가하기 전에 실행되어야 하기 때문에 사전 필터 모드를 사용하여 수행하는 것이 가장 쉽습니다. 추가 보너스로 일부 악명 높은 스팸 메일이 인식되지 않는 경우 차단 목록에 사용할 수도 있습니다. 물론, rspamd는 스팸이어야 하는 것과 그렇지 않은 것을 가르칠 수 있지만, 그것만으로는 충분히 효과적이지 않은 것 같습니다. 또한 로그에서는 대부분의 도메인에 대해 사전 필터 적용을 거부하는 이유를 알 수 없으므로 여러분 중 한 분이 제안을 하실 수도 있습니다.

지금은 멀티맵 구성을 사용하여 허용 목록과 차단 목록에 대한 사전 필터를 설정하고 있습니다. 따라서 local.d/multimap.conf에는 다음이 있습니다.

ACCEPTLIST_SENDER_DOMAIN {
      #type = "header";
      #header = "from";
      type = "from";
      prefilter = "true";
      filter = "email:domain";
      map = "file:///etc/rspamd/local.d/acceptlist.sender.domain.map";
      description = "Sender domain is on allowed";
      action = "accept"; # Prefilter mode
  }

BLOCKLIST_SENDER_DOMAIN {
      #type = "header";
      #header = "from";
      type = "from";
      prefilter = "true";
      filter = "email:domain";
      map = "file:///etc/rspamd/local.d/blocklist.sender.domain.map";
      symbol = "BLOCKLIST_SENDER_DOMAIN";
      description = "Sender domain is on blocked";
      score = 10.0;
      action = "add_header"; # Prefilter mode
  }

각 블록의 상단에 있는 두 개의 주석은 헤더와 from 헤더를 필터링하려고 시도했을 때 나온 것입니다. 그러나 이를 직접 필터링할 수 있으므로 이 주석을 시도했지만 도움이 되지 않습니다. 또한 경로와 file:///path/to/file을 모두 사용하여 맵에 파일을 추가하려고 시도했지만 여전히 성공하지 못했습니다. rspamd.log에도 도움이 되는 내용이 표시되지 않습니다(계속 나타나는 오류는 해당 모듈을 비활성화할 수 없기 때문에 dkim 키를 로드할 수 없다는 것입니다). 이 구성을 overwrite.d에 복사하는 것도 도움이 되지 않습니다. 어떤 아이디어가 있나요?

저는 rspamd repo에서 바로 rspamd 3.4-1~bullseye를 실행하는 Debian 11을 사용하고 있습니다.

답변1

내 마지막 답변이 꽤 도움이 되었지만 전반적으로 아직 해결되지 않은 몇 가지 문제가 있습니다.

어떤 이유에서 ACCEPTLIST_SENDER_DOMAIN인지 지도 파일에서 얼마 전에 삭제한 도메인에 대해 계속 추가됩니다. rspamd를 여러 번 다시 시작했지만 해당 도메인을 잊지 않습니다. 그리고 삭제해도 도움이 될만한 캐시를 찾을 수 없습니다.

게다가 멀티맵은 무슨 일이 있어도 지정된 도메인에서 오는 메일을 수락해야 합니다. 하지만 도메인이 헤더에 있는 경우에만 해당되며 From:다른 경우에는 해당되지 않습니다. 이전에 제가 화이트리스트에 잘못 추가한 도메인은 우리 메일링 리스트의 도메인이었습니다. 따라서 rspamd는 애초에 멀티맵을 기반으로 해당 메일을 수락해서는 안 됩니다. 우리의 메일링 목록은 헤더를 From:자체 주소로 대체하지 않기 때문입니다. 그러나 여전히 많은 스팸 메일은 이론적으로는 false로 제외되어야 함에도 불구하고 여전히 스팸으로 표시됩니다 ACCEPTLIST_SENDER_DOMAIN. 지금은 prefilter=true; 멀티맵 구성에 추가하면 도움이 될 수도 있습니다. 그러나 전체적으로 rspamd는 여전히 예상대로 작동하지 않습니다.

편집: 첫 번째 문제를 해결하기 위해 헤더를 명시적으로 확인하기 위해 다시 전환했습니다 From:. type:from은 이를 확인하기 전에 봉투를 확인하므로 훨씬 더 안정적이어야 합니다(물론 From 헤더를 수정하는 것은 매우 간단하지만 지난 몇 년간 이런 일이 발생했지만 주요 스팸 필터에 의해 포착되지 않은 사건은 한 손에 꼽을 수 있습니다.)

ACCEPTLIST_SENDER_DOMAIN {
      type = "header";
      header = "From:";
      prefilter = true;
      map = "/etc/rspamd/local.d/acceptlist.sender.domain.map";
      symbol ="ACCEPTLIST_SENDER_DOMAIN";
      description = "Sender domain is on allowed";
      action = "accept"; # Prefilter mode
  }

BLOCKLIST_SENDER_DOMAIN {
      type = "header";
      header = "From:";
      prefilter = true;
      map = "/etc/rspamd/local.d/blocklist.sender.domain.map";
      symbol = "BLOCKLIST_SENDER_DOMAIN";
      description = "Sender domain is on blocked";
      action = "add_header"; # Prefilter mode
  }

그러나 어떤 이유로 이러한 기호가 트리거되면 메일 헤더에 다음이 포함됩니다.

X-Rspamd-Pre-Result: action=no action;
    module=multimap;
    Matched map: ACCEPTLIST_SENDER_DOMAIN

이 경우 작업은 구성에 명시된 대로 "수락"되어야 합니다. 구성 덤프에는 다음과 같이 표시됩니다.

multimap {
    ACCEPTLIST_SENDER_DOMAIN {
        action = "accept";
        map = "/etc/rspamd/local.d/acceptlist.sender.domain.map";
        description = "Sender domain is on allowed";
        symbol = "ACCEPTLIST_SENDER_DOMAIN";
        prefilter = true;
        type = "header";
        header = "From";
}
    BLOCKLIST_SENDER_DOMAIN {
        action = "add_header";
        map = "/etc/rspamd/local.d/blocklist.sender.domain.map";
        description = "Sender domain is on blocked";
        symbol = "BLOCKLIST_SENDER_DOMAIN";
        prefilter = true;
        type = "header";
        header = "From";
}
    [...]
}

답변2

나는 prefilter 값 주위에 어떤 따옴표도 있어서는 안 된다고 생각합니다.

prefilter = true;

또한 사전 필터 맵에서 점수를 구성하는 것은 작업이 이미 시행되므로 쓸모가 없을 수 있습니다.

나는 그것이 도움이 되기를 바랍니다!

답변3

이것은 작동합니다. 나는 당신이 원하는 것을 정확하게 구현했습니다. 내 local.d/multimap.conf에는 다음이 포함됩니다.

특정 도메인의 메일을 수락하려면

WHITELIST_SENDER_DOMAIN {
      type = "from";
      filter = "email:domain";
      map = "/${LOCAL_CONFDIR}/local.d/whitelist.sender.domain.map";
      symbol ="WHITELIST_SENDER_DOMAIN";
      description = "WHITELIST map for SENDERS Domain - Action accept";
      action = "accept";
  }
# For rejecting domains
BLACKLIST_SENDER_DOMAIN {
      type = "from";
      filter = "email:domain";
      map = "/${LOCAL_CONFDIR}/local.d/blacklist.sender.domain.map";
      symbol ="BLACKLISTED_DOMAIN";
      description = "Blacklist map for Senders Domain - Action reject";
      action = "reject";
  } 

언급된 맵 파일을 local.d에 정확히 동일한 이름으로 생성하고 필터링하려는 도메인 이름으로 채워야 합니다. 한 줄에 하나의 도메인 이름만 사용하세요! 파일에는 읽기 권한이 있어야 합니다.

또한 메시지에 작업이 설정된 경우 대부분의 추가 확인을 건너뛰어야 합니다.

답변4

@cz.steve SpamAssassin이 내가 원하는 방식으로 작동하지 않았기 때문에 이제 rspamd를 사용하기 위해 모든 것을 다시 구축했습니다. 이제 변경 사항으로 인해 화이트리스트와 블랙리스트가 가능해졌습니다. 비록 제가 의도한 방식은 아니지만 말이죠. 내가 원했던 것은 주어진 도메인을 From:다른 모든 헤더에도 일치시키지 않고 헤더 에 있는 내용에만 일치시키는 것이었습니다 . 그것을 달성하는 것이 가능합니까?

지금 내 구성은 다음과 같습니다.

ACCEPTLIST_SENDER_DOMAIN {
      type = "from";
      filter = "email:domain";
      map = "/etc/rspamd/local.d/acceptlist.sender.domain.map";
      symbol ="ACCEPTLIST_SENDER_DOMAIN";
      description = "Sender domain is on allowed";
      action = "accept"; # Prefilter mode
  }

BLOCKLIST_SENDER_DOMAIN {
      type = "from";
      filter = "email:domain";
      map = "/etc/rspamd/local.d/blocklist.sender.domain.map";
      symbol = "BLOCKLIST_SENDER_DOMAIN";
      description = "Sender domain is on blocked";
      action = "add_header"; # Prefilter mode
  }

관련 정보