Messaging Server에는 유효한 DNS 이름을 가진 주소에서 전송된 메일만 전달되도록 하는 여러 방법이 있습니다. 가장 간단한 방법은 tcp_local 채널에 mailfromdnsverify 채널 키워드를 지정하는 것입니다.
Messaging Server는 ORIG_MAIL_ACCESS에서 다음 규칙을 사용하여 유효한 DNS 이름을 가진 주소에서 전송된 메일만 전달되도록 하는 dns_verify 프로그램도 제공합니다.
ORIG_MAIL_ACCESS TCP|*|*|*|*|SMTP*|MAIL|*|*@*|*|* \ $[msg-svr-base/lib/dns_verify.so, \ dns_verify,$7|$$y|$$NInvalid$ host:$ $$7$ -$ %e]
위 예에서 줄 바꿈은 이러한 매핑 항목에서 구문적으로 매우 중요합니다. 다음 행으로 진행하려면 백슬래시 문자를 사용해야 합니다.
또한 dns_verify 이미지를 사용하여 받는 연결을 RBL(Realtime Blackhole List), MAPS(Mail Abuse Prevention System), DUL(Dial-up User List) 또는 ORBS(Open Relay Behavior-modification System) 목록 등에 대해 검사하여 UBE로부터 보호할 수 있습니다. 새 mailfromdnsverify 키워드와 마찬가지로 dns_verify 콜아웃을 수행하는 대신 “보다 간단한 구성” 방법으로 이러한 검사를 수행할 수도 있습니다. 보다 간단한 방법은 dispatcher.cnf 파일에 DNS_VERIFY_DOMAIN 옵션을 사용하는 것입니다. 예를 들어, [SERVICE=SMTP] 섹션에서 검사하려는 다양한 목록에 대한 옵션의 인스턴스를 설정합니다.
[SERVICE=SMTP] PORT=25 ! ...rest of normal options... DNS_VERIFY_DOMAIN=sbl-xbl.spamhaus.org. DNS_VERIFY_DOMAIN=list.dsbl.org. ...etc... |
이 경우 메시지는 SMTP 수준에서 거부됩니다. 즉 메시지는 SMTP 대화 도중 거부되므로 MTA로 전송되지 않습니다. 이 방법의 단점은 내부 사용자가 보낸 메시지를 포함하여 모든 받는 SMTP 메시지를 검사한다는 것입니다. 따라서 효율성이 떨어지며 인터넷 연결이 중지되면 문제가 발생할 수 있습니다. 그 대안은 PORT_ACCESS 매핑 테이블 또는 ORIG_MAIL_ACCESS 매핑 테이블로부터 dns_verify를 호출하는 것입니다. PORT_ACCESS 매핑 테이블에는 로컬 내부 IP 주소나 메시지 전송자를 검사하지 않는 초기 항목과 다른 모든 사용자에 대해 원하는 검사를 수행하는 후기 항목을 지정할 수 있습니다. 또는 ORIG_MAIL_ACCESS 매핑 테이블에서 tcp_local 채널로 받는 메시지에만 검사를 적용하려는 경우에는 내부 시스템/클라이언트로부터 받는 메시지에 대해 해당 검사를 건너뛸 수 있습니다. dns_verify를 가리키는 항목을 사용하는 예는 다음과 같습니다.
PORT_ACCESS ! Allow internal connections in unconditionally *|*|*|*|* $C$|INTERNAL_IP;$3|$Y$E ! Check other connections against RBL list TCP|*|25|*|* \ $C$[msg-svr-base/lib/dns_verify.so,\ dns_verify_domain_port,$1,sbl-xbl.spamhaus.org.]EXTERNAL$E ORIG_MAIL_ACCESS TCP|*|25|*|*|SMTP*|*|tcp_local|*@*|*|* \ $C$[msg-svr-base/lib/dns_verify.so,\ dns_verify_domain,$1,sbl-xbl.spamhaus.org.]$E
dns_verify 프로그램은 원치 않는 대량 전자 메일을 보낼 수 있는 받는 SMTP 연결을 확인하는 데 사용되는 DNS 기반 데이터베이스를 지원합니다. 공개적으로 사용 가능한 DNS 데이터베이스 중 일부는 일반적으로 이러한 용도로 사용되는 TXT 레코드를 포함하지 않을 수 있습니다. 대신 A 레코드만 포함합니다.
일반 설정에서 특정 IP 주소에 대한 DNS의 TXT 레코드에는 메시지를 거부할 때 SMTP 클라이언트로 반환하기에 적합한 오류 메시지가 포함되어 있습니다. 하지만 TXT 레코드가 없고 A 레코드가 있는 경우 Messaging Server 5.2 이전의 dns_verify 버전에서는 "No error text available"이라는 메시지를 반환했습니다.
이제 dns_verify에서는 사용 가능한 TXT 레코드가 없는 경우에 사용되는 기본 텍스트를 지정하는 옵션을 제공합니다. 예를 들어, 다음 PORT_ACCESS 매핑 테이블에서는 이 옵션을 사용하는 방법을 보여 줍니다.
PORT_ACCESS *|*|*|*|* $C$|INTERNAL_IP;$3|$Y$E \ TCP|*|25|*|* \ $C$[<msg-svr-base/lib/dns_verify.so \ ,dns_verify_domain_port,$1,dnsblock.siroe.com,Your$ host$ ($1)$ \ found$ on$ dnsblock$ list]$E * $YEXTERNAL
이 예에서 원격 시스템이 dnsblock.siroe.com 도메인의 쿼리에 있지만 TXT 레코드를 사용할 수 없는 경우에는 “Your host a.b.c.d found on dnsblock list.”