Sun Java System Messaging Server 6.3 관리 설명서

15.7 SRS(Sender Rewriting Scheme)를 사용하여 SPF에서 전달된 메일 처리

위에서 설명한 대로, SPF는 메일 FROM:(봉투의 From) 주소에서 도메인과 연결된 특수 TXT 레코드를 조회하여 전자 메일 위조를 방지하는 기법입니다. 실제로는 여러 DNS 조회가 수행될 수 있는 이 작업은 결과적으로 도메인으로부터 메일을 보낼 수 있는 권한이 부여된 IP 주소의 목록을 만듭니다. 이 목록에 대해 SMTP 클라이언트의 IP 주소를 검사하며, 해당 IP 주소가 발견되지 않으면 메시지가 사기로 간주될 수 있습니다. SPF 지원은 Messaging Server 버전 6.3에서 구현되었습니다.

SPF는 메일 전달 서비스를 제공하는 사이트(예: 졸업생에게 서비스를 제공하는 대학교 또는 회원들에게 서비스를 제공하는 전문 기관)에서 심각한 문제가 됩니다. 전달자는 임의의 발송자로부터 온 메일을 보내게 됩니다. 이 발송자에는 SPF 정책을 구현한 발송자와 전달 시스템의 IP 주소를 도메인의 주소를 사용하도록 허용된 주소로 나열하지 않은 발송자도 포함될 수 있습니다.

SRS(Sender Rewriting Scheme)는 이 문제에 대한 해결책을 제시합니다. SRS는 전달자의 도메인을 사용하여 원래 보낸 사람의 주소를 새 주소로 캡슐화하여 작동합니다. 전달자 자체의 도메인만 SPF 검사를 위해 공개됩니다. 이 주소를 사용할 경우 메일(일반적으로 알림)을 전달자에게 라우팅하며, 전달자는 주소 캡슐화를 제거한 다음 실제 대상에게 메시지를 보냅니다.

물론 주소 캡슐화가 완전히 새로운 개념은 아닙니다. 소스 경로가 RFC 822에 정의되었으며, 백분율 핵 라우팅 및 뱅 경로와 마찬가지로 이러한 기능을 제공합니다. 그러나 이러한 기법 사용을 허용하면 시스템이 열린 중계가 되므로 지금의 인터넷 환경에서는 문제가 될 수 있습니다.

SRS는 캡슐화 형식에 키가 지정된 해시와 타임스탬프를 추가하여 이 문제를 처리합니다. 이 주소는 일정한 기간 동안만 유효하며, 그 기간 이후에는 사용할 수 없습니다. 해시는 타임스탬프나 캡슐화된 주소가 수정되는 것을 방지합니다.

또한 SRS는 주소 길이를 지나치게 늘리지 않으면서 멀티홉 전달을 처리하는 기법을 제공합니다. 그러기 위해서는 SRS 주소 형식 지정 중 일부가 SRS를 구현하는 모든 시스템에서 동일한 방식으로 수행되어야 합니다.

SRS 지원은 6.3P1 릴리스에 대해 구현되었습니다. 다음 MTA 옵션이 추가되었습니다.

이 옵션만 설정하면 SRS 주소 디코딩이 가능해집니다. 인코딩은 또 다른 문제로서, 전달 작업과 연관된 봉투 From: 주소에 인코딩되어야 합니다. SRS 인코딩은 여섯 개의 새로운 채널 키워드, 즉 addresssrs, noaddresssrs, destinationsrs, nodestinationsrs, sourcesrsnosourcesrs에 의해 제어됩니다.

SRS 인코딩이 수행되려면 세 가지 조건이 충족되어야 합니다.

(1) 현재 소스 채널이 sourcesrs로 표시되어야 합니다. (nosourcesrs가 기본값임).

(2) 현재 대상 채널이 destinationsrs로 표시되어야 합니다(nodestinationsrs가 기본값임).

(3) 현재 주소는 다시 쓰여질 경우 addresssrs로 표시된 채널과 일치해야 합니다(noaddress가 기본값임).

이 조건이 모두 충족될 경우에만 인코딩이 이루어집니다. 가장 단순한 설정은 모든 메시지가 tcp_local 채널에서 들어오고 나가고 로컬이 아닌 주소는 모두 SRS 처리가 필요한 순수 전달 설정입니다. 그러한 설정에서는 tcp_local이 세 키워드, 즉 sourcesrs, destinationsrsaddresssrs로 표시됩니다.

마지막으로, imsimta test -rewrite는 어떤 주소가 입력되든지 SRS 인코딩 및 디코딩 결과를 표시하도록 향상되었습니다. 예를 들어, foo@example.com이라는 주소는 다음과 유사한 출력을 생성할 수 있습니다.

SRS encoding = SRS0=dnG=IS=example.com=foo@example.org

이 인코딩된 주소를 다시 쓰면 다음과 같은 출력을 생성합니다.

SRS decoding = foo@example.com

또한 imsimta test -rewrite는 SRS 디코딩 중에 발생하는 모든 오류를 표시합니다.