Sun Java System Messaging Server 6 2005Q4 관리 설명서

변환 처리 제어

메일을 변환 채널로 보내면 본문 부분 단위로 처리됩니다. 처리는 imta_tailor 파일의 IMTA_CONVERSION_FILE 옵션에 지정된 MTA conversions 파일(기본값: msg_svr_base/conversions)에 의해 제어됩니다. conversions 파일은 1) 처리할 본문 부분의 유형을 지정하고 2) 처리 방법을 제어하는 항목으로 구성됩니다.

각 항목은 여러 name=value 매개 변수 절을 포함하는 하나 이상의 행으로 구성됩니다. 매개 변수 절의 값은 MIME 규칙을 따릅니다. 마지막 행을 제외한 모든 행은 세미콜론(;)으로 끝나야 합니다. 이 파일의 물리적 행은 252자로 제한됩니다. 백슬래시(\) 연결 문자를 사용하여 논리적 행을 여러 물리적 행으로 분할할 수 있습니다. 세미콜론으로 끝나지 않는 행이나 하나 이상의 빈 행 또는 두 가지 모두를 사용하여 항목을 종료합니다.

다음은 conversion 파일 항목의 간단한 예입니다.


예 13–1 conversions 파일 항목


out-chan=ims-ms; in-type=application; in-subtype=wordperfect5.1;
  out-type=application; out-subtype=msword; out-mode=block;
  command="/usr/bin/convert -in=wordp -out=msword 'INPUT_FILE' 'OUTPUT_FILE’"

out-chan=ims-ms; in-type=application; in-subtype=wordperfect5.1 절은 본문 부분을 규정합니다. 즉, 변환할 부분의 유형을 지정합니다. 각 부분의 헤더를 읽고 해당 헤더의 Content-Type:과 기타 헤더 정보를 추출합니다. 그런 다음 conversion 파일의 항목을 처음부터 끝까지 순서대로 검사하여 in-* 매개 변수가 있는지 확인하고, OUT-CHAN 매개 변수(있는 경우)를 검사합니다. 이러한 매개 변수가 모두 처리할 본문 부분의 해당 정보와 일치하면 command= 또는 delete= 절에 지정된 변환이 수행되고 out-* 매개 변수가 설정됩니다.

일치하지 않는 경우 해당 부분이 다음에 있는 conversions 파일 항목에 대해 일치됩니다. 모든 본문 부분을 스캔하여 처리한 다음(규정된 일치가 있다고 가정) 메일을 다음 채널로 보냅니다. 일치하지 않는 경우 처리 작업을 수행하지 않고 메일을 다음 채널로 보냅니다.

out-chan=ims-msims-ms 채널이 대상인 메일 부분만 변환하도록 지정합니다. in-type=applicationin-subtype=wordperfect5.1은 메일 부분에 대한 MIME Content-type 헤더가 application/wordperfect5.1이어야 함을 지정합니다.

추가 in-* 매개 변수를 사용하여 메일 부분을 자세히 규정할 수 있습니다. 표 13–6을 참조하십시오. 위 항목은 다음 MIME 헤더 행이 있는 메일 부분에 대한 변환 작업을 트리거합니다.


Content-type: APPLICATION/wordperfect5.1;name=Draft1.wpc
Content-transfer-encoding: BASE64
Content-disposition: attachment; filename=Draft1.wpc
Content-description: "Project documentation Draft1 wordperfect format"

예 13–1에서 세 conversion 파일 규정 매개 변수 뒤의 두 매개 변수 out-type=applicationout-subtype=msword는 “처리된” 본문 부분에 첨부할 대체 MIME 헤더 행을 지정합니다. out-type=applicationout-subtype=msword는 보내는 메일의 MIME Content-type/subtypeapplication/msword임을 지정합니다.

in-type 매개 변수와 out-type 매개 변수가 동일하고 보내는 본문 부분의 원본 MIME 레이블이 변환 채널의 기본값이기 때문에 out-type=application은 필요하지 않습니다. 추가 출력 매개 변수를 사용하여 보내는 본문 부분에 대한 추가 MIME 레이블을 지정할 수 있습니다.

out-mode=block(예 13–1)은 사이트에서 제공하는 프로그램이 반환할 파일 유형을 지정합니다. 즉, 파일 저장 방법과 반환된 파일에서 변환 채널을 다시 읽는 방법을 지정합니다. 예를 들어, html 파일은 텍스트 모드로 저장되고 .exe 프로그램 또는 zip 파일은 블록/이진 모드로 저장됩니다. 모드는 읽을 파일이 특정 저장소 형식에 속하는지를 설명하는 방법입니다.

예 13–1의 마지막 매개 변수는 본문 부분에 대해 수행할 작업을 다음과 같이 지정합니다.


command="/usr/bin/convert -in=wordp -out=msword 'INPUT_FILE’ 'OUTPUT_FILE’"

command= 매개 변수는 프로그램이 본문 부분에서 실행됨을 지정합니다. /usr/bin/convert는 가상 명령 이름이고, -in=wordp-out=msword는 입력 텍스트 및 출력 텍스트의 형식을 지정하는 가상 명령줄 인수이고, INPUT_FILEOUTPUT_FILE는 프로그램에서 변환된 본문 부분을 저장하는 변환 채널 환경 매개 변수입니다( 변환 채널 환경 변수 사용 참조).


주 –

일반 변환 항목에 의해 외부 메일 헤더를 포함하는 파일이 요청되는 경우 봉투 생성자 및 수신자 정보는 x-envelope-from 및 x-envelope-to 필드로 제공됩니다.


본문 부분에서 명령을 실행하지 않고 command 매개 변수 대신 DELETE=1을 대체하여 메일 부분을 간단히 삭제할 수 있습니다.


주 –

conversions 파일을 수정할 때마다 구성을 다시 컴파일해야 합니다( MTA 구성 컴파일 참조).


변환 채널 정보 흐름

정보 흐름은 다음과 같습니다. 본문 부분이 포함된 메일이 변환 채널로 전달됩니다. 변환 채널에서 메일을 구문 분석하여 한 부분씩 처리합니다. 그런 다음 본문 부분을 규정합니다. 즉, MIME 헤더 행을 규정 매개 변수와 비교하여 메일을 처리할지 여부를 결정합니다. 본문 부분이 규정되면 변환 처리가 시작됩니다. MIME 또는 본문 부분 정보를 변환 스크립트로 전달해야 할 경우 해당 정보가 정보 전달 매개 변수에 지정된 환경 변수( 변환 채널 환경 변수 사용)로 저장됩니다.

이 지점에서 작업 매개 변수에 지정된 작업이 본문 부분에 대해 수행됩니다. 일반적으로 본문 부분을 삭제하거나 스크립트에 포함된 프로그램으로 전달하는 작업입니다. 스크립트는 본문 부분을 처리한 다음 사후 처리 메일로 다시 어셈블할 수 있도록 변환 채널로 다시 보냅니다. 또한, 변환 채널 출력 옵션을 사용하여 정보를 변환 채널로 보낼 수 있습니다. 이 정보는 출력 본문 부분에 추가할 새 MIME 헤더 행, 메일을 보낸 사람에게 반환할 오류 텍스트, 작업(메일 바운스, 삭제, 보관 등)을 시작하도록 MTA에 지시하는 특수 지시문 등입니다.

마지막으로 변환 채널은 출력 본문 부분의 헤더 행을 출력 매개 변수에 지정된 대로 바꿉니다.

변환 채널 환경 변수 사용

메일 본문 부분에 대한 작업을 수행할 경우 사이트에서 제공하는 프로그램을 통해 MIME 헤더 행 정보 또는 전체 본문 부분을 전달하는 것이 좋습니다. 예를 들어, 프로그램에는 메일 본문 부분 외에도 Content-typeContent-disposition 헤더 행 정보가 필요할 수 있습니다. 일반적으로 사이트에서 제공하는 프로그램의 기본 입력은 파일에서 읽은 메일 본문 부분입니다. 본문 부분을 처리한 후 프로그램은 변환 채널에서 읽을 수 있도록 본문 부분을 파일에 기록해야 합니다. 이러한 유형의 정보 전달은 변환 채널 환경 변수를 사용하여 수행됩니다.

parameter-symbol-* 매개 변수 또는 미리 정의된 채널 환경 변수( 변환 채널 출력 옵션 사용 참조)를 사용하여 conversions 파일에 환경 변수를 만들 수 있습니다.

다음 conversions 파일 항목 및 수신 헤더는 환경 변수를 사용하여 MIME 정보를 사이트에서 제공하는 프로그램에 전달하는 방법을 나타냅니다.

conversions 파일 항목:


in-channel=*; in-type=application; in-subtype=*;
  parameter-symbol-0=NAME; parameter-copy-0=*;
  dparameter-symbol-0=FILENAME; dparameter-copy-0=*;
  message-header-file=2; original-header-file=1;
  override-header-file=1; override-option-file=1;
  command="/bin/viro-scan500.sh ”INPUT_FILE’ ”OUTPUT_FILE’"
 

수신 헤더:


Content-type: APPLICATION/msword; name=Draft1.doc
Content-transfer-encoding: BASE64
Content-disposition: attachment; filename=Draft1.doc
Content-description: "Project documentation Draft1 msword format"

in-channel=*; in-type=application; in-subtype=*는 유형이 application인 입력 채널의 메일 본문 부분을 처리하도록 지정합니다.

parameter-symbol-0=NAME은 첫 번째 Content-type 매개 변수 값(이 예의 경우 Draft1.doc)을 NAME이라는 환경 변수에 저장하도록 지정합니다.

parameter-copy-0=*는 입력 본문 부분의 모든 Content-type 매개 변수를 출력 본문 부분에 복사하도록 지정합니다.

dparameter-symbol-0=FILENAME은 첫 번째 Content-disposition 매개 변수 값(이 예의 경우 Draft1.doc)을 FILENAME이라는 환경 변수에 저장하도록 지정합니다.

dparameter-copy-0=*는 입력 본문 부분의 모든 Content-disposition 매개 변수를 출력 본문 부분에 복사하도록 지정합니다.

message-header-file=2는 메일의 원본 헤더(가장 외부에 있는 메일 헤더) 전체를 MESSAGE_HEADERS 환경 변수에 지정된 파일에 기록하도록 지정합니다.

original-header-file=1은 포함된 MESSAGE/RFC822 부분의 원본 헤더를 ORIGINAL_HEADERS 환경 변수에 기록하도록 지정합니다.

override-header-file=1은 포함된 MIME 부분의 원본 MIME 헤더 행을 무시하고 OUTPUT_HEADERS 환경 변수에 지정된 파일에서 MIME 헤더를 읽도록 지정합니다. $OUTPUT_HEADERS는 변환을 실행할 때 즉석에서 만들어지는 임시 파일입니다. 사이트에서 제공하는 프로그램은 이 파일을 사용하여 변환 프로세스 중에 변경된 MIME 헤더 행을 저장합니다. 그런 다음 변환 채널은 본문 부분을 다시 어셈블할 때 이 파일에서 MIME 헤더 행을 읽습니다. MIME 헤더 행만 수정할 수 있습니다. 다른 일반적인 비 MIME 헤더 행은 변환 채널에서 변경할 수 없습니다.

override-option-file=1은 변환 채널이 OUTPUT_OPTIONS 환경 변수를 통해 명명된 파일에서 변환 채널 옵션을 읽도록 지정합니다. 변환 채널 출력 옵션 사용을 참조하십시오.

command="msg_svr_base/bin/viro-scan500.sh"는 메일 본문 부분에서 실행할 명령을 지정합니다.

표 13–3 변환 채널 환경 변수

환경 변수 

설명 

ATTACHMENT_NUMBER

현재 부분의 첨부 파일 수입니다. ATTACHMENT-NUMBER 변환 일치 매개 변수와 같은 형식을 사용합니다. 

CONVERSION_TAG

활성 변환 태그의 현재 목록입니다. TAG 변환 일치 매개 변수에 해당합니다. 

INPUT_CHANNEL

메일을 변환 채널의 대기열에 포함시킨 채널입니다. IN-CHANNEL 변환 일치 매개 변수에 해당합니다. 

INPUT_ENCODING

본문 부분에 원래 표시된 부분을 인코딩합니다. 

INPUT_FILE

원본 본문 부분이 포함된 파일 이름입니다. 사이트에서 제공하는 프로그램은 이 파일을 읽어야 합니다. 

INPUT_HEADERS

본문 부분의 원본 헤더 행이 포함된 파일 이름입니다. 사이트에서 제공하는 프로그램은 이 파일을 읽어야 합니다. 

INPUT_TYPE

입력 메일 부분의 MIME Content-type입니다.

INPUT_SUBTYPE

입력 메일 부분의 MIME 내용 하위 유형입니다. 

INPUT_DESCRIPTION

입력 메일 부분의 MIME content-description입니다.

INPUT_DISPOSITION

입력 메일 부분의 MIME content-disposition입니다.

MESSAGE_HEADERS

포함된 메일의 가장 외부에 있는 원본 헤더(본문 부분 아님) 또는 최신 포함된 MESSAGE/RFC822 부분의 헤더를 포함하는 파일 이름입니다. 사이트에서 제공하는 프로그램은 이 파일을 읽어야 합니다. 

OUTPUT_CHANNEL

메일을 보내는 채널입니다. OUT-CHANNEL 변환 일치 매개 변수에 해당합니다. 

OUTPUT_FILE

사이트에서 제공하는 프로그램이 출력을 저장하는 파일 이름입니다. 사이트에서 제공하는 프로그램은 이 파일을 만들고 써야 합니다. 

OUTPUT_HEADERS

사이트에서 제공하는 프로그램이 포함 부분에 대한 MIME 헤더 행을 저장하는 파일의 이름입니다. 사이트에서 제공하는 프로그램은 이 파일을 만들고 써야 합니다. 파일에는 마지막 행으로 빈 행이 오는 실제 MIME 헤더 행(option=value 행 아님)이 포함되어 있어야 합니다. 또한, MIME 헤더 행만 수정할 수 있습니다. 다른 일반적인 비 MIME 헤더 행은 변환 채널에서 변경할 수 없습니다.

OUTPUT_OPTIONS

사이트에서 제공하는 프로그램이 변환 채널 옵션을 읽어야 하는 파일의 이름입니다. 변환 채널 출력 옵션 사용을 참조하십시오.

PART_NUMBER

현재 부분의 부품 번호입니다. PART-NUMBER 변환 일치 매개 변수와 같은 형식을 사용합니다. 

PART_SIZE

처리할 부분의 크기(바이트)입니다. 

메일 변환 태그

메일메일 변환 태그는 특정한 받는 사람이나 보낸 사람과 연관된 특수한 태그입니다. 메일이 전달될 때 변환 채널 프로그램에서 변환 태그를 볼 수 있으며 특수한 처리를 위해 변환 태그를 사용할 수 있습니다. 변환 태그는 LDAP 디렉토리에 저장됩니다.

메일 변환 태그를 다음과 같이 사용할 수 있습니다. 관리자는 메일 변환 태그 값이 harmonica인 선택된 사용자를 설정할 수 있습니다. 그런 다음 관리자는 해당 메일 처리 시에 태그와 harmonica 값을 감지하는 변환 채널을 설정합니다. 해당 태그와 값이 감지되면 프로그램에서 몇 가지 임의의 기능을 수행합니다.

메일 변환 태그는 사용자 또는 도메인 단위로 설정할 수 있습니다. 도메인 수준의 수신자 LDAP 속성은 MailDomainConversionTag(MTA 옵션 LDAP_DOMAIN_ATTR_CONVERSION_TAG를 사용하여 수정할 수 있음)입니다. 사용자 수준의 수신자 LDAP 속성은 MailConversionTag(MTA 옵션 LDAP_CONVERSION_TAG를 사용하여 수정할 수 있음)입니다. 이러한 두 속성은 값이 여러 개일 수 있으며 각 값에 다른 태그를 지정할 수 있습니다. 특정 수신자와 연관된 태그 집합은 누적됩니다. 즉, 도메인 수준에서 설정된 태그가 사용자 수준에서 설정된 태그와 결합됩니다.

보낸 사람 기반의 변환 태그는 MTA 옵션 LDAP_SOURCE_CONVERSION_TAGLDAP_DOMAIN_ATTR_SOURCE_CONVERSION_TAG를 사용하여 설정할 수 있습니다. 이 옵션은 이러한 소스 주소와 연관된 변환 태그에 대해 각각 사용자 및 도메인 수준 LDAP 속성을 지정합니다. 이러한 옵션에는 기본 속성이 없습니다.

변환 채널 출력 옵션 사용

변환 채널 출력 옵션(표 13–4)은 변환 스크립트에서 변환 채널로 정보 및 특수 지시문을 전달하는 데 사용되는 동적 변수입니다. 예를 들어, 본문 부분을 처리하는 동안 스크립트가 메일을 바운스하고 메일에 바이러스가 있다는 오류 텍스트를 반환되는 메일에 추가하도록 요청하는 특수 지시문을 보낼 수 있습니다.

원하는 변환 항목에 OVERRIDE-OPTION-FILE=1을 설정하여 출력 옵션을 시작합니다. 그러면 출력 옵션이 필요에 따라 스크립트에서 설정되고 환경 변수 파일 OUTPUT_OPTIONS에 저장됩니다. 스크립트가 본문 부분 처리를 완료하면 변환 채널이 OUTPUT_OPTIONS 파일에서 옵션을 읽습니다.

OUTPUT_OPTION 변수는 변환 채널이 옵션을 읽는 파일의 이름입니다. 일반적으로 이 파일을 즉석에서 만들어지는 임시 파일로 사용하여 정보를 전달합니다. 아래 예는 출력 옵션을 사용하여 바이러스 메일을 보낸 사람에게 오류 메시지를 반환하는 스크립트입니다.


/usr/local/bin/viro_screen2k $INPUT_FILE   # run the virus screener

if [ $? -eq 1 ]; then
   echo "OUTPUT_DIAGNOSTIC=’Virus found and deleted.’" > $OUTPUT_OPTIONS
   echo "STATUS=178029946" >> $OUTPUT_OPTIONS
else
   cp $INPUT_FILE $OUTPUT_FILE # Message part is OK
fi

            

이 예에서는 시스템 진단 메일과 상태 코드를 $OUTPUT_OPTIONS에 정의된 파일에 추가합니다. $OUTPUT_OPTIONS 임시 파일에는 다음과 비슷한 내용이 표시됩니다.


OUTPUT_DIAGNOSTIC="Virus found and deleted."
STATUS=178029946

OUTPUT_DIAGNOSTIC='Virus found and deleted’ 행은 메일에 Virus found and deleted 텍스트를 추가하도록 변환 채널에 지시합니다.

178029946msg_svr_base/include/deprecated/pmdf_err.h에 있는 각 pmdf_err.h 파일의 PMDF__FORCERETURN 상태입니다. 이 상태 코드는 메일을 보낸 사람에게 다시 바운스하도록 변환 채널에 지시합니다. 특수 지시문 사용에 대한 자세한 내용은 변환 채널 출력을 사용하여 메일 바운스, 삭제 또는 보관을 참조하십시오.

다음은 전체 출력 옵션 목록입니다.

표 13–4 변환 채널 출력 옵션

옵션 

설명 

OUTPUT_TYPE

출력 메일 부분의 MIME 내용 유형입니다. 

OUTPUT_SUBTYPE

출력 메일 부분의 MIME 내용 하위 유형입니다. 

OUTPUT_DESCRIPTION

출력 메일 부분의 MIME 내용 설명입니다. 

OUTPUT_DIAGNOSTIC

메일이 변환 채널에 의해 강제로 바운스될 경우 보낸 사람에게 전달되는 메일의 일부로 포함되는 텍스트입니다. 

OUTPUT_DISPOSITION

출력 메일 부분의 MIME content-disposition입니다.

OUTPUT_ENCODING

출력 메일 부분에 사용할 MIME 내용 전송 encoding입니다.

OUTPUT_MODE

변환 채널에서 출력 메일 부분을 쓸 때 사용하는 MIME Mode 즉, 수신자가 출력 메일 부분을 읽을 때 사용하는 모드입니다.

STATUS

변환기의 종료 상태입니다. 일반적으로 변환 채널에서 일부 작업을 시작하는 특수 지시문입니다. 전체 지시문 목록은 msg_svr_base/include/deprecated/pmdf_err.h를 참조하십시오.

포함된 MESSAGE/RFC822 부분의 헤더

메일 부분에서 변환을 수행할 때 변환 채널은 포함된 MESSAGE/RFC822 부분의 헤더에 액세스합니다. 포함된 MESSAGE/RFC822 부분이 없는 경우 메일 헤더에 액세스합니다. 헤더의 정보는 사이트에서 제공하는 프로그램에 유용할 수 있습니다.

ORIGINAL-HEADER-FILE=1이 있는 항목을 선택하면 포함된 MESSAGE/RFC822 부분의 모든 원본 헤더 행이 ORIGINAL_HEADERS 환경 변수에 표시된 파일에 기록됩니다. OVERRIDE-HEADER-FILE=1인 경우 변환 채널은 ORIGINAL_HEADERS 환경 변수에 표시된 파일의 내용을 읽어 해당 포함 부분의 헤더로 사용합니다.

변환 항목에서 매핑 테이블 호출

out-parameter-* 값은 이름이 중복 지정된 매핑 테이블에서 저장 및 검색될 수 있습니다. 이 기능은 첨부 파일이 postscript, msword, text인지 여부에 관계 없이 att.dat와 같은 일반적인 이름을 사용하여 모든 첨부 파일을 보내는 클라이언트가 첨부 파일의 이름을 변경하여 보낼 때 유용합니다. 이 방법은 다른 클라이언트(예: Outlook)가 확장명을 읽어 해당 부분을 열 수 있도록 이 부분의 레이블을 다시 지정하는 일반적인 방법입니다.

매핑 테이블에서 매개 변수 값을 검색하는 구문은 다음과 같습니다.

”mapping-table-name:mapping-input[$Y, $N]’

$Y는 매개 변수 값을 반환합니다. 일치하는 내용이 없거나 $N이 반환될 경우 변환 파일 항목의 해당 매개 변수가 무시되거나 빈 문자열로 처리됩니다. 일치 항목이 부족하거나 $N이 반환될 경우에는 변환 항목이 중지되지 않습니다.

다음 매핑 테이블을 참조하십시오.


X-ATT-NAMES

   postscript       temp.PS$Y
   wordperfect5.1   temp.WPC$Y
   msword           temp.DOC$Y

위 매핑 테이블에서 첨부 파일에 있는 특정 파일 이름을 일반 파일 이름으로 대체하면 변환 항목이 다음과 같이 표시됩니다.

out-chan=tcp_local; in-type=application; in-subtype=*; 
   in-parameter-name-0=name; in-parameter-value-0=*; 
   out-type=application; out-subtype=’INPUT-SUBTYPE’; 
   out-parameter-name-0=name; 
   out-parameter-value-0=”’X-ATT-NAMES:\\’INPUT_SUBTYPE\\''"; 
   command="cp  ”INPUT_FILE’  ”OUTPUT_FILE’"

위 예에서 out-chan=tcp_local; in-type=application; in-subtype=*application/*(*는 하위 유형의 수행 작업을 지정함)의 content-type 헤더를 사용하여 tcp_local 채널에서 처리할 메일을 가져오도록 지정합니다.

in-parameter-name-0=name; in-parameter-value-0=*는 메일에 name=* 매개 변수 유형(*는 매개 변수 값의 수행 작업을 지정함)이 있어야 함을 )

out-type=application;은 사후 처리 메일의 MIME Content-type 매개 변수가 application임을 지정합니다.

out-subtype=’INPUT-SUBTYPE’;은 사후 처리 본문 부분의 MIME subtype 매개 변수가 입력 subtype의 원본 값인 INPUT-SUBTYPE 환경 변수임을 지정합니다. 따라서

Content-type: application/xxxx; name=foo.doc

위 항목을 아래와 같이 변경하려면

Content-type: application/msword; name=foo.doc

다음을 사용합니다.

out-type=application; out-subtype=msword

out-parameter-name-0=name;은 출력 본문 부분의 첫 번째 MIME Content-type 매개 변수가 name= 유형임을 지정합니다.

out-parameter-value-0=’X-ATT-NAMES:\\’INPUT_SUBTYPE\\’’;은 첫 번째 MIME subtype 매개 변수 값을 사용하여 X-ATT-NAMES 매핑 테이블에서 subtype 일치 항목을 검색하도록 지시합니다. 일치 항목이 발견되면 name 매개 변수는 X-ATT-NAMES 매핑 테이블에 지정된 새 값을 받습니다. 따라서, 매개 변수가 msword 유형인 경우 name 매개 변수는 temp.DOC가 됩니다.