Sun Java System Messaging Server 6.3 관리 설명서

14.8 Milter 사용

이 절은 다음과 같은 하위 절로 구성되어 있습니다. 14.8 Milter 사용

14.8.1 Milter 개요

Milter는 Sendmail Content Management API의 약식 이름으로, 이 API를 사용하여 작성한 소프트웨어를 나타내기도 합니다. Milter는 MTA를 통해 전달되는 메시지의 유효성을 검사, 수정 또는 차단하는 데에 사용되는 타사 소프트웨어의 플러그 인 인터페이스를 제공합니다. Milter는 메시지의 연결(IP) 정보, 봉투 프로토콜 요소, 메시지 헤더 및/또는 메시지 본문 내용을 처리하고 메시지 수신자, 헤더 및 본문을 수정할 수 있습니다. 필터링은 스팸 거부, 바이러스 필터링 및 내용 제어에 사용할 수 있습니다. 일반적으로 Milter는 사이트 전체의 필터링 문제를 확장 가능한 방식으로 해결할 방법을 찾습니다. 원래 sendmail용으로 설계되어 sendmail용으로 작성된 Milter는 Messaging Server에도 사용할 수 있지만 몇 가지 제한이 적용됩니다(아래 참조). Milter에 대한 자세한 내용은 인터넷을 참조하십시오.

14.8.2 Milter/Messaging Server 작동 원리

Milter는 메시지에서 수행되는 작업을 제어합니다. Messaging Server는 14.2.2 필터링할 메시지 지정에 설명된 방법을 사용하여 Milter로 작업을 수행할 메시지를 제어합니다.

sendmail에서 Milter는 sendmail 자체의 지원 코드와 별도의 libmilter 라이브러리로 구성됩니다. 필터 작성자는 필터를 libmilter에 링크하여 서버를 만듭니다. 그런 다음 sendmail이 Milter 서버에 연결되도록 구성합니다.

Messaging Server는 Milter 인터페이스의 sendmail측을 에뮬레이트하는 라이브러리를 제공합니다. 따라서 sendmail용으로 작성된 Milter를 Messaging Server에서 사용할 수 있습니다.

여기에서 몇 가지 주의할 사항이 있습니다. Milter 프로토콜에는 텍스트 및 이진 요소가 복잡하게 혼합되어 있으며 설명서가 잘 구비되어 있지 않습니다. 또한, Milter의 의미는 sendmail에서 메시지를 처리하는 방식과 밀접한 연관이 있습니다. 특히, Milter는 sendmail 구성에 정의된 매크로 중 일부에 액세스할 수 있으며 실제로 자주 액세스합니다. Messaging Server의 Milter 클라이언트 라이브러리에서는 충분한 sendmail 매크로 집합을 제공하려고 시도하지만, 현재 구현되지 않은 sendmail 구성의 특정 부분에 의존하도록 Milter를 작성할 수도 있습니다. 따라서 네트워크에서 임의로 추출한 Milter는 해당 클라이언트 라이브러리에서 작동할 수도 있고 작동하지 않을 수도 있습니다. 문제가 발생하는 경우 문제 해결을 위해 최선을 다하겠지만, 모든 Milter에 대해 성공을 보장할 수는 없습니다.

14.8.3 Milter 요구 사항 및 사용 시 고려 사항

Milter 서버는 별도의 독립적인 서버에서 실행할 수도 있고 Messaging Server와 같은 시스템에서 실행할 수도 있으며, MTA와 같은 시스템에 단일 시스템 배포 또는 2계층 배포로 실행할 수도 있습니다. MTA와 메시지 저장소 사이에서 LMTP를 사용하는 경우에는 MTA에서 필터링을 호출해야 합니다. 메시지 저장소에서는 필터링을 호출할 수 없습니다. MTA와 메시지 저장소 간에 SMTP가 사용되는 경우 각 시스템이나 별도의 타사 시스템에서 실행할 수 있습니다.

Messaging Server는 여러 Milter 서버에 대한 연결을 지원합니다. 여러 IP 주소로 변환되는 도메인 이름을 지정하면 연결이 작동될 때까지 DNS에서 받은 순서대로 모든 이름에 대한 연결을 시도합니다. 일부 DNS 서버는 반환되는 주소의 순서를 무작위로 지정하는 기능을 지원하며, 이를 통해 원시 로드 균형 조정/페일오버 기능을 제공합니다.

14.8.3.1 지원되는 Milter 메시지 수정 작업

Milter 인터페이스는 현재 헤더 추가(SMFIF_ADDHDRS), 헤더 변경 또는 삭제(SMFIF_CHGHDRS) 및 메시지 검역소(SMFIF_QUARANTINE) 기능을 지원합니다. 메시지 본문 변경(SMFIF_CHGBODY), 수신자 추가(SMFIF_ADDRCPT ) 및 수신자 삭제(SMFIF_DELRCPT)는 현재 지원되지 않습니다.

14.8.3.2 Milter 인터페이스에서 제공되는 매크로

Milter 인터페이스에는 현재 다음과 같은 매크로가 정의되어 있습니다.

$j Received: 헤더 필드의 by 절에 텍스트를 넣습니다. Messaging Server에서는 RECEIVED_DOMAIN MTA 옵션을 통해 제어됩니다. 해당 옵션을 설정하지 않은 경우에는 대신 local 채널에 있는 공식 호스트가 사용됩니다.

${client_addr} 점으로 구분된 네 개의 번호 값으로 표현되는 SMTP 클라이언트의 IP 주소입니다. SMTP over TCP를 사용하는 경우에만 설정됩니다.

$i 현재 메시지의 대기열 아이디입니다. Messaging Server는 각 세션에 대해 고유한 아이디를 생성합니다. 이 아이디가 $i 매크로에 표시됩니다.

${mail_addr} 현재 트랜잭션의 MAIL FROM 주소입니다.

${mail_host} 현재 트랜잭션의 MAIL FROM 주소에서 호스트 부분입니다.

${rcpt_addr} 현재 트랜잭션의 RCPT TO 주소입니다.

${rcpt_host} 현재 RCPT TO 주소의 호스트 부분입니다.

ProcedureMilter 배포

Milter를 배포하려면 다음 단계를 수행합니다.

  1. 원하는 작업을 수행할 Milter를 가져와서 구성합니다.

    정보 얻기 및 구성에 대한 자세한 내용은 해당 Milter 설명서를 참조하십시오.

  2. Milter 클라이언트 라이브러리를 로드하고 구성합니다. 14.2.1 스팸 필터링 소프트웨어 클라이언트 라이브러리 로드 및 구성을 참조하십시오.

    1. 클라이언트 라이브러리 libmilter.so의 경로를 지정합니다. Milter 구성 파일의 경로 및 이름을 지정합니다.

      예:


      spamfilter1_library=/opt/SUNWmsgsr/lib/libmilter.so
      spamfilterX_config_file=/opt/SUNWmsgsr/lib/milter.opt
    2. 원하는 옵션을 사용하여 Milter 구성 파일을 만듭니다.

      Milter 옵션 파일은 option=value 형식의 행으로 구성됩니다. 두 개의 필수 옵션은 HOSTPORT입니다. HOST는 Milter 서버를 실행하는 시스템의 이름으로 설정해야 하며, PORT는 Milter 서버가 수신하도록 구성된 포트로 설정해야 합니다. TCP/IP 연결만 지원되며, UNIX 도메인 소켓은 지정하거나 사용할 수 없습니다.

      이 옵션 파일에서 몇 개의 옵션을 추가로 사용할 수도 있습니다.

      DEBUG(정수, 기본값 0) — Milter 클라이언트 라이브러리의 디버그 출력을 활성화하거나 비활성화합니다. 값이 클수록 디버깅 출력이 많아집니다. 0을 설정하면 출력이 없습니다. 1은 기본 디버깅을 제공합니다. 2는 TCP 트래픽 로깅을 추가합니다. (Milter 서버의 디버그 출력은 일반적으로 서버 시작에 사용되는 명령줄의 설정에 따라 제어됩니다. 대부분의 Milter는 syslog에 대한 직접 디버그 출력 기능만 제공합니다.)

      TIMEOUT(정수, 기본값 3600) — Milter 연결과 관련된 작업의 시간 초과 값을 100분의 1초 단위로 지정합니다. 6.3 이상 버전에서 사용할 수 있습니다.

      SOCKS_HOST(문자열, 기본값 "") — 중간 SOCKS 서버의 이름을 지정합니다. 이 옵션을 지정하면 Milter가 직접 연결되지 않고 지정된 SOCKS 서버를 통해 연결됩니다.

      SOCKS_PORT(정수, 기본값 1080) — 중간 SOCKS 서버가 실행되는 포트를 지정합니다.

      SOCKS_PASSWORD(문자열, 기본값 "") — SOCKS 서버를 통한 연결에 사용할 비밀번호를 지정합니다. 아이디/비밀번호가 필요한지 여부는 SOCKS 서버 구성에 따라 다릅니다.

      SOCKS_USERNAME(문자열, 기본값 "") — SOCKS 서버를 통한 연결에 사용할 아이디를 지정합니다.

  3. Milter로 보낼 메시지를 지정합니다.

    사용자, 도메인 또는 채널별로 메시지를 필터링할 수 있습니다. 14.2.2 필터링할 메시지 지정을 참조하십시오.

  4. option.dat 파일에서 spamfilterX_string_action 옵션을 설정합니다.

    spamfilterX_string_action=data:,$M

    이 설정은 무조건적으로 사용되지만 Milter가 제대로 작동하려면 MTA 옵션 파일에 있어야 합니다.