TL;DR
- Outis는 받은 이메일에 가짜 ‘사용자 없음’ 반송 메일을 보내 발신자가 주소가 존재하지 않는다고 믿게 하는 도구임.
- 반송 메일은 RFC 3464 배달 상태 알림 형식이며, 원본 메일과 5.1.1 상태를 포함함.
- 이미 수락된 메일을 사후에 반송하므로 실제 SMTP 550 거부와 달리 전달 기록은 성공으로 남고, 효과는 알림을 처리하는 해당 발신자에게만 미침.
- 반송 메일의 신뢰성을 위해서는 직접 관리하는 도메인의 SMTP 계정이 필요하며, 소비자용 이메일 제공업체는 발신자 정보를 다시 써서 사용자를 드러낼 수 있음.
- Outis는 여러 파일과 디렉터리의 일괄 처리, 여러 도메인 계정 매칭, Amazon SES 등 공유 억제 목록 제공업체 대응을 지원함.
Outis
- Outis는 스팸 발신자에게 받은 이메일의 가짜 ‘사용자 없음’ 반송 메일을 보내 주소가 존재하지 않는다고 믿게 하며, 회신을 예상할 수 있는 최근 AI 생성 자동 이메일 추세에 대응해 발신자 목록에서 주소를 제거하는 데 도움을 줌.
- Outis(Οὖτις)는 그리스어로 ‘아무도 없음’을 뜻함. 『오디세이』에서 오디세우스는 외눈박이 거인 폴리페모스에게 자신의 이름을 ‘아무도 없음’이라고 말하며, 눈이 먼 거인이 도움을 청하며 ‘아무도 나를 해치고 있다’고 외치자 다른 키클롭스들이 떠남. 이 도구도 사서함에 아무도 없다고 알리는 방식임.
- 반송 메일은 RFC 3464 배달 상태 알림 형식이며, Postfix를 모델로 삼음.
- 사람이 읽을 수 있는 부분, 상태가 5.1.1인
message/delivery-status부분,message/rfc822로 첨부된 원본 메시지로 구성됨. - SMTP 서버가 허용하면 null envelope sender를 사용해
MAILER-DAEMON@<your domain>에서 원본Return-Path로 전송됨.
알려진 제한 사항
- 실제 SMTP 대화 중 발생하는 550 거부와 달리, 이 반송 메일은 메시지가 이미 수락된 뒤 전송됨.
- 따라서 발신자 로그에는 전달 성공으로 표시되고, 재시도할 경우에도 사서함은 계속 작동하며, 효과는 알림을 받아 처리하는 단일 발신자에게만 미침.
요구 사항
- 반송 메일이 신뢰를 얻으려면 직접 관리하는 도메인에서 발송해야 함.
- 가능하면
MAILER-DAEMON@...발신을 허용하는 해당 도메인의 SMTP 계정을 사용해야 함. - Gmail, iCloud 같은 소비자용 제공업체는
From헤더를 다시 작성해 사용자를 드러낼 수 있음.
사용 방법
go build -o outis cmd/outis/main.go로outis실행 파일을 빌드함../outis init [domain]으로 계정을 추가하거나 갱신하며, 비밀번호는 운영체제 키체인에 저장함../outis accounts로 계정 목록을 확인함../outis message.eml로 메시지를 미리 보고 확인한 뒤 처리함../outis -c로 클립보드에서 이메일을 읽음../outis -n message.eml로 실제 전송 없이 결과만 출력함../outis -y -r me@example.com message.eml로 확인을 생략하고 지정된 수신자를 사용함../outis -a example.com -c로 수신자에 따른 계정 매칭 대신 지정 계정을 강제함../outis inbox/로 디렉터리의 모든 파일을 처리하며, 일괄 작업 전체에 대해 한 번 확인함../outis -n -o out/ inbox/로 실제 전송 없이 각 반송 메일을out/<name>.bounce.eml에 기록함../outis -d inbox/로 반송 메일 전송 후 각 파일을 삭제함.
일괄 처리 모드
- 인수에는 파일과 디렉터리를 함께 지정할 수 있음.
- 디렉터리는 재귀 탐색 없이 확장자에 관계없이 표시되는 일반 파일로 확장됨.
- 각 파일은 개별적으로 계정에 매칭됨. 파싱할 수 없거나 계정에 매칭되지 않는 파일은 오류로 보고하고 건너뛰며, 나머지 파일은 계속 처리됨.
- 파일 중 하나라도 실패하면 종료 코드가 0이 아닌 값으로 설정됨.
- 입력이 두 개 이상이면 전체 미리보기 대신 파일별 요약 한 줄을 표시하고, 마지막에 한 번 확인을 요청함.
여러 계정
- 각 계정은 하나의 도메인을 담당함.
- 원본 이메일의 수신자(
Delivered-To,To또는Cc)와 도메인이 일치하는 계정으로 반송 메일을 구성하므로 발신자, 메일 호스트, SMTP 서버가 모두 해당 도메인에 속함. - 일치하는 계정이 없거나 둘 이상이면
--account를 사용해야 함. - 설정은 계정마다 도메인, 메일 전송 에이전트(MTA) 호스트, SMTP 호스트·포트·사용자 이름을 지정하는 구조임. 예시에는
example.com과other.org계정이 각각 포함되며, SMTP 포트는 각각 587과 465임.
공유 억제 목록을 사용하는 제공업체
- Amazon SES를 비롯한 일부 제공업체는 모든 고객이 공유하는 억제 목록을 유지함. 이 경우 한 번의 하드 반송만으로도 모든 SES 발신자가 한동안 해당 주소에 메일을 보낼 수 없게 됨.
reply_to_from_domains에 등록된Return-Path도메인에는From헤더의 주소로 반송 메일을 보냄.- 기본값은
amazonses.com이며 하위 도메인도 일치함.[]로 설정하면 이 동작을 비활성화함.
설정
- 계정의
envelope_from을 설정하면 null 발신자,MAILER-DAEMON@domain, 사용자 이름 순으로 시도하는 대신 지정한 SMTP envelope sender를 사용함. - 설정 파일은
os.UserConfigDir()/outis/config.toml에 저장됨. macOS 경로는~/Library/Application Support/outis, Linux 경로는~/.config/outis임. OUTIS_CONFIG환경 변수로 설정 파일 경로를 재정의함.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요