현재 저는 웹 애플리케이션을 개발 중이며 사용자가 이를 통해 이메일을 작성할 수 있는 웹 양식을 만들고 싶었습니다. 따라서 그들은 이메일 주소와 메시지를 설정해야 하며 "제출"을 클릭한 후 내 웹 애플리케이션은 헤더에 있는 이메일 주소를 사용하여 수신자에게 이메일을 보냅니다 FROM
. 물론 전송 프로세스는 내 웹사이트 방문자가 이메일 서버에 액세스할 수 없기 때문에 내 자체 SMTP 서비스를 사용하여 수행됩니다.
이제 해당 이메일은 수신자의 서버에서 거부될 가능성이 높기 때문에 이것이 아마도 나쁜 생각이라고 들었습니다. 그러나 나는 그 이유와 이 프로세스가 어떻게 작동하는지 아직 완전히 이해하지 못합니다. 나는 오늘날 이메일에 가장 많이 사용되는 두 가지 스팸 방지 및 스푸핑 기술이 다음과 같다는 것을 알게 되었습니다.디킴그리고SPF.
따라서 이메일이 정확히 거부되는 이유와 DKIM/SPF가 여기서 어떻게 도움이 되는지 알고 싶습니다.
이제 SPF부터 시작해 보겠습니다.
내가 아는 한, 수신자의 서버는 헤더의 도메인 MAIL_FROM
과 DNS 시스템을 사용하여 메일을 보낼 수 있는 IP 주소를 확인합니다. 이제 위의 예에서 헤더가 예를 들어 (내 웹 사이트 방문자가 설정한 주소) FROM
설정된 웹 애플리케이션에서 이메일을 보낼 때 헤더에 영향을 주지 않아야 합니다(?). 이메일은 내 이메일 서비스를 통해 전송되기 때문에 헤더에는 내 도메인이 포함되며 내가 이해하는 한 SPF를 통과하여 메일을 보내는 것이 가능해야 합니다.[email protected]
MAIL_FROM
MAIL_FROM
또 다른 스팸 방지 기술은 DKIM입니다.
이메일에 서명하면 수신자 서버는 DNS에서 서명을 확인하기 위한 올바른 공개 키를 찾습니다. 여기서는 그것이 정확히 어떻게 수행되었는지 잘 모르겠습니다. FROM
헤더가 서명의 일부라는 것은 알고 있지만 수신자 서버는 DKIM을 어떻게 확인합니까? 헤더에서 DNS를 다시 찾고 있나요 MAIL_FROM
? 그렇다면 위의 예를 사용하여 DKIM을 통과할 수도 있습니다. 그렇죠? 아니면 도메인이 있고 동일 MAIL_FROM
합니까 FROM
? 나는 길을 잃었습니다.
이제 제가 이해한 바에 따르면 DKIM과 SPF는 모두 내 웹 애플리케이션에 문제가 되지 않아야 합니다. 그런데 왜 그것이 나쁜 생각이고 이메일이 거부될 가능성이 높다고 말하는 이유는 무엇입니까? 아니면 제가 DKIM을 제대로 이해하지 못한 걸까요?
내 전반적인 질문: 수신자 서버는 이메일 거부 여부를 정확히 어떻게 결정합니까?
답변1
확신할 수 있는 방법은 없습니다. MX 관리자가 무엇이 잘못되었는지 알려주지 않는 한 추측만 할 수 있습니다.
메시지 거부는 메시지 내부, 전송 또는 인터넷 어디에서나 다음을 포함하여 발견된 모든 정보를 기반으로 할 수 있습니다.
- MTA IP 주소/서브넷
- MTA rDNS 및 FCrDNS
- rDNS 또는 HELO의 MTA FQDN
- MTA의 DNSBL 목록
- 인터넷에서 사용할 수 있는 MTA FQDN 또는 보낸 사람 도메인에 대한 기타 정보
- 이전 연결 및 실패 기록
- MAIL FROM 주소 또는 도메인
- 헤더 FROM 주소 또는 도메인
- SPF, DKIM, DMARC와 같은 인증 방법
- 메일 제목이나 본문의 키워드나 순서
- 메일 본문과 헤더의 경험적 점수 매기기
활성 MX/MTA 설정을 가볍게 수행해서는 안 됩니다. 상당하고 지속적인 스팸으로 인해 준수해야 할 관행이 많이 있습니다. 그렇지 않으면 거부당하거나 스팸 더미에 쌓이게 됩니다. 가장 쉬운 방법은 ISP의 서버를 스마트호스트로 사용하는 것입니다. 먼저 ISP의 정책을 확인해야 합니다.
또한 권한이 부여되지 않은 경우 시스템에서 "외국인" 발신자 도메인을 사용할 수 없습니다. 보낸 사람 주소를 위조하면 즉시 악성 스패머 코너에 들어갈 수 있습니다. 또한 사용자가 등록 시 또는 다른 시점에 제출하는 내용을 단순히 신뢰할 수는 없습니다. 이메일 주소를 확인하지 않으면 단 몇 시간 후에 서비스가 악용될 수 있습니다.