BIMI 문제 해결: 로고가 표시되지 않는 이유 (완벽 가이드)
BIMI 로고가 이메일 클라이언트에 표시되지 않는 7가지 가장 흔한 원인을 진단하고 해결하세요. DMARC 정책, SVG 유효성 검사, MIME 유형, VMC/CMC 인증서, DNS 전파, 클라이언트 지원을 다룹니다.
BIMI 문제 해결: 로고가 표시되지 않는 이유 (완벽 가이드)
Brand Indicators for Message Identification (BIMI)를 사용하면 메일박스 제공업체가 인증된 이메일 옆에 브랜드 로고를 표시할 수 있습니다. 로고가 나타나지 않는 경우, 그 원인은 거의 항상 명확히 정의된 7가지 문제 중 하나입니다. 이 가이드에서는 빈도 순으로 각 문제를 살펴보고, 정확한 진단 방법과 해결책을 안내합니다.
시작하기 전에: BIMI 로고 표시 작동 방식
수신 메일 서버가 인바운드 메시지를 처리할 때 다음 단계를 수행합니다:
- 발신 도메인이 시행 정책 수준에서 DMARC를 통과하는지 확인합니다.
default._bimi.에서 BIMI DNS TXT 레코드를 조회합니다.l=태그에 있는 URL에서 SVG 로고를 가져옵니다.- (요구하는 제공업체의 경우)
a=태그에 있는 URL에서 Verified Mark Certificate (VMC) 또는 Common Mark Certificate (CMC)를 검증합니다. - 받은편지함 UI에 로고를 렌더링합니다.
이 단계 중 어느 하나라도 실패하면 로고가 조용히 숨겨집니다. 발신자나 수신자에게 어떤 오류도 표시되지 않습니다.
원인 1: DMARC 정책이 p=quarantine 또는 p=reject가 아님
이것이 BIMI 로고가 표시되지 않는 가장 흔한 원인입니다.
Google, Yahoo, Apple, Fastmail 등을 포함한 모든 BIMI 지원 메일박스 제공업체는 로고를 렌더링하기 전에 p=quarantine 또는 p=reject의 DMARC 정책을 요구합니다. p=none 정책은 시행 없음으로 처리되며 BIMI가 완전히 무시됩니다.
진단 방법
DMARC 레코드에 대한 DNS 조회를 실행하세요:
dig TXT _dmarc.yourdomain.com
응답에서 p= 값을 확인하세요. 다음 항목도 함께 확인하세요:
sp=— 서브도메인 정책. 이메일이 서브도메인에서 발송되는 경우, 루트 도메인이p=reject이더라도sp=none이면 해당 서브도메인에서 BIMI가 차단됩니다.pct=— 퍼센티지 태그. 일부 제공업체는pct=100을 요구합니다. 100 미만의 값은 로고 표시가 일관되지 않을 수 있습니다.
해결 방법
- 정책을 올리기 전에 이메일 인증(SPF와 DKIM)이 일관되게 통과하는지 확인하세요.
- DMARC를
p=none에서p=quarantine으로 이동하고, 2~4주간 모니터링하세요. - 정상적인 메일이 실패하지 않는다고 확신할 때
p=reject로 이동하세요. pct=100을 명시적으로 설정하세요.- 서브도메인에서 발송하는 경우
sp=quarantine또는sp=reject를 추가하세요.
올바른 DMARC 레코드 예시:
v=DMARC1; p=reject; sp=reject; pct=100; rua=mailto:[email protected];
참고: DMARC 정책을 올리면 메일 전달에 영향을 줍니다. 모니터링 단계를 건너뛰지 마세요.
원인 2: SVG 파일에 HTTPS로 접근할 수 없음
메일박스 제공업체의 서버는 렌더링 시점에 로고를 가져옵니다. 파일이 HTTPS를 통해 유효한 200 OK 응답 이외의 것을 반환하면 로고가 숨겨집니다.
흔한 세부 원인
| 증상 | 가능한 원인 |
|---|---|
| 404 Not Found | l= 태그의 URL이 잘못됨, 파일이 이동 또는 삭제됨 |
| 403 Forbidden | CDN 또는 WAF가 비브라우저 사용자 에이전트를 차단함 |
| 301/302 Redirect | 일부 제공업체는 리다이렉트를 따르지 않음 |
| SSL certificate error | 호스팅 도메인의 TLS 인증서가 만료되었거나 자체 서명됨 |
| HTTP URL | 일반 HTTP는 허용되지 않음; HTTPS가 필수 |
진단 방법
l=태그에서 정확한 URL을 복사하세요.curl로 비브라우저 가져오기를 시뮬레이션하여 테스트하세요:
curl -I "https://yourdomain.com/bimi/logo.svg"
- HTTP 상태 코드,
Content-Type헤더, 리다이렉트 발생 여부를 확인하세요. - 여러 지역에서 테스트하거나 온라인 HTTP 헤더 검사기를 사용하여 지역 차단을 배제하세요.
해결 방법
- BIMI DNS 레코드의 URL이 대소문자를 포함하여 호스팅된 파일 경로와 정확히 일치하는지 확인하세요.
- CDN을 사용하는 경우, 주요 메일박스 제공업체가 사용하는 사용자 에이전트를 화이트리스트에 추가하거나 봇 보호 없이 파일을 공개적으로 제공하도록 CDN을 구성하세요.
- 호스팅 도메인에 유효하고 신뢰할 수 있는 TLS 인증서(자체 서명이 아닌)가 있는지 확인하세요.
- 리다이렉트가 불가피한 경우
l=태그가 최종 URL을 직접 가리키도록 업데이트하세요. - 파일이 자체 네트워크 외부에서 접근 가능한지 확인하세요.
원인 3: 서버가 잘못된 MIME 유형을 반환함
SVG 파일에 접근할 수 있더라도 메일박스 제공업체는 서버가 반환하는 Content-Type 헤더를 검증합니다. 올바른 MIME 유형은 image/svg+xml입니다. text/plain, application/octet-stream, text/html 등 다른 값은 로고가 거부되는 원인이 됩니다.
진단 방법
curl -I "https://yourdomain.com/bimi/logo.svg"
응답 헤더에서 Content-Type 줄을 찾으세요:
Content-Type: image/svg+xml
다른 값이 보이면 MIME 유형이 잘못 구성된 것입니다.
해결 방법
해결 방법은 웹 서버 또는 호스팅 플랫폼에 따라 다릅니다.
Apache — .htaccess 또는 서버 설정에 추가:
AddType image/svg+xml .svg .svgz
Nginx — mime.types 또는 서버 블록에 추가:
types {
image/svg+xml svg svgz;
}
Amazon S3 / CloudFront — 업로드 시 객체의 Content-Type 메타데이터를 image/svg+xml로 설정하세요. S3는 MIME 유형을 자동으로 추론하지 않습니다.
Cloudflare Pages / Netlify — _headers 파일을 추가:
/bimi/logo.svg
Content-Type: image/svg+xml
변경 후 curl -I 검사를 다시 실행하여 헤더가 올바른지 확인하세요.
원인 4: SVG 파일이 W3C Tiny P/S 유효성 검사 실패
BIMI는 표준 SVG 파일을 허용하지 않습니다. 사양에서는 신뢰할 수 없는 컨텍스트에서 안전하게 렌더링할 수 있도록 설계된 제한된 프로필인 SVG Tiny 1.2 Portable/Secure (SVG Tiny P/S)를 요구합니다. Adobe Illustrator, Figma, Inkscape와 같은 디자인 도구에서 내보낸 대부분의 SVG 파일은 수정 없이는 이 프로필을 준수하지 않습니다.
흔한 유효성 검사 실패 사례
| 문제 | 실패 이유 |
|---|---|
| 누락되거나 잘못된 baseProfile | 요소에 baseProfile="tiny"가 있어야 함 |
| version="1.2" 속성 누락 | 사양에서 필수 |
| 내장된 래스터 이미지 () | Tiny P/S에서 허용되지 않음 |
| JavaScript 또는 이벤트 핸들러 | 엄격히 금지됨 |
| 외부 참조 또는 외부 href가 있는 | 허용되지 않음 |
| CSS @import 또는 외부 스타일시트 | 허용되지 않음 |
| 필터, 마스크 또는 그라데이션 (일부 구현에서) | 제한된 지원 |
| 루트 요소로 에 감싸지지 않은 파일 | 구조적 요구 사항 |
진단 방법
- SVG를 텍스트 편집기에서 열고
시작 태그를 검사하세요. 다음을 포함해야 합니다:
```xml