API로 이메일 마이그레이션 관리하기

TrekMail API로 이메일 마이그레이션을 관리하세요. 연결 테스트, 가져오기 시작, 진행 상황 모니터링, 취소, 재시도, 작업 삭제 방법을 안내합니다.

문서 정보

유형, 난이도, 요금제, 최종 업데이트 정보입니다.

▼
유형
참조 자료
난이도
중급
요금제
Starter · Pro · Agency
최종 업데이트
2026년 9월 9일

Migration API를 사용하면 통합 또는 에이전트를 통해 모든 IMAP 제공업체의 이메일을 TrekMail 사서함으로 가져올 수 있습니다. 연결을 테스트하고, 가져오기를 시작하고, 폴더별 진행 상황을 모니터링하고, 실행 중인 작업을 취소하고, 실패한 작업을 재시도하고, 오래된 레코드를 정리할 수 있습니다.

시작하기 전에

  • Starter 이상의 요금제가 필요합니다. Nano 요금제에는 마이그레이션 도구가 포함되지 않습니다.
  • Pro와 Agency에서는 API를 통해 마이그레이션을 시작, 취소, 재시도 및 삭제할 수 있습니다(migrations:read + migrations:write). Starter에서는 API로 마이그레이션을 읽고 대시보드에서 새 마이그레이션을 실행할 수 있습니다.
  • 계정마다 한 번에 하나의 마이그레이션만 실행할 수 있습니다. 현재 마이그레이션이 끝난 후 새 마이그레이션을 시작하거나 먼저 현재 마이그레이션을 취소하세요.

범위

범위 기능 요금제
migrations:read 마이그레이션 목록 및 마이그레이션 세부 정보 보기 Starter · Pro · Agency
migrations:write 연결 테스트, 시작, 취소, 재시도, 삭제 Pro · Agency

엔드포인트

연결 테스트

POST /api/v1/migrations/test-connection
Scope: migrations:write

IMAP 자격 증명을 검증하고 메시지 수가 포함된 원본 폴더 목록을 반환합니다. 마이그레이션을 시작하기 전에 이를 사용하여 연결이 작동하는지 확인하고 사용자가 가져올 폴더를 선택하도록 하세요.

요청 본문:

필드 유형 필수 설명
source_host string 예 IMAP 서버 호스트 이름(예: imap.gmail.com)
source_port integer 예 IMAP 포트(SSL은 일반적으로 993)
source_security string 예 ssl, tls 또는 none
source_email string 예 원본 서버의 이메일 주소
source_username string 아니요 이메일과 다른 경우 사용할 사용자 이름
source_password string 예 비밀번호 또는 앱 비밀번호

응답(성공):

{
  "success": true,
  "folders": {
    "INBOX": 1234,
    "Sent": 567,
    "Drafts": 12,
    "Work": 89
  }
}

응답(실패): 422 및 connection_failed 오류 코드.

마이그레이션 목록

GET /api/v1/migrations
Scope: migrations:read

계정의 마이그레이션 작업을 페이지가 매겨진 목록으로 반환합니다.

쿼리 매개변수:

매개변수 유형 설명
status string 상태별 필터링(pending, validating, planning, processing, completed, failed, cancelled)
mailbox_id integer 대상 사서함별 필터링
per_page integer 페이지당 결과 수(기본값: 20, 최대: 100)

마이그레이션 가져오기

GET /api/v1/migrations/{id}
Scope: migrations:read

폴더별 진행 상황 분석을 포함한 자세한 마이그레이션 상태를 반환합니다.

응답:

{
  "data": {
    "id": 5,
    "mailbox_id": 10,
    "mailbox_email": "support@acme.com",
    "provider": "gmail",
    "source_host": "imap.gmail.com",
    "source_email": "j***e@gmail.com",
    "status": "processing",
    "progress": 45,
    "total_messages": 1234,
    "imported_messages": 556,
    "failed_messages": 2,
    "skipped_duplicates": 12,
    "selected_folders": ["INBOX", "Sent"],
    "import_since": "2025-01-01",
    "skip_duplicates": true,
    "folders": [
      { "name": "INBOX", "status": "processing", "expected": 1000, "imported": 450, "failed": 2, "skipped": 10 },
      { "name": "Sent", "status": "pending", "expected": 234, "imported": 0, "failed": 0, "skipped": 0 }
    ],
    "error_message": null,
    "poll_hint_seconds": 10,
    "started_at": "2026-03-13T10:00:00+00:00",
    "finished_at": null,
    "created_at": "2026-03-13T09:59:50+00:00"
  }
}

**poll_hint_seconds**는 업데이트를 폴링할 빈도를 알려 줍니다. pending/validating/planning 중에는 5초, processing 중에는 10초, 종료 상태에서는 null입니다.

**source_email**은 보안을 위해 마스킹됩니다(예: j***e@gmail.com).

마이그레이션 시작

POST /api/v1/migrations
Scope: migrations:write

새 이메일 마이그레이션을 시작합니다. 계정마다 한 번에 하나의 마이그레이션만 실행할 수 있습니다.

요청 본문:

필드 유형 필수 설명
mailbox_id integer 예 대상 TrekMail 사서함 ID
provider string 예 gmail, outlook, yahoo, icloud 또는 generic_imap
source_host string 예 IMAP 서버 호스트 이름
source_port integer 예 IMAP 포트
source_security string 예 ssl, tls 또는 none
source_email string 예 원본 이메일 주소
source_username string 아니요 이메일과 다른 경우 사용할 사용자 이름
source_password string 예 원본 비밀번호 또는 앱 비밀번호
selected_folders string[] 아니요 가져올 특정 폴더(기본값: 모두)
import_since date 아니요 이 날짜 이후의 이메일만 가져오기
skip_duplicates boolean 아니요 중복 메시지 건너뛰기(기본값: true)

응답: 마이그레이션 작업 리소스와 함께 201 반환.

오류 응답:

상태 코드 의미
409 conflict 이 계정에서 활성 마이그레이션이 이미 실행 중임
503 migration_capacity_reached 서버 전체 마이그레이션 한도 도달(재시도 가능)
422 validation_error 매개변수가 잘못되었거나 사서함을 찾을 수 없음

마이그레이션 취소

POST /api/v1/migrations/{id}:cancel
Scope: migrations:write

실행 중인 마이그레이션을 취소합니다. 마이그레이션은 활성 상태(pending, validating, planning 또는 processing)여야 합니다.

마이그레이션 재시도

POST /api/v1/migrations/{id}:retry
Scope: migrations:write

failed 또는 cancelled 마이그레이션을 재시도합니다. 진행률을 0으로 재설정하고 검증 파이프라인에 다시 진입합니다.

계정에서 다른 마이그레이션이 이미 실행 중이면 409를 반환합니다.

부분 마이그레이션

안전한 경우 TrekMail은 부분적으로 완료된 마이그레이션을 계속하려고 할 수 있습니다. 작업을 수행하기 전에 마이그레이션 상태를 확인하세요. 더 이상 진행되지 않으면 원본 계정 자격 증명과 한도를 검토한 후 재시도 엔드포인트 또는 대시보드의 계속 작업을 사용하세요. 최종 상태를 확인하지 않은 채 부분 가져오기가 완료될 것으로 가정하지 마세요.

마이그레이션 삭제

DELETE /api/v1/migrations/{id}
Scope: migrations:write

마이그레이션 레코드를 삭제합니다. 마이그레이션이 실행 중이면 안 됩니다(먼저 취소하세요).

성공하면 204 No Content를 반환합니다.

속도 제한

마이그레이션 쓰기 작업에는 표준 API 속도 제한과 별도로 토큰당 분당 10개 요청이라는 전용 속도 제한이 적용됩니다.

또한 서버는 전역 동시 실행 한도(기본값: 동시 마이그레이션 20개)를 적용합니다. 한도에 도달하면 새 마이그레이션 요청은 503과 함께 migration_capacity_reached 및 retryable: true를 반환합니다. 몇 분 후 다시 시도하세요.

감사 이벤트

모든 마이그레이션 API 작업은 감사 로그에 기록됩니다.

  • migration_started: 새 마이그레이션이 시작됨
  • migration_cancelled: 실행 중인 마이그레이션이 취소됨
  • migration_retried: 실패하거나 취소된 마이그레이션이 재시도됨
  • migration_deleted: 마이그레이션 레코드가 삭제됨

MCP 도구

단일 및 대량 마이그레이션을 테스트, 나열, 시작, 취소, 재시도, 재개하고 비밀번호를 업데이트하거나 삭제하는 작업을 포함하여 동일한 마이그레이션 기능을 MCP 서버에서 사용할 수 있습니다. 로컬에서 호스팅하는 MCP 관리자는 마이그레이션 쓰기에 명시적 승인을 요구할 수 있습니다. 자세한 내용은 AI 에이전트 연결(MCP)을 참조하세요.

대량 마이그레이션 API

대량 마이그레이션 API를 사용하면 CSV 형식의 데이터 페이로드로 여러 계정을 한 번에 마이그레이션할 수 있습니다. 사용자 가이드는 대량 이메일 마이그레이션을, 데이터 형식은 대량 마이그레이션 CSV 형식을 참조하세요.

엔드포인트

메서드 엔드포인트 범위 설명
POST /api/v1/migrations/bulk/preview migrations:write CSV 데이터 미리 보기 및 검증
POST /api/v1/migrations/bulk migrations:write 대량 마이그레이션 배치 시작
GET /api/v1/migrations/bulk migrations:read 대량 마이그레이션 배치 목록
GET /api/v1/migrations/bulk/{id} migrations:read 작업별 상태가 포함된 배치 세부 정보 가져오기
POST /api/v1/migrations/bulk/{id}:cancel migrations:write 전체 배치 취소
POST /api/v1/migrations/bulk/{id}:retry migrations:write 배치에서 실패한 작업 재시도
POST /api/v1/migrations/bulk/{id}:resume migrations:write 일시 중지된 배치 재개
DELETE /api/v1/migrations/bulk/{id} migrations:write 배치 레코드 삭제
PATCH /api/v1/migrations/bulk/{id}/jobs/{job}/password migrations:write 실패한 작업의 원본 비밀번호 업데이트

미리 보기 요청

POST /api/v1/migrations/bulk/preview
Scope: migrations:write
필드 유형 필수 설명
data string 예 CSV 데이터(줄마다 한 행)
provider string 아니요 gmail, outlook, yahoo, icloud, generic_imap
source_host string 아니요 IMAP 호스트(제공업체가 generic_imap인 경우)
source_port integer 아니요 IMAP 포트(기본값 993)
source_security string 아니요 ssl, tls, none
per_row_server boolean 아니요 각 행에 자체 서버 설정 포함(6열 형식)

응답에는 분류된 행(valid, invalid_source_email, invalid_destination 등), 요금제 한도, 예상 시간 및 저장 공간 정보가 포함됩니다.

배치 시작 요청

POST /api/v1/migrations/bulk
Scope: migrations:write

미리 보기와 같은 필드에 다음이 추가됩니다.

필드 유형 필수 설명
name string 아니요 배치 이름(비어 있으면 자동 생성)
folder_strategy string 아니요 all, standard, inbox_only(기본값: all)
import_since string 아니요 날짜 필터(YYYY-MM-DD)
skip_duplicates boolean 아니요 중복 메시지 건너뛰기(기본값: true)
idempotency_key string 아니요 클라이언트가 제공한 멱등성 키

동시 실행 한도

요금제 배치당 최대 행 수 계정당 동시 실행 수
Starter 100 2
Pro 300 5
Agency 1,000 10

전역 서버 한도(동시 마이그레이션 20개)는 단일 마이그레이션과 대량 마이그레이션이 공유합니다.

MCP 도구

대량 마이그레이션 MCP 도구는 preview_bulk_migration, start_bulk_migration, list_bulk_migrations, get_bulk_migration, cancel_bulk_migration, retry_bulk_migration, resume_bulk_migration, delete_bulk_migration, update_bulk_migration_job_password입니다. 로컬에서 호스팅하는 MCP 관리자는 쓰기 작업에 명시적 승인을 요구할 수 있습니다.

빠른 해결 방법

  • 403 "insufficient_scope": 토큰에 migrations:read 또는 migrations:write가 필요합니다. 올바른 범위로 새 토큰을 만드세요.
  • 403 "token_scope_blocked_by_plan": 마이그레이션 범위에는 유료 요금제(Starter 이상)가 필요합니다.
  • 409 "active migration running": 기존 마이그레이션을 취소하거나 완료될 때까지 기다리세요.
  • 503 "migration_capacity_reached": 서버 용량이 가득 찼습니다. 몇 분 후 다시 시도하세요.
  • test-connection의 422: IMAP 자격 증명, 호스트 이름, 포트 및 보안 설정을 확인하세요.

관련 문서

워크플로를 이어가는 인근 가이드로 이동하세요.

TrekMail 로그인

대시보드, 메일함, DNS에 액세스하세요.

12자 비밀번호 일치

재설정 이메일 전송됨

이 이메일로 등록된 계정이 있으면 비밀번호 재설정 안내를 보내드렸습니다.

계속 진행하면 TrekMail의 이용약관 및 개인정보 처리방침에 동의하게 됩니다.