메일 필터링 · 3 min read · Dec 29, 2025

SIEVE 메일 필터링 언어 빠른 가이드

SIEVE 메일 필터링 언어 빠른 가이드

SIEVE란 무엇인가?

SIEVE는 메일 필터링을 위해 생성되고 사용되는 언어로, 일반적으로 메일 서버나 스팸 방지/바이러스 방지 애플리케이션에서 제공하는 필터링 옵션을 확장합니다. 이들은 기본적으로 메일 메시지의 헤더에 대해 서로 다른 키를 서로 다른 비교기 및 비교 방법을 사용하여 비교함으로써 작동합니다. 비교 결과에 따라 해당 메일 메시지에 대해 거부, 폐기, 리디렉션 등의 다양한 작업을 적용할 수 있습니다.

이 언어는 사용자가 필요에 따라 임의의 수의 스크립트 필터를 정의할 수 있도록 매우 유연한 필터링 방법론을 제공합니다. SIEVE 스크립트를 사용하는 것은 접근 프로토콜, 메일 아키텍처 및 운영 체제에 의존하지 않으며, 메일 클라이언트 또는 메일 서버(예: Sendmail, Qmail, Axigen 등)에서 쉽게 구현될 수 있도록 설계되었습니다.

SIEVE는 1994년 이후 다양한 기술 및 표준 지향 공개 및 비공식 회의에서 논의된 다중 공급업체의 노력의 결과로 제안된 인터넷 표준으로 설계되었습니다.


SIEVE 필터를 사용하는 이유

메일 트래픽은 대부분의 사용자에게 증가하고 있으며, 이는 이메일 사용 증가, 광고 형태로서의 원치 않는 이메일의 출현, 메일링 리스트 사용 증가 때문입니다.

SIEVE 필터링 시스템을 사용할 이유는 여러 가지가 있습니다:

  • 효율적이고 유연한 규칙을 생성할 수 있습니다. SIEVE로 작성된 스크립트는 메시지가 사용자 접근 가능한 메일박스로 이동할 때 최종 배달 중에 실행됩니다. 따라서 MTA가 메일을 사용자 메일박스에 배치할 때 정렬하는 것이 합리적입니다.
  • SIEVE 스크립트는 메일 콘텐츠에서 작동하지 않고 메일 헤더에서 정보를 추출하고 미리 정의된 규칙에 따라 작업을 수행하기 때문에 안전한 필터링 방법입니다.
  • 스팸 방지 및 바이러스 방지 애플리케이션에 추가하여, SIEVE 스크립트를 사용하여 모든 합법적인 이메일을 필터링할 수 있으므로 이메일 통신 시 속도와 효율성을 높일 수 있습니다.

SIEVE 언어

1. 일반적인 측면

SIEVE는 표준으로 설명된 고정 형식을 가지고 있지만 확장을 사용하여 개선할 수 있습니다. 확장 메커니즘은 시스템이 해당 확장을 구현하는 경우에 작동합니다. 확장을 사용하려면 파일(스크립트) 시작 부분에 require 절로 광고해야 합니다.

require "extension_name"    
or    
require ["extension_name1", "extension_name2"]

표준에 설명된 SIEVE의 구조는 keep, fileinto, reject, discard, redirect의 5가지 작업을 정의하며, 이는 자명합니다. 또한 3가지 제어 명령을 정의합니다:

  • - 해당 지점까지의 처리를 중지합니다.
  • 구조
  • require 명령 - 언어의 확장을 정의합니다.

if 구조는 다음과 같은 형식을 가집니다:

if

elsif

else

여기서 블록은 명령 블록(작업 및 제어 명령 - 다른 if 포함)을 의미합니다.

표준 형식에서는 확장 없이 테스트는 다음 중 하나일 수 있습니다:

  • address - 서로 다른 비교 방법을 사용하여 주소 헤더 집합을 키 집합과 비교합니다;
  • envelope - 선택적 테스트;
  • header - 서로 다른 비교 방법을 사용하여 헤더 집합을 키 집합과 비교합니다;
  • true, false – 상수;
  • allof - 여러 테스트 간의 논리 및;
  • anyof - 여러 테스트 간의 논리 또는;
  • not - 테스트의 부정;
  • exists - 헤더 집합이 존재하는지 테스트;
  • size - 메시지 크기에 대해 테스트;

테스트는 true 또는 false의 2가지 값을 가질 수 있습니다.

2. 예제

“Spam”이 제목에 포함되거나 “[email protected]”에서 수신된 모든 메일을 스팸 폴더로 이동시키는 SIEVE 스크립트의 간단한 예는 다음과 같이 작성할 수 있습니다:

require "fileinto"  
      
if anyof(address :is ["From", "Sender"] "[email protected]", header :matches "Subject" "Spam")  
{  
    fileinto "Spam";  
}

또 다른, 더 복잡한 예는 바이러스가 포함된 모든 메일을 거부하고, 발신 메일이며 수신 메일이 아닌 필터입니다. 이 후자의 예는 구현해야 할 여러 확장을 사용합니다.

require ["envelope","virustest","relational","comparator-i;ascii-numeric","reject"];  
  
if allof(virustest :value "eq" :comparator "i;ascii-numeric" "5",  
    envelope :contains "From" ["domain1.org", "domain2.org"],  
    not envelope :contains "To" ["domain1.org", "domain2.org"])  {  
        reject "이 메일은 domain.org에서 세계로 발송되었으며 바이러스를 포함하고 있습니다";  
    }

SIEVE 언어에 대한 보다 자세한 설명을 위해 전용 RFC 3028를 읽어보는 것도 권장합니다.

AXIGEN 메일 서버의 SIEVE 필터

현재 AXIGEN은 스크립트 필터 정의를 위해 SIEVE 언어를 사용합니다. 다양한 사용자 정의 SIEVE 스크립트는 AXIGEN 필터링 시스템에 포함될 수 있습니다. AXIGEN에서 활성화되면 각 필터는 우선 순위 값을 할당받습니다. 우선 순위 개념은 필터링 체인에서 필터의 순서를 정의하는 데 사용됩니다. 이는 우선 순위가 높은 필터가 먼저 적용됨을 의미합니다. 모든 SIEVE 필터는 여러 수준에서 활성화될 수 있습니다: 서버, 도메인 또는 계정/메일링 리스트.

AXIGEN은 또한 휴가 SIEVE 확장을 구현합니다. 이는 SIEVE 스크립트 파일을 생성하고 적용하여 자동 회신을 생성할 수 있음을 의미합니다. 따라서 휴가가 적용되는 계정의 사용자가 휴가 중이거나 사무실을 비우거나 일반적으로 장기간 자리를 비울 때 자동 생성된 메시지를 보낼 수 있습니다. 보안 기능은 아니지만, 휴가 확장은 스크립트 파일을 통해 제공되는 추가 기능입니다. 우리 메일 서버에서 사무실을 비우는 구현을 쉽게 하기 위해, 다음 예제를 참조하십시오:

Knowledgebase

AXIGEN에서 SIEVE 언어 및 스크립트 구현에 대한 자세한 지침은 우리의 온라인 문서를 참조하십시오.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.