এই পৃষ্ঠায় ব্যাখ্যা করা হয়েছে যে কীভাবে Mail Admin Quarantine API ব্যবহার করে আপনার Google Workspace অ্যাডমিন কোয়ারেন্টাইনে হোল্ডে রাখা মেসেজ খুঁজে পাবেন।
API,
customers.quarantinedMessages
রিসোর্সে দুটি পদ্ধতি অফার করে:
listপদ্ধতিটি কোনও ফিল্টারিং ছাড়াই কোয়ারেন্টাইন করা মেসেজ ফিরিয়ে দেয়। কোয়ারেন্টাইনে থাকা সব আইটেম পৃষ্ঠা ধরে ধরে দেখতে এটি ব্যবহার করুন।searchপদ্ধতিটি একটি স্ট্রাকচার্ড ফিল্টার, একটি Gmail সার্চ কোয়েরি বা উভয়ই ব্যবহার করে ফলাফলকে আরও নির্দিষ্ট করে। এটি ট্রায়াজ ওয়ার্কফ্লোর জন্য ব্যবহার করুন, যেমন, শুধুমাত্র পর্যালোচনার জন্য বাকি থাকা ইনবাউন্ড মেসেজ ফিরিয়ে আনা।
দুটি পদ্ধতিই গত ৩০ দিনের মেসেজ ফিরিয়ে আনে এবং দুটিই প্রতিটি মেসেজের জন্য একই বেসিক মেটাডেটা ফিরিয়ে আনে। হেডার, বডি, অ্যাটাচমেন্ট বা র মেসেজ ফিরিয়ে আনতে, মেসেজের বিবরণ পান দেখুন।
পূর্বশর্ত
- আপনি API সেট-আপ করুন বিকল্পে ধাপগুলি সম্পূর্ণ করেছেন।
- অ্যাক্সেস টোকেন যা অ্যাডমিন কোয়ারেন্টাইন বিশেষাধিকার সহ অ্যাডমিনিস্ট্রেটরের ছদ্মবেশ ধারণ করে এবং এতে
https://www.googleapis.com/auth/gmail.admin.quarantineবাhttps://www.googleapis.com/auth/gmail.admin.quarantine.readonlyস্কোপ অন্তর্ভুক্ত থাকে। ডোমেন-ওয়াইড ডেলিগেশনের মাধ্যমে অনুমোদন করুন দেখুন।
কোয়ারেন্টাইন করা মেসেজের তালিকা
কোয়ারেন্টাইন করা মেসেজের তালিকা তৈরি করতে, আপনার গ্রাহকের
customers.quarantinedMessages
রিসোর্সের
list
মেথডে GET অনুরোধ পাঠান:
GET https://mailadminquarantine.googleapis.com/v1/customers/CUSTOMER_ID/quarantinedMessages?pageSize=50
Authorization: Bearer ACCESS_TOKEN
CUSTOMER_ID-এর জায়গায় আপনার কাস্টমার আইডি লিখুন।
list পদ্ধতি নিম্নলিখিত কোয়েরি প্যারামিটার গ্রহণ করে:
| প্যারামিটার | বিবরণ |
|---|---|
pageSize |
প্রতি পৃষ্ঠায় ১ থেকে ৩০০টি পর্যন্ত মেসেজ দেখানো যাবে। এই প্যারামিটার সবসময় স্পষ্টভাবে সেট করুন। |
pageToken |
আগের উত্তর থেকে nextPageToken ভ্যালু। পরবর্তী পৃষ্ঠা ফিরিয়ে আনতে এটি ব্যবহার করুন। |
কোয়ারেন্টাইন করা মেসেজ সার্চ করুন
কোয়ারেন্টাইন করা মেসেজ সার্চ করতে, JSON বডি সহ customers.quarantinedMessages রিসোর্সে কাস্টম পদ্ধতিতে
:search
POST অনুরোধ পাঠান:
POST https://mailadminquarantine.googleapis.com/v1/customers/CUSTOMER_ID/quarantinedMessages:search
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{
"filter": "status = PENDING_TRIAGE AND direction = INBOUND",
"query": "from:suspicious@example.com",
"pageSize": 50
}
অনুরোধের প্রধান অংশে নিম্নলিখিত ফিল্ডগুলি থাকে। সব ফিল্ডই ঐচ্ছিক:
| ফিল্ড | বিবরণ |
|---|---|
filter |
AIP-160 সিনট্যাক্সে একটি স্ট্রাকচার্ড ফিল্টার। ফিল্টার সিনট্যাক্স দেখুন। |
query |
Gmail সার্চ কোয়েরি, যেমন has:attachment বা from:suspicious@example.com। কোয়েরিতে Gmail সার্চ বক্সের মতো একই অপারেটর ব্যবহার করা হয়। Gmail-এ আপনি যেসব সার্চ অপারেটর ব্যবহার করতে পারেন তা দেখুন। |
pageSize |
প্রতি পৃষ্ঠায় ১ থেকে ৩০০টি পর্যন্ত মেসেজ দেখানো যাবে। এই ফিল্ডটি সবসময় স্পষ্টভাবে সেট করুন। |
pageToken |
আগের উত্তর থেকে nextPageToken ভ্যালু। |
আপনি filter এবং query দুটিই সেট করলে, API শুধুমাত্র সেইসব মেসেজ দেখায় যেগুলি
দুটির সাথেই মেলে।
সিনট্যাক্স ফিল্টার করুন
filter ফিল্ডে নিম্নলিখিত ফিল্ড কাজ করে। AND অপারেটর ব্যবহার করে
সেগুলি একত্রিত করুন। অন্যান্য অপারেটর, যেমন OR এবং NOT, কাজ করে না।
| ফিল্ড | যেসব তুলনা করা যায় | ভ্যালু |
|---|---|---|
status |
= |
PENDING_TRIAGE, RELEASED অথবা DENIED। |
direction |
=, != |
INBOUND বা OUTBOUND। |
quarantine_name (বা quarantineName) |
= |
Google অ্যাডমিন কনসোলে দেখানো কোয়ারেন্টাইনের ডিসপ্লে নাম, যেমন "Default"। |
নিচে সঠিক ফিল্টারের উদাহরণ দেওয়া হল:
status = PENDING_TRIAGE
status = PENDING_TRIAGE AND direction = INBOUND
direction != OUTBOUND AND quarantine_name = "Default"
ভুল ফিল্টার থাকলে 400 INVALID_ARGUMENT সমস্যা দেখা যায়।
রেসপন্স
দুটি পদ্ধতিই প্রাথমিক মেটাডেটা সহ
QuarantinedMessage
রিসোর্সের একটি তালিকা প্রদান করে, সাথে আরও ফলাফল উপলভ্য থাকলে
nextPageToken প্রদান করে:
{
"quarantinedMessages": [
{
"name": "customers/01abc23de/quarantinedMessages/user@example.com:18d3ef45a8b2c1d0",
"messageId": "18d3ef45a8b2c1d0",
"messageOwner": "user@example.com",
"quarantines": [
"customers/01abc23de/quarantines/0"
],
"receiveTime": "2026-09-22T10:15:30Z",
"direction": "INBOUND",
"state": "PENDING_TRIAGE",
"retentionExpireTime": "2026-10-22T10:15:30Z",
"triggeredRules": [
{
"policyId": "123",
"ruleId": "456",
"displayName": "Inbound phishing protection"
}
]
}
],
"nextPageToken": "CAESBAgBEA..."
}
| ফিল্ড | বিবরণ |
|---|---|
name |
মেসেজের রিসোর্স নাম। customers.quarantinedMessages রিসোর্সে পরবর্তী get, release এবং deny কলে এটি ব্যবহার করুন। |
messageId |
অপরিবর্তনীয় Gmail মেসেজ আইডি। |
messageOwner |
মেসেজের মালিকানা আছে এমন মেলবক্সের ইমেল আইডি। |
quarantines |
মেসেজটি যে কোয়ারেন্টাইনে আছে তার রিসোর্সের নাম। কোয়ারেন্টাইনের ডিসপ্লে নাম পেতে customers.quarantines রিসোর্সের get পদ্ধতি কল করুন। |
receiveTime |
Gmail কখন মেসেজটি পেয়েছে। |
direction |
INBOUND যদি কোনও ব্যবহারকারী মেসেজটি পেয়ে থাকেন, অথবা OUTBOUND যদি কোনও ব্যবহারকারী এটি পাঠিয়ে থাকেন। |
state |
PENDING_TRIAGE, RELEASED অথবা DENIED। |
retentionExpireTime |
কোয়ারেন্টাইন যখন মেসেজ ধরে রাখা বন্ধ করে দেয়। |
triggeredRules |
যেসব নিয়মের কারণে মেসেজ কোয়ারেন্টাইন করা হয়েছে। |
unreachable |
যেসব অ্যাকাউন্টের জন্য পরিষেবা কোয়ারেন্টাইন করা মেসেজ ফিরিয়ে আনতে পারেনি। যদি থাকে, তাহলে পরে আবার অনুরোধ করুন। |
ফলাফলের মাধ্যমে পৃষ্ঠা
মিলে যাওয়া সব মেসেজ ফিরিয়ে আনতে:
pageSize-এর মাধ্যমে প্রথম অনুরোধ পাঠান।- উত্তরে
nextPageTokenথাকলে, একই প্যারামিটার সহ অনুরোধের পুনরাবৃত্তি করুন এবংpageToken-কে সেই ভ্যালুতে সেট করুন। - উত্তরে
nextPageTokenনা থাকলে থামান।
নিম্নলিখিত Python উদাহরণটি সেইসব ইনবাউন্ড মেসেজের মাধ্যমে পেজ করে যেগুলি ট্রায়াজের জন্য বাকি আছে:
import requests
BASE_URL = 'https://mailadminquarantine.googleapis.com/v1'
CUSTOMER_ID = '01abc23de' # Your customer ID without the leading 'C'.
headers = {
'Authorization': f'Bearer {access_token}',
'Content-Type': 'application/json',
}
search_url = f'{BASE_URL}/customers/{CUSTOMER_ID}/quarantinedMessages:search'
body = {
'filter': 'status = PENDING_TRIAGE AND direction = INBOUND',
'pageSize': 100,
}
messages = []
while True:
response = requests.post(search_url, headers=headers, json=body)
response.raise_for_status()
result = response.json()
messages.extend(result.get('quarantinedMessages', []))
page_token = result.get('nextPageToken')
if not page_token:
break
body['pageToken'] = page_token
print(f'Found {len(messages)} messages pending triage.')