google-workspace-gmail-logs
구글 워크스페이스에서 Gmail 액티비티 로그를 조회합니다.
문법
옵션
- profile=PROFILE
- 선택 옵션. 구글 워크스페이스 접속 프로파일 이름. 지정하지 않으면 모든 구글 워크스페이스 접속 프로파일로 조회합니다.
- user=USER
- 선택 옵션. 이메일 주소 또는 사용자 ID. 지정하지 않으면 전체 사용자를 조회합니다.
- duration=NUM{mon|w|d|h|m|s}
- 선택 옵션. 현재 시각으로부터 일정 시간 범위 이내의 로그로 한정. s(초), m(분), h(시), d(일), mon(월) 단위로 지정할 수 있습니다. 최대 30일입니다. from, to 옵션과 함께 쓸 수 없습니다.
- from=yyyyMMddHHmmss
- 선택 옵션. yyyyMMddHHmmss 포맷으로 범위의 시작을 지정합니다. 뒷자리를 쓰지 않으면 0으로 채워집니다. 최근 180일 이내여야 합니다.
- to=yyyyMMddHHmmss
- 선택 옵션. yyyyMMddHHmmss 포맷으로 범위의 끝을 지정합니다. 뒷자리를 쓰지 않으면 0으로 채워집니다. 지정하지 않으면 현재 시각까지 조회합니다.
- raw=RAW
- 선택 옵션. t 또는 f. t 지정 시 line 필드 출력
출력 필드
| 필드 | 타입 | 이름 | 설명 |
|---|---|---|---|
| _time | 날짜 | 시각 | |
| profile | 문자열 | 접속 프로파일 | 구글 워크스페이스 접속 프로파일 이름 |
| src_ip | IP 주소 | 출발지 IP 주소 | 수신 메일의 배송 단계·RECEIVED·스팸 분류는 보낸 쪽 메일 서버 IP(Gmail에서 보낸 메일은 구글 IP), 사용자 행동과 발신은 사용자 IP. FIRST_REPLIED 등 일부 이벤트는 비어 있음 |
| user | 문자열 | 계정 | 이벤트가 기록된 계정. 메일 시스템 이벤트는 /hd/domain/도메인 형식 |
| mail_event_type | 문자열 | 메일 이벤트 유형 | 예: SENT, RECEIVED, VIEWED |
| action_type | 문자열 | 처리 유형 | 예: ACCEPTED, ACTED, USER_INBOX_ACTION |
| mail_subject | 문자열 | 제목 | |
| mail_to | 문자열 | 수신자 | 수신자 주소. 여러 개는 줄바꿈으로 구분. 받는사람, 참조, 숨은참조는 구분되지 않음 |
| mail_size | 정수 | 메시지 크기 | 바이트 단위 |
| mail_attachment_count | 정수 | 첨부 파일 수 | SENT와 배송 단계에만 값이 있음. SEND_INITIATED, 첨부 미리보기·다운로드 이벤트는 0 |
| is_spam | 불리언 | 스팸 여부 | |
| is_success | 불리언 | 성공 여부 | |
| msg | 문자열 | 처리 메시지 | 메일 처리 결과(SMTP 응답 또는 반송 사유). 예: 250 2.0.0 OK |
| mail_link_domains | 문자열 | 링크 도메인 | 여러 개는 줄바꿈으로 구분 |
| mail_delivery_service | 문자열 | 전달 서비스 | 메일을 전달한 구글 내부 경로(서비스:세부분류). 여러 개는 줄바꿈으로 구분. 예: gmail-ui, smtp-outbound:gmail-notification |
| duration | 실수 | 소요 시간 | 밀리초 단위 |
| msg_id | 문자열 | 메시지 ID | RFC 2822 Message-ID |
| type | 문자열 | 유형 | 예: delivery_type |
| action | 문자열 | 행위 | 예: delivery |
| line | 문자열 | 이벤트 원본 | raw=t 지정 시 출력 |
오류 코드
파싱 오류
| 오류 메시지 | 원인 | 해결 |
|---|---|---|
| from 또는 duration 옵션을 지정하세요. | 조회 기간을 지정하지 않음 | from 또는 duration 옵션 지정 |
| Gmail 로그는 최대 30일까지 조회할 수 있습니다. from, to 또는 duration 옵션을 조정하세요. | 조회 기간이 30일을 넘음 | 30일 이내로 나누어 조회 |
| duration 옵션은 from, to 옵션과 함께 쓸 수 없습니다. | duration과 from 또는 to를 함께 지정 | 둘 중 하나만 지정 |
| from, to 옵션은 yyyyMMddHHmmss 형식으로 지정하세요. | 날짜 형식이 잘못됨 | yyyyMMddHHmmss 형식으로 지정 |
| from은 to보다 이전 시간이어야 합니다. | from이 to와 같거나 늦음 | from을 to보다 이전 시각으로 지정 |
| Gmail 로그는 최근 180일 이내만 조회할 수 있습니다. from 옵션을 조정하세요. | from이 180일보다 오래됨 | from을 최근 180일 이내로 지정 |
설명
구글 Reports API로 Gmail 로그 이벤트를 조회합니다. Gmail 로그는 구글 워크스페이스 에디션에 따라 제공되지 않을 수 있습니다. 필요한 권한은 설치 매뉴얼의 1. 기능별 필요 권한을 참고하세요.
구글 API 제약으로 조회 기간에 다음 제한이 있습니다.
- from 또는 duration 옵션 중 하나를 반드시 지정해야 합니다.
- 한 번에 최대 30일까지 조회할 수 있습니다. 더 긴 기간은 30일 이내로 나누어 조회하세요.
- 구글은 Gmail 로그를 180일 동안 보관하므로, from은 최근 180일 이내여야 합니다.
메일 한 통에 여러 이벤트가 기록됩니다. 예를 들어 사내 메일을 보내면 보낸 사람에게 SEND_INITIATED, UNKNOWN(배송 단계), SENT가, 받는 사람에게 UNKNOWN, RECEIVED가 기록되고, 받는 사람이 메일을 열면 FIRST_OPENED, VIEWED가 기록됩니다. SENT와 RECEIVED는 받는 사람마다 1건씩 기록됩니다. 같은 메일의 이벤트는 msg_id 값이 같습니다.
구글이 제공하지 않아 조회할 수 없는 정보와 실제 기록 방식은 다음과 같습니다.
- 보낸 사람 주소, 첨부 파일 이름, 클릭한 링크의 URL은 응답에 없습니다. 사내에서 보낸 메일은 아래 사용 예처럼 같은 msg_id의 SENT 이벤트로 보낸 사람을 찾을 수 있습니다.
- mail_to는 받는사람, 참조, 숨은참조를 구분하지 않습니다.
- 반송은 mail_event_type이 BOUNCED가 아니라 UNKNOWN이고 action_type이 BOUNCED인 이벤트로 기록됩니다.
- 전달하면 FIRST_FORWARDED가 아니라 원본 메일에 FIRST_REPLIED가 기록됩니다.
- 자동 전달은 AUTOFORWARDED 이벤트와 함께, 전달 대상으로 보낸 SENT 이벤트(src_ip 없음)가 기록됩니다. AUTOFORWARDED의 mail_to는 전달한 본인이고, 실제 전달 대상은 이 SENT 이벤트에 있습니다.
- 그룹 주소로 보낸 메일은 그룹 주소가 user인 이벤트로 기록됩니다.
- 스레드를 열면 그 스레드에 있던 이전 메일에도 VIEWED가 기록됩니다.
- 읽음 표시, 메일 다운로드, 스팸 신고 시의 발신자 차단은 기록되지 않습니다.
- UNKNOWN(배송 단계) 이벤트가 전체의 절반가량을 차지합니다.
- mail_attachment_count는 SENT와 배송 단계에만 값이 있고, src_ip는 일부 이벤트에서 비어 있습니다.
user 옵션에 없는 사용자를 지정하면 오류 없이 빈 결과가 나옵니다.
사용 예
예시: 최근 하루 동안 보낸 메일 조회
상황: 최근 하루 동안 사용자가 보낸 메일과 첨부 파일 수를 확인합니다.
google-workspace-gmail-logs profile=google_workspace duration=1d
| search mail_event_type == "SENT"
| fields _time, user, src_ip, mail_to, mail_subject, mail_attachment_count
예상 결과:
| _time | user | src_ip | mail_to | mail_subject | mail_attachment_count |
|---|---|---|---|---|---|
| 2026-11-11 14:11:38+0900 | user1@example.com | 192.0.2.1 | user2@example.com | 견적서 송부 | 1 |
| 2026-11-11 14:04:13+0900 | user2@example.com | user3@example.com | 주간 보고 | 0 |
결과 해석: src_ip가 비어 있는 SENT는 자동 전달이나 구글 알림처럼 사용자가 직접 보내지 않은 발신입니다.
예시: 특정 사용자의 이벤트 유형별 건수
상황: 특정 사용자의 최근 일주일 메일 활동을 이벤트 유형별로 집계합니다.
google-workspace-gmail-logs profile=google_workspace user=user1@example.com duration=7d
| stats count by mail_event_type
| sort -count
예상 결과:
| mail_event_type | count |
|---|---|
| UNKNOWN | 31 |
| VIEWED | 27 |
| DRAFT_SAVED | 20 |
결과 해석: UNKNOWN은 메일 배송 단계 기록입니다. 사용자의 실제 활동은 SENT, RECEIVED, FIRST_OPENED, VIEWED 등을 보면 됩니다.
예시: 사내에서 받은 메일의 보낸 사람 찾기
상황: 받은 메일(RECEIVED)에는 보낸 사람이 없으므로, 같은 msg_id의 SENT 이벤트에서 보낸 사람을 찾습니다.
google-workspace-gmail-logs profile=google_workspace duration=7d
| search mail_event_type == "RECEIVED"
| join msg_id [
google-workspace-gmail-logs profile=google_workspace duration=7d
| search mail_event_type == "SENT" and isnotnull(src_ip)
| stats first(user) as sender by msg_id ]
| fields _time, user, sender, mail_subject
예상 결과:
| _time | user | sender | mail_subject |
|---|---|---|---|
| 2026-11-11 14:08:48+0900 | user2@example.com | user1@example.com | 프로젝트 일정 공유 |
| 2026-11-11 14:08:48+0900 | user3@example.com | user1@example.com | 프로젝트 일정 공유 |
결과 해석: 외부에서 받은 메일은 SENT 이벤트가 없어 결과에 나오지 않습니다. 받은 메일 전체를 보려면 join type=left를 쓰면 되고, 외부 메일은 sender가 비어 있습니다.
예시: 자동 전달 대상 확인
상황: 자동 전달 설정으로 메일이 외부로 전달되는지 확인합니다.
google-workspace-gmail-logs profile=google_workspace duration=7d
| search mail_event_type == "AUTOFORWARDED"
| join msg_id, user [
google-workspace-gmail-logs profile=google_workspace duration=7d
| search mail_event_type == "SENT" and isnull(src_ip)
| stats values(mail_to) as forward_to by msg_id, user ]
| fields _time, user, mail_subject, forward_to
예상 결과:
| _time | user | mail_subject | forward_to |
|---|---|---|---|
| 2026-11-11 14:04:13+0900 | user1@example.com | 주간 보고 | user@example.com |
결과 해석: forward_to가 사외 도메인이면 메일이 외부로 자동 전달되고 있습니다. 의도한 설정인지 사용자에게 확인하세요.