C# 使用WebDAV从Exchange Server 2003获取发件人IP地址
我最近为我们公司编写了一个应用程序,通过使用WebDAV将注册电子邮件发送到Exchange 2003服务器上的收件箱来处理新闻稿注册请求。这一切都很好 现在我们已经意识到,出于审计目的,我们需要捕获注册请求发起地的ip地址。我的问题是,有没有办法通过我的WebDAV请求请求电子邮件发起者的原始ip地址 我已经浏览了和文档,没有看到一个字段,你可以用这个数据请求,除了可能。但是,当我使用请求中的C# 使用WebDAV从Exchange Server 2003获取发件人IP地址,c#,webdav,exchange-server-2003,C#,Webdav,Exchange Server 2003,我最近为我们公司编写了一个应用程序,通过使用WebDAV将注册电子邮件发送到Exchange 2003服务器上的收件箱来处理新闻稿注册请求。这一切都很好 现在我们已经意识到,出于审计目的,我们需要捕获注册请求发起地的ip地址。我的问题是,有没有办法通过我的WebDAV请求请求电子邮件发起者的原始ip地址 我已经浏览了和文档,没有看到一个字段,你可以用这个数据请求,除了可能。但是,当我使用请求中的路径向exchange服务器发出请求时,该属性的状态返回404 not found 它似乎有一个cli
路径向exchange服务器发出请求时,该属性的状态返回404 not found
它似乎有一个clientipaddress
属性,该属性将包含此信息,但该属性仅适用于仍在传输中的消息
以前是否有人必须这样做,并找到一种方法来拦截发起电子邮件的用户的ip地址?这可能对问题没有帮助,但我的WebDAV请求的格式如下:
string webdav =
@"
<?xml version=""1.0""?>
<D:searchrequest xmlns:D = ""DAV:"">
<D:sql>
SELECT
""DAV:displayname"",
""urn:schemas:httpmail:fromemail"",
""urn:schemas:mailheader:subject"",
""urn:schemas:httpmail:textdescription"",
""urn:schemas:mailheader:date""
FROM
SCOPE('shallow traversal of ""{0}""')
WHERE
""DAV:isfolder"" = false AND
""urn:schemas:httpmail:read"" = false
</D:sql>
</D:searchrequest>
";
字符串webdav=
@"
选择
“DAV:displayname”“,
“urn:schemas:httpmail:fromemail”“,
“urn:schemas:mailheader:subject”“,
“urn:schemas:httpmail:textdescription”“,
“”urn:schemas:mailheader:date“”
从…起
作用域(“{0}”的浅遍历)
哪里
“DAV:isfolder”“=false和
“urn:schemas:httpmail:read”“=false
";
这对SMTP的影响大于对Exchange/WebDAV的影响。这实际上取决于最终用户使用的电子邮件服务。SMTP可以在电子邮件到达目的地之前多次传递电子邮件。通常,每个跃点都会添加一个Received:from
头,以及一些附加信息,如IP地址
但是,一些服务,如谷歌,不计算发送电子邮件的用户有一个跃点,并且原始IP地址是谷歌SMTP服务器。因此,您永远不会从电子邮件中知道最终用户的IP地址。然后,其他服务可以将最终用户的公共IP地址计算为第一跳。一些其他服务可能会向消息添加一个特殊的头,如X-Sender-IP
或X-origing-IP
因此,没有一种可靠的方法可以获得这些信息。部分原因与SMTP的分布式性质、网络邮件的流行以及一些隐私问题有关。如果此信息对您的审核至关重要,您可能需要设置一个简单的网络表单,将电子邮件发送到此收件箱,然后您可以在电子邮件正文中添加其他信息,如IP地址。在您的问题中并不完全清楚,如果电子邮件通过SMTP发送到收件箱,发送它的用户的实际IP地址通常不可用。但是,您可以通过邮件标题获取一路上接触电子邮件的SMTP服务器。是的,它是SMTP。用户只是通过移动设备直接从电子邮件客户端发送电子邮件。