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

주소를 내부 형식에서 공용 형식으로 변환

주소 역방향 데이터베이스(역방향 데이터베이스라고도 부름)와 REVERSE 매핑 테이블을 사용하여 주소를 내부 형식에서 공용 광고 형식으로 변환할 수 있습니다. 예를 들어, uid@mailhost.siroe.comsiroe.com 도메인 내에서 유효 주소일 수 있지만 외부에 공개하기에는 적합하지 않을 수 있습니다. 이 경우에는 내부 주소 대신에 firstname.lastname@siroe.com과 같은 공용 주소를 사용하는 것이 필요합니다.


주 –

Messaging Server는 aliases 파일 및 특수한 매핑 테이블과 같은 주소 조작을 위한 다른 기능을 제공합니다. 그러나 최상의 성능을 위해서는 주소 조작을 수행할 수 있을 때마다 다시 쓰기 규칙을 사용하는 것이 좋습니다. 11 장, 다시 쓰기 규칙 구성을 참조하십시오.


역방향 데이터베이스에서 각 사용자의 공용 주소는 디렉토리에 있는 사용자 항목의 mail 속성에 의해 지정됩니다. 개인 또는 내부 주소는 mailAlternativeAddress 속성에 의해 지정됩니다. 이는 배포 목록의 경우에도 마찬가지입니다.

역방향 데이터베이스는 임의 유효 주소와 이 공용 주소 간의 매핑을 포함합니다. 역방향 데이터베이스는 일반적으로 MTA 데이터베이스 디렉토리에 위치합니다. 데이터베이스는 msg_svr_base/config/imta_tailor 파일에서 IMTA_REVERSE_DATABASE 옵션을 사용하여 이름을 지정하는 파일이며 기본적으로 msg_svr_base/data/db/reversedb.*입니다.

데이터베이스에서 주소가 발견될 경우 데이터베이스의 해당 오른쪽 부분이 주소로 대체됩니다. 주소가 발견되지 않을 경우 mappings 파일에서 REVERSE라는 매핑 테이블을 찾으려는 시도가 수행됩니다. 테이블이 존재하지 않거나 테이블의 항목이 일치하지 않을 경우 대체가 수행되지 않으며 다시 쓰기가 정상적으로 종료됩니다.

mappings 파일에서 REVERSE 매핑 테이블이 발견되고 주소가 매핑 항목과 일치할 경우 결과 문자열이 주소를 대체합니다(항목에서 $Y를 지정한 경우). $N이 지정된 경우에는 매핑 결과가 무시됩니다. 매핑 항목에서 $Y 외에 $D가 지정된 경우 결과 문자열은 역방향 데이터베이스에서 한 번 더 실행됩니다. 여기에서 일치하는 항목이 발생하면 데이터베이스의 템플리트가 매핑 결과(즉, 주소)를 대체합니다. 아래에는 일반 REVERSE 매핑 테이블 항목(즉, 모든 채널에 적용되는 항목)의 형식이 나와 있습니다. 플래그는 새 주소의 앞이나 끝에 올 수 있다는 점을 유의하십시오.


REVERSE

   OldAddress        $Y[Flags]NewAddress

      

아래에는 channel-specific 항목(즉, 특정 채널을 통과하는 메일에서만 발생하는 매핑)의 형식이 나와 있습니다. 채널 특정 항목이 작동하려면 option.dat에서 use_reverse_database를 13으로 설정해야 한다는 점을 유의하십시오.


REVERSE

   source-channel|destination-channel|OldAddress  $Y[Flags]NewAddresS

      

표 10–7REVERSE 매핑 테이블 플래그를 보여 줍니다.

표 10–7 REVERSE 매핑 테이블 플래그

플래그 

설명 

$Y 

출력을 새 주소로 사용합니다. 

$N 

주소가 변경되지 않고 그대로 유지됩니다. 

$D 

역방향 데이터베이스를 통해 출력을 실행합니다. 

$A 

역방향 데이터베이스 항목으로 패턴을 추가합니다. 

$F 

정방향 데이터베이스 항목으로 패턴을 추가합니다. 

플래그 비교

설명

$:B 

헤더(본문) 주소만 일치합니다. 

$:E 

봉투 주소만 일치합니다. 

$:F 

정방향 지정 주소만 일치합니다. 

$:R 

역방향 지정 주소만 일치합니다. 

$:I 

메일 아이디만 일치합니다. 

주소 역방향 제어 설정

reversenoreverse 채널 키워드와 MTA 옵션 USE_REVERSE_DATABASEREVERSE_ENVELOPE을 사용하여 주소 역방향을 적용할 시기와 방법에 대한 세부 사항을 제어합니다. 기본적으로 주소 역방향 작업은 단지 역방향 지정 주소가 아니라 모든 주소에 적용됩니다.

주소 역방향은 REVERSE_ENVELOPE 시스템 옵션 값(기본값: 1-on, 0-off)의 설정에 따라서 활성화 또는 비활성화됩니다.

대상 채널의 noreverse 는 메일의 주소에 주소 역방향이 적용되지 않도록 지정합니다. reverse는 주소 역방향을 적용하도록 지정합니다. 자세한 내용은 역방향 데이터베이스의 채널별 사용을 참조하십시오.

USE_REVERSE_DATABASE는 MTA가 주소 역방향 데이터베이스와 REVERSE 매핑을 대체 주소의 소스로 사용하는지 여부를 제어합니다. 값 0은 채널에서 주소 역방향이 사용되지 않는다는 것을 의미합니다. 기본값인 5는 단지 역방향 지정 주소가 아니라 모든 주소(MTA 주소 다시 쓰기 프로세스에 의해 재작성된 후)에 주소 역방향을 적용하도록 지정합니다. 값 13은 단지 역방향 지정 주소가 아니라 reverse 채널 키워드를 가진 주소(MTA 주소 다시 쓰기 프로세스에 의해 재작성된 후에)에 주소 역방향을 적용하도록 지정합니다. 더 세부적인 주소 역방향 작업은 USE_REVERSE_DATABASE 옵션의 비트 값을 설정하여 지정할 수 있습니다. 자세한 내용은 Sun Java System Messaging Server 6 2005Q4 Administration ReferenceOption File Format and Available Options를 참조하십시오.

REVERSE_ENVELOPE 옵션은 주소 역방향이 메일 헤더 주소뿐만 아니라 봉투의 From 주소에 적용되는지 여부를 제어합니다.

구체적인 효과에 대해서는 Sun Java System Messaging Server Administration Reference에서 이러한 옵션과 키워드에 대한 자세한 설명을 참조하십시오.

일반 역방향 매핑 예

다음 예는 일반 REVERSE 매핑을 보여 줍니다. 여기서는 siroe.com의 내부 주소가 user@mailhost.siroe.com 형식을 갖는 것으로 가정합니다. 그러나 아이디 공간은 user@host1.siroe.comuser@host2.siroe.comsiroe.com의 모든 호스트에 대해 동일한 사용자를 지정하는 것으로 간주됩니다. 다음 REVERSE 매핑은 주소 역방향 데이터베이스와 함께 사용될 수 있습니다.

REVERSE

   *@*.siroe.com        $0@siroe.com$Y$D
            

이 예에서 name@anyhost.siroe.com 형식의 주소는 name@siroe.com으로 변경됩니다. $D 메타 문자는 주소 역방향 데이터베이스를 참조하도록 합니다. 주소 역방향 데이터베이스는 다음 형식의 항목을 포함해야 합니다.

user@mailhost.siroe.com     first.last@siroe.com

            

채널 특정 역방향 매핑 예

기본적으로 주소 역방향 데이터베이스는 라우팅 가능성 범위가 메일 서버 도메인으로 설정된 경우에 사용됩니다. 채널 특정 REVERSE 매핑 테이블 항목의 예는 다음과 같습니다.

REVERSE

   tcp_*|tcp_local|binky@macho.siroe.com    $D$YRebecca.Woods@siroe.com
            

이 항목은 tcp_local의 대상 채널에서 나가는 tcp_* 소스 채널을 가진 모든 메일에 대해 binky@macho.siroe.com 형식의 주소를 Rebecca.Woods@siroe.com으로 변경하도록 MTA에 지시합니다.


주 –

채널 특정 역방향 매핑을 사용하려면 option.dat에서 USE_REVERSE_DATABASE 옵션을 13(기본값=3)으로 설정해야 합니다.


정방향 조회 테이블 및 FORWARD 주소 매핑

주소 역방향은 봉투의 To: 주소에 적용되지 않습니다. 이는 메일이 메일 시스템을 통과할 때 봉투의 To: 주소가 계속해서 재작성 및 수정된다는 확실한 이유가 있기 때문입니다. 라우팅의 전체 목표는 봉투의 To: 주소를 점차적으로 시스템 및 메일함 특정 형식으로 변환하는 것입니다. 주소 역방향의 정형화 기능은 전반적으로 봉투의 To: 주소에 적용되지

어떠한 경우든 MTA에서 풍부한 기능을 사용하여 봉투의 To: 주소에 적용되지 별칭 파일, 별칭 데이터베이스 및 일반 조회 테이블이 바로 이 기능을 정확하게 제공합니다.

MTA에서는 또한 패턴 기반 전달, 소스 고유 전달 또는 주소 자동 등록과 같은 특수한 전달 목적에 사용되는 정방향 조회 테이블과 FORWARD 매핑을 사용할 수 있습니다. 정방향 조회 테이블과 FORWARD 매핑은 주로 특수한 종류의 주소 전달에 사용하도록 되어 있다는 점을 유의하십시오. 즉, 대부분의 주소 전달은 MTA의 다른 전달 기법 중 하나를 사용할 때 더 효율적으로 수행됩니다.

봉투의 To: 주소에 대한 다양한 대체 기법은 역방향 조회 테이블과 동일한 기능을 제공하지만 역방향 매핑과 동일한 기능에 대해서는 아직 언급된 것이 없습니다. 경우에 따라서는 봉투의 To: 주소에 대한 매핑 기능이 유용하고 바람직할 수 있습니다.

FORWARD 매핑 테이블

FORWARD 매핑 테이블은 패턴을 기반으로 하는 전달 기능을 제공하며 소스 고유 전달을 위한 기법도 제공합니다. FORWARD 매핑 테이블이 매핑 파일에 있으면 각 봉투의 To: 지시합니다. 이 매핑이 존재하지 않거나 매핑의 항목이 일치하지 않을 경우 변경이 수행되지 않습니다.

주소가 매핑 항목과 일치할 경우 매핑 결과가 테스트됩니다. 항목에 $Y가 지정될 경우 결과 문자열이 봉투의 To: 주소를 대체하며 $N이 지정될 경우 매핑 결과를 무시합니다. 추가 플래그 목록은 표 10–8을 참조하십시오.

표 10–8 FORWARD 매핑 테이블 플래그 설명

플래그 

설명 

$D 

다시 쓰기 프로세스를 통해 출력을 다시 실행합니다. 

$G 

정?항 조회 테이블을 통해 출력을 실행합니다(정방향 조회 테이블이 사용 가능하게 된 경우). 

$H 

추가 정방향 조회 테이블이나 FORWARD 매핑 조회를 사용 불가능하게 합니다. 

$I 

메일을 .HELD 파일로 보관합니다.

$N 

주소가 변경되지 않고 그대로 유지됩니다. 

$Y 

출력을 새 주소로 사용합니다. 

FORWARD 매핑(있을 경우)은 정방향 조회 테이블이 조회되기 전에 참조됩니다. FORWARD 매핑이 일치하고 플래그 $G가 있을 경우 정방향 조회 테이블에 대해 FORWARD 매핑의 결과가 검사됩니다(USE_FORWARD_DATABASE의 적절한 설정을 통해 정방향 조회 테이블이 사용 가능하게 된 경우). 채널 고유 정방향 조회 테이블 사용이 지정된 경우 정방향 조회 테이블에서 조회하기 전에 FORWARD 매핑의 결과에 소스 주소와 소스 채널이 접두어로 추가된다는 점을 유의하십시오. 일치하는 FORWARD 매핑 항목에 $D가 지정된 경우 FORWARD 매핑의 결과와 선택적 정방향 테이블 조회가 MTA 주소 다시 쓰기 프로세스를 통해 다시 실행됩니다. 일치하는 FORWARD 매핑 항목에 $H가 지정된 경우 $D 사용으로 인해 발생하는 후속 주소 다시 쓰기 프로세스 동안에 추가 FORWARD 매핑이나 데이터베이스 조회가 수행되지 않습니다.

아래 예는 복잡한 REVERSEFORWARD 매핑의 사용을 보여 줍니다. 여기에서는 mr_local 채널과 연관된 am.sigurd.innosoft.com이라는 시스템 또는 의사 도메인이 일반적인 형식의 RFC 822 주소를 생성한다고 가정합니다.

"lastname, firstname"@am.sigurd.example.com

또는

"lastname,firstname"@am.sigurd.example.com

이러한 주소는 완전히 유효하지만 RFC 822 구문 규칙을 완벽하게 따르지 않는 전자 메일 프로그램(예: 인용된 주소를 제대로 처리하지 않은 전자 메일 프로그램)에서는 흔히 혼동을 일으킵니다. 결과적으로 인용이 필요하지 않는 주속 형식이 더 많은 전자 메일 프로그램에서 작동합니다. 이러한 형식 중 하나는 다음과 같습니다.

firstname.lastname@am.sigurd.example.com

복잡한 FORWARD 및 REVERSE 매핑 예

REVERSE

 *|mr_local|"*,$ *"@am.sigurd.example.com $Y"$1,$ $2"@am.sigurd.example.com
 *|mr_local|"*,*"@am.sigurd.example.com   $Y"$1,$ $2"@am.sigurd.example.com
 *|*|"*,$ *"@am.sigurd.example.com        $Y$3.$2@am.sigurd.example.com
 *|*|"*,*"@am.sigurd.example.com          $Y$3.$2@am.sigurd.example.com
 *|mr_local|*.*@am.sigurd.example.com     $Y"$2,$ $1"@am.sigurd.example.com
 *|*|*.*@am.sigurd.example.com            $Y$2.$3@am.sigurd.example.com

FORWARD

 "*,$ *"@am.sigurd.example.com            $Y"$0,$ $1"@am.sigurd.example.com
 "*,*"@am.sigurd.example.com              $Y"$0,$ $1"@am.sigurd.example.com
 *.*@am.sigurd.example.com                $Y"$1,$ $0"@am.sigurd.example.com

따라서 위 예에 나온 샘플 매핑 테이블은 (1) 이러한 세 개의 주소 형식을 모두 사용할 수 있도록 허용하고, (2) 원래 형식의 주소만 mr_local 채널에 제공하고 필요에 따라 형식을 변환하며, (3) 인용되지 않은 새 형식의 주소만 다른 모든 채널에 제공하고 필요에 따라 형식을 변환하는 세 가지 목적을 가집니다. (위의 REVERSE 매핑에서는 MTA 옵션 USE_REVERSE_DATABASE에 비트 3이 설정된 것으로 가정합니다.)

정방향 조회 테이블

주소 전달이 자동 등록되거나 소스별로 고유해야 할 경우 정방향 조회 테이블을 사용할 수 있습니다. 간단한 메일 전달에는 일반적으로 정방향 조회 테이블을 사용하는 것이 적합하지 않으며 aliases 파일 또는 별칭 조회 테이블이 이러한 전달을 수행하는 데 더 효율적인 방법이라는 점을 유의하십시오. 기본적으로 정방향 조회 테이블은 전혀 사용되지 않으므로 USE_FORWARD_DATABASE 옵션을 통해 명시적으로 사용 가능하게 해야 합니다. 정방향 테이블 조회는 주소 다시 쓰기 이후, 별칭 확장이 수행된 후, 그리고 임의의 FORWARD 매핑이 검사된 후에 수행됩니다. 정방향 테이블 조회에 성공할 경우 MTA 주소 다시 쓰기 프로세스를 통해 대체된 결과 주소가 다시 실행됩니다.

정방향 조회 테이블에는 메모리 내장 해시 테이블과 기본 데이터베이스의 두 가지 기법을 사용할 수 있습니다. 테이블의 크기가 너무 크지 않을 경우 해시 테이블이 권장됩니다(1,000은 너무 큰 것이 아니지만 100,000은 너무 크다고 할 수 있습니다). 해시 테이블은 use_text_database 옵션에서 비트 3(값 34)을 설정하고 use_forward_database를 설정하여 활성화합니다. 해시 테이블은 msg_svr_base/configure/forward.txt에서 읽어오고 구성의 재로드 가능 부분으로 컴파일되며 imsimta reload 명령에 의해 강제로 활성 MTA 프로세스로 재로드될 수 있습니다.

정방향 데이터베이스는 소스 텍스트 파일에서 crdb 유틸리티를 사용하여 만든 MTA crdb 데이터베이스입니다. 소스 텍스트 파일의 형식은 기본적으로 다음과 같습니다.


user1@domain1 changedmailbox1@changeddomain1
user2@domain2 changedmailbox@changeddomain2

그러나 USE_FORWARD_DATABASE 옵션의 비트 3을 설정하여 정방향 데이터베이스의 소스별 사용을 가능하게 한 경우 소스 텍스트 파일 형식은 다음과 같습니다.

source-channel|source-address|original-address changed-address

예를 들어, 다음과 같은 항목은


tcp_limited|bob@blue.com|helen@red.com  “helen of troy”@siroe.com

bob@blue.com에서 메일이 오고 대기열을 넣는 채널이 tcp_limited인 경우에만 To: 주소 helen@red.com을 “helen of troy”@siroe.com에 매핑합니다.