Warm tip: This article is reproduced from serverfault.com, please click

其他-如何使用 Microsoft Graph API 获取发件人 IP?

(其他 - How to get Sender IP using Microsoft Graph API?)

发布于 2021-02-10 13:59:36

我一直在尝试从以下提供的响应中获取发件人 IP:-

GET https://graph.microsoft.com/v1.0/me/messages/AAMkADhAAAW-VPeAAA=/?$select=internetMessageHeaders.

我得到的响应有多个Receiver标签,如下所示:-

{
    "@odata.context":"<some-value>",
    "@odata.etag":"<some-value>",
    "id":"<some-value>",
    "internetMessageHeaders":[
        {
            "name":"MIME-Version",
            "value":"1.0"
        },
        {
            "name":"Content-Type",
            "value":"multipart/report"
        },
        {
            "name":"x-custom-header-group-name",
            "value":"Washington"
        },
        {
            "name":"x-custom-header-group-id",
            "value":"WA001"
        },
        {
            "name":"Receiver",
            "value":"<some-ip>"
        },
        {
            "name":"Receiver",
            "value":"<some-ip>"
        },

    ]
}

如何使用 Graph API 获取邮件的实际原始发件人 IP?

除了上面提到的方法之外,还有其他方法可以使用Graph API获取Sender IP吗?

Questioner
Anant Kumar
Viewed
11
Anant Kumar 2021-02-18 13:14:46

Graph API 响应类似于以下内容,并Authentication-Results为我提供了相关的源发件人 IP -

{
    "@odata.context":"<some-value>",
    "@odata.etag":"<some-value>",
    "id":"<some-value>",
    "internetMessageHeaders":[
        {
            "name":"MIME-Version",
            "value":"1.0"
        },
        {
            "name":"Content-Type",
            "value":"multipart/report"
        },
        {
            "name":"x-custom-header-group-name",
            "value":"Washington"
        },
        {
            "name":"x-custom-header-group-id",
            "value":"WA001"
        },
        {
            "name":"Receiver",
            "value":"<some-ip>"
        },
        {
            "name":"Receiver",
            "value":"<some-ip>"
        },
        {
            "name":"Authentication-Results",
            "value":"spf=pass (sender ip is <some-ip>)...,"       
        }
    ]
}

现在,你只需要一个正则表达式来提取 -

  1. 获取存在于 Authentication-Results
  2. 使用正则表达式 -\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}提取 IP,使用与正则表达式匹配的第一次出现。