임시 메일은 편지가 도착하는 마지막 구간만 우리 쪽으로 돌려놓은 구조입니다. 그 한 걸음이 어떻게 이루어지는지 이해하면, 왜 메일이 늦게 오고 왜 같은 편지가 두 번 오는지도 함께 보입니다. 이 글은 주소가 만들어지고 편지가 도착해 사라지기까지를 순서대로 따라갑니다.
임시 메일 주소로 편지가 오는 과정
메일 주소는 가운뎃곱셈표시를 기준으로 앞과 뒤로 나뉩니다. 앞은 받는 사람을 가리키는 이름이고, 뒤는 그 편지를 받아 줄 서버가 있는 영역입니다. 보내는 쪽은 뒤쪽 영역만 보고 어디로 배달할지 결정합니다.
보내는 서버는 먼저 그 영역의 수신 서버 기록을 조회합니다. 이 기록은 인터넷 전체가 공유하는 이름 체계 안에 있고, 조회 방법은 오래전에 공개 표준으로 정해졌습니다. 조회 결과로 서버 주소를 얻으면 그 서버에 연결해 편지를 넘깁니다.
임시 메일은 이 마지막 단계만 바꿉니다. 그 영역의 수신 서버 기록이 우리가 만든 서버를 가리키게 해 두면, 앞부분이 무엇이든 편지는 그 서버로 들어옵니다. 그래서 접두사를 조금 바꿔도 새 편지함을 만들 필요가 없습니다.
이 구조에는 분명한 대가가 따릅니다. 영역 하나를 모든 사람이 함께 쓰기 때문에, 그 영역이 평판 목록에 오르면 우리 편지함 하나만 골라서 빠져나올 수 없습니다. 반대로 영역이 아직 목록에 없으면 어떤 접두사를 쓰든 편지가 잘 들어옵니다. 주소의 운명이 접두사가 아니라 영역 전체에 달려 있다는 점이 임시 메일의 성격을 가장 잘 보여 줍니다.
또 하나 기억할 점은 앞부분을 우리가 정한다는 사실입니다. 같은 영역에서 남이 쓴 접두사와 겹치면 두 사람의 편지가 한 편지함에 섞일 수 있습니다. 시험용으로 쓸 때 접두사에 시험 이름과 날짜를 함께 넣어 두면 이런 혼동이 크게 줄어듭니다.
주소가 만들어지는 순간과 사라지는 순간
주소를 만드는 일은 실제로 편지함을 새로 짓는 일이 아닙니다. 이미 편지를 받는 서버가 있고, 그 서버가 어느 접두사를 누구의 것으로 볼지 정하는 일에 가깝습니다. 그래서 발급은 즉시 끝나고, 만든 사람을 확인하는 절차도 없습니다.
반대로 만료는 조용히 찾아옵니다. 임시 주소는 대개 짧게만 열려 있고, 그 시간이 지나면 편지함 내용이 지워집니다. 지워진 편지는 어디에도 사본이 없습니다. 서버 운영자가 보관 기간을 늘려 주지 않는 한 되찾을 방법이 없다는 점을 전제로 쓰셔야 합니다.
같은 편지가 두 번 오는 이유와 늦게 오는 이유
메일 배달은 보내는 쪽이 한 번 넘기고 끝나는 일이 아닙니다. 받는 쪽이 잠시 응답하지 않으면 여러 번 다시 시도하고, 시도 사이에 이미 전달된 편지를 또 보내기도 합니다. 그래서 같은 내용의 편지가 두 번 도착하는 일은 사고가 아니라 흔한 일입니다.
지연도 마찬가지입니다. 보내는 쪽 대기열이 밀리거나 중간 경로가 잠시 막히면 도착이 몇 분 늦어집니다. 편지함 화면을 몇 초마다 새로 확인하는 방식이 필요한 이유도 여기에 있습니다. 한 번 확인하고 없다고 결론 내리면 안 됩니다.
늦게 오는 편지가 더 곤란한 자리도 있습니다. 인증 코드처럼 짧은 시간 안에 써야 하는 값은 늦게 도착하면 이미 쓸모가 없어졌을 수 있습니다. 그래서 코드를 읽는 시험은 도착을 기다리는 시간과 코드를 쓰는 시간을 따로 재어 두는 편이 좋습니다. 편지가 늦게 왔을 때 다시 요청할지, 기다릴지를 정해 두지 않으면 시험이 매번 다른 결론에 도달합니다.
중복 배달도 시험 쪽에서는 함정이 됩니다. 목록에서 처음 보이는 편지를 그냥 집으면, 앞선 시도가 남긴 오래된 편지를 새 편지로 착각할 수 있습니다. 도착 시각과 발신자를 함께 보고 고르는 습관이 필요합니다.
임시 메일은 언제까지 살아 있나요?
- 짧게는 몇 분, 길게는 몇 시간 정도가 일반적이며 정확한 길이는 운영하는 쪽이 정합니다.
- 화면을 닫거나 주소를 바꾸면 그 시점에 앞서 받은 편지가 사라질 수 있습니다.
- 만료 뒤에는 목록도 본문도 남지 않습니다.
- 같은 접두사를 다시 만들 수는 있지만, 앞서 오간 편지가 되살아나지는 않습니다.
시험용 메일을 우리 쪽 컴퓨터로 받는 방법
임시 메일과 비슷한 목적을 시험 환경에서 달성하는 방법이 하나 더 있습니다. 외부에서 오는 편지를 기다리는 대신, 프로그램이 보내는 편지를 우리가 지정한 곳으로 들여보내는 것입니다. 이렇게 하면 인터넷 사정과 무관하게 같은 결과를 반복해서 얻을 수 있습니다. 자세한 구성은 테스트에서 메일 캡처하기에서 다루고, 도메인의 수신 기록을 어디에 두는지는 국가별 주소 형식처럼 나라별로 달라지는 표기 규칙과는 별개의 문제입니다.
우리 도구에서는 어떻게 하나요?
임시 메일에서는 도메인을 고르고 접두사를 넣으면 주소가 바로 만들어집니다. 접두사를 비워 두면 무작위로 정해지므로, 여러 개를 연달아 만들 때 이름이 겹칠 걱정이 없습니다. 만들어진 주소로 온 편지는 화면의 받은편지함에 차례로 나타나고, 본문에서 인증 코드로 보이는 숫자 묶음을 따로 뽑아 주기도 합니다.
여기서 다루는 편지는 일회성 확인을 위한 것이며, 신원을 증명하거나 실제 사람의 우편함을 대신하는 용도로 쓸 수 없습니다.
개발자를 위한 메모: 수신 대기 시간과 확인 간격
- 확인 간격은 사람이 기다릴 수 있는 범위에서 정하고, 확인 횟수에는 상한을 둡니다. 상한 없이 반복하면 실패한 시험이 영원히 끝나지 않습니다.
- 편지가 오지 않은 상태와 편지가 왔지만 조건에 맞지 않는 상태를 구분해 기록합니다. 둘은 원인이 다릅니다.
- 편지 내용을 비교할 때는 고정된 값만 보지 않습니다. 발송 시각이나 추적용 표식처럼 매번 달라지는 값이 섞여 있으면 비교가 실패합니다.
- 같은 편지가 두 번 도착해도 시험이 흔들리지 않도록, 첫 번째로 조건을 만족한 편지를 쓰고 나머지는 무시합니다.
- 만료가 가까운 주소로 긴 시나리오를 돌리지 않습니다. 시나리오 길이보다 주소 수명이 길어야 합니다.
다음 단계
임시 메일에서 주소를 하나 만들고 실제로 편지를 보내 도착까지 얼마나 걸리는지 직접 재어 보세요. 그 뒤에는 같은 주소로 두 번 보내 보면 중복 배달이 얼마나 흔한지 감이 잡힙니다. 시험 자동화에 넣을 계획이라면 다음으로 테스트에서 메일 캡처하기를 읽어 보시길 권합니다.