在Exchange2003培训中,客户有问到如何在发送邮件时添加免责声明,Exchange2007中可以通过策略规则设定,非常简单,在2003中,只能使用脚本的方法来添加,而且对MAPI客户无法使用
如何在 Visual Basic 脚本中向出站 SMTP 邮件添加免责声明
概要
本文分步介绍如何使用 SMTP 传输事件接收器向出站 SMTP 电子邮件添加“免责声明”。
返回页首
回到顶端
创建事件接收器
要创建事件接收器,请将以下代码粘贴到一个新的文件中并将其另存为 EventSinkScript.vbs:
<SCRIPT LANGUAGE="VBScript"> Sub ISMTPOnArrival_OnArrival(ByVal Msg, EventStatus) TextDisclaimer = vbCrLf & "DISCLAIMER:" & vbCrLf & "Sample Disclaimer added in a VBScript." HTMLDisclaimer = "<p></p><p>DISCLAIMER:<br>Sample Disclaimer added in a VBScript." If Msg.HTMLBody <> "" Then 'Search for the "</body>" tag and insert our discliamer before that tag. pos = InStr(1, Msg.HTMLBody, "</body>", vbTextCompare) szPartI = Left(Msg.HTMLBody, pos - 1) szPartII = Right(Msg.HTMLBody, Len(Msg.HTMLBody) - (pos - 1)) Msg.HTMLBody = szPartI + HTMLDisclaimer + szPartII End If If Msg.TextBody <> "" Then Msg.TextBody = Msg.TextBody & vbCrLf & TextDisclaimer & vbCrLf End If 'Commit the content changes to the transport ADO Stream object. Msg.DataSource.Save ' Commit the changes into the transport Stream pEventStatus = cdoRunNextSink End Sub </SCRIPT>
返回页首
回到顶端
注册事件接收器
要注册事件接收器,请使用随 Exchange SDK 一起安装的 Smtpreg.vbs 文件。在命令提示符处,浏览到 ...\Exchange SDK\SDK\Support\CDO\Scripts 文件夹,并键入以下命令(确保 EventSinkScript.vbs 的路径正确):
cscript smtpreg.vbs /add 1 onarrival SMTPScriptingHost CDO.SS_SMTPOnArrivalSink "mail from=*@your-domain-here.com"
cscript smtpreg.vbs /setprop 1 onarrival SMTPScriptingHost Sink ScriptName "C:\EventSinkScript.vbs"
如果此命令成功执行,您将收到由脚本生成的成功消息。
要取消注册此事件,请键入以下内容:
cscript smtpreg.vbs /remove 1 OnArrival SMTPScriptingHost
有关使用 Smtpreg.vbs 注册事件的更多信息,请参见下面 MSDN 网站上的“Managing Event Bindings”(管理事件绑定)主题:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_managing_event_bindings.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_managing_event_bindings.asp)
返回页首
回到顶端
测试事件接收器
要测试接收器,请向您组织外的一个 SMTP 收件人发送一封电子邮件。收件人应当收到一个在末尾添加了“免责声明”的经修改的邮件。
注意:如果您使用一个诸如 Microsoft Outlook 这样的 MAPI 客户端发送电子邮件,收件人将接收不到修改的邮件。这是因为在电子邮件触发 SMTP 传输事件时,使用 MAPI 提交的邮件不是 SMTP 格式。因此,由事件代码做出的更改不能持续。
posted @
2008-05-20 00:16 joyclear 阅读(219) |
评论 (0) |
编辑 收藏
为了准备下星期的Exchange2003培训,又重新仔细看下Exchange白皮书,收益不少。
这段了解筛选器的章节写的很详细
Exchange Server 2003 支持下列筛选器:
· 连接筛选
· 收件人筛选
· 发件人筛选
· 基于虚拟服务器的 IP 限制
虽然连接筛选、收件人筛选和发件人筛选都是在“邮件传递属性”中配置的,但是它们必须在单个 SMTP 虚拟服务器上启用。与此不同,IP 限制是直接在每个 SMTP 虚拟服务器上配置的。
此部分说明在配置和启用这些筛选器之后在 SMTP 会话期间对它们的检查顺序。按以下方式检查筛选和 IP 限制。
1. SMTP 客户端尝试连接到 SMTP 虚拟服务器。
2. 对照 SMTP 虚拟服务器的 IP 限制(在 SMTP 虚拟服务器“属性”的“访问”选项卡上配置),检查连接方客户端的 IP 地址:
· 如果连接方 IP 地址位于受限制的 IP 列表中,则连接会立即断开。
· 如果连接方 IP 地址不在受限制的IP 列表中,则接受连接。
3. SMTP 客户端将发出 EHLO 或 HELO 命令。
4. SMTP 客户端发出 MAIL FROM:命令,与如下所示类似:
MAIL FROM: dylanm@contoso.com
5. 然后,对照全局接受列表(在 Exchange 系统管理器中配置:“邮件传递属性”对话框中的“连接筛选”选项卡上),检查 SMTP 客户端的 IP 地址。
· 如果连接方 IP 地址位于全局接受列表中,则不检查全局拒绝列表。继续执行步骤 7。
· 如果连接方 IP 地址不在全局接受列表中,则执行步骤 6 和 7。
6. 对照全局拒绝列表(在 Exchange 系统管理器中配置:在“邮件传递属性”对话框中的“连接筛选”选项卡上),检查 SMTP 客户端的 IP 地址。
· 如果 SMTP 客户端的 IP 地址位于全局拒绝列表中,则断开连接。
· 如果 SMTP 客户端的 IP 地址不在全局拒绝列表中,则会话继续。
7. 发件人筛选对照其阻止发件人列表(在 Exchange 系统管理器中配置:在“邮件传递属性”对话框中的“发件人筛选”选项卡上),检查在 MAIL FROM 命令中指定的发件人。
· 如果发件人出现在阻止发件人列表中,则将出现下列两种情况之一(具体出现哪种情况,取决于发件人筛选是如何配置的):
- 如果将发件人筛选配置为断开连接,则连接会断开。
- 如果将发送筛选配置为接受邮件而不通知发件人,则会话继续;但邮件将发送到 Badmail 目录,而不会发送到预期收件人。
· 如果发件人没有出现在发件人筛选列表中,则 SMTP 虚拟服务器会发出类似如下所示的响应。
250 2.1.0 dylanm@contoso.com...Sender OK
8. 连接方 SMTP 服务器发出类似如下所示的 RCPT TO 命令:
RCPT TO: kim@example.com
9. 连接筛选规则对照由其阻止名单服务提供商提供的任何阻止名单,检查连接方 IP 地址。
· 如果 SMTP 客户端的 IP 地址在接受列表中,则绕过连接筛选规则。继续执行步骤 10。
· 如果 SMTP 客户端的 IP 地址在阻止名单服务提供商的阻止名单中,则 SMTP 虚拟服务器将返回一个错误代码,然后发送为连接筛选规则配置的自定义错误消息。
· 如果 SMTP 客户端的 IP 地址不在阻止名单服务提供商的阻止名单中,则会话继续。
10. 连接筛选检查预期收件人是否在连接筛选例外列表中。
· 如果收件人在此列表中,则接受通信,并且不对 RCPT TO 命令应用其他检查。继续执行步骤 13。
· 如果收件人没有出现在例外列表中,则对照其他筛选器检查该收件人。
11. 如果收件人没有出现在连接筛选中配置的例外列表上,则对照在收件人筛选中配置的任何阻止收件人列表检查该收件人。
· 如果收件人是被阻止的收件人,则 SMTP 虚拟服务器返回无效收件人错误。
· 如果收件人不是被阻止的收件人,则会话继续。
12. 如果收件人不是被阻止的收件人,则检查 Active Directory 以确保 Active Directory 中存在预期收件人。
· 如果预期收件人不是 Active Directory 中的有效收件人,则 SMTP 虚拟服务器返回无效收件人错误。
· 如果收件人是 Active Directory 中的有效收件人,则会话继续。
13. 对于在 RCPT TO 命令中指定的每个其他收件人,都应用步骤 10 到 12。
14. 然后,连接方服务器发出类似如下所示的 DATA 命令
DATA
收件人:Kim Akers
发件人:dylanm@contoso.com<Dylan Miller>
主题:邮件消息
15. 然后,发件人筛选检查“发件人”地址是否与被阻止的发件人不匹配。
· 如果在 DATA 命令中指定的发件人是被阻止的发件人,则将出现以下两种情况之一:
- 如果将发件人筛选配置为断开连接,则 SMTP 虚拟服务器会返回一个 5.1.0“发件人被拒绝”错误,然后断开连接。
- 如果将发送筛选配置为接受邮件而不通知发件人,则会话继续;但邮件将发送到 Badmail 目录,而不会发送到预期收件人。
· 如果在 DATA 命令中指定的发件人不是被阻止的发件人,则接受邮件并对邮件排队以便进行传递。
posted @
2008-05-11 14:22 joyclear 阅读(294) |
评论 (1) |
编辑 收藏
Windows 2008已经发布一段时间了,IT Pro又要开始跟上微软的脚步,不断学习咯...
运行Dcpromo
在配置选项里面多了create a new domain tree root instead of a new child domain ,还不确定是什么性质

可以选择windows2008架构

安装选项增加了设定GC和只读域控RODC选项

恢复模式密码因为2008安全升级了,不能再设置为空
posted @
2008-05-09 16:54 joyclear 阅读(850) |
评论 (0) |
编辑 收藏
根据您的描述,我对这个问题的理解是:您想禁止用户使用usb设备。如果我的理解有误,请告诉我。
我假设您只是想禁止用户使用USB存储设备,而不是所有USB设备。
根据下面两篇KB,您能通过禁止用户对usbstor.pnf和usbstor.inf的访问来实现禁用USB存储设备:
如何禁用 USB 存储设备
http://support.microsoft.com/kb/823732/zh-cn如何使用 Xcacls.exe 修改 NTFS 权限
http://support.microsoft.com/kb/318754/zh-cn参考上面两篇KB,您只需建立一条使用xcacls,设置usbstor.pnf和usbstor.inf上domain users组用户的拒绝权限的登陆脚本,在用户登陆后他们自然就无法使用USB存储设备了,而administrator由于访问权限没有更改,所以可以继续使用USB存储设备。
我以domain users组为例:
Xcacls %systemroot%\inf\usbstor.pnf /d “domain users” /y
Xcacls %systemroot%\inf\usbstor.inf /d “domain users” /y
我以编辑域策略为例提供设置脚本的步骤如下:
1. 将xcacls和脚本放在所有用户都能访问的共享目录内(比如netlogon)
2. 运行dsa.msc命令
3. 右键点击域名,打开属性
4. 点击组策略属性页
5. 新建一个组策略,给予一个恰当的名称然后点击编辑(或者编辑默认域策略)
6. 定位到:计算机配置->Windows 设置->脚本->启动
7. 双击启动脚本,将配置的脚本添加进去
8. 点击确定
9. 运行gpupdate /force刷新这一策略
这样下次计算机重启后本地文件的权限酒杯更改了。这一脚本只需运行一次,在您确认所有计算机都执行过这一脚本后,您就可以撤销这条策略了。
希望我的回答对您有所帮助,如果有不清楚的地方,请告诉我。
感谢您选择微软产品并使用微软合作伙伴新闻组技术支持!
SEAN CAI 蔡怡林
MCSE2000
在线合作伙伴支持工程师
合作伙伴支持部
微软全球技术支持中心
posted @
2008-05-08 23:48 joyclear 阅读(2591) |
评论 (4) |
编辑 收藏
Q:Exchange2003中出错大量的1022和9548日志信息,请问这是由于什么原因引起的,应该如何解决?
9548:
已被禁用的用户 /o=ESQULGRP/ou=EEL1/cn=Recipients/cn=LauHe 没有主帐户 SID。请使用 Active Directory MMC 将一个活动帐户设置为此用户的主帐户。
1022:
数据库“First Storage Group\Mailbox Store (EEL-EXCH3)”上的登录失败 -
Windows 帐户 EEL1\EELAdministrator;邮箱
/o=ESQULGRP/ou=EEL1/cn=Recipients/cn=LauHe。
错误: -2147221231
客户端计算机: %5
客户端进程: %6
客户端进程 ID: %7
客户端应用程序 ID: %8
A:首先,请确认这些帐户是否还存在AD中,查看帐户的状态是否被禁用。如果这些帐户确实是被禁用了,请查看Exchange 2003 是否安装SP2,以确定要安装以下两个补丁中的一个:
A hotfix is available to modify the way that Exchange Server 2003 handles a disabled Active Directory user account that is associated with an Exchange Server 2003 mailbox
http://support.microsoft.com/kb/903158/en-usA hotfix is available to change the way that Exchange Server 2003 SP2 handles a disabled Active Directory user account that is associated with an Exchange Server 2003 mailbox
http://support.microsoft.com/kb/916783/en-us如果这些帐户没有被禁用,那么可能是由于缺乏msExchMasterAccountSID 属性,请参考以下文章修复:
XADM:无法移动或登录 Exchange 资源邮箱(该文章同样适用于Exchange 2003)
http://support.microsoft.com/ kb/278966/zh-cn
posted @
2008-05-08 23:39 joyclear 阅读(818) |
评论 (0) |
编辑 收藏
用户的请求,想要知道如何将Exchange 2007迁移到一台新的服务器并且保留原有服务器名。下面,我将提供详细步骤。
1. 拷贝mailbox database.edb、public database.edb以及mail.que文件到安全的地方以做备份。
当拷贝完成:
2. 关闭老的Exchange 2007服务器。
3. 打开"活动目录用户和计算机",重置服务器的帐户并等待域控制器同步完成。
4. 更改新服务期的名字和老服务器相同并且将它加入域。
5. 调整IP设置是它和老服务器相同。
6. 运行Exchange 2007安装程序并且使用/recoverserver和/donotrestart参数。范例如下:
Setup /m:recoverserver /donotrestart
当安装完毕:
a. 拷贝mail.que到c:\program files\Microsoft\Exchange Server\TransportRoles\data\queue
b. 拷贝mailbox database.edb到c:\Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group
c. 拷贝public database.edt到c:\Program Files\Microsoft\Exchange Server\Mailbox\Second Storage Group
d. 打开"Exchange管理控制台",打开存储的属性页,选择"这个数据库可以被恢复覆盖"
e. 启动所有Exchange 2007的服务
7. 确认发送连接器设置正确
8. 确认接受连接器设置正确
9. 如果您想接受外部SMTP域的信件,请确保这个外部SMTP域在您的接受域列表里
10. 可选:安装"Anti-Spam Agents"到"Hub Transport role"。详细步骤如下:
a. 运行Exchange管理命令行,转到脚本目录c:\program files\Microsoft\Exchange Server\Scripts。运行如下命令:.\install-AntispamAgents.ps1
b. 当安装完成,重起"Exchange Transport Service"服务
c. 打开"Exchange管理控制台",确认"Anti-Spam Agents"已经出现在Anti-Spam页。(Organization Configuration – Hub Transport – Anti-Spam)
现在,我们可以测试内部和外部信件收发是否正常。若是,我们就完成了服务器的迁移。
posted @
2008-05-08 14:49 joyclear 阅读(1206) |
评论 (0) |
编辑 收藏
在Exchange 2007中,提供了通过模版创建邮箱的方法:
1. 先创建.csv文件,包含以下格式的内容:
Name,UPN,OU,Password
Deepak Kumar,DKumar@contoso.com,contoso.com/Users,pass@word1
Ray Chow,RChow@contoso.com,contoso.com/Users,pass@word1
David Simpson,DSimpson@contoso.com,contoso.com/Users,pass@word1
Isabel Martins,IMartins@contoso.com,contoso.com/Users,pass@word1
2. 在Exchange Management Shell 中输入以下命令:
$Template = Get-Mailbox "Template1" (template1 为一个已经创建了邮箱的用户名称,这个用户被用作创建其它用户的模版)
Import-CSV "C:\NewUsers.csv" | ForEach-Object -process {$Temp = ConvertTo-SecureString $_.Password -asPlainText -force;New-Mailbox -Name $_.Name -UserPrincipalName $_.UPN -OrganizationalUnit $_.OU -Database "Mailbox Database" -Password $Temp -TemplateInstance $Template}
这将根据csv文件中列出的用户创建邮箱,但这个方法不能为已经存在的用户创建邮箱。
批量启用邮箱
可以使用下列方法实现:
将所有需要启用邮箱的用户帐号放到一个OU下,例如MailUsers,然后使用下面的命令进行过滤:
get-user –OrganizationalUnit “mailusers”| enable-mailbox –database
“SERVERNAME\MAILBOX DATABASE NAME”
或者在每个OU下执行上述脚本
posted @
2008-05-08 14:46 joyclear 阅读(809) |
评论 (0) |
编辑 收藏
Active Directory Ports
Services
|
Port
|
Protocol
|
DNS
|
TCP/UDP
|
53
|
Kerberos
|
TCP/UDP
|
88
|
RPC
|
TCP
|
135
|
Netbios
|
UDP
|
137
|
Netbios
|
UDP
|
138
|
LDAP
|
TPC/UDP
|
389
|
LDAP SSL
|
TCP
|
636
|
LDAP GC
|
TCP/UDP
|
3268
|
LDAP GC SSL
|
TCP
|
3269
|
SMB
|
TCP
|
445
|
posted @
2008-05-08 14:43 joyclear 阅读(483) |
评论 (0) |
编辑 收藏
一、SMTP 机制
1,发送邮件
邮件主机要将邮件发送到Internet上接收者的邮件主机,首先必须确保在发送方主机上可以ping通接收方邮件主机名。启用SMTP服务,发送邮件是通过SMTP服务将邮件发送出去的。
2,接收邮件
同样道理,本地邮件主机能够接收到外部INTERNET发送过来的邮件,也必须让发送邮件的主机能够找到本地邮件主机。因此,在DNS服务器上设置一个主机信息,同时需要设置一个MX(Mail eXchange邮件交换)记录。
这样本地邮件主机就可以接收到外面发过来的邮件。在此之前,必须先设置好“启动SMTP侦听”。服务器主机接收到邮件之后,需要将邮件分发到对应接收人的邮箱中。
二、与SMTP设置相关的各个文档的作用
服务器文档——设置当前服务器,可以用来接收SMTP邮件的服务器。在“基本”标签中,应该设置邮递任务中选上“SMTP 邮件邮递”,SMTP侦听任务选上“启用”。
配置文档——用来识别邮件路由是不是路由到外部Internet去。必须为作为SMTP服务器添加一个配置文档,在“路由器/SMTP”中的“基本”标签的“在本地 Internet 网络域之外发送消息时所用的 SMTP:”中选上“启用”。
全球网络域文档——用来将发送出去的邮件对发送者的地址进行转换,并将接收到的外部邮件对其目的地址进行转换发送给内部的邮件用户。此文档中应该做如下设置,基本标签中:1,为全球网络域起一名字;2,全球网络域角色——R5 Internet 网络域或 R4.x SMTP MTA。“转换”标签中:1,地址格式——仅地址为;2,本地主要 Internet 网络域——(填上Internet上注册的域名,如abc.com);3,Internet 地址查询——启用。(注:Domino5.0.8及5.0.9如果选上禁用,通过转换规则进行转换有问题)。
个人文档——接收到的邮件分发到接收者的邮箱,是通过个人文档中的设置来识别的。个人文档中需要设置“邮件”标签中的“Internet 地址”。(可以做一个代理来成批生成)
三、SMTP设置步骤
1,发送邮件
1),设置好本地SMTP邮件主机的网络设置中,TCP/IP的DNS服务器地址。确保可以PING通Internet上的机器。
2),设置好配置文档。(参考上面的“配置文档”)。
3),设置好全球网络域文档。(参考上面“全球网络域文档”)。
4),设置好个人文档。(参考上面“个人文档”)。
5),起用SMTP任务。如果启动DOMINO服务器就起用SMTP,可以修改Notes.ini文件中的ServerTasks,加上SMTP。
2,接收邮件
1),DNS服务器中,加上SMTP的主机信息,同时设置好MX(Mail eXchange邮件交换)记录;
2),设置好服务器文档。(参考上面的“服务器文档”)。
3),设置好配置文档。(参考上面的“配置文档”)。
4),设置好全球网络域文档。(参考上面“全球网络域文档”)。
5),设置好个人文档。(参考上面“个人文档”)。
posted @
2008-05-07 15:10 joyclear 阅读(256) |
评论 (0) |
编辑 收藏
您好!您可以下再Account Lockout and Management Tools工具,使用Acctinfo.dll以解决账户锁定的问题,在执行ALTools.exe文件后,解压到某一文件夹后就可以使用了。具体的下载地址如下:
http://www.microsoft.com/downloads/details.aspx?FamilyId=7AF2E69C-91F3-4E63-8629-B999ADDE0B9E&displaylang=en
Acctinfo.dll
Acctinfo.dll是一个动态链接库文件,注册这个动态链接库文件之后,管理员可以通过使用“Active Directory用户和计算机”管理控制台查看用户属性的时候,增加一个“Additional Account Info”选项卡。这个选项卡可以让管理员查看Active Directory中的一些高级信息,例如:用户上次修改密码时间、用户帐户上次登录时间等。使用“Additional Account Info”选项卡查看信息,主要是出于以下两个方面的需求。在某些情况下,部分信息没有被存储在Active Directory中,而是被存储在本地。
例如:某用户帐户上次登录时间和上次注销时间仅仅被存储每个域控制器本地,并没有复制到域中的其他域控制器中。Acctinfo.dll可以帮助管理员检查某台域控制器上用户上次登录和注销的具体时间。如果你在域中有多个域控制器,管理员可能需要在每个域控制器上都安装Acctinfo.dll以检查某一个用户帐户在每台域控制器上的登录、注销时间。
此外,使用Acctinfo.dll还可以更加方便的修改用户帐户密码,锁定或解除锁定用户帐户。Acctinfo.dll解除用户帐户的锁定状态的具体步骤如下:
1.在使用Acctinfo.dll之前,需要安装注册Acctinfo.dll文件。
2.将Acctinfo.dll文件复制到“%windir%\system32”文件夹中。在Windows Server 2003中,通常这个文件夹为“C:Windows\System32”;在Windows 2000中,这个文件夹通常为“C:Winnt\System32”。
3.打开命令行窗口,假设“%windir%\system32”文件夹为“C:Windows\System32”,键入以下内容:regsvr32 c:windows\system32\acctinfo.dll
4.如果命令执行成功,将会出现一个成功注册Acctinfo.dll的对话框。
5.点击“开始”->“运行”->输入“DSA.MSC”->“Active Directory用户和计算机” ->选择被锁定的用户->右键点击“属性”
6.在“Additional Account Info”选项卡中,单击“Set PW On Site DC”按钮。在新出现的对话框中,修改用户帐户的密码。这种密码修改方式是直接连接到用户所在站点的域控制器上执行操作,所以执行速度更快。同时在这个对话框中,也可以解除用户帐户的锁定状态。希望我的回复对您有所帮助。
Tom Zhang 张一平
在线技术支持工程师
微软全球技术支持中心
posted @
2008-05-07 12:01 joyclear 阅读(743) |
评论 (0) |
编辑 收藏