在sps中使用第三方smtp软件解决邮件服务器不允许匿名访问的问题

 

长期以来,由于公司的Exchange Server关闭了匿名发送邮件的功能,我们部署的Sharepoint 以及Project  server的相关的依赖匿名smtp服务器的功能就停止工作了。我不太明白,微软在设计这些系统的时候是怎么想的,但是,这的确让我们丧失了一个很重要的一些功能,由此,我们的一些部门也抱怨不已。所以,我一直想解决这个问题。

 

   我曾经想使用windows自带的smtp转发来解决这个问题。网络工程师在Exchange Server上指定允许我的服务器上的smtp将邮件中继到Exchange Server上。我将sharepoint上的smtp服务器设置为我自己的服务器,并且,我的smtp服务器允许匿名发送邮件。然后,我的smtp服务器将收到的邮件中继到Exchange server上(当然要身份验证啦)。可是,并没有成功,我仔细分析过smtp的日志,大多数的原因,是因为邮件的From中的是空的,而Exchange Server不允许冒名发送邮件的,所以就会转发不成功。我不太明白这是为什么。希望有人有成功的经验可以分享。

 

   这里我要和大家分享的是,我使用第三方的smtp服务器软件获得的成功。

   1、准备工作

   我停掉了系统自带的smtp服务。网络工程师在Exchange Server允许我的这台服务器中转邮件给它。

   2、安装软件

   我这次用的是URL OCloud.Software.Mail.Direct.Pro.v2.1.5.0。安装好后,根据设置向导信息设置DNS,当然就是公司内部的DNS啦,然后设置转发的服务器。这个软件允许你在设置转发服务器的时候指定用于验证的用户和密码,并且支持NTLM验证。我指定所有发送到公司域的邮件都转发给Exchange Server

  3、设置SharePoint

  Sahrepoint的邮件服务器地址设置为我自己刚刚架设的服务器,要注意发送地址和回复地址都要写成smtp服务器中用于转发的那个用户的邮件地址。

这样,订阅的邮件就可以顺利的发送到订阅者的邮箱了。

 

   4、不同的邮件需要不同的转发帐户

   当你创建用户的时候,Sharepoint会自动发送一个邮件给该用户,但是,经过这样设置以后,我发现,这种邮件发送不成功。我查看了日志,原来,此时发送的邮件的From中用的是操作者的(即管理员)的邮件地址,而不是在Sharepoint smtp服务器设置时用的邮件地址,所以发送不成功。于是,我又在Mail Driect Pro 中增加了一个转发服务器,服务器地址还是Exchange Server的地址,不过,这次用于验证的用户我写成自己的帐户(这个账户也是SharepointOwner),试了一下,ok,成功了。那是不是要为所有的管理员都创建转发邮件服务器呢?我让别的管理员试了一下,居然也没有问题了(这一点我比较困惑)。是不是只要设置了用Sharepoint Owner的帐户转发邮件就行了。至少,我现在这样认为。

 

如果,你被这个问题困惑了很久,赶快试一试吧

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用GStreamer API提取H.264的SPS和PPS信息,需要使用h264parse元素来解析H.264码流,并从提取SPS和PPS。以下是使用GStreamer API提取H.264SPS和PPS信息的示例代码: ```c #include <gst/gst.h> int main(int argc, char *argv[]) { GstElement *pipeline, *h264parse; GstCaps *caps; GstBuffer *sps_buf, *pps_buf; GstMapInfo map_info; gboolean ret; /* Initialize GStreamer */ gst_init(&argc, &argv); /* Create the elements */ pipeline = gst_pipeline_new("mypipeline"); h264parse = gst_element_factory_make("h264parse", "myh264parse"); /* Set the caps for h264parse element */ caps = gst_caps_new_simple("video/x-h264", "stream-format", G_TYPE_STRING, "byte-stream", NULL); g_object_set(G_OBJECT(h264parse), "caps", caps, NULL); gst_caps_unref(caps); /* Add h264parse element to the pipeline */ gst_bin_add(GST_BIN(pipeline), h264parse); /* Link the elements */ if (!gst_element_link_many(h264parse, NULL)) { g_printerr("Failed to link elements\n"); return -1; } /* Start the pipeline */ gst_element_set_state(pipeline, GST_STATE_PLAYING); /* Wait for the SPS and PPS buffers to be emitted */ ret = gst_element_get_state(h264parse, NULL, NULL, GST_CLOCK_TIME_NONE); if (ret != GST_STATE_CHANGE_SUCCESS) { g_printerr("Failed to get state of h264parse element\n"); return -1; } ret = gst_element_query_position(h264parse, GST_FORMAT_TIME, NULL); if (ret != TRUE) { g_printerr("Failed to query position of h264parse element\n"); return -1; } ret = gst_element_query_duration(h264parse, GST_FORMAT_TIME, NULL); if (ret != TRUE) { g_printerr("Failed to query duration of h264parse element\n"); return -1; } ret = gst_element_query_latency(h264parse, GST_FORMAT_TIME, NULL, NULL); if (ret != TRUE) { g_printerr("Failed to query latency of h264parse element\n"); return -1; } gst_element_send_event(h264parse, gst_event_new_seek(1.0, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, GST_SEEK_TYPE_NONE, 0, GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE)); ret = gst_element_get_state(h264parse, NULL, NULL, GST_CLOCK_TIME_NONE); if (ret != GST_STATE_CHANGE_SUCCESS) { g_printerr("Failed to get state of h264parse element\n"); return -1; } sps_buf = gst_buffer_new(); pps_buf = gst_buffer_new(); ret = gst_element_query_convert(h264parse, GST_FORMAT_TIME, GST_FORMAT_BUFFER, GST_SECOND, &sps_buf); if (ret != TRUE) { g_printerr("Failed to query convert SPS buffer\n"); return -1; } ret = gst_element_query_convert(h264parse, GST_FORMAT_TIME, GST_FORMAT_BUFFER, 2 * GST_SECOND, &pps_buf); if (ret != TRUE) { g_printerr("Failed to query convert PPS buffer\n"); return -1; } /* Extract the SPS and PPS data */ gst_buffer_map(sps_buf, &map_info, GST_MAP_READ); /* map_info.data contains SPS data */ gst_buffer_unmap(sps_buf, &map_info); gst_buffer_map(pps_buf, &map_info, GST_MAP_READ); /* map_info.data contains PPS data */ gst_buffer_unmap(pps_buf, &map_info); /* Stop and cleanup the pipeline */ gst_element_set_state(pipeline, GST_STATE_NULL); gst_object_unref(pipeline); return 0; } ``` 在上述代码,我们创建了一个GStreamer管道,其包含了h264parse元素。我们设置了h264parse的caps,然后将h264parse元素添加到管道,并启动了管道。 我们使用gst_element_send_event()来发送一个seek事件,让h264parse元素从H.264码流提取SPS和PPS信息。我们使用gst_element_query_convert()来获取SPS和PPS的缓冲区,并使用gst_buffer_map()和gst_buffer_unmap()来提取SPS和PPS数据。 请注意,在实际使用,你需要根据需要修改代码,并添加适当的错误处理和释放资源的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想好点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值