Как администратор, вы можете загружать учетные записи почтовых ящиков в своем домене для целей аудита. Чтобы подготовить почтовый ящик к экспорту, API аудита электронной почты создает зашифрованную копию почтового ящика пользователя. Система возвращает URL-адреса зашифрованных файлов почтового ящика, которые после загрузки и расшифровки становятся доступны в формате mbox .
Максимальное количество запросов на создание экспорта почтового ящика в день — 100 запросов от всех администраторов домена. Процесс создания почтового ящика может занять много времени и может занять несколько дней в зависимости от размера почтового ящика.
Google хранит зашифрованные файлы почтового ящика в течение 3 недель, поэтому убедитесь, что вы загрузили эти файлы почтового ящика в течение этого периода времени. По истечении этого времени они удаляются. Чтобы удалить эти файлы почтового ящика до истечения заданного периода времени, см. раздел Удаление зашифрованного почтового ящика .
Чтобы скачать почтовый ящик, сделайте следующее:
- Создайте и загрузите открытый ключ — создайте открытый ключ шифрования для загрузки почтовых ящиков. Этот шаг нужно сделать только один раз. Если вы уже создали открытый ключ, вам не нужно выполнять этот шаг для каждого экспорта почтового ящика.
- Создание экспортной версии почтового ящика пользователя . Процесс экспорта почтового ящика начинается, когда вы запрашиваете создание копии почтового ящика пользователя. API аудита электронной почты аутентифицирует и авторизует ваши учетные данные и возвращает уникальный идентификатор запроса. Процесс создания почтового ящика может занять много времени и может занять несколько дней в зависимости от размера почтового ящика.
- Получить статус загрузки почтового ящика . Используйте идентификатор запроса на экспорт почтового ящика, чтобы получить статус ожидающего запроса. После того как почтовый ящик скопирован и подготовлен к экспорту, ответ возвращает статус
COMPLETED
вместе со списком зашифрованных файлов почтового ящика в виде URL-адресов HTTP. Используйте этот набор URL-адресов для загрузки файлов почтового ящика. - Получите загруженные файлы почтового ящика. После загрузки зашифрованных файлов расшифруйте файлы почтового ящика с помощью закрытого ключа домена. После расшифровки файлы просматриваются в формате mbox.
Создать открытый ключ
Прежде чем вы сможете загрузить почтовый ящик, вам необходимо загрузить общедоступный ключ шифрования OpenPGP для домена. Этот шаг делается один раз при настройке загрузки почтового ящика . Вы можете сгенерировать пару открытого/закрытого ключей с помощью любого программного обеспечения, совместимого с OpenPGP, например GNU Privacy Guard (GPG) . Этот общедоступный ключ шифрования должен быть ключом RSA в формате PGP в кодировке ASCII.
Чтобы сгенерировать ключ с помощью GNU Privacy Guard, выполните следующие действия:
Сгенерируйте новый ключ:
gpg --gen-key --expert
Чтобы установить свои собственные возможности, выберите опцию
8
и переключите возможность подписи.Чтобы завершить процесс генерации ключа, примите все параметры по умолчанию. Для этого ключа должно быть включено действие шифрования. Вы можете отключить действие знака, поскольку оно не используется.
Экспортируйте только ключ для идентификатора пользователя, соответствующего вашему Google Workspace:
Если вы впервые используете GPG для генерации ключа, экспортируйте только что сгенерированный единственный ключ:
gpg --armor --export
Если вы уже использовали GPG для создания других ключей, у вас в связке ключей есть несколько ключей. Получить список ключей:
gpg --list-keys
Если в списке несколько ключей, укажите
uid
ключа, который вы хотите экспортировать:gpg --armor --export KEY_UID
Закодируйте ключ с помощью кодировки Base64 с помощью Motobit или другого инструмента. Обязательно скопируйте все строки, включая заголовок, и не добавляйте лишних строк. Файл открытого ключа следует читать с кодировкой US-ASCII (предпочтительное имя кодировки IANA для ASCII).
Пример
В следующем примере показано, как преобразовать открытый ключ в строку в кодировке Base64.
В следующем примере показан открытый ключ до преобразования:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.10 (GNU/Linux)
mQENBErWaD4BCACt2ngfs6/+QOGYbxNbc3gLnXHtqp7NTTXNW4SJo+/A1oUZoGxA
Qx6zFXhQ/8MXW66+8STS1YqNJOARFtjbIKPwjrdcukdPzYVKGZre0RaxCnMyCV+6
F4YNQD1UegHTu2wCGR1uiYOfLxUa7/do6s31WRTH8vbtiPY9/6obEIxDjDzKIqYO
rvRDWqALBYklOkJ3Hbgfyl42EsnLiAhS+dMs2PCDi2X0ZJCPZ8eTjLsdAtqVZJ+R
WC1J3UDuFfmcpsDYRtUL9w6YMtlapC+9mmJ3ABEBAAG0V0Rhc2hlciBUZXN0IChU
dGVyMkBkYXNoZXItaHlkLXRlc3QuY29tPokBOAQTAQIAIgUCStZoPgIbDQYLCQgH
k19QckTpwBdskEYumFvmWve5UX2SVV7fzOC0nZtgFxtZGlJhGmjsA3rxFTlb+Ira
WZayXCWYiCzd7m9z5/KyGD2GFTK/94mdm25N6GXh/b35pIFZXBI/rZjrYrhYRBFu
GtzGFIw9AAnFyUzEUUVfPWUtBe5yHMW54C60nHk5xYIa6qFhiLp4PYqZCrYX1iIs
fRROFA==
=STHr
-----END PGP PUBLIC KEY BLOCK-----
В следующем примере показан открытый ключ после преобразования:
LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tDQpWZXJzaW9uOiBHbn
VQRyB2MS40LjEwIChHTlUvTGludXgpDQoNCm1RRU5CRXJXYUQ0QkNBQ3QybmdmczYv
K1FPR1lieE5iYzNnTG5YSHRxcDdOVFRYTlc0U0pvKy9BMW9VWm9HeEENClF4NnpGWG
hRLzhNWFc2Nis4U1RTMVlxTkpPQVJGdGpiSUtQd2pyZGN1a2RQellWS0dacmUwUmF4
Q25NeUNWKzYNCkY0WU5RRDFVZWdIVHUyd0NHUjF1aVlPZkx4VWE3L2RvNnMzMVdSVE
g4dmJ0aVBZOS82b2JFSXhEakR6S0lxWU8NCnJ2UkRXcUFMQllrbE9rSjNIYmdmeWw0
MkVzbkxpQWhTK2RNczJQQ0RpMlgwWkpDUFo4ZVRqTHNkQXRxVlpKK1INCldDMUozVU
R1RmZtY3BzRFlSdFVMOXc2WU10bGFwQys5bW1KM0FCRUJBQUcwVjBSaGMyaGxjaUJV
WlhOMElDaFUNCmRHVnlNa0JrWVhOb1pYSXRhSGxrTFhSbGMzUXVZMjl0UG9rQk9BUV
RBUUlBSWdVQ1N0Wm9QZ0liRFFZTENRZ0gNCmsxOVFja1Rwd0Jkc2tFWXVtRnZtV3Zl
NVVYMlNWVjdmek9DMG5adGdGeHRaR2xKaEdtanNBM3J4RlRsYitJcmENCldaYXlYQ1
dZaUN6ZDdtOXo1L0t5R0QyR0ZUSy85NG1kbTI1TjZHWGgvYjM1cElGWlhCSS9yWmpy
WXJoWVJCRnUNCkd0ekdGSXc5QUFuRnlVekVVVVZmUFdVdEJlNXlITVc1NEM2MG5Iaz
V4WUlhNnFGaGlMcDRQWXFaQ3JZWDFpSXMNCmZSUk9GQT09DQo9U1RIcg0KLS0tLS1F
TkQgUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQ==
Загрузите открытый ключ
Чтобы загрузить открытый ключ, создайте запись XML с открытым ключом в кодировке Base64:
<atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'> <apps:property name="publicKey" value="ENCODED_KEY"/> </atom:entry>
Отправьте запрос HTTP
POST
на URI каналаpublickey
в вашем домене Google Workspace:POST https://apps-apis.google.com/a/feeds/compliance/audit/publickey/DOMAIN_NAME
В случае успеха сервер возвращает
201 CREATED status code
и ответ, аналогичный этому примеру:<entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'> <id>https://apps-apis.google.com/a/feeds/compliance/audit/publickey/DOMAIN_NAME/id>/id> <updated>2009-04-17T15:02:45.646Z</updated> <link rel='self' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/publickey/DOMAIN_NAME/id'/> <link rel='edit' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/publickey/DOMAIN_NAME/id'/> <apps:property name='publicKey' value='ENCODED_KEY'/> </entry>
Создать копию почтового ящика для экспорта
Чтобы подготовить копию почтового ящика пользователя для экспорта и загрузки, используйте канал экспорта API аудита электронной почты.
Отправьте POST
запрос на URI экспортного фида и включите заголовок Authorization
:
POST https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/DOMAIN_NAME/SOURCE_USERNAME
Замените следующее:
-
DOMAIN_NAME
: имя домена Google Workspace, например example.com. -
SOURCE_USERNAME
: имя пользователя почтового ящика, который вы хотите загрузить.
Запрос содержит следующий заголовок Content-type
:
Content-type: application/atom+xml
Полный список параметров, используемых в запросе на экспорт почтового ящика, см. в разделе Ресурсы: export
.
Пример создания почтового ящика для экспорта
В примере используются следующие параметры:
- Пользователь, для которого нужно экспортировать почтовый ящик, —
quinn@example.com
. -
beginDate
—July 1, 2022, 04:30 hours
. - Дата
endDate
—August 30, 2022, 20:00 hours
. -
includeDeleted
имеет значениеfalse
. -
searchQuery
находитсяin:chat
. -
packageContent
—FULL_MESSAGE
.
Протокол
POST https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn <atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'> <apps:property name='beginDate' value='2022-07-01 04:30'/> <apps:property name='endDate' value='2022-08-30 20:00'/> <apps:property name='includeDeleted' value='false'/> <apps:property name='searchQuery' value='in:chat'/> <apps:property name='packageContent' value='FULL_MESSAGE'/> </atom:entry>
В случае успеха сервер возвращает код состояния 201 CREATED
и запись AtomPub.
<entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'> <id>https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/53156>/id> <updated>2022-10-17T15:02:45.646Z</updated> <link rel='self' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/53156'/> <link rel='edit' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/53156'/> <apps:property name='status' value='PENDING'/> <apps:property name='packageContent' value='FULL_MESSAGE'/> <apps:property name='includeDeleted' value='false'/> <apps:property name='searchQuery' value='in:chat'/> <apps:property name='completedDate' value='2022-09-18 10:13'/> <apps:property name='adminEmailAddress' value='admin1@example.com'/> <apps:property name='requestId' value='53156'/> <apps:property name='userEmailAddress' value='quinn@example.com'/> <apps:property name='endDate' value='2022-08-30 20:00'/> <apps:property name='requestDate' value='2022-09-17 12:51'/> <apps:property name='beginDate' value='2022-07-01 04:30'/> </entry>
В этом примере обработка этого почтового ящика завершена. Свойство status
имеет COMPLETED
, а numberOfFiles
, возвращаемое для экспорта, равно двум.
Ява
import java.util.Calendar; import com.google.gdata.client.appsforyourdomain.audit.AuditService; import com.google.gdata.client.appsforyourdomain.audit.MailBoxDumpRequest; import com.google.gdata.data.appsforyourdomain.generic.GenericEntry; ... MailBoxDumpRequest request = new MailBoxDumpRequest(); request.setAdminEmailAddress("admin@example.com"); request.setUserEmailAddress("quinn@example.com"); Calendar beginDate = Calendar.getInstance(); beginDate.set(2022, Calendar.JULY, 1, 4, 30); request.setBeginDate(beginDate.getTime()); Calendar endDate = Calendar.getInstance(); endDate.set(2022, Calendar.AUGUST, 30, 20, 0); request.setEndDate(endDate.getTime()); request.setIncludeDeleted(false); request.setSearchQuery("in:chat"); request.setPackageContent("FULL_MESSAGE"); AuditService service = new AuditService("admin@example.com", "p@55w0rd", "example.com", "example.com-auditapp-v1"); GenericEntry mailboxDumpEntry = service.createMailboxDumpRequest(request); String requestId = mailboxDumpEntry.getRequestId(); String status = mailboxDumpEntry.getStatus(); String numberOfFiles = mailboxDumpEntry.getNumberOfFiles();
.СЕТЬ
using System; using Google.GData.Apps; using Google.GData.Extensions.Apps; ... MailboxDumpRequest mailboxDumpRequest = new MailboxDumpRequest(); mailboxDumpRequest.BeginDate = new DateTime(2022, 7, 1, 4, 30, 0); mailboxDumpRequest.EndDate = new DateTime(2022, 8, 30, 20, 0, 0); mailboxDumpRequest.IncludeDeleted = false; mailboxDumpRequest.SearchQuery = "in:chat"; mailboxDumpRequest.PackageContent = MonitorLevel.FULL_MESSAGE; AuditService service = new AuditService("example.com", "example.com-auditapp-v1"); service.setUserCredentials("admin@example.com", "p@55w0rd"); MailboxDumpRequest dumpRequest = service.CreateMailboxDumpRequest("quinn", mailboxDumpRequest);
Получить статус экспорта почтового ящика
Поскольку подготовка к экспорту почтового ящика является асинхронным процессом, используйте этот запрос на получение, чтобы проверить, завершена ли обработка зашифрованного почтового ящика.
Чтобы получить сведения о состоянии почтового ящика, подготовленного к экспорту, отправьте HTTP-запрос GET
с requestId
почтового ящика в URI канала экспорта и включите заголовок Authorization
:
GET https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/DOMAIN_NAME/SOURCE_USERNAME/MAILBOX_REQUESTID
Замените следующее:
-
DOMAIN_NAME
: имя домена Google Workspace, например example.com. -
SOURCE_USERNAME
: имя пользователя почтового ящика, который вы хотите загрузить. -
MAILBOX_REQUESTID
:requestID
— это уникальный идентификатор запроса на экспорт почтового ящика, который возвращается при первоначальном запросе экспорта.
Этот запрос возвращает запись AtomPub, включая текущий статус экспорта почтового ящика. Возможные значения текущего статуса:
-
PENDING
- Запрос обрабатывается.
-
ERROR
- Запрос не выполнен из-за какой-то ошибки. Пример возможной ошибки: для домена был загружен неправильный открытый ключ API.
-
COMPLETED
- Запрос полностью обработан, и зашифрованные файлы почтового ящика готовы к загрузке.
-
MARKED_DELETE
- Запрос помечается для удаления при следующем запуске задания очистки Google. Дополнительные сведения об этом задании очистки см. в разделе Удаление зашифрованного почтового ящика .
-
DELETED
- Файлы почтового ящика были успешно удалены с помощью операции «Удалить зашифрованный почтовый ящик» .
-
EXPIRED
- Файлы почтового ящика были удалены Google по истечении трехнедельного срока хранения.
Пример получения статуса экспорта почтового ящика
В этом примере извлекается состояние почтового ящика, соответствующее идентификаторам requestIds
53156
и 34201
, для пользователя quinn@example.com
.
Протокол
GET https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/53156
В случае успеха сервер возвращает код состояния 201 CREATED
.
Как видно из следующего ответа, статус — ERROR
и, следовательно, зашифрованные файлы почтового ящика не были созданы.
<entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'> <id>https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/53156</id> <updated>2022-10-17T15:02:45.646Z</updated> <link rel='self' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/53156'/> <link rel='edit' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/53156'/> <apps:property name='status' value='ERROR'/> <apps:property name='packageContent' value='FULL_MESSAGE'/> <apps:property name='includeDeleted' value='false'/> <apps:property name='searchQuery' value='in:chat'/> <apps:property name='completedDate' value='2022-09-18 10:13'/> <apps:property name='adminEmailAddress' value='admin1@example.com'/> <apps:property name='numberOfFiles' value='0'/> <apps:property name='requestId' value='53156'/> <apps:property name='userEmailAddress' value='quinn@example.com'/> <apps:property name='endDate' value='2022-08-30 20:00'/> <apps:property name='requestDate' value='2022-09-17 12:51'/> <apps:property name='beginDate' value='2022-07-01 04:30'/> </entry>
В этом примере извлекается статус почтового ящика, соответствующий requestId
34201
:
GET https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/34201
Второй пример успешен со статусом COMPLETED
. Он возвращает два URL-адреса файлов почтовых ящиков, содержащих зашифрованные файлы почтовых ящиков, которые можно загрузить, используя URL-адреса в элементах fileUrl
.
<entry>... ... <apps:property name='status' value='COMPLETED'/> <apps:property name='packageContent' value='FULL_MESSAGE'/> <apps:property name='completedDate' value='2022-09-18 10:13'/> <apps:property name='adminEmailAddress' value='admin2@example.com'/> <apps:property name='numberOfFiles' value='2'/> <apps:property name='requestId' value='34201'/> <apps:property name='userEmailAddress' value='namrata@example.com'/> <apps:property name='requestDate' value='2022-09-17 12:51'/> <apps:property name='fileUrl0' value='https://apps-apis.google.com/a/data/compliance/audit/OQAAABW3Z2OlwkDFR0H5n_6lnYAzv-pWlkAlbTyAzvJEV0MC4c7lBDW' /> <apps:property name='fileUrl1' value='https://apps-apis.google.com/a/data/compliance/audit/OQAAABW3Z2OlwkD55nLv-pWlkAlbTyAzvJEVPnVYW45C4cC34gtyVCC' /> </entry>
Ява
import com.google.gdata.client.appsforyourdomain.audit.AuditService; import com.google.gdata.data.appsforyourdomain.generic.GenericEntry; ... AuditService service = new AuditService("admin@example.com", "p@55w0rd", "example.com", "example.com-auditapp-v1"); GenericEntry mailboxDumpEntry1 = service.retrieveMailboxDumpRequest("quinn", "53156"); String status = mailboxDumpEntry1.getProperty("status"); // Status is "ERROR" if the mailbox for this request isn't created GenericEntry mailboxDumpEntry2 = service.retrieveMailboxDumpRequest("quinn", "34201"); String status = mailboxDumpEntry2.getProperty("status");
.СЕТЬ
using System; using Google.GData.Apps; using Google.GData.Extensions.Apps; ... AuditService service = new AuditService("example.com", "example.com-auditapp-v1"); service.setUserCredentials("admin@example.com", "p@55w0rd"); MailboxDumpRequest mailboxDumpEntry1 = service.RetrieveMailboxDumpRequest("quinn", "53156"); RequestStatus status1 = mailboxDumpEntry1.Status; // Status is "ERROR" if the mailbox for this request isn't created MailboxDumpRequest mailboxDumpEntry2 = service.RetrieveMailboxDumpRequest("quinn", "34201"); RequestStatus status2 = mailboxDumpEntry2.Status;
Получить все запросы о состоянии почтового ящика
Чтобы получить все запросы почтовых ящиков для домена, начиная с определенной даты, выполните HTTP-запрос GET
к URI канала экспорта и включите заголовок Authorization
:
GET https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/DOMAIN_NAME?fromDate=FROM_DATE
Замените следующее:
-
DOMAIN_NAME
: имя домена Google Workspace, например example.com. -
FROM_DATE
: дата запроса зашифрованного почтового ящика в формате URL-адреса в формате всемирного координированного времени (UTC). Если в этом запросеGET
не указанfromDate
, извлекаются все запросы за последние три недели.
Для большого ответа каждая страница результатов возвращает максимум 100 записей и включает URI в теге <link rel='next'...>
, указывающий на следующую страницу результатов. При разработке клиентского приложения ваш код должен управлять этими дополнительными результатами.
Пример получения всех запросов о состоянии почтового ящика
В этом примере извлекаются все запросы о состоянии почтового ящика для домена example.com
сделанные не позднее 9 PM, August 30, 2022
.:
Протокол
<feed xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:apps='http://schemas.google.com/apps/2006'> <id>https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/domain</id> <updated>2010-03-17T15:29:21.064Z</updated> <link rel='next' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/tapoloka.com?fromDate=2022-08-30%2021:00'/> <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/tapoloka.com'/> <link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/tapoloka.com'/> <link rel='self' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/tapoloka.com?fromDate=2022-08-30%2021:00'/> <openSearch:startIndex>1</openSearch:startIndex> <entry> <atom:id>https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/domain/request ID</atom:id> <atom:updated>2022-04-17T15:29:21.064Z</atom:updated> <atom:link rel='self' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/domain/request ID'/> <atom:link rel='edit' type='application/atom+xml' href='https://apps-apis.google.com/feeds/compliance/audit/mail/export/domain/request ID'/> <apps:property name='status' value='ERROR'/> <apps:property name='packageContent' value='FULL_MESSAGE'/> <apps:property name='includeDeleted' value='false'/> <apps:property name='searchQuery' value='in:chat'/> <apps:property name='completedDate' value='2022-09-18 10:13'/> <apps:property name='adminEmailAddress' value='admin1@example.com'/> <apps:property name='numberOfFiles' value='0'/> <apps:property name='requestId' value='the mailbox ID for this request'/> </entry> <entry> <id>>https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/domain/second request ID</id> ... <apps:property name='status' value='COMPLETED'/> <apps:property name='packageContent' value='FULL_MESSAGE'/> <apps:property name='includeDeleted' value='false'/> <apps:property name='completedDate' value='2022-09-18 10:13'/> <apps:property name='adminEmailAddress' value='admin1@example.com'/> <apps:property name='numberOfFiles' value='0'/> <apps:property name='requestId' value='the mailbox ID for this request'/> <apps:property name='userEmailAddress' value='quinn@example.com'/> <apps:property name='endDate' value='2022-08-30 20:00'/> <apps:property name='requestDate' value='2022-09-17 12:51'/> <apps:property name='beginDate' value='2022-07-01 04:30'/> </entry> </feed>
Ява
import java.util.Calendar; import java.util.List; import com.google.gdata.client.appsforyourdomain.audit.AuditService; import com.google.gdata.client.appsforyourdomain.audit.MailBoxDumpRequest; import com.google.gdata.data.appsforyourdomain.generic.GenericEntry; ... AuditService service = new AuditService("admin@example.com", "p@55w0rd", "example.com", "example.com-auditapp-v1"); Calendar fromDate = Calendar.getInstance(); fromDate.set(2022, Calendar.AUGUST, 30, 21, 0); List<GenericEntry> mailboxDumpRequestEntries = service.retrieveAllMailboxDumpRequests(fromDate.getTime()); for (GenericEntry entry : mailboxDumpRequestEntries) { MailBoxDumpRequest request = new MailBoxDumpRequest(entry); String status = request.getStatus(); }
.СЕТЬ
using System; using System.Collections.Generic; using Google.GData.Apps; using Google.GData.Extensions.Apps; ... AuditService service = new AuditService("example.com", "example.com-auditapp-v1"); service.setUserCredentials("admin@example.com", "p@55w0rd"); GenericFeed<MailboxDumpRequest> dumpRequests = service.RetrieveAllMailboxDumpRequests(new DateTime(2022, 8, 30, 21, 0, 0);
Удалить зашифрованный почтовый ящик
Чтобы удалить зашифрованные файлы почтового ящика со статусом COMPLETED
или MARKED_DELETED
, выполните HTTP-запрос DELETE
к URI канала экспорта, включая requestId
почтового ящика и заголовок Authorization
.
DELETE https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/DOMAIN_NAME/SOURCE_USERNAME/MAILBOX_REQUESTID
Замените следующее:
-
DOMAIN_NAME
: имя домена Google Workspace, например example.com. -
SOURCE_USERNAME
: имя пользователя почтового ящика, который вы скачали. -
MAILBOX_REQUESTID
:requestID
— это уникальный идентификатор запроса на экспорт почтового ящика, который возвращается при первоначальном запросе экспорта.
Если в процессе удаления возникают какие-либо ошибки, возвращается статус MARKED_DELETE
. Этот запрос будет автоматически удален заданием очистки Google в течение 24 часов. Однако для запроса со статусом MARKED_DELETE
некоторые (или все) файлы почтового ящика могут быть доступны для загрузки. Если вы хотите убедиться, что файлы удалены, запускайте эту операцию еще раз, пока не вернется статус DELETED
. Если статус MARKED_DELETE
возвращается последовательно, повторите попытку после экспоненциального замедления времени.
Пример удаления зашифрованного почтового ящика
В этом примере удаляется почтовый ящик пользователя quinn@example.com
связанный с идентификатором requestId
34201
:
Протокол
DELETE https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/34201
Ява
import com.google.gdata.client.appsforyourdomain.audit.AuditService; ... AuditService service = new AuditService("admin@example.com", "p@55w0rd", "example.com", "example.com-auditapp-v1"); service.deleteMailboxDumpRequest("quinn", "34201");
.Сеть
using System; using Google.GData.Apps; using Google.GData.Extensions.Apps; ... AuditService service = new AuditService("example.com", "example.com-auditapp-v1"); service.setUserCredentials("admin@example.com", "p@55w0rd"); service.DeleteMailboxDumpRequest("quinn", "34201");
Как администратор, вы можете загружать учетные записи почтовых ящиков в своем домене для целей аудита. Чтобы подготовить почтовый ящик к экспорту, API аудита электронной почты создает зашифрованную копию почтового ящика пользователя. Система возвращает URL-адреса зашифрованных файлов почтового ящика, которые после загрузки и расшифровки становятся доступны в формате mbox .
Максимальное количество запросов на создание экспорта почтовых ящиков в день — 100 запросов от всех администраторов домена. Процесс создания почтового ящика может занять много времени и может занять несколько дней в зависимости от размера почтового ящика.
Google хранит зашифрованные файлы почтового ящика в течение 3 недель, поэтому убедитесь, что вы загрузили эти файлы почтового ящика в течение этого периода времени. По истечении этого времени они удаляются. Чтобы удалить эти файлы почтового ящика до истечения заданного периода времени, см. раздел Удаление зашифрованного почтового ящика .
Чтобы скачать почтовый ящик, сделайте следующее:
- Создайте и загрузите открытый ключ — создайте открытый ключ шифрования для загрузки почтовых ящиков. Этот шаг нужно сделать только один раз. Если вы уже создали открытый ключ, вам не нужно выполнять этот шаг для каждого экспорта почтового ящика.
- Создание экспортной версии почтового ящика пользователя . Процесс экспорта почтового ящика начинается, когда вы запрашиваете создание копии почтового ящика пользователя. API аудита электронной почты аутентифицирует и авторизует ваши учетные данные и возвращает уникальный идентификатор запроса. Процесс создания почтового ящика может занять много времени и может занять несколько дней в зависимости от размера почтового ящика.
- Получить статус загрузки почтового ящика . Используйте идентификатор запроса на экспорт почтового ящика, чтобы получить статус ожидающего запроса. После того как почтовый ящик скопирован и подготовлен к экспорту, ответ возвращает статус
COMPLETED
вместе со списком зашифрованных файлов почтового ящика в виде URL-адресов HTTP. Используйте этот набор URL-адресов для загрузки файлов почтового ящика. - Получите загруженные файлы почтового ящика. После загрузки зашифрованных файлов расшифруйте файлы почтового ящика с помощью закрытого ключа домена. После расшифровки файлы просматриваются в формате mbox.
Создать открытый ключ
Прежде чем вы сможете загрузить почтовый ящик, вам необходимо загрузить общедоступный ключ шифрования OpenPGP для домена. Этот шаг делается один раз при настройке загрузки почтового ящика . Вы можете создать пару открытого/закрытого ключей с помощью любого OpenPGP-совместимого программного обеспечения, такого как GNU Privacy Guard (GPG) . Этот общедоступный ключ шифрования должен быть ключом RSA в формате PGP в кодировке ASCII.
Чтобы сгенерировать ключ с помощью GNU Privacy Guard, выполните следующие действия:
Сгенерируйте новый ключ:
gpg --gen-key --expert
Чтобы установить свои собственные возможности, выберите опцию
8
и переключите возможность подписи.Чтобы завершить процесс генерации ключа, примите все параметры по умолчанию. Для этого ключа должно быть включено действие шифрования. Вы можете отключить действие знака, поскольку оно не используется.
Экспортируйте только ключ для идентификатора пользователя, соответствующего вашему Google Workspace:
Если вы впервые используете GPG для генерации ключа, экспортируйте только что сгенерированный единственный ключ:
gpg --armor --export
Если вы уже использовали GPG для создания других ключей, у вас в связке ключей есть несколько ключей. Получить список ключей:
gpg --list-keys
Если в списке несколько ключей, укажите
uid
ключа, который вы хотите экспортировать:gpg --armor --export KEY_UID
Закодируйте ключ с помощью кодировки Base64 с помощью Motobit или другого инструмента. Обязательно скопируйте все строки, включая заголовок, и не добавляйте лишних строк. Файл открытого ключа следует читать с кодировкой US-ASCII (предпочтительное имя кодировки IANA для ASCII).
Пример
В следующем примере показано, как преобразовать открытый ключ в строку в кодировке Base64.
В следующем примере показан открытый ключ до преобразования:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.10 (GNU/Linux)
mQENBErWaD4BCACt2ngfs6/+QOGYbxNbc3gLnXHtqp7NTTXNW4SJo+/A1oUZoGxA
Qx6zFXhQ/8MXW66+8STS1YqNJOARFtjbIKPwjrdcukdPzYVKGZre0RaxCnMyCV+6
F4YNQD1UegHTu2wCGR1uiYOfLxUa7/do6s31WRTH8vbtiPY9/6obEIxDjDzKIqYO
rvRDWqALBYklOkJ3Hbgfyl42EsnLiAhS+dMs2PCDi2X0ZJCPZ8eTjLsdAtqVZJ+R
WC1J3UDuFfmcpsDYRtUL9w6YMtlapC+9mmJ3ABEBAAG0V0Rhc2hlciBUZXN0IChU
dGVyMkBkYXNoZXItaHlkLXRlc3QuY29tPokBOAQTAQIAIgUCStZoPgIbDQYLCQgH
k19QckTpwBdskEYumFvmWve5UX2SVV7fzOC0nZtgFxtZGlJhGmjsA3rxFTlb+Ira
WZayXCWYiCzd7m9z5/KyGD2GFTK/94mdm25N6GXh/b35pIFZXBI/rZjrYrhYRBFu
GtzGFIw9AAnFyUzEUUVfPWUtBe5yHMW54C60nHk5xYIa6qFhiLp4PYqZCrYX1iIs
fRROFA==
=STHr
-----END PGP PUBLIC KEY BLOCK-----
В следующем примере показан открытый ключ после преобразования:
LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tDQpWZXJzaW9uOiBHbn
VQRyB2MS40LjEwIChHTlUvTGludXgpDQoNCm1RRU5CRXJXYUQ0QkNBQ3QybmdmczYv
K1FPR1lieE5iYzNnTG5YSHRxcDdOVFRYTlc0U0pvKy9BMW9VWm9HeEENClF4NnpGWG
hRLzhNWFc2Nis4U1RTMVlxTkpPQVJGdGpiSUtQd2pyZGN1a2RQellWS0dacmUwUmF4
Q25NeUNWKzYNCkY0WU5RRDFVZWdIVHUyd0NHUjF1aVlPZkx4VWE3L2RvNnMzMVdSVE
g4dmJ0aVBZOS82b2JFSXhEakR6S0lxWU8NCnJ2UkRXcUFMQllrbE9rSjNIYmdmeWw0
MkVzbkxpQWhTK2RNczJQQ0RpMlgwWkpDUFo4ZVRqTHNkQXRxVlpKK1INCldDMUozVU
R1RmZtY3BzRFlSdFVMOXc2WU10bGFwQys5bW1KM0FCRUJBQUcwVjBSaGMyaGxjaUJV
WlhOMElDaFUNCmRHVnlNa0JrWVhOb1pYSXRhSGxrTFhSbGMzUXVZMjl0UG9rQk9BUV
RBUUlBSWdVQ1N0Wm9QZ0liRFFZTENRZ0gNCmsxOVFja1Rwd0Jkc2tFWXVtRnZtV3Zl
NVVYMlNWVjdmek9DMG5adGdGeHRaR2xKaEdtanNBM3J4RlRsYitJcmENCldaYXlYQ1
dZaUN6ZDdtOXo1L0t5R0QyR0ZUSy85NG1kbTI1TjZHWGgvYjM1cElGWlhCSS9yWmpy
WXJoWVJCRnUNCkd0ekdGSXc5QUFuRnlVekVVVVZmUFdVdEJlNXlITVc1NEM2MG5Iaz
V4WUlhNnFGaGlMcDRQWXFaQ3JZWDFpSXMNCmZSUk9GQT09DQo9U1RIcg0KLS0tLS1F
TkQgUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQ==
Загрузите открытый ключ
Чтобы загрузить открытый ключ, создайте запись XML с открытым ключом в кодировке Base64:
<atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'> <apps:property name="publicKey" value="ENCODED_KEY"/> </atom:entry>
Отправьте запрос HTTP
POST
на URI каналаpublickey
в вашем домене Google Workspace:POST https://apps-apis.google.com/a/feeds/compliance/audit/publickey/DOMAIN_NAME
В случае успеха сервер возвращает
201 CREATED status code
и ответ, аналогичный этому примеру:<entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'> <id>https://apps-apis.google.com/a/feeds/compliance/audit/publickey/DOMAIN_NAME/id>/id> <updated>2009-04-17T15:02:45.646Z</updated> <link rel='self' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/publickey/DOMAIN_NAME/id'/> <link rel='edit' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/publickey/DOMAIN_NAME/id'/> <apps:property name='publicKey' value='ENCODED_KEY'/> </entry>
Создать копию почтового ящика для экспорта
Чтобы подготовить копию почтового ящика пользователя для экспорта и загрузки, используйте канал экспорта API аудита электронной почты.
Отправьте POST
запрос на URI экспортного фида и включите заголовок Authorization
:
POST https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/DOMAIN_NAME/SOURCE_USERNAME
Замените следующее:
-
DOMAIN_NAME
: имя домена Google Workspace, например example.com. -
SOURCE_USERNAME
: имя пользователя почтового ящика, который вы хотите загрузить.
Запрос содержит следующий заголовок Content-type
:
Content-type: application/atom+xml
Полный список параметров, используемых в запросе на экспорт почтового ящика, см. в разделе Ресурсы: export
.
Пример создания почтового ящика для экспорта
В примере используются следующие параметры:
- Пользователь, для которого нужно экспортировать почтовый ящик, —
quinn@example.com
. -
beginDate
—July 1, 2022, 04:30 hours
. - Дата
endDate
—August 30, 2022, 20:00 hours
. -
includeDeleted
имеет значениеfalse
. -
searchQuery
находитсяin:chat
. -
packageContent
—FULL_MESSAGE
.
Протокол
POST https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn <atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'> <apps:property name='beginDate' value='2022-07-01 04:30'/> <apps:property name='endDate' value='2022-08-30 20:00'/> <apps:property name='includeDeleted' value='false'/> <apps:property name='searchQuery' value='in:chat'/> <apps:property name='packageContent' value='FULL_MESSAGE'/> </atom:entry>
В случае успеха сервер возвращает код состояния 201 CREATED
и запись AtomPub.
<entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'> <id>https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/53156>/id> <updated>2022-10-17T15:02:45.646Z</updated> <link rel='self' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/53156'/> <link rel='edit' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/53156'/> <apps:property name='status' value='PENDING'/> <apps:property name='packageContent' value='FULL_MESSAGE'/> <apps:property name='includeDeleted' value='false'/> <apps:property name='searchQuery' value='in:chat'/> <apps:property name='completedDate' value='2022-09-18 10:13'/> <apps:property name='adminEmailAddress' value='admin1@example.com'/> <apps:property name='requestId' value='53156'/> <apps:property name='userEmailAddress' value='quinn@example.com'/> <apps:property name='endDate' value='2022-08-30 20:00'/> <apps:property name='requestDate' value='2022-09-17 12:51'/> <apps:property name='beginDate' value='2022-07-01 04:30'/> </entry>
В этом примере обработка этого почтового ящика завершена. Свойство status
имеет COMPLETED
, а число numberOfFiles
, возвращаемое для экспорта, равно двум.
Ява
import java.util.Calendar; import com.google.gdata.client.appsforyourdomain.audit.AuditService; import com.google.gdata.client.appsforyourdomain.audit.MailBoxDumpRequest; import com.google.gdata.data.appsforyourdomain.generic.GenericEntry; ... MailBoxDumpRequest request = new MailBoxDumpRequest(); request.setAdminEmailAddress("admin@example.com"); request.setUserEmailAddress("quinn@example.com"); Calendar beginDate = Calendar.getInstance(); beginDate.set(2022, Calendar.JULY, 1, 4, 30); request.setBeginDate(beginDate.getTime()); Calendar endDate = Calendar.getInstance(); endDate.set(2022, Calendar.AUGUST, 30, 20, 0); request.setEndDate(endDate.getTime()); request.setIncludeDeleted(false); request.setSearchQuery("in:chat"); request.setPackageContent("FULL_MESSAGE"); AuditService service = new AuditService("admin@example.com", "p@55w0rd", "example.com", "example.com-auditapp-v1"); GenericEntry mailboxDumpEntry = service.createMailboxDumpRequest(request); String requestId = mailboxDumpEntry.getRequestId(); String status = mailboxDumpEntry.getStatus(); String numberOfFiles = mailboxDumpEntry.getNumberOfFiles();
.СЕТЬ
using System; using Google.GData.Apps; using Google.GData.Extensions.Apps; ... MailboxDumpRequest mailboxDumpRequest = new MailboxDumpRequest(); mailboxDumpRequest.BeginDate = new DateTime(2022, 7, 1, 4, 30, 0); mailboxDumpRequest.EndDate = new DateTime(2022, 8, 30, 20, 0, 0); mailboxDumpRequest.IncludeDeleted = false; mailboxDumpRequest.SearchQuery = "in:chat"; mailboxDumpRequest.PackageContent = MonitorLevel.FULL_MESSAGE; AuditService service = new AuditService("example.com", "example.com-auditapp-v1"); service.setUserCredentials("admin@example.com", "p@55w0rd"); MailboxDumpRequest dumpRequest = service.CreateMailboxDumpRequest("quinn", mailboxDumpRequest);
Получить статус экспорта почтового ящика
Поскольку подготовка к экспорту почтового ящика является асинхронным процессом, используйте этот запрос на получение, чтобы проверить, завершена ли обработка зашифрованного почтового ящика.
Чтобы получить сведения о состоянии почтового ящика, подготовленного к экспорту, отправьте HTTP-запрос GET
с requestId
почтового ящика в URI канала экспорта и включите заголовок Authorization
:
GET https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/DOMAIN_NAME/SOURCE_USERNAME/MAILBOX_REQUESTID
Замените следующее:
-
DOMAIN_NAME
: имя домена Google Workspace, например example.com. -
SOURCE_USERNAME
: имя пользователя почтового ящика, который вы хотите загрузить. -
MAILBOX_REQUESTID
:requestID
— это уникальный идентификатор запроса на экспорт почтового ящика, который возвращается при первоначальном запросе экспорта.
Этот запрос возвращает запись AtomPub, включая текущий статус экспорта почтового ящика. Возможные значения текущего статуса следующие:
-
PENDING
- Запрос обрабатывается.
-
ERROR
- Запрос не выполнен из-за какой-то ошибки. Пример возможной ошибки: для домена был загружен неправильный открытый ключ API.
-
COMPLETED
- Запрос полностью обработан, и зашифрованные файлы почтового ящика готовы к загрузке.
-
MARKED_DELETE
- Запрос помечается для удаления при следующем запуске задания очистки Google. Дополнительные сведения об этом задании очистки см. в разделе Удаление зашифрованного почтового ящика .
-
DELETED
- Файлы почтового ящика были успешно удалены с помощью операции «Удалить зашифрованный почтовый ящик» .
-
EXPIRED
- Файлы почтового ящика были удалены Google по истечении трехнедельного срока хранения.
Пример получения статуса экспорта почтового ящика
В этом примере извлекается статус почтового ящика, соответствующий идентификаторам requestIds
53156
и 34201
, для пользователя quinn@example.com
.
Протокол
GET https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/53156
В случае успеха сервер возвращает код состояния 201 CREATED
.
Как видно из следующего ответа, статус — ERROR
, и, следовательно, зашифрованные файлы почтового ящика не были созданы.
<entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'> <id>https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/53156</id> <updated>2022-10-17T15:02:45.646Z</updated> <link rel='self' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/53156'/> <link rel='edit' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/53156'/> <apps:property name='status' value='ERROR'/> <apps:property name='packageContent' value='FULL_MESSAGE'/> <apps:property name='includeDeleted' value='false'/> <apps:property name='searchQuery' value='in:chat'/> <apps:property name='completedDate' value='2022-09-18 10:13'/> <apps:property name='adminEmailAddress' value='admin1@example.com'/> <apps:property name='numberOfFiles' value='0'/> <apps:property name='requestId' value='53156'/> <apps:property name='userEmailAddress' value='quinn@example.com'/> <apps:property name='endDate' value='2022-08-30 20:00'/> <apps:property name='requestDate' value='2022-09-17 12:51'/> <apps:property name='beginDate' value='2022-07-01 04:30'/> </entry>
В этом примере извлекается статус почтового ящика, соответствующий requestId
34201
:
GET https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/34201
Второй пример успешен со статусом COMPLETED
. Он возвращает два URL-адреса файлов почтовых ящиков, содержащих зашифрованные файлы почтовых ящиков, которые можно загрузить, используя URL-адреса в элементах fileUrl
.
<entry>... ... <apps:property name='status' value='COMPLETED'/> <apps:property name='packageContent' value='FULL_MESSAGE'/> <apps:property name='completedDate' value='2022-09-18 10:13'/> <apps:property name='adminEmailAddress' value='admin2@example.com'/> <apps:property name='numberOfFiles' value='2'/> <apps:property name='requestId' value='34201'/> <apps:property name='userEmailAddress' value='namrata@example.com'/> <apps:property name='requestDate' value='2022-09-17 12:51'/> <apps:property name='fileUrl0' value='https://apps-apis.google.com/a/data/compliance/audit/OQAAABW3Z2OlwkDFR0H5n_6lnYAzv-pWlkAlbTyAzvJEV0MC4c7lBDW' /> <apps:property name='fileUrl1' value='https://apps-apis.google.com/a/data/compliance/audit/OQAAABW3Z2OlwkD55nLv-pWlkAlbTyAzvJEVPnVYW45C4cC34gtyVCC' /> </entry>
Ява
import com.google.gdata.client.appsforyourdomain.audit.AuditService; import com.google.gdata.data.appsforyourdomain.generic.GenericEntry; ... AuditService service = new AuditService("admin@example.com", "p@55w0rd", "example.com", "example.com-auditapp-v1"); GenericEntry mailboxDumpEntry1 = service.retrieveMailboxDumpRequest("quinn", "53156"); String status = mailboxDumpEntry1.getProperty("status"); // Status is "ERROR" if the mailbox for this request isn't created GenericEntry mailboxDumpEntry2 = service.retrieveMailboxDumpRequest("quinn", "34201"); String status = mailboxDumpEntry2.getProperty("status");
.СЕТЬ
using System; using Google.GData.Apps; using Google.GData.Extensions.Apps; ... AuditService service = new AuditService("example.com", "example.com-auditapp-v1"); service.setUserCredentials("admin@example.com", "p@55w0rd"); MailboxDumpRequest mailboxDumpEntry1 = service.RetrieveMailboxDumpRequest("quinn", "53156"); RequestStatus status1 = mailboxDumpEntry1.Status; // Status is "ERROR" if the mailbox for this request isn't created MailboxDumpRequest mailboxDumpEntry2 = service.RetrieveMailboxDumpRequest("quinn", "34201"); RequestStatus status2 = mailboxDumpEntry2.Status;
Получить все запросы о состоянии почтового ящика
Чтобы получить все запросы почтовых ящиков для домена, начиная с определенной даты, выполните HTTP-запрос GET
к URI канала экспорта и включите заголовок Authorization
:
GET https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/DOMAIN_NAME?fromDate=FROM_DATE
Замените следующее:
-
DOMAIN_NAME
: имя домена Google Workspace, например example.com. -
FROM_DATE
: дата запроса зашифрованного почтового ящика в формате URL-адреса в формате всемирного координированного времени (UTC). Если в этом запросеGET
не указанfromDate
, извлекаются все запросы за последние три недели.
Для большого ответа каждая страница результатов возвращает максимум 100 записей и включает URI в теге <link rel='next'...>
, указывающий на следующую страницу результатов. При разработке клиентского приложения ваш код должен управлять этими дополнительными результатами.
Пример получения всех запросов о состоянии почтового ящика
В этом примере извлекаются все запросы о состоянии почтового ящика для домена example.com
сделанные не позднее 9 PM, August 30, 2022
.:
Протокол
<feed xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:apps='http://schemas.google.com/apps/2006'> <id>https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/domain</id> <updated>2010-03-17T15:29:21.064Z</updated> <link rel='next' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/tapoloka.com?fromDate=2022-08-30%2021:00'/> <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/tapoloka.com'/> <link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/tapoloka.com'/> <link rel='self' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/tapoloka.com?fromDate=2022-08-30%2021:00'/> <openSearch:startIndex>1</openSearch:startIndex> <entry> <atom:id>https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/domain/request ID</atom:id> <atom:updated>2022-04-17T15:29:21.064Z</atom:updated> <atom:link rel='self' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/domain/request ID'/> <atom:link rel='edit' type='application/atom+xml' href='https://apps-apis.google.com/feeds/compliance/audit/mail/export/domain/request ID'/> <apps:property name='status' value='ERROR'/> <apps:property name='packageContent' value='FULL_MESSAGE'/> <apps:property name='includeDeleted' value='false'/> <apps:property name='searchQuery' value='in:chat'/> <apps:property name='completedDate' value='2022-09-18 10:13'/> <apps:property name='adminEmailAddress' value='admin1@example.com'/> <apps:property name='numberOfFiles' value='0'/> <apps:property name='requestId' value='the mailbox ID for this request'/> </entry> <entry> <id>>https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/domain/second request ID</id> ... <apps:property name='status' value='COMPLETED'/> <apps:property name='packageContent' value='FULL_MESSAGE'/> <apps:property name='includeDeleted' value='false'/> <apps:property name='completedDate' value='2022-09-18 10:13'/> <apps:property name='adminEmailAddress' value='admin1@example.com'/> <apps:property name='numberOfFiles' value='0'/> <apps:property name='requestId' value='the mailbox ID for this request'/> <apps:property name='userEmailAddress' value='quinn@example.com'/> <apps:property name='endDate' value='2022-08-30 20:00'/> <apps:property name='requestDate' value='2022-09-17 12:51'/> <apps:property name='beginDate' value='2022-07-01 04:30'/> </entry> </feed>
Ява
import java.util.Calendar; import java.util.List; import com.google.gdata.client.appsforyourdomain.audit.AuditService; import com.google.gdata.client.appsforyourdomain.audit.MailBoxDumpRequest; import com.google.gdata.data.appsforyourdomain.generic.GenericEntry; ... AuditService service = new AuditService("admin@example.com", "p@55w0rd", "example.com", "example.com-auditapp-v1"); Calendar fromDate = Calendar.getInstance(); fromDate.set(2022, Calendar.AUGUST, 30, 21, 0); List<GenericEntry> mailboxDumpRequestEntries = service.retrieveAllMailboxDumpRequests(fromDate.getTime()); for (GenericEntry entry : mailboxDumpRequestEntries) { MailBoxDumpRequest request = new MailBoxDumpRequest(entry); String status = request.getStatus(); }
.СЕТЬ
using System; using System.Collections.Generic; using Google.GData.Apps; using Google.GData.Extensions.Apps; ... AuditService service = new AuditService("example.com", "example.com-auditapp-v1"); service.setUserCredentials("admin@example.com", "p@55w0rd"); GenericFeed<MailboxDumpRequest> dumpRequests = service.RetrieveAllMailboxDumpRequests(new DateTime(2022, 8, 30, 21, 0, 0);
Удалить зашифрованный почтовый ящик
Чтобы удалить зашифрованные файлы почтового ящика со статусом COMPLETED
или MARKED_DELETED
, выполните HTTP-запрос DELETE
к URI канала экспорта, включая requestId
почтового ящика и заголовок Authorization
.
DELETE https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/DOMAIN_NAME/SOURCE_USERNAME/MAILBOX_REQUESTID
Замените следующее:
-
DOMAIN_NAME
: имя домена Google Workspace, например example.com. -
SOURCE_USERNAME
: имя пользователя загруженного вами почтового ящика. -
MAILBOX_REQUESTID
:requestID
— это уникальный идентификатор запроса на экспорт почтового ящика, который возвращается при первоначальном запросе экспорта.
Если в процессе удаления возникают какие-либо ошибки, возвращается статус MARKED_DELETE
. Этот запрос будет автоматически удален заданием очистки Google в течение 24 часов. Однако для запроса со статусом MARKED_DELETE
некоторые (или все) файлы почтового ящика могут быть доступны для загрузки. Если вы хотите убедиться, что файлы удалены, запускайте эту операцию еще раз, пока не вернется статус DELETED
. Если статус MARKED_DELETE
возвращается последовательно, повторите попытку после экспоненциального замедления времени.
Пример удаления зашифрованного почтового ящика
В этом примере удаляется почтовый ящик пользователя quinn@example.com
связанный с идентификатором requestId
34201
:
Протокол
DELETE https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/example.com/quinn/34201
Ява
import com.google.gdata.client.appsforyourdomain.audit.AuditService; ... AuditService service = new AuditService("admin@example.com", "p@55w0rd", "example.com", "example.com-auditapp-v1"); service.deleteMailboxDumpRequest("quinn", "34201");
.Сеть
using System; using Google.GData.Apps; using Google.GData.Extensions.Apps; ... AuditService service = new AuditService("example.com", "example.com-auditapp-v1"); service.setUserCredentials("admin@example.com", "p@55w0rd"); service.DeleteMailboxDumpRequest("quinn", "34201");