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

13장 미리 정의된 채널 사용

Messaging Server를 처음 설치하면 여러 채널이 미리 정의되어 있습니다(표 13–1 참조). 이 장에서는 MTA에서 미리 정의된 채널 정의를 사용하는 방법에 대해 설명합니다.

10 장, MTA 서비스 및 구성 정보를 아직 읽지 않은 경우 이 장을 읽기 전에 8장을 읽어 보십시오. imta.cnf 파일의 다시 쓰기 규칙 구성에 대한 자세한 내용은 11 장, 다시 쓰기 규칙 구성을 참조하십시오.

이 장은 다음 내용으로 구성되어 있습니다.

defaults 채널에 대해서는 채널 기본값 구성에 설명되어 있습니다.

미리 정의된 채널

아래 표에서는 미리 정의된 채널 중 일부를 보여 줍니다.

표 13–1 미리 정의된 채널

채널 

정의 

defaults

여러 채널의 기본값이 되는 키워드를 지정하는 데 사용됩니다. 채널 기본값 구성을 참조하십시오.

l

UNIX 전용입니다. 라우팅 결정을 내리고 UNIX 메일 도구를 사용하여 메일을 전송하는 데 사용됩니다. 

ims-ms

로컬 저장소에 메일을 전달합니다. 

native

UNIX 전용입니다.메일을 /var/mail에 전달합니다. Messaging Server는 /var/mail 액세스를 지원하지 않습니다. 사용자가 UNIX 도구를 사용하여 /var/mail 저장소에서 메일을 액세스해야 )

pipe

사이트에서 제공하는 프로그램 또는 스크립트를 통해 전달을 수행하는 데 사용됩니다. pipe 채널에서 실행되는 명령은 imsimta 프로그램 인터페이스를 통해 관리자가 제어합니다.  

reprocessprocess

이러한 채널은 지연된 오프라인 메일을 처리하는 데 사용됩니다. reprocess 채널은 일반적으로 소스 또는 대상 채널로 표시되지 않고 process 채널은 다른 MTA 채널과 마찬가지로 표시됩니다.

defragment

MIME 조각화된 메일을 다시 어셈블할 수 있습니다. 

conversion

MTA를 통해 주고 받는 메일에 대해 본문 부분 단위 변환을 수행합니다. 

bitbucket

삭제해야 하는 메일에 사용됩니다. 

inactive/deleted

디렉토리에 비활성/삭제됨으로 표시된 사용자의 메일을 처리하는 데 사용됩니다. 일반적으로 메일을 바운스하고 메일을 보낸 사람에게 사용자 정의 바운스 메일을 반환합니다. 

hold

사용자의 메일을 보관하는 데 사용됩니다. 예를 들어, 사용자가 한 메일 서버에서 다른 메일 서버로 마이그레이션하는 경우에 이러한 사용자의 메일을 보관합니다. 

sms

SMS 게이트웨이에 단방향 전자 메일 지원을 제공합니다.  


tcp_local
tcp_intranet
tcp_auth
tcp_submit
tcp_tas

TCP/IP를 통해 SMTP를 구현합니다. 다중 스레드 TCP SMTP 채널은 디스패처의 제어에 따라 실행되는 다중 스레드 SMTP 서버를 포함합니다. 보내는 SMTP 메일은 tcp_smtp_client 채널 프로그램에서 처리되고 필요한 경우 Job Controller의 제어에 따라 실행됩니다. 

tcp_local은 원격 SMTP 호스트로부터 인바운드 메일을 받습니다. 스마트 호스트/방화벽 구성을 사용하는지 여부에 따라 아웃바운드 메일을 원격 SMTP에 직접 보내거나 스마트 호스트/방화벽 시스템으로 보냅니다.

tcp_intranet은 인트라넷에서 메일을 보내고 받습니다.

tcp_auth는 tcp_local에 대한 전환 채널로 사용되며 인증된 사용자를 tcp_auth 채널로 전환하여 릴레이 차단 제한을 방지합니다.

tcp_submit은 예약된 제출 포트 587에서 메일 제출(일반적으로 사용자 에이전트로부터)을 허용합니다(RFC 2476 참조).

tcp_tas는 사이트에서 통합 메시징을 수행하는 데 사용되는 특수 채널입니다.

파이프 채널을 사용하여 메일을 프로그램에 전달

받는 메일이 메일함 대신 프로그램에 전달되게 할 수 있습니다. 예를 들어, 사용자는 받는 메일을 메일 정렬 프로그램으로 보내기를 원할 수 있습니다. pipe 채널은 사이트에서 제공하는 사용자 단위 프로그램을 사용하여 메일 전달을 수행합니다.

프로그램 전달을 쉽게 수행하려면 pipe 채널에서 호출 가능하도록 먼저 프로그램을 등록해야 합니다. imsimta program 유틸리티를 사용하여 등록합니다. 이 유틸리티는 pipe 채널에서 호출 가능하도록 등록하는 각 명령에 고유한 이름을 제공합니다. 그런 다음 최종 사용자는 메소드 이름을 해당 mailprogramdeliveryinfo LDAP 속성 값으로 지정할 수 있습니다.

예를 들어, UNIX 명령 myprocmail을 사용자가 호출할 수 있는 프로그램으로 등록하려면 먼저 다음 예에 표시된 것처럼 imsimta program 유틸리티를 사용하여 명령을 등록합니다. 이 예에서는 -d username 인수를 사용하여 procmail 프로그램을 실행하고 사용자로 실행되는 myprocmail이라는 프로그램을 등록합니다.

imsimta program -a -m myprocmail -p procmail -g "-d %s" -e user

programs 디렉토리인 msg_svr_base/data/site-programs에 실행 파일이 존재하는지 확인합니다. 또한 실행 권한이 “others”로 설정되었는지도 확인합니다.

사용자가 프로그램에 액세스하려면 해당 사용자의 LDAP 항목에 다음 속성과 값이 포함되어 있어야 합니다.

maildeliveryoption: program 
mailprogramdeliveryinfo: myprocmail

imsimta program 유틸리티에 대한 자세한 내용은 Sun Java System Messaging Server 6 2005Q4 Administration Reference를 참조하십시오.

대체 전달 프로그램은 다음 종료 코드 및 명령줄 인수 제한을 준수해야 합니다.

종료 코드 제한. pipe 채널에서 호출되는 전달 프로그램은 메일을 대기열에서 제외할지, 나중에 처리하도록 전달할지 또는 메일을 반환할지 여부를 채널이 알 수 있도록 의미 있는 오류 코드를 반환해야 합니다.

하위 프로세스가 종료 코드 0(EX_OK)으로 끝나는 경우 해당 메일이 성공적으로 전달되고 MTA 대기열에서 제거되는 것으로 간주합니다. 하위 프로세스가 종료 코드 71, 74, 75 또는 79(EX_OSERR, EX_IOERR, EX_TEMPFAIL 또는 EX_DB)로 끝나는 경우 일시적인 오류가 발생하여 메일 전달이 지연되는 것으로 간주합니다. 다른 종료 코드가 반환되는 경우 해당 메일은 메일 발송자에게 전달 불가능 메일로 반환됩니다. 이러한 종료 코드는 sysexits.h 시스템 헤더 파일에 정의됩니다.

명령줄 인수. 전달 프로그램은 변수 인수 %s뿐 아니라 고정 인수를 가질 수 있습니다. 이를 사용하여 사용자가 실행한 프로그램의 아이디를 나타내거나 포스트마스터인 “inetmail”이 실행하는 프로그램의 아이디+도메인을 나타낼 수 있습니다. 예를 들어, 다음 명령줄은 procmail 프로그램을 사용하여 수신자의 메일을 전달합니다.

/usr/lib/procmail -d %s

원시(/var/mail) 채널 구성

옵션 파일을 사용하여 원시 채널의 다양한 특성을 제어할 수 있습니다. 이 원시 채널 옵션 파일은 MTA 구성 디렉토리에 저장하고 native_option(예: msg_svr_base/config/native_option)으로 이름을 지정해야 합니다.

옵션 파일은 여러 행으로 구성됩니다. 각 행에는 하나의 옵션에 대한 설정값이 포함되어 있습니다. 옵션의 형식은 다음과 같습니다.

option=value

value는 옵션의 요구 사항에 따라 문자열 또는 정수일 수 있습니다.

표 13–2 로컬 채널 옵션

옵션 

설명 

FORCE_CONTENT_LENGTH

(0 또는 1, UNIX 전용) 

FORCE_CONTENT_LENGTH=1이면 MTA는 원시 채널에 전달된 메일에 Content-length: 헤더 행을 추가하여 “From”이 행의 시작 부분에 있을 경우 채널에서 “>From” 구문을 사용하지 않게 합니다. 그렇게 하면 로컬 UNIX 메일이 Sun의 최신 메일 도구와 호환되지만 다른 UNIX 메일 도구와는 호환되지 않을 수 있습니다.

FORWARD_FORMAT(문자열)

사용자의 .forward 파일 위치를 지정합니다. %u 문자열은 각 사용자 아이디에서 대체됨을 나타내고, %h 문자열은 각 사용자의 홈 디렉토리에서 대체됨을 나타냅니다. 이 옵션을 명확하게 지정하지 않을 경우 기본 동작은 다음과 같습니다.

FORWARD_FORMAT=%h/.forward


REPEAT_COUNT (integer)
SLEEP_TIME (integer)

MTA가 새 메일을 전달하려고 시도할 때 다른 프로세스에 의해 사용자의 새 메일 파일이 잠긴 경우 이러한 옵션을 사용하여 원시 채널 프로그램이 수행하는 시도 횟수와 빈도를 제어할 수 있습니다. 지정된 횟수만큼의 시도 후에도 파일을 열 수 없는 경우 메일을 원시 대기열에 그대로 두고 해당 원시 채널이 다음에 실행될 때 새 메일을 다시 전달하려고 시도합니다. 

REPEAT_COUNT 옵션은 채널 프로그램이 메일 파일을 열기 위해 시도하는 횟수를 제어합니다. REPEAT_COUNT 기본값은 30(30회 시도)입니다.

SLEEP_TIME 옵션은 채널 프로그램이 시도 간에 대기하는 시간(초)을 제어합니다. SLEEP_TIME 기본값은 2(시도 간격: 2초)입니다.

SHELL_TIMEOUT(정수)

.forward의 사용자 쉘 명령이 완료될 때까지 채널이 대기하는 시간(초)을 제어합니다. 그런 시간 초과가 발생하면 “Time-out waiting for user’s shell command command to complete.”와 비슷한 오류 메시지와 함께 원래의 보낸 사람에게 메일이 반환됩니다. 기본값은 600(10분)입니다.

SHELL_TMPDIR(디렉토리별)

로컬 채널에서 쉘 명령에 전달할 때 임시 파일을 만드는 위치를 제어합니다. 기본적으로 그런 임시 파일은 사용자의 홈 디렉토리에 만들어집니다. 관리자는 이 옵션을 사용하여 임시 파일을 다른(단일) 디렉토리에 만들도록 선택할 수 있습니다. 예를 들면 다음과 같습니다. 

SHELL_TMPDIR=/tmp

보관 채널을 사용하여 메일을 일시적으로 보관

보관 채널은 새 메일 받기가 일시적으로 금지된 수신자의 메일을 보관하는 데 사용됩니다. 사용자의 이름이 변경되었거나 메일함이 다른 메일 호스트 또는 도메인으로 이동된 경우에 메일을 보관할 수 있습니다. 다른 이유로 메일을 일시적으로 보관할 수도 있습니다.

메일을 보관할 경우 메일을 재처리 채널로 이동하는 데 사용되는 것과 동일한 기법으로 메일을 msg_svr_base/queue/hold 디렉토리의 보관 채널로 이동합니다. 그렇게 해도 봉투의 To: 주소는 변경되지 않습니다. 메일은 msg-server/queue/hold 디렉토리의 보관 채널 대기열에 ZZxxx.HELD 파일로 작성됩니다. 이렇게 하면 메일이 Job Controller에 의해 표시되지 않고 “보관”됩니다. .HELD 파일의 목록을 보려면 imsimta qm dir -held 명령을 사용합니다. 이러한 메일을 선택한 다음 imsimta qm release 명령을 사용하여 해제할 수 있습니다. 메일을 해제하면 메일 이름이 ZZxxx.00으로 변경되고 Job Controller에 알립니다. 그러면 보관 채널과 연결된 마스터 프로그램 reprocess.exe에서 해당 메일을 처리합니다. 일반적인 다시 쓰기 방법을 사용하여 메일 및 To: 주소를 처리합니다.

imsimta qm 명령에 대한 자세한 내용은 Sun Java System Messaging Server 6 2005Q4 Administration Referenceimsimta qm을 참조하십시오.

변환 채널

conversion 채널을 사용하면 MTA를 통과하는 메일 흐름에서 임의의 본문을 본문 부분 단위로 처리할 수 있습니다. 본문 부분은 메일과 다릅니다. 예를 들어, 메일은 한 첨부 파일에 여러 본문 부분을 포함할 수 있습니다. 또한, 본문 부분은 MIME 헤더에서 지정하고 설명합니다.이 프로세스는 사이트에서 제공하는 프로그램이나 명령 프로시저에 의해 수행될 수 있으며 텍스트 또는 이미지를 다른 형식으로 변환, 바이러스 스캔, 언어 변환 등과 같은 작업을 수행할 수 있습니다. 변환할 다양한 메일 유형의 MTA 트래픽을 선택한 다음 각 유형의 메일 본문 부분에 대해 특정 프로세스 및 프로그램을 지정할 수 있습니다.

이 장을 학습하려면 채널 개념을 잘 알고 있어야 합니다( 채널 참조). conversion 채널을 사용한 바이러스 스캔과 관련한 자세한 내용은 Messaging Server Documentation 웹 사이트(http://docs.sun.com/db/coll/S1_MsgTechNotes)의 아래쪽에 있는 현재 버전의 Messaging Server Technical Notes를 참조하십시오.

변환 채널 구현은 A) 처리할 메일 트래픽 선택 및 B) 메일 처리 방법 지정으로 구성됩니다. 이러한 절차에 대해서는 나중에 자세히 설명합니다.


주 –

기본 변환 채널은 MTA 구성 파일(imta.cnf)에 자동으로 만들어집니다. 이 채널을 그대로 사용할 수 있으므로 수정할 필요가 없습니다.


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

MIME 개요

변환 채널을 사용하면 MIME(Multipurpose Internet Mail Extensions) 헤더 행을 광범위하게 사용할 수 있습니다. 메일 구성 및 MIME 헤더 필드에 대한 지식이 필요합니다. MIME에 대한 자세한 내용은 RFC 1806, 2045 - 2049 및 2183을 참조하십시오. 편의를 위해 여기서는 MIME에 대한 간단한 개요를 제공합니다.

메일 구성

간단한 메일은 헤더와 본문으로 구성됩니다. 헤더는 메일의 맨 위쪽에 있으며 날짜, 제목, 보낸 사람, 수신자 등과 같은 특정 제어 정보가 포함되어 있습니다. 본문은 헤더 뒤의 첫 번째 빈 행 다음의 모든 내용입니다. MIME는 여러 본문 부분 및 본문 부분 내에 중첩된 본문 부분을 포함할 수 있는 보다 복잡한 메일을 구성하는 방법을 지정합니다. 이러한 메일을 다중 부분 메일이라 합니다. 앞에서 설명한 것처럼 변환 채널은 메일을 본문 부분 단위로 처리합니다.

MIME 헤더

MIME 규격은 본문 부분에 대한 헤더 행 집합을 정의합니다. 여기에는 MIME-Version, Content-type, Content-Transfer-Encoding, Content-IDContent-disposition이 포함됩니다. 변환 채널은 Content-typeContent-disposition 헤더를 가장 많이 사용합니다. 다음은 일부 MIME 헤더 행의 예입니다.


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

주 –

MIME 헤더 행은 To:, Subject:, From: 등과 같은 일반적인 비 MINE 헤더 행과 다릅니다. 변환 채널의 경우 MIME 헤더 행은 기본적으로 Content-로 시작합니다.


Content-type 헤더

MIME Content-Type 헤더는 본문 부분의 내용을 설명합니다. Content-Type 헤더 형식의 예를 들면 다음과 같습니다.

Content-type: type/ subtype; parameter1=value; parameter2=value...

type은 본문 부분의 내용 유형을 설명합니다. 유형의 예로는 Text, Multipart, Message, Application, Image, Audio, Video 등이 있습니다.

subtype은 내용 유형을 자세히 설명합니다. 각 Content-type에는 자체 하위 유형 집합이 있습니다. 예를 들어,text/plain, application/octet-stream, image/jpeg 등이 있습니다. MIME 메일에 대한 내용 하위 유형은 IANA(Internet Assigned Numbers Authority)에 의해 지정되고 나열됩니다. 목록 복사본은 http://www.iana.org/assignments/media-types에 있습니다.

parameter는 Content-type/subtype 쌍에 한정됩니다. charsetname 매개 변수의 예를 들면 다음과 같습니다.


Content-type: text/plain; charset=us-ascii
Content-type: application/msword; name=temp.doc

charset 매개 변수는 텍스트 메일의 문자 세트를 지정합니다. name 매개 변수는 데이터를 파일로 작성할 경우 사용할 파일 이름을 제안합니다.


주 –

Content-Type 값, subtypes 및 매개 변수 이름은 대/소문자를 구분합니다.


Content-disposition 헤더

MIME Content-disposition 헤더는 본문 부분에 대한 표시 정보를 제공합니다. 이 헤더를 첨부 파일에 추가하여 첨부 파일의 본문 부분을 표시할지(inline) 복사할 파일 이름으로 표시할지(attachment) 여부를 지정하는 경우도 있습니다. Content-disposition 헤더의 형식은 다음과 같습니다.

Content-disposition: disposition_type; parameter1=value;parameter2=value...

disposition_type은 일반적으로 inline(본문 부분 표시) 또는 attachment(저장할 파일로 표시)입니다. Attachment에는 일반적으로 저장된 파일에 대한 이름을 제안하는 값이 있는 filename 매개 변수가 있습니다.

Content-disposition 헤더에 대한 자세한 내용은 RFC2183을 참조하십시오.

변환 처리를 위한 트래픽 선택

다른 MTA 채널과 달리 변환 채널은 일반적으로 주소 또는 MTA 다시 쓰기 규칙에 지정되어 있지 않습니다. 대신 CONVERSIONS 매핑 테이블(imta_tailor 파일의 IMTA_MAPPING_FILE 매개 변수에 의해 지정됨)을 사용하여 변환 채널에 메일을 보냅니다. 테이블 항목의 형식은 다음과 같습니다.

IN-CHAN=source-channel ;OUT-CHAN=destination-channel;CONVERT Yes/No

MTA는 각 메일을 처리할 때 CONVERSIONS 매핑 테이블(있는 경우)을 검사합니다. source-channel이 메일을 가져온 채널이고 destination-channel이 메일을 받을 채널인 경우 CONVERT 앞의 작업이 수행됩니다. Yes일 경우 MTA는 destination-channel에서 가져온 메일을 변환 채널로 전환합니다. 일치하는 항목이 발견되지 않는 경우 메일이 일반 대상 채널의 대기열에 포함됩니다.


주 –

CONVERSIONS 매핑 테이블에 관계 없이 user@conversion.localhostname 또는 user@conversion 형식 주소가 변환 채널을 통해 라우팅됩니다.


다음 예에서는 모든 외부 메일(인터넷을 통해 주고 받는 메일)을 변환 채널로 라우팅합니다.

CONVERSIONS

   IN-CHAN=tcp_local;OUT-CHAN=*;CONVERT   Yes
   IN-CHAN=*;OUT-CHAN=tcp_local;CONVERT   Yes

첫 번째 행은 tcp_local 채널에서 가져온 메일이 처리됨을 지정합니다. 두 번째 행은 tcp_local 채널로 보낸 메일도 처리됨을 지정합니다. tcp_local 채널은 인터넷을 통해 주고 받는 모든 메일을 처리합니다. 기본값은 변환 채널을 통해 전달하지 않는 것이기 때문에 다른 메일이 변환 채널을 통해 전달되지 않습니다.

이 테이블은 기본적인 테이블이므로 보다 많이 사용자 정의된 구성(예: 다중 outbound-to-the-Internet tcp_* 채널을 사용하거나 다중 inbound-from-the-Internet tcp_* 채널을 사용하는 사이트)이 있는 사이트에는 충분하지 않을 수 있습니다.

변환 처리 제어

메일을 변환 채널로 보내면 본문 부분 단위로 처리됩니다. 처리는 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가 됩니다.

변환 채널 출력을 사용하여 메일 바운스, 삭제 또는 보관

이 절에서는 변환 채널 옵션을 사용하여 메일을 바운스, 삭제 또는 보관하는 방법을 설명합니다. 기본 절차는 다음과 같습니다.

  1. 해당 변환 파일 항목에서 OVERRIDE-OPTION-FILE=1을 설정합니다. 이 설정은 OUTPUT_OPTIONS 파일에서 출력 옵션을 읽도록 변환 채널에 지시합니다.

  2. 변환 스크립트를 사용하여 특정 메일 본문 부분에 필요한 작업을 결정합니다.

  3. 스크립트에서 OUTPUT_OPTIONS 파일에 STATUS=directive_code 옵션을 작성하여 해당 작업에 대한 특수 지시문을 지정합니다.

전체 특수 지시문 목록은 msg_svr_base/include/deprecated/pmdf_err.h를 참조하십시오. 변환 채널에 일반적으로 사용되는 특수 지시문은 다음과 같습니다.

표 13–5 변환 채널에 일반적으로 사용되는 특수 지시문

이름 

16진수 값 

10진수 값 

PMDF__FORCEHOLD

0x0A9C86AA

178030250

PMDF__FORCERETURN

0x0A9C857A

178029946

PMDF__FORCEDELETE

0x0A9C8662

178030178

이러한 지시문의 기능의 예는 다음과 같습니다.

메일 바운스

변환 채널을 사용하여 메일을 바운스하려면 해당 conversions 파일 항목에서 OVERRIDE-OPTION-FILE=1을 설정하고 변환 스크립트에 다음 행을 추가합니다.

echo "STATUS=178029946" >> $OUTPUT_OPTIONS

바운스된 메일에 간단한 텍스트 문자열을 추가하려면 변환 스크립트에 다음 행을 추가합니다.

echo OUTPUT_DIAGNOSTIC=text-string >> $OUTPUT_OPTIONS

여기서 텍스트 문자열은 “The message sent from your machine contained a virus which has been removed. Be careful about executing email attachments.”과 같습니다.

메일 부분 조건부 삭제

메일 부분을 포함된 내용에 따라 조건적으로 삭제하는 것이 좋을 수 있습니다. 조건적 삭제는 출력 옵션을 사용하여 수행할 수 있습니다. 반대로 DELETE=1 변환 매개 변수 절은 메일 부분을 무조건 삭제합니다.

출력 옵션을 사용하여 메일 부분을 삭제하려면 해당 변환 파일 항목에 OVERRIDE-OPTION-FILE=1을 설정하고 변환 스크립트에 다음 행을 추가합니다.

echo "STATUS=178030178" >> $OUTPUT_OPTIONS

메일 보관

메일 부분을 포함된 내용에 따라 조건적으로 보관하는 것이 좋을 수 있습니다. 출력 옵션을 사용하여 메일 부분을 삭제하려면 해당 변환 파일 항목에 OVERRIDE-OPTION-FILE=1을 설정하고 변환 스크립트에 다음 행을 추가합니다.

echo "STATUS=178030250" >> $OUTPUT_OPTIONS

이 행은 변환 채널이 메일을 변환 채널 대기열에 .HELD 파일로 보관해야 하도록 요청합니다.

변환 채널 예

아래 예에 표시된 CONVERSIONS 매핑 및 변환 규칙 세트는 tcp_docuprint 가상 채널로 보낸 GIF, JPEG 및 BITMAP 파일을 PostScript로 자동으로 변환하게 합니다. 이러한 여러 변환에서는 가상 /usr/bin/ps-converter.sh를 사용하여 해당 변환을 수행합니다. WordPerfect 5.1 파일을 Microsoft Word 파일로 변환하는 추가 규칙이 포함되어 있습니다.


CONVERSIONS  

    IN-CHAN=*;OUT-CHAN=tcp_docuprint;CONVERT    Yes

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

out-chan=tcp_docuprint; in-type=image; in-subtype=gif; 
  out-type=application; out-subtype=postscript; out-mode=text; 
  command="/bin/ps-convert -in=gif -out=ps   ’INPUT_FILE’  ’OUTPUT_FILE’"

out-chan=tcp_docuprint; in-type=image; in-subtype=jpeg; 
  out-type=application; out-subtype=postscript; out-mode=text; 
  command="/bin/ps-convert -in=jpeg -out=ps  ’INPUT_FILE’  ’OUTPUT_FILE’"

out-chan=tcp_docuprint; in-type=image; in-subtype=bitmap; 
  out-type=application; out-subtype=postscript; out-mode=text; 
  command="/bin/ps-convert -in=bmp -out=ps   ’INPUT_FILE’  ’OUTPUT_FILE’"

변환 매개 변수는 다음과 같습니다.

표 13–6 변환 매개 변수

매개 변수 

설명 

매개 변수 규정(변환하기 전에 메일이 일치해야 하는 매개 변수 지정))

OUT-CHAN,OUT-CHANNEL

변환을 위해 일치시킬 출력 채널(와일드카드 허용)입니다. 메일이 해당 채널의 대상으로 지정된 경우에만 이 항목에 지정된 변환이 수행됩니다.  

IN-CHAN,IN-CHANNEL

변환을 위해 일치시킬 입력 채널(와일드카드 허용)입니다. 지정된 채널에서 메일이 전달된 경우에만 이 항목에 지정된 변환이 수행됩니다.  

IN-TYPE

변환을 위해 일치시킬 입력 MIME 유형(와일드카드 허용)입니다. 이 필드가 본문 부분의 MIME 유형과 일치하는 경우에만 지정된 변환이 수행됩니다.  

IN-SUBTYPE

변환을 위해 일치시킬 입력 MIME 하위 유형(와일드카드 허용)입니다. 이 필드가 본문 부분의 MIME 하위 유형과 일치하는 경우에만 이 항목에 지정된 변환이 수행됩니다. 

IN-PARAMETER-NAME-n

변환을 위해 일치해야 하는 입력 MIME Content-Type 매개 변수 이름입니다(n = 0, 1, 2...). 이 매개 변수를 IN-PARAMETER-VALUE-n과 함께 사용하여 이름 및 보유한 값을 기준으로 매개 변수를 명확하게 식별할 수 있습니다.

IN-PARAMETER-VALUE-n

변환을 위해 일치해야 하는 해당 IN-PARAMETER-NAME의 입력 MIME Content-Type 매개 변수 값입니다. 이 필드가 본문 부분의 Content-Type 매개 변수 목록에 있는 해당 매개 변수와 일치하는 경우에만 이 항목에 지정된 변환이 수행됩니다. 와일드카드가 허용됩니다.

IN-PARAMETER-DEFAULT-n

매개 변수가 없는 경우 입력 MIME Content-Type 매개 변수의 기본값입니다. 이 값은 해당 매개 변수가 본문 부분에 지정되어 있지 않은 경우 IN-PARAMETER-VALUE-n 테스트를 위한 기본값으로 사용됩니다.

IN-DISPOSITION

변환을 위해 일치시킬 입력 MIME Content-Disposition입니다.

IN-DPARAMETER-NAME-n

변환을 위해 일치해야 하는 입력 MIME Content-Disposition 매개 변수 이름입니다(n = 0, 1, 2...). 이 매개 변수를 IN-DPARAMETER-VALUE-n과 함께 사용하여 이름 및 보유한 값을 기준으로 매개 변수를 명확하게 식별할 수 있습니다.

IN-DPARAMETER-VALUE-n

변환을 위해 일치해야 하는 해당 IN-DPARAMETER-NAME의 입력 MIME Content-Disposition 매개 변수 값입니다. 이 필드가 본문 부분의 Content-Disposition: 매개 변수 목록에 있는 해당 매개 변수와 일치하는 경우에만 이 항목에 지정된 변환이 수행됩니다. 와일드카드가 허용됩니다.

IN-DPARAMETER-DEFAULT-n

매개 변수가 없는 경우의 입력 MIME Content-Disposition 매개 변수의 기본값입니다. 이 값은 해당 매개 변수가 본문 부분에 지정되어 있지 않은 경우 IN-DPARAMETER-VALUE-n 테스트를 위한 기본값으로 사용됩니다.

IN-DESCRIPTION

변환을 위해 일치시킬 입력 MIME Content-Description입니다.

IN-SUBJECT

포함 MESSAGE/RFC822 부분에서 가져온 입력 Subject입니다.

TAG

메일 목록 CONVERSION_TAG 매개 변수에 의해 설정되는 입력 태그입니다.

출력 매개 변수(본문 부분의 변환 후 출력 설정 지정))

OUT-TYPE

입력 유형과 다를 경우의 출력 MIME 유형입니다. 

OUT-SUBTYPE

입력 하위 유형과 다를 경우의 출력 MIME 하위 유형입니다. 

OUT-PARAMETER-NAME-n

출력 MIME Content-Type 매개 변수 이름입니다(n = 0, 1, 2...).

OUT-PARAMETER-VALUE-n

OUT-PARAMETER-NAME-n에 해당하는 출력 MIME Content-Type 매개 변수 값입니다.

PARAMETER-COPY-n

입력 본문 부분의 Content-Type 매개 변수 목록에서 출력 본문 부분의 Content-Type: 매개 변수 목록에 복사할 Content-Type 매개 변수 목록입니다(n=0, 1, 2...). IN-PARAMETER-NAME-n 절과 일치할 경우 동일한 MIME 매개 변수 이름을 사용하여 복사합니다.

OUT-DISPOSITION

입력 MIME Content-Disposition과 다를 경우의 출력 MIME Content-Disposition입니다.

OUT-DPARAMETER-NAME-n

출력 MIME Content-Disposition 매개 변수 이름입니다( n=0, 1, 2...).

OUT-DPARAMETER-VALUE-n

OUT-DPARAMETER-NAME-n에 해당하는 출력 MIME Content-Disposition 매개 변수 값입니다.

DPARAMETER-COPY-n

입력 본문 부분의 Content-Disposition: 매개 변수 목록에서 출력 본문 부분의 Content-Disposition: 매개 변수 목록에 복사할 Content-Disposition: 매개 변수 목록입니다(n = 0, 1, 2,...). IN-PARAMETER-NAME-n 절과 일치할 경우 MIME 매개 변수 이름을 인수로 사용하여 복사합니다. 와일드카드를 인수로 사용할 수 있습니다. 특히 * 인수는 모든 원본 Content-Disposition: 매개 변수를 복사함을 의미합니다.

OUT-DESCRIPTION

입력 MIME Content-Description과 다를 경우의 출력 MIME Content-Description입니다.

OUT-MODE

변환된 파일을 읽고 저장하는 데 사용하는 모드입니다. BLOCK(이진 및 실행 파일) 또는 TEXT여야 합니다.

OUT-ENCODING

메일을 다시 어셈블할 때 변환된 파일에 적용할 인코딩입니다. 

작업 매개 변수(메일 부분에서 수행할 작업 지정))

COMMAND

변환을 수행하기 위해 실행할 명령입니다. 변환을 수행하기 위해 실행할 명령입니다. 이 매개 변수는 필수입니다. 명령을 지정하지 않으면 항목이 무시됩니다. \ 대신 /를 사용하여 경로를 지정합니다(예: command="D:/tmp/mybat.bat").

DELETE

0 또는 1입니다. 이 플래그를 설정하면 메일 부분이 삭제됩니다. 이 부분이 메일의 유일한 부분인 경우 빈 단일 텍스트 부분이 대체됩니다. 

RELABEL

RELABEL=1인 경우 MIME 레이블을 출력 매개 변수에 지정된 레이블로 다시 지정합니다. Relabel=0인 경우에는 레이블을 다시 지정하지 않습니다. 일반적으로 레이블 다시 지정은 레이블이 잘못 지정된 부분에서 수행됩니다. 예를 들어,Content-type: application/octet-stream에서 Content-type: application/msword로 레이블을 다시 지정합니다. 그렇게 하면 해당 부분을 파일로 저장하여 프로그램에서 열 필요 없이 해당 부분을 “두 번 눌러” 열 수 있습니다.

SERVICE-COMMAND

SERVICE-COMMAND=command는 전체 MIME 메일(MIME 헤더 및 내용 본문 부분)에 적용할 사이트에서 제공하는 절차를 실행합니다. 다른 CHARSET-CONVERSION 작업 또는 변환 채널 작업과 달리 service-command는 MIME 디스어셈블리, 디코딩, 재인코딩 및 리어셈블리를 자체적으로 수행합니다. 이 플래그는 변환 채널을 처리하는 동안 항목이 무시되게 합니다. SERVICE-COMMAND 항목은 문자 세트 변환 처리 중에 대신 수행됩니다. \ 대신 /를 사용하여 경로를 지정합니다(예: command="D:/tmp/mybat.bat").

정보 전달 매개 변수(사이트에서 제공하는 프로그램을 통해 정보를 전달하는 데 사용됨))

DPARAMETER-SYMBOL-n

Content-disposition 매개 변수 값(있는 경우)이 저장되는 환경 변수입니다(n = 0, 1, 2,...). 각 DPARAMETER-SYMBOL-nContent-Disposition: 매개 변수 목록에서 순서대로(n=0이 첫 번째 매개 변수, n=2가 두 번째 매개 변수 등) 추출되어 사이트에서 제공하는 프로그램을 실행하기 전에 지정된 환경 변수에 저장됩니다.

PARAMETER-SYMBOL-n

Content-disposition 매개 변수 값(있는 경우)이 저장되는 환경 변수입니다(n = 0, 1, 2...). 각 PARAMETER-SYMBOL-nContent-Type: 매개 변수 목록에서 순서대로(n=0이 첫 번째 매개 변수, n=2가 두 번째 매개 변수, 등) 추출되어 사이트에서 제공하는 프로그램을 실행하기 전에 동일한 이름의 환경 변수에 저장됩니다. IN-PARAMETER-NAME-n 절과 일치할 경우 MIME 매개 변수를 변환할 변수 이름을 인수로 사용합니다.

MESSAGE-HEADER-FILE

메일 원본 헤더의 모두 또는 일부를 MESSAGE_HEADERS 환경 변수에서 지정한 파일에 쓰거나 전혀 쓰지 않습니다. 이 값을 1로 설정하면 포함된 본문 부분의 원본 헤더를 MESSAGE_HEADERS 환경 변수에서 지정한 파일에 씁니다. 이 값을 2로 설정하면 메일 원본 헤더(가장 바깥에 있는 메일 헤더) 전체를 해당 파일에 씁니다.

ORIGINAL-HEADER-FILE

0 또는 1입니다. 이 값을 1로 설정하면 포함된 MESSAGE/RFC822 부분(본문 부분이 아님)의 원본 헤더를 ORIGINAL_HEADERS 환경 변수에 표시된 파일에 씁니다.

OVERRIDE-HEADER-FILE

0 또는 1입니다. 이 값을 1로 설정하는 경우 변환 채널은 포함된 MIME 부분의 원본 헤더 행을 무시하고 OUTPUT_HEADERS 환경 변수에서 MIME 헤더 행을 읽습니다.

OVERRIDE-OPTION-FILE

OVERRIDE-OPTION-FILE=1인 경우 변환 채널은 OUTPUT_OPTIONS 환경 변수에서 옵션을 읽습니다.

PART-NUMBER

점으로 구분된 정수(a. b. c...)입니다. MIME 본문 부분의 부품 번호입니다.

아랍어 문자 세트 자동 감지

아랍어 문자 세트를 자동으로 감지하기 위한 새로운 auto_ef 프로그램이 추가되었습니다.

변환 채널에서 auto_ef 프로그램을 호출하여 레이블링되지 않았거나 잘못 레이블링된 아랍어 문자 세트의 텍스트 메일을 대부분 자동으로 감지하고 레이블링할 수 있습니다. 이러한 레이블링되지 않았거나 잘못 레이블링된 메일은 일반적으로 Yahoo나 Hotmail에서 아랍어로 보낸 메일입니다.

문자 세트 레이블링을 제대로 하지 못하면 많은 메일 클라이언트에서 메일을 올바로 표시하지 못합니다.

메일에 MIME 내용 유형 헤더가 있으면 auto_ef 프로그램은 텍스트/일반 내용 유형의 헤더만 검사하고 처리합니다. 메일이 MIME 내용 유형 헤더로 레이블링되어 있지 않은 경우에는 auto_ef는 텍스트/일반 내용 유형을 무조건 추가합니다.

이 프로그램을 활성화하거나 사용 가능하도록 설정하려면 다음을 수행해야 합니다.

Procedure아랍어 문자 세트 자동 감지 방법

단계
  1. msg_svr_base/config 디렉토리에 있는 매핑 파일을 편집하여 선택에 따라 소스 및 대상 채널에 대해 변환 채널을 활성화합니다. 인터넷에서 로컬 사용자에게 오는 모든 메일에 대해 변환 채널을 활성화하려면 매핑 파일에 다음과 유사한 섹션을 추가합니다.

    CONVERSIONS
    
       IN-CHAN=tcp*;OUT-CHAN=ims-ms;CONVERT YES

    INOUT 채널은 구성에 따라 다릅니다. 릴레이 MTA에 배포하려면 해당 구성에 맞게 채널을 수정해야 합니다. 예를 들면 다음과 같습니다.

    IN-CHAN=tcp*;OUT-CHAN=tcp*;CONVERT YES

    또는 다음과 같이 모든 채널에 대해 설정할 수 있습니다.

    IN-CHAN=*;OUT-CHAN=*;CONVERT YES

  2. Messaging Server 사용자가 소유하고 읽을 수 있는 msg_svr_base/config 디렉토리에 다음 내용을 포함하는 변환 파일을 만듭니다.

    !
    in-channel=*; out-channel=*;
      in-type=text; in-subtype=*;
      parameter-copy-0=*; dparameter-copy-0=*;
      original-header-file=1; override-header-file=1;
      command="msg_svr_base
    /lib/arabicdetect.sh"
    !
    
  3. 다음 명령으로 MTA 구성을 컴파일합니다.

    msg_svr_base/sbin/imsimta cnbuild

  4. 다음 명령을 사용하여 다시 시작합니다.

    msg_svr_base /sbin/imsimta restart

문자 세트 변환 및 메일 형식 다시 지정

이 절에서는 MTA에서 내부적으로 수행한 문자 집합과 형식 지정, 레이블 지정의 변환에 대해 설명합니다. 이 절에 나와 있는 예 중 일부는 DEC VMS 같이 오래되었거나 더 이상 사용되지 않는 기술 또는 d 채널을 사용합니다. 이러한 기술이 오래된 것이라 해도 DEC나 d 채널에만 사용되는 예를 제시한 것은 아니며 변환 기술의 작동 방법을 설명하는 데 있어서는 여전히 유효한 예라 할 수 있습니다. 나중에 릴리스에서는 이러한 예를 업데이트할 예정입니다.

Messaging Server의 가장 기본적인 매핑 테이블 중 하나는 문자 세트 변환 테이블입니다. 이 테이블의 이름은 CHARSET-CONVERSION입니다. 이 테이블은 수행할 채널 간 문자 세트 변환 및 메일 형식 다시 지정 종류를 지정하는 데 사용됩니다.

여러 시스템에서는 문자 세트 변환 또는 메일 형식 다시 지정을 수행할 필요가 없으므로 이 테이블이 필요하지 않습니다. 그러나, 문자 변환을 수행해야 하는 상황이 발생할 수 있습니다. 예를 들어 일본어 OpenVMS를 실행하는 사이트는 DEC Kanji와 현재 인터넷에서 사용되는 ISO-2022 Kanji 사이에 변환해야 할 필요가 있습니다. 변환이 사용될 또 다른 경우로서, 다국어 문자가 너무 많이 사용되었기 때문에 DEC 다국어 문자 집합(DEC-MCS)과 MIME에 사용되도록 지정된 ISO-8859-1 문자 집합 사이에 약간의 차이가 발생할 수 있고 이 두 집합 간에 실제 변환이 필요할 수 있습니다.

또한 CHARSET-CONVERSION 매핑 테이블을 사용하여 메일의 형식을 변경할 수도 있습니다. 많은 비 MIME 형식을 MIME 형식으로 변환하는 기능이 제공됩니다. 또한 MIME 인코딩과 구조를 변경할 수 있습니다. 이러한 옵션은 MIME 또는 MIME의 일부 하위 집합만 지원하는 시스템에 메일을 릴레이할 때 사용됩니다. 마지막으로 MIME을 비 MIME 형식으로 변환하는 기능이 제공되는 경우도 가끔씩 있습니다.

MTA는 다음과 같은 두 가지 방법으로 CHARSET-CONVERSION 매핑 테이블을 감시합니다. 첫 번째 감시 방법은 MTA가 메일 형식을 다시 지정해야 하는지 여부를 확인하고 그렇게 해야 할 경우 사용할 형식 지정 옵션을 결정하는 데 사용됩니다. 형식 다시 지정을 지정하지 않으면 MTA는 특정 문자 세트 변환을 확인하지 않습니다. 이 첫 번째 감시 방법에 사용되는 입력 문자열의 형식은 일반적으로 다음과 같습니다.

IN-CHAN=in-channel;OUT-CHAN=out-channel;CONVERT

여기서 in-channel은 소스 채널(메일을 가져온 채널)의 이름이고 out-channel은 대상 채널(메일이 이동하는 채널)의 이름입니다. 일치가 발생할 경우 쉼표로 구분된 키워드 목록이 결과 문자열로 표시됩니다. 키워드는 표 13–7에 나열되어 있습니다.

표 13–7 HARSET-CONVERSION 매핑 테이블 키워드

키워드 

설명 

Always

out-channel로 이동하기 전에 변환 채널을 통해 메일을 전달하더라도 변환을 수행합니다.

Appledouble

다른 MacMIME 형식을 Appledouble 형식으로 변환합니다. 

Applesingle

다른 MacMIME 형식을 Applesingle 형식으로 변환합니다. 

BASE64

MIME 인코딩을 BASE64로 전환합니다. 이 키워드는 이미 인코딩된 메일 부분에만 적용됩니다. Content-transfer-encoding: 7비트 또는 8비트를 가진 메일은 특수한 인코딩이 필요하지 않으므로 이 BASE64 옵션이 아무 영향을 미치지 않습니다. 

Binhex

다른 MacMIME 형식 또는 Macintosh 유형 및 Mac 작성자 정보를 포함하는 부분을 Binhex 형식으로 변환합니다. 

Block

MacMIME 형식 부분에서 데이터 포크만 추출합니다. 

Bottom

메일/rfc822 본문 부분(전달된 메일)을 메일 내용 부분과 헤더로 “결합”합니다. 

Delete

전달된 헤더를 삭제하여 메일/rfc822 본문 부분(전달된 메일)을 메일 내용 부분으로 “결합”합니다. 

Level

메일에서 중복 멀티파트 수준을 제거합니다. 

Macbinary

다른 MacMIME 형식 또는 Macintosh 유형 및 Macintosh 작성자 정보를 포함하는 부분을 Macbinary 형식으로 변환합니다. 

No

변환을 비활성화합니다. 

QUOTED-PRINTABLE

MIME 인코딩을 QUOTED-PRINTABLE로 전환합니다. 

Record,Text

텍스트/일반 부분을 80자에서 줄 바꿈합니다. 

Record,Text= n

텍스트/일반 부분을 n자에서 줄 바꿈합니다. 

RFC1154

메일을 RFC 1154 형식으로 변환합니다. 

Top

메일/rfc822 본문 부분(전달된 메일)을 헤더 부분과 메일 내용 부분으로 “결합”합니다. 

UUENCODE

MIME 인코딩을 X-UUENCODE로 전환합니다. 

Yes

변환을 활성화합니다. 

문자 세트 변환

MTA가 메일 형식을 다시 지정해야 하는지를 감시하여 발견하는 경우 메일의 각 부분을 확인합니다. 텍스트 부분이 있으면 해당 문자 세트 매개 변수를 사용하여 두 번째 감시를 생성합니다. MTA는 변환이 필요하다고 확인된 경우에만 두 번째 감시를 수행합니다. 이 두 번째 감시의 입력 문자열은 다음과 같습니다.

IN-CHAN=in-channel;OUT-CHAN=out-channel;IN-CHARSET=in-char-set

in-channelout-channel은 앞의 예와 동일하고 in-char-set는 문제가 있는 특정 부분과 연결된 문자 세트의 이름입니다. 첫 번째 감시에서 키워드가 일치하여 메일 형식이 다시 지정(예: MIME 구조 변경)되더라도 이 두 번째 감시에서 일치 항목이 발견되지 않으면 문자 세트 변환이 수행되지 않습니다. 일치 항목이 발견될 경우 다음과 같은 형식의 문자열이 생성됩니다.

OUT-CHARSET=out-char-set

여기서 out-char-setin-char-set를 변환해야 하는 문자 세트의 이름을 지정합니다. 이러한 문자 세트는 모두 MTA 테이블 디렉토리에 있는 문자 세트 정의 테이블 charsets.txt에서 정의해야 합니다. 문자 세트를 이 파일에 제대로 정의하지 않으면 변환이 수행되지 않습니다. 이 파일에는 수 백개의 문자 세트가 정의되어 있고 현재 사용 중인 대부분의 문자 세트가 이 파일에 정의되어 있기 때문에 이러한 경우는 흔하지 않습니다. charsets.txt 파일에 대한 자세한 내용은 imsimta chbuild(UNIX 및 NT) 유틸리티 설명을 참조하십시오.

모든 조건이 충족되면 MTA는 문자 세트 매핑을 작성하고 변환을 수행합니다. 변환된 메일 부분의 레이블은 변환된 문자 세트의 이름으로 다시 지정됩니다.

Charset-conversion 매핑이 확장되어 다음과 같은 여러 추가 기능을 제공합니다.


예 13–2 ISO-8859-1과 UTF-8 사이의 변환

로컬로 ISO-8859-1이 사용된다고 할 때, 인터넷에서 사용하기 위해서는 UTF-8로 변환되어야 합니다. 특히, 인터넷 연결이 tcp_local을 통한 것이라고 가정할 때 tcp_internalims-ms는 내부 메시지가 만들어져 전달되는 위치입니다. 아래는 그러한 변환을 일으키는 CHARSET-CONVERSION 표입니다. 각 IN-CHAN 항목은 한 행에 있어야 합니다. 이를 나타내기 위해 역슬래시(\)가 사용됩니다.


CHARSET-CONVERSION

 IN-CHAN=tcp_internal;OUT-CHAN=tcp_local;CONVERT               Yes
 IN-CHAN=tcp_local;OUT-CHAN=tcp_internal;CONVERT               Yes
 IN-CHAN=tcp_local;OUT-CHAN=ims-ms;CONVERT                     Yes
 IN-CHAN=*;OUT-CHAN=*;CONVERT                                  No
 IN-CHAN=tcp_internal;OUT-CHAN=tcp_local;IN-CHARSET=ISO-8859-1 OUT-CHARSET=UTF-8
 IN-CHAN=tcp_local;OUT-CHAN=tcp_internal;IN-CHARSET=UTF-8 OUT-CHARSET=ISO-8859-1
 IN-CHAN=tcp_local;OUT-CHAN=ims-ms;IN-CHARSET=UTF-8       OUT-CHARSET=ISO-8859-1


예 13–3 EUC-JP와 ISO-2022-JP 사이의 변환

아래 CHARSET-CONVERSION 표는 EUC-JP의 로컬 사용과 ISO 2022 기반 JP 코드 사이의 변환을 지정합니다.


CHARSET-CONVERSION

  IN-CHAN=ims-ms;OUT-CHAN=ims-ms;CONVERT                  No
  IN-CHAN=tcp_internal;OUT-CHAN=ims-ms;CONVERT            No
  IN-CHAN=tcp_internal;OUT-CHAN=tcp_internal;CONVERT      No
  IN-CHAN=tcp_internal;OUT-CHAN=*;CONVERT                 Yes
  IN-CHAN=*;OUT-CHAN=ims-ms;CONVERT                       Yes
  IN-CHAN=*;OUT-CHAN=tcp_internal;CONVERT                 Yes
  IN-CHAN=tcp_internal;OUT-CHAN=*;IN-CHARSET=EUC-JP      OUT-CHARSET=ISO-2022-JP
  IN-CHAN=*;OUT-CHAN=ims-ms;IN-CHARSET=ISO-2022-JP        OUT-CHARSET=EUC-JP
  IN-CHAN=*;OUT-CHAN=tcp_internal;IN-CHARSET=ISO-2022-JP  OUT-CHARSET=EUC-JP

메일 형식 다시 지정

위에서 설명한 것처럼 CHARSET-CONVERSION 매핑 테이블은 MIME과 여러 해당 메일 형식 사이에서 첨부 파일을 변환하는 데도 사용됩니다.

다음 절에서는 CHARSET-CONVERSION 매핑 테이블에서 적용할 수 있는 메일 형식 다시 지정의 몇 가지 다른 예를 제공합니다.

비 MIME 이진 첨부 파일 변환

특정 형식의 메일 또는 Microsoft Mail(MSMAIL) SMTP 게이트웨이에서 가져온 메일 등과 같은 특정 비표준(비 MIME) 형식 메일은 메일 처리에 관계된 채널에 대해 CHARSET-CONVERSION을 활성화할 경우 MIME 형식으로 자동으로 변환됩니다. tcp_local 채널은 일반적으로 Microsoft Mail SMTP 게이트웨이를 통해 가져온 메일에 대한 수신 채널이며, 다음은 로컬 사용자에게 전달된 메일에 대한 변환을 활성화합니다.

CHARSET-CONVERSION  

  IN-CHAN=tcp_local;OUT-CHAN=ims-ms;CONVERT         Yes

또한 채널에 대한 항목을 다른 로컬 메일 시스템에 추가하려고 할 수 있습니다. 예를 들어 다음은 tcp_internal 채널에 대한 항목입니다.

CHARSET-CONVERSION

  IN-CHAN=tcp_local;OUT-CHAN=l;CONVERT              Yes
  IN-CHAN=tcp_local;OUT-CHAN=tcp_internal;CONVERT   Yes

모든 채널을 포함하려면 OUT-CHAN=ims-ms 대신 OUT-CHAN=*를 지정하면 됩니다. 그러나, 이렇게 하면 tcp_local 채널에 수신되는 모든 메일을 특정 채널에 바운드하지 않고 꼼꼼하게 검사하게 되므로 메일 처리 오버헤드가 증가할 수 있습니다.

무엇보다도 그러한 무분별한 변환은 시스템을 통해 단순히 전달하기만 하면 되는(메일 봉투와 관련 전송 정보 이외에 다른 변환을 수행할 필요 없이 단순히 전송만 하면 되는 상황) 변환 메일로 인해 시스템이 정렬되지 않은 복잡한 상태로 될 수 있습니다(사용자의 시스템은 그렇지 않을 수도 있음).

MIME을 Microsoft Mail SMTP 게이트웨이에서 인식할 수 있는 형식으로 변환하려면 Microsoft Mail SMTP 게이트웨이에 대한 MTA 구성에서 별도의 채널(예: tcp_msmail)을 사용하고 매핑 파일에 다음을 입력합니다.

CHARSET-CONVERSION  

  IN-CHAN=*;OUT-CHAN=tcp_msmail;CONVERT        RFC1154

MIME 헤더 레이블 다시 지정

일부 사용자 에이전트 또는 게이트웨이에서는 내용에 비해 부족하지만 세부 MIME 헤더를 구성하는 데는 충분한 정보를 제공하는 MIME 헤더를 사용하여 메일을 보낼 수 있습니다. 그러한 사용자 에이전트 또는 게이트웨이를 적절하게 구성하는 것이 가장 좋지만 해당 구성을 직접 제어할 수 없는 경우 MIME 헤더를 보다 유용하게 다시 구성하도록 MTA에 요청할 수 있습니다.

CHARSET-CONVERSION 매핑 테이블에 대한 첫 번째 감시에서 Yes 또는 Always 키워드를 생성하는 경우 MTA는 conversions 파일이 있는지를 확인합니다. 변환 파일이 있는 경우 MTA는 해당 파일에서 RELABEL=1인 항목을 조사하여 그런 항목이 있는 경우 해당 항목에 지정된 MIME 레이블 다시 지정을 수행합니다. 변환 파일 항목에 대한 자세한 내용은 변환 처리 제어를 참조하십시오.

예를 들어 다음과 같은 CHARSET-CONVERSION 테이블과


CHARSET-CONVERSION  

  IN-CHAN=tcp_local;OUT-CHAN=tcp_internal;CONVERT            Yes

MTA conversion 파일 항목을


out-chan=ims-ms; in-type=application; in-subtype=octet-stream; 
  in-parameter-name-0=name; in-parameter-value-0=*.ps; 
  out-type=application; out-subtype=postscript;   
  parameter-copy-0=*; relabel=1 

out-chan=ims-ms; in-type=application; in-subtype=octet-stream; 
  in-parameter-name-0=name; in-parameter-value-0=*.msw; 
  out-type=application; out-subtype=msword; 
     parameter-copy-0=* relabel=1

조합하면 tcp_local 채널에 도착하고 ims-ms 채널에 라우팅된 메일이 나타나게 되는데, 이는 원래 application/octet-stream이라는 MIME 레이블 지정을 사용하여 도착하되 파일 이름 매개 변수에 ps 또는 msw라는 확장명이 있는 메일로서 각각 application/postscript 또는 application/msword라는 레이블이 붙여집니다. 이러한 보다 세부적인 레이블 지정은 원본 사용자 에이전트 또는 게이트웨이에서 수행되었어야 하는 내용입니다. 이러한 레이블 다시 지정은 MIME-CONTENT-TYPES-TO-MR 매핑 테이블과 함께 사용할 때 특히 유용합니다. MIME-CONTENT-TYPES-TO-MR 매핑 테이블은 결과로 나타나는 MIME 형식을 다시 적합한 MRTYPE 태그로 변환하는 데 사용되며 해당 태그가 최적 상태로 기능하기 위해서는 MIME 레이블을 정확히 지정해야 합니다. 모든 내용 유형에 application/octet-stream으로만 레이블이 지정된 경우에는 MIME-CONTENT-TYPES-TO-MR 매핑 테이블은 모든 형식을 무조건 MRTYPE이라는 한 가지 태그로만 변환할 수 있습니다.

위의 예와 함께 다음이 포함된 MIME-CONTENT-TYPES-TO-MR 매핑 테이블 항목을 사용할 때

APPLICATION/POSTSCRIPT        PS 
APPLICATION/MSWORD              MW

레이블 지정을 수행하면

Content-type: application/octet-stream; name=stuff.ps

다음과 같이 레이블이 다시 지정되고

Content-type: application/postscript

MRTYPE 태그로 변환됨으로써 PS 메일 라우터가 PostScript를 예상할 수 있게 됩니다.

일반 이진 데이터에 대해 반대 방향으로 레이블 다시 지정(특정 MIME 첨부 파일 레이블 지정을 application/octet-stream으로 “다운그레이드”)하는 것이 유용할 경우가 있습니다. 특히, 특정 MIME 레이블 지정을 “다운그레이드”하는 것은 mime_to_x400 채널(PMDF-X400) 또는 xapi_local 채널(PMDF-MB400)의 convert_octet_stream 채널 키워드와 함께 사용하여 모든 이진 MIME 첨부 파일을 X.400 bodypart 14 형식으로 강제 설정하는 경우가 많습니다.

예를 들어, 다음과 같은 CHARSET-CONVERSION 매핑 테이블과

CHARSET-CONVERSION

    IN-CHAN=*;OUT-CHAN=mime_to_x400*;CONVERT Yes

CHARSET-CONVERSION 매핑 테이블과 다음 PMPF 변환 파일 항목을

out-chan=mime_to_x400*; in-type=application; in-subtype=*;
   out-type=application; out-subtype=octet-stream; relabel=1
 
out-chan=mime_to_x400*; in-type=audio; in-subtype=*; 
   out-type=application; out-subtype=octet-stream; relabel=1 

out-chan=mime_to_x400*; in-type=image; in-subtype=*; 
   out-type=application; out-subtype=octet-stream; relabel=1 

out-chan=mime_to_x400*; in-type=video; in-subtype=*; 
   out-type=application; out-subtype=octet-stream; relabel=1

조합하면 mime_to_x400* 채널로 가는 모든 메일에 대해 특정 MIME 첨부 파일 레이블 지정이 일반 application/octet-stream 레이블 지정으로 다운그레이드되고 그에 따라 convert_octet_stream이 적용됩니다.

MacMIME 형식 변환

Macintosh 파일에는 Macintosh 특정 정보가 들어 있는 자원 포크와 다른 플랫폼에서 사용 가능한 데이터가 들어 있는 데이터 포크의 두 부분이 있습니다. 따라서, Macintosh 파일 전송은 더욱 복잡하게 수행됩니다. Macintosh 파일 부분 전송에는 서로 다른 네 가지 형식이 공통적으로 사용됩니다. Applesingle, Binhex 및 Macbinary의 세 형식은 한 부분으로 함께 인코딩되는 Macintosh 자원 포크와 Macintosh 데이터 포크로 구성됩니다. 네 번째 형식인 Appledouble은 자원 포크와 데이터 포크가 별도의 부분에 존재하는 멀티파트 형식입니다. 따라서, Appledouble이 Macintosh 이외의 플랫폼에 가장 유용한 형식입니다. 이 경우 비 Macintosh 응용 프로그램에서는 자원 포크 부분은 무시하고 데이터 포크 부분만 사용할 수 있습니다. 다른 형식은 Macintosh에 메일을 보낼 경우에 특히 유용합니다.

MTA는 이러한 다양한 Macintosh 형식을 변환할 수 있습니다. CHARSET-CONVERSION 키워드 Appledouble, Applesingle, Binhex 또는 Macbinary는 다른 MacMIME 구조 부분을 각각 multipart/appledouble, application/applefile, application/mac-binhex40 또는 application/macbinary MIME 구조로 변환하도록 MTA에 지시합니다. 또한 Binhex 또는 Macbinary 키워드는 MIME Content-type: 헤더에 X-MAC-TYPEX-MAC-CREATOR 매개 변수를 포함하는 비 MacMIME 형식 부분의 지정된 형식으로 변환하도록 적용됩니다. CHARSET-CONVERSION 키워드 Block은 MacMIME 형식 부분에서 자원 포크는 삭제하고 데이터 포크만 추출하도록 MTA에 지시합니다. 이렇게 하면 정보가 손실되므로 일반적으로 Appledouble을 사용하는 것이 좋습니다.

예를 들어 다음 CHARSET-CONVERSION 테이블은 MTA에게 VMS MAIL 메일함이나 GroupWise 사서함으로 전달할 때는 Appledouble 형식으로 변환하고 메일 라우터 채널로 전달할 때는 Macbinary 형식으로 변환하도록 명령합니다.

CHARSET-CONVERSION
   IN-CHAN=*;OUT-CHAN=l;CONVERT              Appledouble 
   IN-CHAN=*;OUT-CHAN=wpo_local;CONVERT      Appledouble 
   IN-CHAN=*;OUT-CHAN=tcp_internal;CONVERT   Macbinary

Appledouble 형식으로의 변환은 이미 MacMIME 형식 중 하나로 된 부분에만 적용됩니다. Macbinary 형식으로의 변환은 이미 MacMIME 형식 중 하나로 된 부분에만 적용되거나 X-MAC-TYPE 및 X-MAC-CREATOR 매개 변수를 MIME Content-type: 헤더에 포함한 비 MacMIME 부분에만 적용됩니다.

Appledouble 또는 Block 형식으로 변환할 경우 MAC-TO-MIME-CONTENT-TYPES 매핑 테이블을 사용하여 원본 Macintosh 파일의 Macintosh 작성자 및 Macintosh 입력 정보에 따라 Appledouble 부분 또는 Block 부분의 데이터 포크에 넣을 특정 MIME 레이블을 지정할 수 있습니다. 이 테이블의 검사에는 format|type| creator|filename이라는 형식이 사용되는데 여기서 format은 SINGLE, BINHEX 또는 MACBINARY 중 하나이고 type 및 creator는 각각 16진수인 Macintosh 유형 및 Macintosh 작성자 정보이며 filename은 파일 이름입니다.

예를 들어, ims-ms 채널에 보낼 때 MACBINARY 또는 BINHEX 부분에서 변환된 MS Word 또는 PostScript 문서에 대해 특정 MIME 레이블을 사용하도록 Appledouble로 변환하는 테이블은 다음과 같습니다.


CHARSET-CONVERSION 

  IN-CHAN=*;OUT-CHAN=ims-ms;CONVERT     Appledouble


MAC-TO-MIME-CONTENT-TYPES 

! PostScript 
    MACBINARY|45505346|76677264|*     APPLICATION/POSTSCRIPT$Y 
    BINHEX|45505346|76677264|*        APPLICATION/POSTSCRIPT$Y 
! Microsoft Word 
    MACBINARY|5744424E|4D535744|*     APPLICATION/MSWORD$Y 
    BINHEX|5744424E|4D535744|*        APPLICATION/MSWORD$Y

매핑 항목의 템플리트(오른쪽)에는 지정된 레이블 지정을 수행하도록 설정된 $Y 플래그가 있어야 합니다. 추가 첨부 파일 형식에 대한 샘플 항목은 MTA 테이블 디렉토리의 mac_mappings.sample 파일을 참조하십시오.

비 MacMIME 형식 부분을 Binhex 또는 Macbinary 형식으로 변환하려면 해당 부분은(매개 변수 값이 있을 경우) X-MAC-TYPE 및 X-MAC-CREATOR MIME Content-type:을 가져야 합니다. MIME 레이블 다시 지정을 사용하여 해당 매개 변수가 없는 부분에 이러한 매개 변수를 제공할 수 있습니다.

서비스 변환

MTA의 변환 서비스 기능을 사용하면 사이트에서 제공하는 절차에 따라 메일을 처리하여 새로운 형식의 메일을 생성할 수 있습니다. 개별 MIME 메일 부분의 내용에 적용되는 위에서 설명한 CHARSET-CONVERSION 작업 또는 conversion 채널과 달리 변환 서비스는 전체 MIME 메일 부분(MIME 헤더 및 내용)과 전체 MIME 메일에 대해 수행됩니다. 다른 CHARSET-CONVERSION 작업 또는 변환 채널 작업과 달리 변환 서비스는 MIME 디스어셈블리, 디코딩, 재인코딩 및 리어셈블리를 자체적으로 수행합니다.

다른 CHARSET-CONVERSION 작업과 마찬가지로 변환 서비스도 CHARSET-CONVERSION 매핑 테이블을 통해 활성화됩니다. CHARSET-CONVESION 매핑 테이블에 대한 첫 번째 감시에서 Yes 또는 Always 키워드를 생성하는 경우 MTA는 MTA conversions 파일이 있는지를 확인합니다. conversions 파일이 있는 경우 MTA는 해당 파일에서 SERVICE-COMMAND를 지정하는 항목을 조사하여 그러한 항목이 발견되면 해당 항목을 실행합니다. conversions 파일 항목의 형식은 다음과 같습니다.


in-chan=channel-pattern; 
  in-type=type-pattern; in-subtype=subtype-pattern; 
  service-command=command

핵심적인 사항은 명령 문자열입니다. 명령 문자열은 서비스 변환을 수행하기 위해 실행해야 하는 명령(예: 문서 변환기 호출)입니다. 명령은 서비스를 제공할 메일 텍스트가 들어 있는 입력 파일을 처리하여 새 메일 텍스트가 포함된 출력 파일을 생성해야 합니다. UNIX에서 명령은 성공할 경우 0으로 끝나고 그렇지 않은 경우 0이 아닌 다른 값으로 끝납니다.

예를 들어, 다음과 같은 CHARSET-CONVERSION 테이블과

CHARSET-CONVERSION

IN-CHAN=bsout_*;OUT-CHAN=*;CONVERT Yes

UNIX MTA conversions 파일 항목을


in-chan=bsout_*; in-type=*; in-subtype=*; 
service-command="/pmdf/bin/compress.sh compress $INPUT_FILE $OUTPUT_FILE"

조합하면 BSOUT 채널의 모든 메일이 압축됩니다.

환경 변수는 메일의 봉투 수신자 주소 목록이 포함된 파일 이름과 입력 및 출력 파일의 이름을 전달하는 데 사용됩니다. 이러한 환경 변수의 이름은 다음과 같습니다.

표준 명령줄 대체를 사용하여 이러한 세 환경 변수 값을 명령줄로 대체할 수 있습니다. UNIX의 경우 변수 이름 앞에 $ 문자를 표시합니다. 예를 들어 INPUT_FILEOUTPUT_FILE에 a.in 및 a.out 값이 있을 때 UNIX에서 다음 선언은


in-chan=bsout_*; in-type=*; in-subtype=*; 
 service-command="/pmdf/bin/convert.sh $INPUT_FILE $OUTPUT_FILE"

다음 명령을 실행합니다.

/pmdf/bin/convert.sh a.in a.out