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

매핑 파일

MTA의 구성 요소는 대부분 테이블 조회 지향의 정보를 사용합니다. 이 유형의 테이블은 입력 문자열을 출력 문자열로 변환, 즉 매핑하는 데 사용됩니다. 매핑 테이블이라고 부르는 이러한 테이블은 대개 두 개의 열로 제공됩니다. 첫 번째(왼쪽) 열은 일치시킬 가능한 입력 문자열(패턴)을 제공하며 두 번째(오른쪽) 열은 입력 문자열이 매핑되는 결과 출력 문자열(템플리트)을 제공합니다.

대부분의 MTA 데이터베이스(다른 유형의 MTA 데이터를 포함하는 데이터베이스로서 매핑 테이블과 혼동해서는 안 됨)는 바로 이 테이블 유형의 인스턴스입니다. 그러나 MTA 데이터베이스 파일은 와일드카드 조회 기능을 제공하지 않으므로 와일드카드 일치를 위해 전체 데이터베이스를 스캔해야 한다는 점에서 본질적으로 비효율적입니다.

MTA mappings 파일은 여러 매핑 테이블을 지원합니다. 와일드카드 기능뿐만 아니라 다단계 및 반복 매핑 방법이 제공합니다. 이 방식은 특히 항목 수가 많을 경우에 데이터베이스를 사용하는 것보다 컴퓨팅 작업이 많이 요구됩니다. 그러나 동일한 데이터베이스에서 대부분의 항목을 불필요하게 만드는 유연성이 있기 때문에 결과적으로 전체 오버헤드가 줄어들 수 있습니다.

매핑 테이블은 MTA mappings 파일에 저장됩니다. 이 파일은 MTA tailor 파일에서 IMTA_MAPPING_FILE 옵션으로 지정되며 기본적으로 msg_svr_base/config/mappings입니다. mappings 파일의 내용은 재로드 가능한 섹션의 일부로 컴파일된 구성에 통합됩니다( MTA 구성 컴파일 참조). 이 파일은 세계 공용이어야 합니다. 세계 공용 액세스를 허용하지 않을 경우 오류 동작이 발생합니다. mappings 파일이 변경될 때마다 MTA 구성을 다시 컴파일해야 합니다. MTA 구성 컴파일을 참조하십시오.

표 10–2에는 이 설명서에서 다루는 매핑 테이블이 나열되어 있습니다.

표 10–2 Messaging Server 매핑 테이블

매핑 테이블 

페이지 

설명 

AUTH_REWRITE

인증 작업(SASL)에서 얻은 주소 지정 정보를 사용하여 헤더 및 봉투 주소를 수정하기 위해 authrewrite 키워드와 함께 사용됩니다. TCP/IP 연결 및 DNS 조회 지원을 참조하십시오.

CHARSET-CONVERSION

어떤 종류의 채널 간 문자 세트 변환 및 메일 서식 재설정을 수행해야 하는지 지정하는 데 사용됩니다. 문자 세트 변환 및 메일 형식 다시 지정을 참조하십시오.

COMMENT_STRINGS

주소 헤더 주석(괄호로 묶인 문자열)을 수정하는 데 사용됩니다. 주소 헤더 행의 주석 처리를 참조하십시오.

CONVERSIONS

변환 채널에 대한 메일 트래픽을 선택하는 데 사용됩니다. 변환 처리를 위한 트래픽 선택을 참조하십시오.

FORWARD

별칭 파일이나 별칭 데이터베이스를 사용하여 수행하는 것과 비슷한 전달을 수행하는 데 사용됩니다. 정방향 조회 테이블 및 FORWARD 주소 매핑을 참조하십시오.

FROM_ACCESS

봉투의 보낸 사람 주소에 기초하여 메일을 필터링하는 데 사용됩니다. To 주소가 부적절한 경우 이 테이블을 사용합니다. 액세스 제어 매핑 테이블 - 작업을 참조하십시오.

INTERNAL_IP

내부의 시스템과 서브넷을 인식하는 데 사용됩니다. SMTP 릴레이 추가를 참조하십시오.

MAIL_ACCESS

SEND_ACCESSPORT_ACCESS 테이블에서 발견한 결합된 정보에 기초하여 받는 연결을 차단하는 데 사용됩니다. 액세스 제어 매핑 테이블 - 작업을 참조하십시오.

NOTIFICATION_LANGUAGE

알림 메일을 사용자 정의 또는 현지화하는 데 사용됩니다. 전달 상태 알림 메일 제어를 참조하십시오.

ORIG_MAIL_ACCESS

ORIG_SEND_ACCESSPORT_ACCESS 테이블에서 발견한 결합된 정보에 기초하여 받는 연결을 차단하는 데 사용됩니다. 액세스 제어 매핑 테이블 - 작업을 참조하십시오.

ORIG_SEND_ACCESS

봉투의 보낸 사람 주소, 봉투의 받는 사람 주소, 소스 및 대상 채널에 기초하여 받는 연결을 차단하는 데 사용됩니다. 액세스 제어 매핑 테이블 - 작업을 참조하십시오.

PERSONAL_NAMES

개인 이름(꺽쇠로 구분된 주소 앞의 문자열)을 수정하는 데 사용됩니다. 주소 헤더 행에서 개인 이름 처리를 참조하십시오.

PORT_ACCESS

IP 번호를 기준으로 받는 연결을 차단하는 데 사용됩니다. 액세스 제어 매핑 테이블 - 작업을 참조하십시오.

REVERSE

주소를 내부 형식에서 공용 광고 형식으로 변환하는 데 사용됩니다. 주소를 내부 형식에서 공용 형식으로 변환 을 참조하십시오.

SEND_ACCESS

봉투의 보낸 사람 주소, 봉투의 받는 사람 주소, 소스 및 대상 채널에 기초하여 받는 연결을 차단하는 데 사용됩니다. 액세스 제어 매핑 테이블 - 작업을 참조하십시오.

SMS_Channel_TEXT

사이트 정의 텍스트 변환에 사용됩니다. 사이트 정의 텍스트 변환을 참조하십시오.

X-ATT-NAMES

매핑 테이블에서 매개 변수 값을 검색하는 데 사용됩니다. 변환 항목에서 매핑 테이블 호출을 참조하십시오.

X-REWRITE-SMS-ADDRESS

로컬 SMS 주소 유효성 검사에 사용됩니다. 사이트 정의 주소 유효성 검사 및 변환을 참조하십시오.

매핑 파일의 파일 형식

mappings 파일은 일련의 개별 테이블로 구성됩니다. 각 테이블은 이름으로 시작되며이름의 첫 번째 열에는 항상 알파벳 문자가 옵니다. 테이블 이름 뒤에는 필수적으로 빈 행이 오고 이어서 테이블의 항목이 나타납니다. 항목은 0개 이상의 들여쓰기 행으로 구성되며 각 항목 행은 하나 이상의 공백 또는 탭으로 구분된 두 개의 열로 구성됩니다. 항목 안의 모든 공백은 $ 문자를 사용하여 인용해야 합니다. 각 매핑 테이블 이름 뒤와 각 매핑 테이블 사이에 빈 행이 있어야 하며 단일 테이블의 항목 사이에는 빈 행이 표시될 수 없습니다. 주석은 첫 번째 열에서 느낌표(!)로 시작해야 합니다.

결과 형식은 다음과 같이 나타납니다.


TABLE1_NAME
   pattern1-1    template1-1
   pattern1-2    template1-2
   pattern1-3    template1-3
      .              .
      .              .
      .              .
   pattern1-n    template1-n

TABLE2_NAME
   pattern2-1    template2-1
   pattern2-2    template2-2
   pattern2-3    template2-3
       .            .
       .            .
       .            .
   pattern2-n    template2-n
          .
          .
          .


TABLE3_NAME
           .
          .
          .

         

매핑 테이블 TABLE2_NAME을 사용하는 응용 프로그램은 pattern2-2 문자열을 template2-2에 지정된 것으로 매핑합니다. 각 패턴이나 템플리트는 최대 252자를 포함할 수 있습니다. 과도한 수의 항목이 막대한 양의 CPU와 메모리를 소비할 수 있지만 매핑에 표시될 수 있는 항목 수에는 제한이 없습니다. 252자를 초과하는 긴 행은 끝에 백슬래시(\)를 포함하여 계속 이어질 수 있습니다. 두 열 사이의 공백과 첫 번째 열 앞에 있는 공백은 생략할 수 없습니다.

중복된 매핑 테이블 이름은 mappings 파일에서 허용되지 않습니다.

매핑 파일에 다른 파일 포함

mappings 파일에 다른 파일이 포함될 수 있습니다. 이렇게 하려면 다음 형식의 행을 사용합니다.


<file-spec
            

이 행을 사용하면 포함이 나타나는 지점에서 file-spec 파일의 내용이 mappings 파일에 포함됩니다. 파일 지정은 전체 파일 경로(디렉토리 등)를 지정해야 합니다. 이 방식으로 포함된 모든 파일은 세계 공용이어야 합니다. 또한 이러한 포함된 mappings 파일에는 주석이 허용됩니다. 포함은 최대 3개 수준까지 중첩될 수 있습니다. 포함 파일은 mappings 파일이 로드될 때 동시에 로드됩니다. 즉, 포함 파일은 요청 시 로드되지 않으므로 포함 파일 사용과 관련하여 성능 또는 메모리가 절약되지는 않습니다.

매핑 작업

mappings 파일의 모든 매핑은 일관된 방식으로 적용됩니다. 특정 매핑과 다음 매핑 사이에서 변경되는 유일한 사항은 입력 문자열의 소스와 매핑 출력이 사용되는 대상입니다.

매핑 작업은 항상 입력 문자열과 매핑 테이블로부터 시작됩니다. 매핑 테이블의 항목은 테이블에 표시된 순서대로 위에서 아래로 한 번에 하나씩 스캔됩니다. 각 항목의 왼쪽은 패턴으로 사용되며 입력 문자열은 대소문자를 구분하지 않는 방식으로 해당 패턴과 비교됩니다.

매핑 항목 패턴

패턴은 와일드카드 문자를 포함할 수 있습니다. 특히 일반적인 와일드카드 문자가 허용됩니다. 별표(*)는 0개 이상의 문자와 일치하며 각 백분율 기호(%)는 하나의 문자와 일치합 니다. 별표, 백분율 기호, 공백 및 탭은 앞에 달러 기호($)를 추가하여 인용할 수 있습니다. 별표 또는 백분율 기호를 인용하면 특별한 의미가 사라집니다. 영구적으로 패턴이나 템플리트로 끝나는 것을 방지하기 위해 공백과 탭을 인용해야 합니다. 리터럴 달러 기호 문자는 이중($$)으로 표시해야 하며 첫 번째 달러 기호가 두 번째 기호를 인용합니다.

표 10–3 매핑 패턴 와일드카드

와일드카드

설명

정확하게 하나의 문자와 일치합니다. 

왼쪽에서 오른쪽으로의 “최대” 일치를 사용하여 0개 이상의 문자와 일치합니다. 

뒤로 일치

설명

$ n* 

n번째 와일드카드 또는 글롭과 일치합니다. 

수정자

설명

$_ 

왼쪽에서 오른쪽으로의 “최소” 일치를 사용합니다. 

$@ 

이어지는 와일드카드 또는 글롭의 “저장”을 해제합니다. 

$^ 

이어지는 와일드카드 또는 글롭의 “저장”을 설정합니다. 기본값입니다. 

글롭 와일드카드

설명

$A% 

하나의 알파벳 문자(A-Z 또는 a-z)와 일치합니다. 

$A* 

0개 이상의 알파벳 문자(A-Z 또는 a-z)와 일치합니다. 

$B% 

하나의 이진수(0 또는 1)와 일치합니다. 

$B* 

0개 이상의 이진수(0 또는 1)와 일치합니다. 

$D% 

하나의 십진수(0-9)와 일치합니다. 

$D* 

0개 이상의 십진수(0-9)와 일치합니다. 

$H% 

하나의 16진수(0-9 또는 A-F)와 일치합니다. 

$H* 

0개 이상의 16진수(0-9 또는 A-F)와 일치합니다. 

$O% 

하나의 8진수(0-7)와 일치합니다. 

$O* 

0 개 이상의 8진수(0-7)와 일치합니다. 

$S% 

하나의 기호 집합 문자(예: 0-9, A-Z, a-z, _, $)와 일치합니다. 

$S* 

0개 이상의 기호 집합 문자(예: 0-9, A-Z, a-z, _, $)와 일치합니다. 

$T% 

하나의 탭 또는 세로 탭이나 공백 문자와 일치합니다. 

$T* 

0개 이상의 탭 또는 세로 탭이나 공백 문자와 일치합니다. 

$X% 

$H%의 동의어입니다. 

$X* 

$H*의 동의어입니다. 

$[ c]% 

문자 c와 일치합니다. 

$[ c]* 

문자 c의 모든 경우와 일치합니다. 

$[ c1 c2 ... cn ]%

문자 c1, c2 또는 cn과 정확하게 한번 일치합니다.

$[ c1 c2 ... cn ]*

문자 c1, c2 또는 cn의 모든 경우와 일치합니다.

$[ c1 -cn ]%

c1에서 cn 범위에 있는 문자 하나와 일치합니다.

$[ c1 -cn ]*

c1에서 cn 범위에 있는 모든 문자와 일치합니다.

$< IPv4> 

IPv4 주소와 일치하며 비트를 무시합니다. 

$(IPv4) 

IPv4 주소와 일치하며 접두어 비트를 유지합니다. 

${IPv6} 

IPv6 주소와 일치합니다. 

글롭 내에서, 즉 $[...] 구조 내에서 백슬래시 문자(\)는 인용 문자입니다. 글롭 내에서 리터럴 하이픈(-) 또는 오른쪽 대괄호(])를 나타내려면 하이픈이나 오른쪽 대괄호를 백슬래시로 인용해야 합니다.

패턴의 다른 모든 문자는 해당 문자 자체를 표시 및 일치시킵니다. 특히 작은따옴표 및 큰따옴표 문자와 괄호는 매핑 패턴이나 템플리트에서 특별한 의미가 없는 보통 문자에 불과합니다. 따라서 유효하지 않은 주소나 부분 주소에 해당하는 항목을 쉽게 작성할 수 있습니다.

여러 수정자를 지정하거나 수정자와 뒤로 일치를 지정하려면 단지 하나의 달러 기호가 구문에 사용됩니다. 예를 들어, 뒤로 일치 자체를 저장하지 않고 처음 와일드카드를 뒤로 일치시키려면 $@$0이 아니라 $@0을 사용합니다.

imsimta test -match 유틸리티를 사용하여 매핑 패턴을 테스트하고 특히 패턴에서의 와일드카드 동작을 테스트할 수 있다는 점을 유의하십시오.

별표 와일드카드는 입력 문자열의 왼쪽에서 오른쪽으로 작동하여 항목을 최대한 일치시킵니다. 예를 들어, 입력 문자열 a/b/c가 패턴 */*와 비교되면 왼쪽 별표는 a/b와 일치하고 오른쪽 별표는 나머지 c와 일치합니다.

$_ 수정자는 패턴에서 왼쪽에서 오른쪽으로 작동하여 와일드카드 일치를 최소화므로 최소한의 가능한 일치만 일치로 간주됩니다. 예를 들어, 문자열 a/b/c가 패턴 $_*/$_*와 비교되면 왼쪽 $_*a와 일치하고 오른쪽 $_*b/c와 일치합니다.

IP 일치

IPv4 접두어 일치의 경우 IP 주소나 서브넷이 지정되며 선택적으로 슬래시와 접두어의 비트 수(일치하는 항목을 비교할 때 고려되는)가 뒤에 올 수 있습니다. 예를 들어, 다음은 123.45.67.0 서브넷의 모든 항목과 일치합니다.

$(123.45.67.0/24)

IPv4 무시 비트 일치의 경우 IP 주소나 서브넷이 지정되며 선택적으로 슬래시와 비트 수(일치하는 항목을 검사할 때 무시되는)가 뒤에 올 수 있습니다. 예를 들어, 다음은 123.45.67.0 서브넷의 모든 항목과 일치합니다.

$<123.45.67.0/8>

다음 예는 123.45.67.4에서 123.45.67.7까지의 범위에 속한 모든 항목과 일치합니다.

$<123.45.67.4/2>

IPv6 일치는 IPv6 주소 또는 서브넷과 일치합니다.

매핑 항목 템플리트

주어진 항목의 패턴 비교에 실패할 경우 어떠한 작업도 수행되지 않으며 다음 항목의 스캔이 진행됩니다. 비교에 성공할 경우 항목의 오른쪽이 출력 문자열을 생성하기 위한 템플리트로 사용됩니다. 템플리트가 사용되면 입력 문자열은 템플리트에 제공된 지침으로부터 생성된 출력 문자열로 효과적으로 대체됩니다.

템플리트의 거의 모든 문자는 단순히 그대로 출력됩니다. 단, 달러 기호($)의 경우는 예외입니다.

달러 기호 뒤에 달러 기호, 공백 또는 탭이 오면 출력 문자열에 달러 기호, 공백 또는 탭이 생성됩니다. 이러한 문자는 모두 출력 문자열에 삽입하기 위해 인용해야 한다는 점을 유의하십시오.

달러 기호 뒤에 오는 숫자 n은 대체를 요청하며 달러 기호 뒤에 알파벳 문자는 “메타 문자”라고 부릅니다. 메타 문자 자체는 템플리트가 생성한 출력 문자열에 나타나지 않지만 특수한 일부 대체 또는 처리를 생성합니다. 특수한 대체 또는 표준 처리 메타 문자의 목록은 표 10–4를 참조하십시오. 그 밖의 다른 메타 문자는 매핑 특정 응용 프로그램용으로 예약됩니다.

$C, $E, $L 또는 $R 메타 문자는 일치하는 패턴의 템플리트에 존재할 경우 매핑 프로세스에 영향을 주고 프로세스의 계속 또는 종료를 제어한다는 점을 유의하십시오. 즉, 한 항목의 출력이 다른 항목의 입력이 되는 반복 매핑 테이블 항목을 설정할 수 있습니다. 일치하는 패턴의 템플리트가 $C, $E, $L 또는 $R 메타 문자를 포함하지 않을 경우 $E(매핑 프로세스의 즉시 종료)가 가정됩니다.

무한 루프를 방지하기 위해 매핑 테이블의 반복 통과 횟수가 제한됩니다. 이전 통과보다 길거나 같은 패턴으로 통과가 다시 시작될 때마다 카운터가 증가합니다. 문자열의 길이가 이전 것보다 짧을 경우 카운터는 0으로 재설정됩니다. 카운터가 10을 초과하면 매핑을 반복하려는 요청은 무시됩니다.

표 10–4 매핑 템플리트 대체 및 메타 문자

대체 시퀀스 

대체 대상 

$n

0부터 시작하여 왼쪽에서 오른쪽으로 계산된 n번째 와일드카드 필드

$#...#

일련 번호 대체 

$]...[ 

LDAP 검색 URL 조회(결과에서 대체) 

$|...|

지정된 매핑 테이블을 제공된 문자열에 적용 

${...} 

일반 데이터베이스 대체 

$}domain,attribute{

도메인별 속성에 액세스하는 기능을 추가합니다. domain은 해당 도메인이고 attribute는 도메인과 연관된 속성입니다. 도메인이 있고 속성을 가지고 있는 경우 초기 값이 매핑 결과로 대체됩니다. 하지만 속성이나 도메인이 없으면 매핑 항목이 실패합니다.

attributes는 도메인 LDAP 속성이거나 아래에 정의되어 있는 특수한 속성일 수 있습니다.

_base_dn_ - 도메인의 사용자 항목에 대한 기본 DN

_domain_dn_ - 도메인 항목의 DN 그 자체

_domain_name_ - 도메인의 이름(별칭의 반대 개념)

_canonical_name_ - 도메인과 관련된 정규 이름

$[...]

사이트 제공 루틴 호출(결과에서 대체) 

메타 문자

설명

$C

다음 테이블 항목에서 시작하는 매핑 프로세스를 계속합니다. 이 항목의 출력 문자열을 매핑 프로세스의 새 입력 문자열로 사용합니다. 

$E

지금 매핑 프로세스를 종료합니다. 이 항목의 출력 문자열을 매핑 프로세스의 최종 결과로 사용합니다. 

$L

다음 테이블 항목에서 시작하는 매핑 프로세스를 계속합니다. 이 항목의 출력 문자열을 매핑 프로세스의 새 입력 문자열로 사용합니다. 테이블의 모든 항목이 사용되고 나면 첫 번째 테이블 항목에서 시작하는 통과를 하나 더 만듭니다. 이후의 일치하는 항목에서는 $C, $E 또는 $R 메타 문자를 사용하여 이 조건을 무시할 수 있습니다.

$R

매핑 테이블의 첫 번째 항목에서 시작하는 매핑 프로세스를 계속합니다. 이 항목의 출력 문자열을 매핑 프로세스의 새 입력 문자열로 사용합니다.  

$nA 

위치 0에서 시작하여 현재 주소의 n번째 왼쪽 문자를 삽입합니다. n을 생략하면 전체 주소가 삽입됩니다. 

$nX 

0에서 시작하여 메일 호스트의 n번째 왼쪽 구성 요소를 삽입합니다. n을 생략하면 전체 메일 호스트가 삽입됩니다. 

$?x?

매핑 항목이 x%의 시간 동안 성공합니다. 

$\

후속 텍스트를 소문자로 강제 지정합니다. 

$^

후속 텍스트를 대문자로 강제 지정합니다. 

$_

후속 텍스트를 원래 대소문자로 유지합니다. 

$=

대체된 후속 문자가 LDAP 검색 필터에 삽입하기 적합하게 인용되도록 합니다. 모두 대문자로 적용합니다. 

$:x

지정된 플래그가 설정된 경우에만 일치합니다. 

$;x

지정된 플래그가 지워진 경우에만 일치합니다. 

와일드카드 필드 대체($n)

숫자 n이 뒤에 오는 달러 기호는 패턴의 n번째 와일드카드와 일치했던 항목으로 대체됩니다. 와일드카드는 0부터 시작하여 번호가 매겨집니다. 예를 들어, 다음 항목은 입력 문자열 PSI%A::B와 일치하며 결과 출력 문자열 b@a.psi.siroe.com을 생성합니다.


PSI$%*::*    $1@$0.psi.siroe.com

또한 입력 문자열 PSI%1234::USER도 일치하여 USER@1234.psi.siroe.com을 출력 문자열로 생성합니다. 입력 문자열 PSIABC::DEF는 이 항목의 패턴과 일치하지 않으며 어떤 작업도 발생하지 않습니다. 즉, 이 항목으로부터 출력 문자열이 생성되지 않습니다.

텍스트 대소문자 제어($\, $^, $_)

메타 문자 $\는 후속 텍스트를 소문자로 강제 지정하고 $^는 후속 텍스트를 대문자로 강제 지정하며 $_는 후속 텍스트를 원래 대소문자로 유지합니다. 예를 들어, 이러한 메타 문자는 매핑을 사용하여 대소문자가 중요한 주소를 변환할 경우에 유용할 수 있습니다.

처리 제어($C, $L, $R, $E)

$C, $L, $R$E 메타 문자는 매핑 프로세스의 종료 여부와 종료 시기를 제어하여 매핑 프로세스에 영향을 줍니다. 각 메타 문자는 다음과 같습니다.

매핑 테이블 템플리트는 왼쪽에서 오른쪽으로 스캔됩니다. “성공” 또는 “실패”할 수 있는 항목(예: 일반 데이터베이스 대체 또는 임의 값 제어 항목)에 $C, $L 또는 $R 플래그를 설정하려면 해당 항목의 왼쪽에 $C, $L 또는 $R 메타 문자를 추가합니다. 그렇지 않을 경우 항목의 나머지 부분이 실패하면 플래그가 표시되지 않습니다.

특수 플래그 검사

일부 매핑 검사에서는 특수한 플래그를 설정합니다. 이러한 플래그를 설정한 다음 $:, $; 테스트의 일반 매핑 테이블 기능을 사용하여 플래그의 존재/부재를 테스트할 수 있습니다. $:x는 플래그 x가 설정된 경우에만 항목이 일치하게 합니다. $;x는 플래그 x가 없는 경우에만 항목이 일치하게 합니다. 매핑 테이블에 적용될 수 있는 특수 플래그는 해당 매핑 테이블에 대한 설명을 참조하십시오. 표 17–2에서 $A, $T, $S, $F 및 $D를 참조하십시오.

플래그 검사가 성공하면 항목이 계속되고 종료되도록 하고 플래그 검사가 실패하면 매핑 프로세스가 계속되도록 하려는 경우 항목에서는 플래그 검사 왼쪽에 $C 메타 문자를 사용하고 플래그 검사 오른쪽에 $E 플래그를 사용해야 합니다.

항목의 임의적 성공 또는 실패($?x?)

매핑 테이블 항목의 $?x?메타 문자를 사용하면 x%의 시간 동안 항목이 “성공”합니다. 나머지 시간에는 항목이 “실패”하며 매핑 항목의 입력에 대한 출력이 변경되지 않은 채 출력으로 사용됩니다. (매핑에 따라 항목 실패의 결과가 처음에 일치하지 않은 항목과 반드시 같은 것은 아닙니다.)x는 성공 비율을 지정하는 실수여야 합니다.

예를 들어, IP 주소가 123.45.6.78인 시스템이 많은 양의 SMTP 전자 메일을 사이트로 전송하고 있으며 관리자가 그 속도를 줄이려는 경우 다음과 같은 방법으로 PORT_ACCESS 매핑 테이블을 사용할 수 있습니다. 여기에서 연결 시도의 25%만 허용하고 나머지 75%의 시도를 거부해야 한다고 가정해 봅니다. 다음 PORT_ACCESS 매핑 테이블은 $Y(연결 허용)를 가진 항목이 25%의 시간 동안만 성공하도록 $?25?를 사용합니다. 나머지 75%의 시간동안 이 항목이 실패하면 맨 앞의 $C로 인해 MTA는 다음 항목에서 매핑을 계속합니다. 결과적으로 SMTP 오류가 발생하고Try again later 메시지가 표시되면서 연결 시도가 거부됩니다.


PORT_ACCESS

   TCP|*|25|123.45.6.78|*         $C$?25?$Y
   TCP|*|25|123.45.6.78|*         $N45s$ 4.40$ Try$ again$ later

일련 번호 대체($#...#)

$#...# 대체는 MTA 시퀀스 파일에 저장된 값을 증가시키고 해당 값을 템플리트로 대체합니다. 매핑 테이블 출력에 고유한 한정자가 존재하는 것이 바람직한 경우(예: 매핑 테이블을 사용하여 파일 이름을 생성하는 경우) 이 대체를 사용하여 증가하는 고유 문자열을 생성할 수 있습니다.

다음 구문 중 하나를 사용할 수 있습니다.


$#seq-file-spec|radix|width|m#

$#seq-file-spec|radix|width#

$#seq-file-spec|radix#

$#seq-file-spec#

필수 seq-file-spec 인수는 이미 존재하는 MTA 시퀀스 파일에 대한 전체 파일 지정입니다. 선택적 radixwidth 인수는 각각 시퀀스 값을 출력하는 데 적용할 기수와 출력할 자릿수를 지정합니다. 기본 기수는 10이며 허용 범위는 -36에서 36까지입니다. 예를 들어, 기수 36은 숫자 0,...,9,A,...,Z로 표현되는 값을 제공합니다. 기본적으로 시퀀스 값은 본래 너비로 인쇄되지만 지정된 너비에 더 많은 자릿수가 요구될 경우 올바른 자릿수가 되도록 출력의 왼쪽 부분이 0으로 채워집니다. 너비가 명시적으로 지정된 경우 기수도 명시적으로 지정되어야 한다는 점을 유의하십시오.

선택적 m 인수는 모듈러스입니다. 이 네 번째 인수를 지정하면 삽입되는 값은 파일 mod m에서 검색되는 시퀀스 번호입니다. 기본값은 모듈러스 작업을 수행하지 않는 것입니다.

위에서 언급한 것처럼 매핑에서 참조되는 MTA 시퀀스 파일은 이미 존재해야 합니다. MTA 시퀀스 파일을 만들려면 다음 UNIX 명령을 사용합니다.


touch seq-file-spec

또는


cat >seq-file-spec

               

매핑 테이블을 사용하여 액세스하는 일련 번호 파일은 세계 공용일 경우에만 제대로 작동합니다. 또한 이러한 일련 번호 파일을 사용하려면 imta_tailor 파일에서 nobody로 구성된 MTA 사용자 계정이 있어야 합니다.

LDAP 쿼리 URL 대체($]...[)

$]ldap-url [ 형식의 대체는 특수하게 처리됩니다. ldap-url은 LDAP 쿼리 URL로 해석되며 LDAP 쿼리 결과가 대체됩니다. 호스트와 포트가 생략된 표준 LDAP URL이 사용되며 대신 LDAP_HOSTLDAP_PORT 옵션을 사용하여 호스트와 포트를 지정합니다. 즉, LDAP URL은 다음과 같이 지정해야 합니다.

ldap:///dn[?attributes[?scope?filter]]

여기에서 대괄호 문자 []는 URL의 선택적 부분을 나타냅니다. dn은 필수 항목으로서 검색 기준을 지정하는 고유 이름입니다. 선택 항목인 URL의 attributes, scopefilter 부분은 반환할 정보를 더 구제화합니다. 즉, attributes는 이 LDAP 쿼리와 일치하는 LDAP 디렉토리 항목에서 반환될 속성을 지정합니다. scopebase(기본값), one 또는 sub가 될 수 있습니다. filter는 일치하는 항목의 특성을 설명합니다.

특정 LDAP URL 대체 시퀀스를 LDAP 쿼리 URL 내에서 사용할 수 있습니다.

매핑 테이블 대체($|...|)

$|mapping ;argument| 형식의 대체는 특수하게 처리됩니다. MTA는 MTA mappings 파일에서 mapping이라는 보조 매핑 테이블을 찾은 후 argument를 명명된 이 보조 매핑 테이블에 대한 입력으로 사용합니다. 명명된 보조 매핑 테이블은 존재해야 하며 성공할 경우 해당 출력에서 $Y 플래그를 설정해야 합니다. 명명된 보조 매핑 테이블이 존재하지 않거나 $Y 플래그를 설정하지 않을 경우 해당 보조 매핑 대체가 실패하고 원래 매핑 항목이 실패로 간주되어 원래 입력 문자열이 출력 문자열로 사용됩니다.

매핑 테이블 대체를 수행하는 매핑 테이블 항목에서 $C, $R 또는 $L과 같은 처리 제어 메타 문자를 사용하려는 경우 매핑 테이블 템플리트에서 매핑 테이블 대체의 왼쪽에 처리 제어 메타 문자를 두어야 한다는 점을 유의하십시오. 그렇지 않을 경우 매핑 테이블 대체가 “실패”하면 처리 제어 메타 문자가 표시되지 않습니다.

일반 조회 테이블 또는 데이터베이스 대체(${...})

$(text) 형식의 대체는 특수하게 처리됩니다. text 부분은 일반 조회 테이블이나 데이터베이스에 액세스하기 위한 키로 사용됩니다. 데이터베이스는 imsimta crdb 유틸리티를 사용하여 생성합니다. 테이블에서 text가 발견될 경우 테이블의 해당 템플리트가 대체됩니다. text가 테이블의 항목과 일치하지 않을 경우 입력 문자열이 변경되지 않은 채로 출력 문자열로 사용됩니다.

일반 조회 테이블을 사용하는 중이면 MTA 옵션 use_text_databases의 낮은 순서 하위 비트를 설정해야 합니다. 즉 기수로 설정합니다. imsimta cnbuild를 사용하여 컴파일을 수행하고 imsimta reload를 사용하여 재로드 가능한 데이터를 재로드함으로써 general.txt에 대한 변경 사항을 MTA 구성으로 컴파일해야 합니다.

일반 데이터베이스를 사용하는 경우 데이터베이스는 제대로 작동하기 위해 세계 공용이어야 합니다.

일반 테이블 대체를 수행하는 매핑 테이블 항목에서 $C, $R 또는 $L과 같은 처리 제어 메타 문자를 사용하려는 경우 매핑 테이블 템플리트에서 일반 테이블 대체의 왼쪽에 처리 제어 메타 문자를 두어야 합니다. 그렇지 않을 경우 일반 테이블 대체가 “실패”하면 처리 제어 메타 문자가 표시되지 않습니다.

사이트 제공 루틴 대체($[...])

$[image,routine,argument ] 형식의 대체는 특수하게 처리됩니다. image, routine, argument 부분은 사용자 제공 루틴을 검색 및 호출하는 데 사용됩니다. UNIX의 런타임에서 MTA는 dlopendlsym을 사용하여 공유 라이브러리 image에서 routine 루틴을 동적으로 로드 및 호출합니다. 이어서 routine 루틴은 다음 인수 목록을 가진 함수로 호출됩니다.


status = routine (argument, arglength, result, reslength)

argumentresult는 252바이트 길이의 문자열 버퍼입니다. argumentresult는 포인터로 문자열에 전달됩니다(예: C에서는 char*로). arglengthreslength는 참조에 의해 전달되는 서명된 정수(Long)입니다. 입력의 경우, argument는 매핑 테이블 템플리트의 argument 문자열을 포함하고 arglength는 해당 문자열의 길이를 포함합니다. 반환 시에 결과 문자열은 result에 포함되고 그 길이는 reslength에 포함되어야 합니다. 그런 다음 이 결과 문자열은 매핑 테이블 템플리트에서 $[image,routine,argument]를 대체합니다. routine 루틴은 매핑 테이블 대체가 실패할 경우에는 0을 반환하고 성공할 경우에는 1을 반환해야 합니다. 대체가 실패할 경우 일반적으로 원래 입력 문자열이 그대로 출력 문자열로 사용됩니다.

사이트 제공 루틴 대체를 수행하는 매핑 테이블 항목에서 $C, $R 또는 $L과 같은 처리 제어 메타 문자를 사용하려는 경우 매핑 테이블 템플리트에서 사이트 제공 루틴 대체의 왼쪽에 처리 제어 메타 문자를 두어야 합니다. 그렇지 않을 경우 매핑 테이블 대체가 “실패”하면 처리 제어 메타 문자가 표시되지 않습니다.

사이트 제공 루틴 설명선 기법을 사용하면 MTA의 매핑 프로세스를 모든 종류의 복잡한 방법으로 확장할 수 있습니다. 예를 들어, PORT_ACCESS 또는 ORIG_SEND_ACCESS 매핑 테이블에서 특정한 유형의 로드 모니터링 서비스를 호출할 수 있으며 결과를 사용하여 연결이나 메일을 수락할지 여부를 결정할 수 있습니다.

사이트 제공 공유 라이브러리 이미지 image는 세계 공용이어야 합니다.

UTF-8 문자열 생성

일반 매핑 테이블 기능의 유니코드 문자 값에서 UTF-8 문자열을 만들 수 있습니다. 유니코드 메타 문자의 순서는 다음 형식으로 나타납니다.

$&A0A0,20,A1A1&

이 형식에서 A0A0, 20A1A1 위치에 문자가 포함되는 UTF-8 문자열을 만들어냅니다.