소개

이 문서에서는 대량의 메시지를 처리하기 위해 REST API를 통해 Cisco SMA에서 메시지 관리 및 릴리스를 자동화하는 방법에 대해 설명합니다.

사전 요구 사항

요구 사항

다음 주제에 대한 지식을 보유하고 있으면 유용합니다.

- Cisco SMA 제품 지식

- REST API 기본 사항, Postman, curl 및 JSON 처리용 JQ에 익숙함

- SMA API 액세스에 유효한 자격 증명

- 명령줄

- SMA에 대한 네트워크 액세스

- 설치된 툴: curl(요청용), JQ(JSON 조작용), 초기 테스트용 Postman과 같은 클라이언트

- SMA에서 메시지 릴리스 작업을 수행하는 데 적합한 사용자 역할

사용되는 구성 요소

이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.

배경 정보

메시지 릴리스 자동화는 이메일 볼륨이 많은 환경에서 필수적입니다. 관리자는 API를 사용하여 특정 메시지(예: 발신자별)를 필터링하고 프로그래밍 방식으로 릴리스할 수 있으므로 GUI에서 수동 관리에 비해 운영 시간과 작업자 오류의 위험이 줄어듭니다.

초기 테스트

격리를 관리하려면 초기 쿼리를 수행하여 연결을 확인하고 데이터 구조를 확인하는 것으로 시작합니다.

https://dhxyz-sma2.iphmx.com/sma/api/v2.0/quarantine/messages?quarantineType=pvo&quarantines=TEST_QUARANTINE&limit=25&offset=0&orderBy=received&orderDir=desc&startDate=2026-03-15T00:00:00.000Z&endDate=2026-03-16T00:00:00.000Z

데이터 구조

- API 엔드포인트: SMA API의 기본 URL(예: https://dhxyz-sma2.iphmx.com/sma/api/v2.0/quarantine/messages).

- 격리 이름: 메시지를 검색할 특정 PVO 격리 식별자(예: TEST_QUARANTINE).

- 날짜 범위: 검색의 특정 기간을 정의하는 데 사용되는 startDate 및 endDate입니다.

- 제한: 단일 API 응답에서 반환할 최대 레코드 수입니다. 이렇게 하면 페이로드 크기를 관리할 수 있으며 큰 대기열을 처리할 때 시간 초과를 방지할 수 있습니다.

- Offset: 결과 집합의 시작 인덱스입니다. 페이지 매김에 사용됩니다. 예를 들어, 오프셋을 25로 설정하면 처음 25개 메시지가 생략되므로 다음 결과 배치를 검색할 수 있습니다.

GUI 및 API를 모두 사용하여 결과 확인

정보를 검색할 때 API 호출과 GUI에서 동일한 양의 메시지를 볼 수 있습니다.

postman GET 요청

TEST_QUARANTINE 메시지

CURL을 사용한 초기 테스트

권한 부여 헤더에 대한 Base64 인증 토큰을 생성합니다.

echo -n 'username:password' | base64

모든 메시지 검색

로컬 파일에 메시지를 추출하기 위해 curl 요청을 실행합니다.

curl -X GET "https://dhxyz-sma2.iphmx.com/sma/api/v2.0/quarantine/messages?quarantineType=pvo&quarantines=TEST_QUARANTINE&limit=25&offset=0&orderBy=received&orderDir=desc&startDate=2026-03-15T00:00:00.000Z&endDate=2026-03-16T00:00:00.000Z" \

-H "Authorization: Basic token-generated-in-base64" \

-H "Accept: application/json" \

-o response.json

총 개수 확인

받은 총 메시지 수 확인:

$ grep "totalCount" response.json | awk '{ print $2, $3}'

{"totalCount": 24},

도메인당 MID 필터링

JQ를 사용하여 해제할 메시지의 MID를 필터링합니다(예: 도메인별 필터링).

$ jq '[.data[] | select(.attributes.sender | endswith("@labcisco.com")) | .mid]' response.json > mids-labcisco-domain.json

$ cat mids-labcisco-domain.json

[

440,

439,

438,

437,

436,

435,

434,

433,

425,

414

]

MID의 수는 SMA GUI에서 TEST_QUARANTINE으로 검색할 경우 일치할 수 있습니다.

격리 검색

쿼런틴 결과

MID 필터링 및 페이로드 생성

MID를 필터링하고 페이로드 파일을 생성합니다.

$ jq '{action:"release", quarantineType:"pvo", quarantineName:"TEST_QUARANTINE", mids:[.data[] | select(.attributes.sender | endswith("@labcisco.com")) | .mid]}' response.json > payload.json

$ cat payload.json

{

"action": "release",

"quarantineType": "pvo",

"quarantineName": "TEST_QUARANTINE",

"mids": [

440,

439,

438,

437,

436,

435,

434,

433,

425,

414

]

}

릴리스 실행(POST)

릴리스 요청을 SMA에 보냅니다.

$ curl -X POST "https://dhxyz-sma2.iphmx.com/sma/api/v2.0/quarantine/messages" \

-H "Authorization: Basic token-generated-in-base64" \

-H "Content-Type: application/json" \

-d @payload.json

{"data": {"action": "release", "totalCount": 10}}

결과 확인

mail_logs 확인 중

mail_logs에서 릴리스된 메시지를 확인할 때 grep "release" mail_logs와 위에서 필터링한 동일한 MID를 기준으로 필터링할 수 있습니다. 릴리스된 MID도 동일합니다.

Sun Mar 15 11:48:21 2026 Info: MID 436 released from quarantine "TEST_QUARANTINE" (manual) t=1393

Sun Mar 15 11:48:21 2026 Info: MID 425 released from quarantine "TEST_QUARANTINE" (manual) t=1411

Sun Mar 15 11:48:21 2026 Info: MID 414 released from quarantine "TEST_QUARANTINE" (manual) t=2787

Sun Mar 15 11:48:21 2026 Info: MID 433 released from quarantine "TEST_QUARANTINE" (manual) t=1397

Sun Mar 15 11:48:21 2026 Info: MID 440 released from quarantine "TEST_QUARANTINE" (manual) t=1387

Sun Mar 15 11:48:21 2026 Info: MID 439 released from quarantine "TEST_QUARANTINE" (manual) t=1388

Sun Mar 15 11:48:21 2026 Info: MID 434 released from quarantine "TEST_QUARANTINE" (manual) t=1396

Sun Mar 15 11:48:21 2026 Info: MID 437 released from quarantine "TEST_QUARANTINE" (manual) t=1391

Sun Mar 15 11:48:21 2026 Info: MID 435 released from quarantine "TEST_QUARANTINE" (manual) t=1395

Sun Mar 15 11:48:21 2026 Info: MID 438 released from quarantine "TEST_QUARANTINE" (manual) t=1390

GUI에서 직접 확인

메시지를 릴리스한 도메인에 대해 동일한 검색을 수행하면 모든 메시지가 릴리스되었으므로 검색 결과가 없음을 알 수 있습니다.

새 결과 쿼런틴

API를 사용하여 확인

우체부

Retrieve All Messages에서 GET 명령을 다시 실행하여 totalCount가 감소했거나 특정 MID가 더 이상 존재하지 않음을 확인합니다.

postman GET 쿼리

컬

$ curl -X GET "https://dhxyz-sma2.iphmx.com/sma/api/v2.0/quarantine/messages?quarantineType=pvo&quarantines=TEST_QUARANTINE&limit=25&offset=0&orderBy=received&orderDir=desc&startDate=2026-03-12T00:00:00.000Z&endDate=2026-03-14T00:00:00.000Z" \

-H "Authorization: Basic token-generated-in-base64" \

-H "Accept: application/json" \

-o response.json

$ jq '[.data[] | select(.attributes.sender | endswith("@labcisco.com")) | .mid]' response.json > mids-labcisco-domain.json

$ cat mids-labcisco-domain.json

[]

대량 메시지 릴리스(500개 메시지)

대량 작업을 효과적으로 처리하려면 페이지 매김 기능을 사용하여 대규모 데이터 집합을 관리하는 방법을 이해해야 합니다. 많은 수의 메시지를 처리해야 하는 경우, API 응답 제약 조건을 초과하지 않고 전체 데이터 집합을 검색할 수 있도록 제한 및 오프셋 매개변수를 계산해야 합니다.

대량 작업을 위한 API 매개변수 조정

대량의 메시지를 검색할 때 다음 논리를 사용하여 요청을 구성합니다.

- 제한: 요청당 반환되는 레코드 수를 정의합니다. 이 값을 높은 숫자(예: 500 또는 1000)로 설정하여 한 번에 더 많은 데이터를 캡처할 수 있지만 시스템 성능 및 잠재적인 시간 초과에 유의해야 합니다.

- Offset: 결과 집합의 시작점을 정의합니다. 총 메시지 수가 제한을 초과하는 경우, 각 후속 호출에서 오프셋을 제한 값만큼 늘려 여러 요청을 수행해야 합니다(예: offset=0, offset=500, offset=1000).

워크플로 확장

앞의 10개 메시지 예에서 사용된 프로세스는 모든 대량 작업의 기반으로 사용됩니다. 워크플로의 크기를 조정하려면 offset 매개 변수를 체계적으로 늘려 대기열을 반복하면 됩니다. 배치 크기를 정의하기 위한 제한과 페이지를 탐색하기 위한 오프셋을 조정하여 이러한 값으로 '재생'하면 총 메시지 수에 관계없이 전체 격리 대기열을 효과적으로 검색 및 처리할 수 있습니다.

관련 정보

- AsyncOS API 16.0 for Cisco Secure Email and Web Manager 시작 설명서 - GD(일반 배포)

- Cisco 기술 지원 및 다운로드