GATES는 일회용 이메일 주소 가입을 차단하고, +태그나 Gmail 주소의 점을 이용해 여러 계정을 만드는 일을 방지하도록 돕는 서버 측 라이브러리다. Better Auth, Auth0, Supabase Auth용 연동 기능을 제공하며 PostgreSQL에 이메일 소유권을 기록한다.
이 라이브러리는 IronDome의 일회용 이메일 검사, Mail Canon 정규화, PostgreSQL 기반 소유권 확인을 결합한다. 이메일 별칭 처리 규칙은 제공업체마다 다르며, 모든 주소에서 점이나 +태그를 일괄 제거하지 않는다.
| 제공업체 | 기본 별칭 처리 |
|---|---|
| Gmail / Googlemail | 점과 +태그를 제거하고 googlemail.com을 gmail.com으로 매핑한다. |
| Outlook / Hotmail / Live / MSN | outlook.com, hotmail.com, live.com, msn.com에서 +태그를 제거한다. 점과 도메인은 각각 구분한다. |
| Proton | +태그, 점, 밑줄, 하이픈을 제거한다. proton.me, protonmail.com, protonmail.ch, pm.me는 서로 구분한다. |
| Fastmail | 지원하는 자사 도메인 130곳에서 +태그를 제거하고, 한 단계 하위 도메인 별칭을 처리한다. 점과 루트 도메인은 각각 구분한다. |
| 사용자 지정 도메인 | 기본적으로 이메일의 로컬 부분을 보존한다. 도메인별로 소문자 변환, +태그 제거, 점 제거 규칙을 설정할 수 있다. |
사용자 지정 규칙은 실제로 같은 메일함에 도달하는 주소에만 적용해야 한다. Google Workspace와 Microsoft 365의 사용자 지정 도메인에는 소비자용 서비스의 규칙이 자동 적용되지 않는다. GATES는 이메일 발송과 인증에 원래 주소를 사용하며, 이메일 인증 후 프로젝트 안에서 중복 소유권을 확인한다.
설치와 연동 조건
설치에는 Node.js 22 이상, ESM, PostgreSQL이 필요하다. Better Auth 연동에는 Better Auth 1.7.7이 요구된다.
npm install irondome-gates pg
자세한 요구 사항과 설정은 설치 안내를 참고하면 된다. 연동 안내는 Better Auth, Auth0, Supabase에서 확인할 수 있다. 각 안내는 설정과 인증, 이메일 변경·삭제, 보호된 접근을 다룬다. 추가 자료로 문서, 통합 예제, 배포 점검표가 제공된다.
기존 사용자를 대상으로 적용할 때는 강제 적용 전에 충돌을 확인하고 소유권을 설정해야 한다. 최초 도입 절차와 서비스 운영 중 정규화 정책을 바꾸는 절차는 서로 다르다.
GATES는 제출된 주소 그대로 일회용 이메일 여부를 검사하고, 이메일 제공업체가 소유권을 확인한 뒤에만 정규화된 주소의 소유권을 등록한다. 같은 테넌트 안에서는 동시에 여러 사용자가 동일한 정규화 주소를 차지할 수 없다. 인증된 이메일 주소를 바꿀 때는 기록된 소유권 변경 이력을 사용하며, 계정 삭제 시에는 제공업체 정리 작업 전에 안정적인 사용자 ID의 권한을 최종 취소한다. 보호된 서버 작업은 오래된 토큰만 신뢰하지 않고 현재 제공업체 상태와 GATES의 실시간 소유권 정보를 확인한다.
정규화된 주소가 일치해도 사용자가 인증되는 것은 아니며, 계정이 병합되거나 개인의 신원이 확인되는 것도 아니다. GATES가 모든 유형의 체험판 악용을 막는 것은 아니며, 연동 방식에 따른 제한도 적용된다.
import { prepareEmail } from 'irondome-gates';
const email = prepareEmail('alex+trial@gmail.com');
console.log(email.canonical); // alex@gmail.com
console.log(email.deliveryEmail); // alex+trial@gmail.com
이 예제는 주소를 준비할 뿐, 이메일 검사나 소유권 등록, 인증은 수행하지 않는다. 전체 연동 범위는 각 제공업체 안내를 따라야 한다.
테스트 환경이 없으면 npm test는 PostgreSQL 및 GoTrue 연동 테스트 진입점을 건너뛴다. 따라서 이 명령만으로 연동 테스트까지 마쳤다고 볼 수 없다. 배포 전에는 기여 안내에 설명된 조건을 갖춘 테스트가 필요하며, 파괴적인 검증 스크립트를 운영 환경에 연결해서는 안 된다. 라이선스는 MIT이며, 번들된 의존성은 각자의 라이선스 고지를 유지한다. 이 라이선스는 라이브러리에 적용되며 IronDome의 호스팅 서비스나 비공개 탐지 데이터에는 적용되지 않는다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요