가이드 · Mailgun API

제품 팀은 Mailgun API를 어떻게 안전하게 구현해야 하나요?

Mailgun API는 승인된 서버 워커 뒤에서 구현하세요. 정확한 발신 도메인을 검증하고, 사용할 수 있는 가장 좁은 API 자격 증명을 사용하고, 내구성 있는 내부 발송 작업을 만들고, 멀티파트 폼 데이터를 도메인 범위의 Messages 엔드포인트로 제출하세요. Mailgun이 반환한 메시지 식별자를 저장하고, 웹훅 요청은 처리하기 전에 인증하고, 이벤트를 중복 제거하고, 반송, 스팸 신고, 수신 거부를 발송 시점에 적용하세요. API 접수, Mailgun의 처리, 수신 서버로의 전달, 받은편지함 도달을 별개의 상태로 유지하세요.

Mailgun을 호출하기 전에 좁은 범위의 제품 작업 정의하기

계정 인증, 영수증, 보안 알림, 수신자가 요청한 알림처럼 승인된 제품 이벤트에서 시작하세요. 제공업체 자격 증명이나 임의의 메시지 폼을 브라우저와 모바일 클라이언트에 노출하지 말고, Mailgun을 신뢰할 수 있는 애플리케이션 서비스나 큐 워커 뒤에 두세요. 제공업체 필드를 만들기 전에 호출자, 테넌트, 발신 ID, 수신자, 메시지 유형, 템플릿을 승인하세요. 안정적인 이벤트 키, 테넌트, 템플릿 리비전, 승인된 주소, 초기 상태를 갖춘 내부 발신 레코드를 저장하세요. 이 레코드가 결정의 기준 시스템이며 Mailgun은 전송 의존성입니다. 비즈니스 의도를 제공업체 페이로드와 분리하면 재시도와 감사가 더 안전해지고 나중에 제공업체를 옮길 여지도 남습니다. 수신자 선호, 발송 제외 규칙, 평판 사고가 비공식적인 템플릿 관례로 흐려지지 않도록 트랜잭션 트래픽과 수신 동의에 의존하는 트래픽은 데이터 모델에서 구분해 두세요.

정확한 발신 도메인과 DNS 레코드 검증하기

조직이 통제하는 도메인을 추가하고, 검증, 인증, 추적, 그리고 실제로 선택한 수신 기능을 위해 Mailgun이 현재 제공하는 DNS 레코드를 게시하세요. DNS를 변경하기 전에 기존 SPF와 DMARC 레코드를 검토하세요. 한 호스트 이름에 두 번째 SPF 레코드를 만들거나 소유자와 상의 없이 조직의 DMARC 정책을 교체하지 마세요. 인접한 상위 도메인이 아니라 워크로드가 실제로 사용하는 From 및 서명 ID를 검증하세요. 소유권, 트래픽 분리, 마이그레이션 측면에서 필요하다면 용도별 서브도메인을 사용하세요. Mailgun이 검증 완료를 보고한 뒤에는 통제된 수신 메시지에서 보이는 From 주소, DKIM 서명 도메인, 반환 경로, 인증 결과, 답장 동작을 확인하세요. 제공업체의 검증은 자체 설정 확인이 통과했다는 증거일 뿐입니다. 수신자의 동의, 대상 서버의 수락, 발신자 평판, 받은편지함 도달을 증명하지는 않습니다. DNS 변경 이력과 롤백 방법은 제공업체 대시보드 밖에 보관하세요.

범위가 지정된 자격 증명과 올바른 리전 엔드포인트 사용하기

Mailgun은 API에 HTTP Basic 인증을 사용한다고 문서화하고 있으며, API 자격 증명은 권한과 용도에 따라 다릅니다. 발송 워커에는 승인된 도메인과 작업에 필요한 자격 증명만 주어야 합니다. 기본 계정 키, 도메인 발송 키, 웹훅 서명 자료, 하위 환경의 자격 증명을 서로 분리하세요. 시크릿은 관리형 시크릿 저장소에 직접 보관하고 필요로 하는 서버 프로세스에만 노출하세요. 자격 증명을 클라이언트 코드, 소스 관리, URL, 로그, 분석 도구, 템플릿, 티켓, 프롬프트에 절대 넣지 마세요. 모든 도메인이 같은 호스트를 쓴다고 가정하지 말고 계정 리전에 맞는 문서화된 API 기본 URL을 선택하세요. 동일한 범위의 대체 자격 증명을 만들고, 워커를 업데이트하고, 통제된 트래픽과 이벤트를 검증한 다음 이전 자격 증명을 폐기하는 방식으로 교체를 미리 연습하세요. 폐기, 잘못된 리전, 범위 변동, 노출의 신호일 수 있으므로 예상치 못한 인증 및 권한 실패에 대해 알림을 설정하세요.

내구성 있는 Messages API 요청 하나 만들기

Mailgun의 도메인 범위 Messages 엔드포인트는 발신자, 수신자, 제목, 텍스트 또는 HTML 내용, 그리고 템플릿, 첨부 파일, 헤더, 태그, 수신자 변수, 추적, 예약 발송 같은 문서화된 옵션에 대한 멀티파트 폼 필드를 받습니다. 제품에 필요한 일부만 노출하세요. 주소 문법과 테넌트 소유권을 검증하고, 수신자와 첨부 파일 수에 상한을 두고, 개행 인젝션을 거부하고, 타입이 지정된 변수로 승인된 템플릿을 렌더링하세요. 제공업체의 이벤트와 활동 화면은 메시지 내용과 별도로 메타데이터를 노출할 수 있으므로 태그, 사용자 정의 변수, 헤더에 시크릿이나 불필요한 개인 데이터를 넣지 마세요. 확보한 내부 작업에서 제출하고, Mailgun이 반환한 메시지 식별자를 정확한 시도와 함께 저장하세요. 제공업체 고유의 옵션 이름은 하나의 어댑터 안에 두세요. 비즈니스 코드는 모든 Mailgun 필드와 오류 형태를 알 필요 없이 접수됨, 거부됨, 불확실함이라는 좁은 결과만 받아야 합니다.

접수와 모호성을 중심으로 재시도 설계하기

재시도하기 전에 응답을 분류하세요. 잘못된 형식의 필드, 승인되지 않은 도메인, 잘못된 자격 증명, 권한 실패, 영구적인 정책 오류는 재전송하지 말고 고치세요. 재시도할 수 있는 전송 실패, 제공업체 서버 오류, 속도 제한된 요청은 지수 백오프, 지터, 유한한 시도 횟수, 큐 대기 시간 제한으로 재시도하세요. Mailgun의 접수 API 응답은 제공업체가 제출 요청을 처리하기 위해 받아들였다는 뜻이며, 대상 서버가 메시지를 수락했다는 것을 증명하지 않습니다. 워커가 응답을 놓쳤더라도 Mailgun이 요청을 접수했을 수 있으므로 클라이언트 타임아웃은 모호합니다. 그 작업을 알 수 없음 상태로 두고, 저장된 상관관계 데이터나 이후 이벤트를 검색하고, 다시 보내기 전에 의도적인 조정 규칙을 적용하세요. Mailgun 전송을 쓴다고 해서 안정적인 애플리케이션 이벤트 키, 단일 워커 확보, 시도 이력, 중복 위험 제어가 필요 없어지지는 않습니다. 자격 증명, 도메인, 템플릿, 테넌트, 대상 제공업체별로 반복되는 실패에 대해 알림을 설정하세요.

파싱하기 전에 웹훅 요청 인증하기

HTTPS 웹훅 엔드포인트를 구성하고 Mailgun의 서명 절차에서 사용하는 필드를 정확히 보존하세요. Mailgun은 웹훅 서명 키로 만든 타임스탬프, 토큰, 서명을 문서화하고 있습니다. 상수 시간 비교로 서명을 검증하고, 이벤트를 수락하기 전에 애플리케이션의 유효 기간을 벗어난 타임스탬프를 거부하세요. 재전송 방지를 위해 필요하다면 토큰이나 이벤트 식별자를 추적하세요. 웹훅 서명 키는 발송 자격 증명과 분리하고 검증된 절차로 교체하세요. 요청 크기를 제한하고, 본문이 파싱된다는 이유만으로 URL, 수신자, 태그, 이벤트 필드를 신뢰하지 마세요. 인증 후에는 성공을 반환하기 전에 이벤트를 내구성 있게 저장하거나 큐에 넣으세요. 그러면 프로세스가 중단되어 전송 증거가 사라지는 일을 막을 수 있습니다. 웹훅 검증은 설정된 시크릿 아래에서 출처와 무결성을 증명할 뿐이며, 애플리케이션이 도메인과 제공업체 메시지 식별자를 대조하기 전까지는 그 비즈니스 이벤트가 예상한 테넌트의 것임을 증명하지 않습니다.

웹훅 재시도와 중복 이벤트를 멱등하게 처리하기

Mailgun은 엔드포인트가 기대한 성공 응답을 반환하지 않을 때의 웹훅 재시도 동작을 문서화하고 있습니다. 수신자는 지연되거나 반복되는 전달을 가정해야 합니다. 안정적인 제공업체 이벤트 식별자가 있으면 그것으로, 없으면 서로 다른 수신자나 이벤트 유형을 합치지 않는 보수적인 복합 키로 중복을 제거하세요. 원래 발생 시각과 처리 시각을 별도로 보존하세요. 재시도가 순서가 뒤바뀌어 도착하더라도 오래된 접수 또는 전달 관찰이 이후의 영구 실패, 스팸 신고, 수신 거부를 지우지 않도록 상태 전이를 단조롭게 만드세요. 내구성 있게 저장한 뒤에만 성공을 반환하되, 비용이 큰 비즈니스 처리는 비동기로 유지해 엔드포인트의 신뢰성을 지키세요. 서명 실패, 응답 지연 시간, 재시도 볼륨, 이벤트 지연, 데드 레터 레코드를 모니터링하세요. 원본 제공업체 페이로드는 운영 및 정책상 필요한 기간에만, 접근을 제한하고 주소를 최소화해 보관하세요. 웹훅은 증거를 전달하는 피드이며, 테넌트 간에 수신자 이력을 노출해도 된다는 허락이 아닙니다.

전달을 과장하지 않고 Mailgun 이벤트 모델링하기

Mailgun은 접수(accepted), 전달(delivered), 일시적 및 영구적 실패, 열람(opened), 클릭(clicked), 수신 거부(unsubscribed), 스팸 신고(complained), 저장(stored) 및 관련 처리 결과에 대한 이벤트 유형을 문서화하고 있습니다. 제공업체의 이벤트 유형, 메시지 식별자, 수신자 범위, 타임스탬프, 심각도, 확인 가능한 SMTP 응답을 유지하면서 이 이름들을 내부 모델에 대응시키세요. Accepted는 Mailgun의 접수나 큐 진행 상태를 나타냅니다. Delivered는 문서화된 전달 관찰, 흔히 대상 서버의 수락을 나타내지만 최종 메일함 폴더를 알려 주지는 않습니다. 열람과 클릭은 반응 측정이며 전송의 증거가 아니고, 개인정보 보호 기술이 영향을 줄 수 있습니다. 일시적 실패는 전송 시스템 안에서 상한이 있는 재시도의 근거가 될 수 있지만, 영구 실패, 스팸 신고, 수신 거부는 이후의 어떤 애플리케이션 작업이 제출되기 전에 수신자 안전 상태를 갱신해야 합니다. 이벤트 원장은 추가만 가능하게 유지하고, 명시적인 규칙으로 사용자에게 보이는 상태를 도출해 지원팀이 증거와 해석을 구분할 수 있게 하세요.

발송 시점에 실패, 스팸 신고, 수신 거부 적용하기

Mailgun은 전달 실패, 스팸 신고, 수신 거부의 추적을 문서화하고 있습니다. 이 신호를 테넌트, 주소, 메시지 유형, 원본 이벤트, 사유, 유효 시각을 갖춘 제품 소유의 수신자 안전 모델로 수집하세요. 캠페인 목록을 가져올 때만이 아니라 매 발송 직전에 그 상태를 확인하세요. 영구 반송이나 스팸 신고가 발생하면 해당 범위에 대한 안전하지 않은 재시도를 멈춰야 합니다. 수신 거부 처리는 메시지 유형과 현재의 수신 측 또는 법적 요건을 존중해야 하며, 제공업체 옵션으로 습관적으로 우회해서는 안 됩니다. 수동 제거는 강력한 승인, 눈에 보이는 사유, 감사 이력으로 보호하세요. 제공업체의 발송 제외 데이터는 가치 있는 운영 증거이지만 완전한 수신 동의 원장은 아닙니다. 마이그레이션 때 수신자 보호가 사라지지 않도록 수신 동의 출처, 선호도, 제품에 필수적인 정책 결정, 이전 제공업체 이력을 별도로 보존하세요. 통제된 ID로 발송 제외 전파, 중복 스팸 신고, 지연된 반송, 예외적인 재활성화를 테스트하세요.

Mailgun 대안으로 SendHQ 고려

SendHQ는 검증된 도메인 발송, 수신 이메일, 전달 이벤트, 발송 제외를 갖춘 트랜잭션 및 수신 동의 기반 마케팅 이메일을 제공합니다. 마이그레이션 전에 공개 API 문서를 검토하고 인증, 페이로드, 오류, 식별자, 이벤트, 도메인, 수신자 안전 워크플로를 테스트하세요.

자주 묻는 질문

Mailgun API에서 이메일을 보내는 엔드포인트는 무엇인가요?

Mailgun은 멀티파트 폼 데이터와 HTTP Basic 인증을 사용하는 도메인 범위의 `POST /v3/{domain}/messages` 엔드포인트를 문서화하고 있습니다. 승인된 서버 측 코드에서만 호출하세요.

Mailgun API 키를 브라우저 코드에 넣어도 되나요?

아니요. 적합한 가장 좁은 자격 증명을 서버 측 시크릿 관리자에 보관하세요. 프로덕션, 하위 환경, 계정 관리, 도메인 발송, 웹훅 서명 권한을 서로 분리하세요.

Mailgun API가 접수했다면 이메일이 전달된 건가요?

아니요. Mailgun이 처리를 위해 제출을 접수했다는 뜻입니다. 인증된 이벤트가 나중에 대상 서버로의 전달이나 실패를 보고할 수 있으며, 받은편지함 도달은 수신 측에서 결정되는 별개의 결과입니다.

Mailgun 웹훅은 어떻게 인증해야 하나요?

처리하기 전에 웹훅 서명 키로 Mailgun이 문서화한 타임스탬프, 토큰, 서명을 검증하세요. 유효 기간과 재전송 방지 제어를 적용한 다음, 확인 응답을 보내기 전에 이벤트를 내구성 있게 저장하세요.

모든 Mailgun API 실패를 재시도해야 하나요?

아니요. 검증, 인증, 도메인, 권한, 영구적인 정책 오류는 바로잡으세요. 재시도할 수 있는 일시적 실패에는 상한이 있는 백오프를 사용하고, 모호한 타임아웃은 다시 보내기 전에 조정하세요.

SendHQ가 Mailgun을 대체할 수 있나요?

그럴 수 있습니다. SendHQ는 검증된 도메인 발송, 수신 이메일, 전달 이벤트, 발송 제외를 갖춘 트랜잭션 및 수신 동의 기반 마케팅 이메일을 제공합니다. 마이그레이션 전에 공개 API 문서를 검토하고 연동을 테스트하세요.

출처