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

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

받는 메일이 메일함 대신 프로그램에 전달되게 할 수 있습니다. 예를 들어, 사용자는 받는 메일을 메일 정렬 프로그램으로 보내기를 원할 수 있습니다. 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