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

SMTP 명령 및 프로토콜 지원

SMTP 채널이 EHLO, ETRN, EXPN, VRFY 등과 같은 특정 SMTP 명령을 지원하는지 여부를 지정할 수 있습니다. 또한, 채널이 DNS 도메인 확인을 지원하는지 여부, 채널에서 행 종결 기호로 사용되는 문자 등을 지정할 수 있습니다. 이 절은 다음 내용으로 구성되어 있습니다.

표 12–21은 이 절에서 설명하는 키워드를 요약해서 보여 줍니다.

표 12–21 SMTP 명령 및 프로토콜 키워드

채널 키워드 

설명 

프로토콜 선택 및 행 종결 기호

채널이 SMTP 프로토콜을 지원하는지 여부를 지정하고 행 종결 기호로 사용되는 문자 시퀀스를 지정합니다.

smtp

SMTP 프로토콜을 지원합니다. smtp 키워드는 모든 SMTP 채널에 필수입니다(이 키워드는 smtp_crorlf와 동일함).

nosmtp

SMTP 프로토콜을 지원하지 않습니다. 기본값입니다. 

smtp_cr

후행 줄 바꿈(LF) 없이 캐리지 리턴(CR)을 사용하여 행을 종료합니다. 

smtp_crlf

행을 캐리지 리턴(CR) 줄 바꿈(LF) 시퀀스로 종료해야 합니다.  

smtp_lf

선행 CR 없이 줄 바꿈(LF)을 사용하여 행을 종료합니다. 

smtp_crorlf

행을 캐리지 리턴(CR), 줄 바꿈(LF) 시퀀스 또는 전체 CRLF를 사용하여 종료해야 합니다. 

EHLO 키워드

채널에서 EHLO 명령을 처리하는 방법을 지정합니다.

ehlo

초기 연결에 SMTP EHLO 명령을 사용합니다. 

checkehlo

SMTP 응답 배너를 검사하여 EHLO 또는 HELO 중 어떤 것을 사용할지 여부를 결정합니다. 

noehlo

EHLO 명령을 사용하지 않습니다. 

ETRN 키워드

채널에서 ETRN 명령(대기열 처리 요청)을 처리하는 방법을 지정합니다.

allowetrn

ETRN 명령을 수락합니다. 

blocketrn

ETRN 명령을 차단합니다. 

domainetrn

도메인을 지정하는 ETRN 명령만 수락합니다. 

silentetrn

채널 정보를 반향하지 않고 ETRN 명령을 수락합니다. 

sendetrn

ETRN 명령을 보냅니다. 

nosendetrn

ETRN 명령을 보내지 않습니다. 

VRFY 키워드

채널에서 VRFY 명령을 처리하는 방법을 지정합니다.

domainvrfy

전체 주소를 사용하여 VRFY 명령을 실행합니다. 

localvrfy

로컬 주소를 사용하여 VRFY 명령을 실행합니다. 

novrfy

VRFY 명령을 실행하지 않습니다. 

vrfyallow

VRFY 명령에 대한 정보 응답을 제공합니다. 

vrfydefault

채널의 HIDE_VERIFY 옵션 설정에 따라 VRFY 명령에 대한 기본 응답을 제공합니다. 

vrfyhide

SMTP VRFY 명령에 대한 위장 응답을 제공합니다. 

EXPN 키워드

채널에서 EXPN 키워드를 처리하는 방법을 지정합니다.  

expnallow

DISABLE_EXPAND SMTP 채널 옵션을 사용하여 SMTP 서버 수준에서 사용 불가능으로 설정했더라도 EXPN을 허용합니다.

expndisable

EXPN을 무조건적으로 사용 불가능하게 합니다.

expndefault

SMTP 서버에 사용하도록 설정된 경우 EXPN을 허용합니다. 기본값입니다.

DNS 도메인 확인

채널에서 DNS 도메인 확인을 수행하는지 여부를 지정합니다.

mailfromdnsverify

MAIL FROM: 명령에 사용된 도메인이 DNS에 있는지 여부를 확인합니다.

nomailfromdnsverify

MAIL FROM: 명령에 사용된 도메인이 DNS에 있는지 여부를 확인하지 않습니다.

문자 세트 및 8비트 데이터

채널에서 8비트 데이터를 처리하는 방법을 지정합니다. (주:이러한 키워드는 일반적으로 SMTP 채널에서 사용되지만 모든 종류의 채널과 관련될 수 있습니다.)

charset7

7비트 텍스트 메일과 관련된 기본 문자 세트입니다. 

charset8

8비트 텍스트 메일과 관련된 기본 문자 세트입니다. 

charsetesc

이스케이프 문자를 포함하는 7비트 텍스트 메일과 관련된 기본 문자 세트입니다.  

eightbit

채널에서 8비트 문자를 지원합니다. 

eightnegotiate

채널에서 가능할 경우 8비트 전송 사용을 협상합니다. 

eightstrict

채널은 잘못된 8비트 데이터를 포함하는 메일을 거부해야 합니다.  

sevenbit

채널에서 8비트 문자를 지원하지 않으므로 8비트 문자를 인코딩해야 합니다. 

프로토콜 스트리밍

사용할 채널에 대한 프로토콜 스트리밍 범위를 지정합니다.

streaming

채널에 연결된 프로토콜에 사용되는 프로토콜 스트리밍의 범위를 제어합니다. 

채널 프로토콜 선택 및 행 종결 기호

키워드: smtp, nosmtp, smtp_crlf , smtp_cr, smtp_crorlf, smtp_lf

smtpnosmtp 채널이 SMTP 프로토콜을 지원하는지 여부를 지정합니다. smtp 키워드 또는 이 키워드의 변형 중 하나가 모든 SMTP 채널에 필수입니다.

smtp_crlf, smtp_cr, smtp_crorlfsmtp_lf 키워드는 SMTP에서 MTA가 행 종결 기호로 사용하는 문자 시퀀스를 지정하는 데 사용될 수 있습니다. smtp_crlf 키워드는 행을 캐리지 리턴(CR) 줄 바꿈(LF) 시퀀스로 종료해야 함을 의미합니다. smtp_lf 또는 smtp 키워드는 선행 CR 없이 LF를 사용할 수 있음을 의미합니다. 마지막으로 smtp_cr은 후행 LF 없이 CR을 사용할 수 있음을 의미합니다. 이러한 옵션은 받는 메일의 처리에만 영향을 미칩니다.

SMTP 표준은 행 종결 기호로 CRLF를 필요로 하기 때문에 MTA는 항상 표준 CRLF 시퀀스를 생성합니다. 여러 가지 smtp 키워드는 MTA에서 추가 비표준 행 종결 기호를 수락할지 여부만 제어합니다. 예를 들어, MTA가 적법한 SMTP 메일만 수락하고 비표준행 종결 기호가 있는 메일을 거부하게 하려면 smtp_crlf를 지정할 수 있습니다.

EHLO 명령 지원

키워드: ehlo, noehlo, checkehlo

추가 명령 협상을 허용하도록 SMTP 프로토콜이 확장되었습니다(RFC 1869). 이를 위해 RFC 821의 HELO 명령을 대체하는 새 EHLO 명령이 사용됩니다. 확장 SMTP 서버는 지원하는 확장 목록을 제공하여 EHLO에 응답합니다. 확장되지 않은 서버가 알 수 없는 명령 오류를 반환하면 클라이언트는 이전의 HELO 명령을 대신 보냅니다.

이 폴백 전략은 일반적으로 확장된 서버와 확장되지 않은 서버 모두에 잘 적용됩니다. 그러나 RFC 821에 따라 SMTP를 구현하지 않은 서버에서는 문제가 발생할 수 있습니다. 특히, 일부 비호환 서버에서는 알 수 없는 명령을 수신할 경우 연결을 끊는 것으로 알려져 있습니다.

SMTP 클라이언트는 서버에서 EHLO를 수신할 때 연결을 끊는 경우 다시 연결한 다음 HELO를 사용하는 전략을 구현합니다. 원격 서버에서 EHLO를 수신할 때 연결을 끊고 문제 상태로 전환하는 경우에는 이 전략을 적용할 수 없습니다.

그런 상황에 대처하도록 ehlo, noehlocheckehlo 채널 키워드가 제공됩니다. ehlo 키워드는 모든 초기 연결 시도에서 EHLO 명령을 사용하도록 MTA에 지시합니다. noehlo 키워드는 모든 EHLO 명령 사용을 비활성화합니다. checkehlo 키워드는 문자열 “ESMTP”에 대해 원격 SMTP 서버가 반환하는 응답 배너를 테스트합니다. 이 문자열이 있는 경우 EHLO가 사용되고, 없는 경우 HELO가 사용됩니다. 기본 동작은 모든 초기 연결 시도에서 EHLO를 사용하는 것입니다. 배너 행에 문자열 “fire away”가 없는 경우에는 HELO가 사용됩니다. ehlocheckehlo 키워드로부터 발생되는 동작 사이에 위치하는 이 기본 동작에 해당하는 키워드가 없습니다.

ETRN 명령 지원

키워드: allowetrn, blocketrn, disableetrn, domainetrn, silentetrn, sendetrn, nosendetrn, novrfy

RFC 1985에 정의되어 있는 ETRN 명령은 SMTP 클라이언트와 서버가 상호 작용하여 서버에서 지정된 호스트로 보낼 메일 대기열 처리를 시작할 수 있도록 SMTP 서비스를 확장합니다.

SMTP 클라이언트는 ETRN을 사용하여 원격 SMTP 서버에서 SMTP 클라이언트에 보낼 메일 대기열의 처리를 시작하도록 요청할 수 있습니다. 즉, ETRN을 사용하면 원격 SMTP 시스템에서 수신하는 메일에 대해 원격 SMTP 시스템 “폴링”을 구현할 수 있습니다. 이 방법은 서로 일시적으로만 연결하는 시스템에 유용할 수 있습니다. 예를 들어, 전화 접속을 통해서만 인터넷에 연결하는 다른 사이트에 대해 보조 MX(Mail eXchange) 호스트로 설정되는 사이트가 있습니다. 이 명령을 사용하여 원격 전화 접속 서버의 메일 전달 요청을 허용합니다.

SMTP 클라이언트는 SMTP ETRN 명령줄에서 메일을 보낼 시스템의 이름(일반적으로 SMTP 클라이언트 시스템 자체 이름)을 지정합니다. 원격 SMTP 서버가 ETRN 명령을 지원하는 경우 해당 서버는 개별 프로세스를 트리거하여 명명된 시스템에 다시 연결하고 해당 명명된 시스템에 대해 전달 대기 중인 메일을 보냅니다.

ETRN 명령에 대한 응답

allowetrn, blocketrn, domainetrnsilentetrn 키워드는 보내는 SMTP 클라이언트가 MTA에 MTA 대기열의 메일을 전달하도록 요청하는 ETRN 명령을 실행할 때 MTA 응답을 제어합니다.

기본적으로 MTA는 모든 ETRN 명령을 수락하려고 시도합니다. 즉, allowetrn 키워드가 사용됩니다. 채널 정의에 blocketrn 키워드를 포함하여 MTA에서 ETRN 명령을 수락하지 않도록 지정할 수 있습니다.

silentetrn 키워드를 포함하여 도메인과 일치하고 MTA에서 실행할 채널의 이름을 반향하지 않고 모든 ETRN 명령을 수락하도록 지정할 수 있습니다. domainetrn 키워드는 MTA가 도메인을 지정하는 ETRN 명령만 사용하도록 지정합니다. 또한, 도메인과 일치하고 MTA에서 실행할 채널의 이름을 에코하지 않도록 지정합니다.

disableetrn은 ETRN 명령을 전혀 지원하지 않습니다. ETRN은 SMTP 서버에서 지원되는 명령으로 광고되지 않습니다.

ETRN 명령 보내기

sendetrnnosendetrn 채널 키워드는 MTA가 SMTP 연결을 시작할 때 ETRN 명령을 보내는지 여부를 제어합니다. 기본값은 nosendetrn이며 MTA가 ETRN 명령을 보내지 않음을 의미합니다. sendetrn 키워드는 원격 SMTP 서버가 ETRN을 지원할 경우 ETRN 명령을 보내도록 MTA에 지시합니다. sendetrn 키워드는 메일이 전달 시도를 받도록 요청하는 시스템 이름 앞에 입력해야 합니다.

VRFY 명령 지원

키워드: domainvrfy, localvrfy, vrfyallow, vrfydefault, vrfyhide

VRFY 명령을 사용하면 SMTP 클라이언트가 SMTP 서버에 특정 아이디에 대한 메일이 있는지 확인하라는 요청을 서버에 보낼 수 있습니다. VRFY 명령은 RFC 821에 정의되어 있습니다.

서버는 사용자가 로컬 사용자인지 여부, 메일 전달 여부 등을 나타내는 응답을 보냅니다. 250 응답은 아이디가 로컬임을 나타내고, 251 응답은 아이디가 로컬이 아니지만 서버가 메일을 전달할 수 있음을 나타냅니다. 서버 응답에는 메일함 이름이 포함되어 있습니다.

VRFY 명령 보내기

정상적인 환경에서는 VRFY 명령을 SMTP 대화 상자의 일부로 실행할 이유가 없습니다. SMTP RCPT TO 명령은 VRFY 명령과 동일한 기능을 수행하고 해당 오류를 반환해야 합니다. RCPT TO에 주소를 받아들인 다음 나중에 바운스할 수 있는 서버가 존재하지만, 이러한 서버는 VRFY 명령의 일부로 보다 집중적인 검사를 수행합니다.

기본적으로 MTA는 VRFY 명령을 보내지 않습니다(novrfy 키워드 사용).

필요한 경우 채널 정의에 domainvrfy 또는 localvrfy 키워드를 포함하여 SMTP VRFY 명령을 실행하도록 MTA를 구성할 수 있습니다. domainvrfy 키워드는 전체 주소(user@host)를 인수로 갖는 VRFY 명령이 실행되게 합니다. localvrfy 키워드는 MTA에서 주소의 로컬 부분(user)만 사용하여 VRFY 명령이 실행되게 합니다.

VRFY 명령에 대한 응답

vrfyallow, vrfydefaultvrfyhide 키워드는 보내는 SMTP 클라이언트가 SMTP VRFY 명령을 실행할 때 SMTP 서버의 응답을 제어합니다.

vrfyallow 키워드는 자세한 정보 응답을 실행하도록 MTA에 지시합니다. vrfydefaultHIDE_VERIFY=1 채널 옵션이 지정되어 있지 않은 경우 자세한 정보 응답을 제공하도록 MTA에 지시합니다. vrfyhide 키워드는 모호한 응답만 생성하도록 MTA에 지시합니다. 이러한 키워드는 동일한 SMTP 서버를 통해 처리되는 모든 받는 TCP/IP 채널에 일반적으로 적용되는 HIDE_VERIFY 옵션과 달리 VRFY 응답을 채널 단위로 제어할 수 있습니다.

EXPN 지원

키워드: expnallow, expndisable, expndefault

expnallowDISABLE_EXPAND SMTP 채널 옵션을 사용하여 SMTP 서버 수준에서 사용 불가능으로 설정했더라도 EXPN을 허용합니다. expndisable은 EXPN을 무조건적으로 사용 불가능하게 합니다. expndefault는 SMTP 서버에 사용하도록 설정된 경우 EXPN을 허용합니다(기본값). 확장은 목록 단위로 비활성화할 수 있지만 서버 수준에서 비활성화하면 목록별 설정이 부적절하게 됩니다.

DNS 도메인 확인

키워드: mailfromdnsverify, nomailfromdnsverify

받는 TCP/IP 채널에서 mailfromdnsverify를 설정하면 MTA가 DNS의 항목이 SMTP MAIL FROM 명령에 사용된 도메인에 있는지 확인하여 해당 항목이 없는 경우 메일을 거부합니다. 기본값인 nomailfromdnsverify는 확인이 수행되지 않음을 의미합니다. 반송 주소 도메인에 대해 DNS 확인을 수행하면 일부 유효한 메일이 거부될 수 있습니다. 예를 들어, 도메인 이름을 아직 등록하지 않은 합법적인 사이트에서 또는 DNS에 잘못된 정보가 있는 경우 거부됩니다. 이는 RFC 1123, Requirements for Internet Hosts에 명시되어 있는 전자 메일 수락 및 전달에 있어 관대함을 요구하는 조항에 위반됩니다. 그러나 몇몇 사이트에서는 존재하지 않는 도메인으로부터 위조된 전자 메일 주소로 UBE(Unsolicited Bulk Email)를 받는 경우 그러한 검사를 수행할 수 있습니다.

COMORG 최상위 도메인에서 DNS 와일드카드 항목이 소개되어 mailfromdnsverify가 별로 유용하지 않게 되었기 때문에 mailfromdnsverify 코드가 수정되었습니다. DNS가 하나 이상의 A 레코드를 반환하면 이러한 값은 새 MTA 옵션 BLOCKED_MAIL_FROM_IPS에 지정된 도메인 리터럴과 비교됩니다. 일치하는 값이 발견되면 도메인은 유효하지 않은 것으로 간주됩니다. 올바른 동작을 복원하기 위한 현재의 올바른 설정은 다음과 같습니다.

BLOCKED_MAIL_FROM_IPS=[64.94.110.11]

이 옵션의 기본값은 빈 문자열입니다.

문자 세트 레이블링 및 8비트 데이터

키워드: charset7, charset8, charsetesc, sevenbit, eightbit, eightnegotiate, eightstrict

문자 세트 레이블링

MIME 사양은 일반 텍스트 메일에 사용되는 문자 세트를 레이블링하는 기법을 제공합니다. 특히 charset= 매개 변수를 Content-type:의 헤더 행으로 지정할 수 있습니다. US-ASCII(기본값), ISO-8859-1, ISO-8859-2 등을 포함하여 다양한 문자 세트 이름이 MIME에 정의되어 있습니다.

일부 기존 시스템과 사용자 에이전트는 이러한 문자 세트 레이블 생성을 위한 기법을 제공하지 않기 때문에 일반 텍스트 메일이 제대로 레이블링되지 않을 수 있습니다. charset7, charset8charsetesc 채널 키워드는 문자 세트 레이블링이 부족한 메일 헤더에 삽입할 문자 세트 이름을 지정할 수 있도록 채널 단위 기법을 제공합니다. 각 키워드에는 문자 세트 이름을 지정하는 단일 인수가 필요합니다. 이름의 유효성은 검사하지 않습니다. MTA 테이블 디렉토리에 있는 charsets.txt 문자 세트 정의 파일에 지정된 문자 세트에 대해서만 문자 세트 변환을 수행할 수 있습니다. 가능하면 이 파일에 정의된 이름을 사용해야 합니다.

charset7 문자 세트 이름은 메일에 7비트 문자만 포함되어 있는 경우에 사용되며, charset8 문자 세트 이름은 메일에 8비트 데이터가 있는 경우에 사용되고, charsetesc는 7비트 데이터만 포함하는 메일에 이스케이프 문자도 포함하게 되는 경우에 사용됩니다. 해당 키워드를 지정하지 않으면 Content-type: 헤더 행으로 어떤 문자 세트도 지정되지 않습니다.

또한, charset8 키워드는 8비트 문자는 무조건적으로 부적합한 메일 헤더에서 8비트 문자의 MIME 인코딩을 제어합니다. MTA는 일반적으로 charset8 값이 지정되어 있지 않은 경우 메일 헤더에 있는 (잘못된) 8비트 데이터를 UNKNOWN charset으로 레이블링하여 MIME 인코딩합니다.

이러한 문자 세트 사양은 기존 레이블을 대체하지 않습니다. 즉, 메일에 문자 세트 레이블이 이미 있거나 메일 유형이 텍스트가 아닌 경우에는 적용되지 않습니다. 이 문자 세트 사양은 MTA 로컬 채널을 다음과 같이 레이블링하는 데 적합합니다.


l ... charset7 US-ASCII charset8 ISO-8859-1 ...
hostname

메일에 Content-type 헤더가 없는 경우에 추가됩니다. 또한, 이 키워드는 MIME-version: 헤더 행을 추가합니다(없는 경우).

charsetesc 키워드는 이스케이프 문자를 포함하는 일본어 또는 한국어 문자 세트를 사용하는 레이블링되지 않은 메일을 받는 채널에서 특히 유용합니다.

8비트 데이터

일부 전송에서는 127(십진수)보다 더 큰 서수 값을 갖는 문자의 사용을 제한합니다. 일부 SMTP 서버는 높은 비트를 제거하기 때문에 이 8비트 범위에 속하는 문자를 사용하는 메일을 제대로 해석하지 못합니다.

Messaging Server는 문제가 있는 8비트 문자가 메일에 직접 표시되지 않도록 해당 메일을 자동으로 인코딩하는 기능을 제공합니다. 이 인코딩은 sevenbit 키워드를 지정하여 지정된 채널의 대기열에 포함된 모든 메일에 적용할 수 있습니다. 이러한 제한이 없는 경우 채널에 eightbit 표시를 해야 합니다.

“원격 SMTP 서버가 8비트를 허용하는 SMTP 확장을 지원한다고 명시하지 않은 경우” SMTP 프로토콜에서 8비트를 사용할 수 없습니다. 확장 SMTP와 같은 일부 전송에서는 8비트 문자를 전송할 수 있는지 확인할 수 있도록 협상을 지원하는 경우도 있습니다. 따라서 협상에 실패할 경우 eightnegotiate 키워드를 사용하여 메일을 인코딩하도록 채널에 지시하는 것이 좋습니다. 이 키워드는 모든 채널의 기본값입니다. 이 경우 협상을 지원하지 않는 채널에서는 8비트 데이터를 전송할 수 없는 것으로 간주합니다.

eightstrict 키워드는 협상되지 않은 8비트 데이터가 포함된 받는 메일을 거부하도록 Messaging Server에 지시합니다.

프로토콜 스트리밍

키워드: streaming

일부 메일 프로토콜에서는 스트리밍 작업을 지원합니다. 이것은 MTA가 한 번에 여러 작업에 대한 명령을 실행하고 각 작업에 대한 응답이 일괄적으로 도착할 때까지 기다릴 수 있음을 의미합니다. streaming 키워드는 채널과 연결된 프로토콜에서 사용되는 프로토콜 스트리밍의 범위를 제어합니다. 이 키워드에는 정수 매개 변수가 필요합니다. 매개 변수를 해석하는 방법은 사용 중인 프로토콜에 따라 다릅니다.

정상적인 환경에서는 SMTP 파이프라인 확장을 사용하여 사용 가능한 스트리밍 범위를 협상합니다. 따라서, 정상적인 환경에서는 이 키워드를 절대 사용하지 마십시오.

사용 가능한 스트리밍 값의 범위는 0부터 3까지입니다. 값 0은 스트리밍을 지정하지 않고, 값 1은 RCPT TO 명령 그룹을 스트리밍하고, 값 2는 MAIL FROM/RCPT TO를 스트리밍하고, 값 3은 HELO/MAIL FROM/RCPT TO 또는 RSET/MAIL FROM/RCPT TO 스트리밍을 사용합니다. 기본값은 0입니다.