OpenPGP 是用来交换加密数据的业内标准协议,提供各种面向邮件客户端的 OpenPGP 插件,帮助用户收发加密邮件。MDPGP 是 MDaemon 的集成式 OpenPGP 组件,可以为您的用户提供加密、解密和基本的密钥管理服务,而且无需他们使用邮件客户端插件。
MDPGP 使用公共-密钥/私人-密钥系统来加密和解密电子邮件。要实现这点,在您希望使用 MDPGP 来向某人发送安全的私人邮件时,MDPGP 将使用您以前从那人(例如他的“公共密钥”)获取并导入 MDPGP 的“密钥”来加密邮件。反之亦然,如果他希望向您发送私人邮件,他必须使用从您那儿获取的公共密钥来加密这封邮件。向发件人提供您的公共密钥十分必要,因为没有这个密钥的话,他不能向您发送 OpenPGP 加密的邮件。必须使用您唯一的公共密钥来加密邮件,因为您唯一的私人密钥是 MDPGP 用来在邮件抵达时解密的。
为了让 MDPGP 管理邮件签名、邮件加密和解密,它维护两个密钥存储(例如密钥环)——分别用于公共密钥和私人密钥。MDPGP 可以自动生成用户需要的密钥,您也可以为特定用户手动创建它们。您还可以导入在其他位置创建的密钥。此外 MDaemon 可以查询附加至来自本地用户已验证邮件的公共密钥,并自动导入这些密钥。这样用户便能请求来自某人的公共密钥,然后通过电子邮件将密钥发送给自己,MDPGP 将对此进行检测并将其导入公共密钥环。MDPGP 从不存储相同密钥的多个副本,不过一个地址会有多个不同的密钥。最后,每当一封邮件抵达在密钥环中存在密钥的地址,MDPGP 将根据您的设置按需签名、加密或解密这封邮件。如果一个地址有多个密钥,MDPGP 将使用您指定成首选的密钥来加密这封邮件。如果未指定首选的密钥,MDPGP 将使用第一个密钥。在解密一封邮件时,MDaemon 将尝试每一个密钥。
您可以配置 MDPGP 的签名和加密服务自动或手动运行。在设置成自动运行时,MDPGP 将在可能时自动签名和加密邮件。在设置成手动运行时,MDPGP 将仅在发件用户将特殊命令插入邮件的“主题”时签名或加密邮件。无论是何种情况 只在账户被授权使用这些服务时签名或加密(或解密)这些邮件。
启用 MDPGP
默认情况下启用 MDPGP,不过只有在您创建了密钥,或将密钥导入密钥环,或使用了下方的选项来设置 MDPGP 自动创建密钥时,MDPGP 才会签名、加密或解密任何邮件。
启用加密和签名服务
在启用 MDPGP 时,默认当所需密钥位于密钥环时可以签名和加密邮件。如果您不希望允许 MDPGP 签名或加密邮件,请禁用此项。
可以在不加密的情况下签名邮件,不过将始终签名由 MDPGP 加密的任何邮件。 |
启用解密和验证服务
默认情况下,如果已知收件人的私人密钥,将解密入站的加密邮件。此外 MDPGP 也将验证未加密邮件中的内嵌签名。注意:必须授权收件人和发件人使用解密和验证服务 ,可以通过下方的“授权所有人...”选项或“配置谁...”选项来实现这点(默认情况下授权每个人)。如果您不希望验证内嵌的签名或允许 MDPGP 解密任何邮件,例如您希望您的所有用户通过邮件客户端插件处理其自己的解密,请禁用此项。禁用时,将照常处理任何加密的入站邮件,并将其放入收件人的邮箱。
收集 DNS (pka1) 中的公共密钥并缓存 [xx] 小时
如果您希望 MDPGP 通过使用 PKA1 的 DNS 来查询邮件收件人公共密钥,请启用此项。这非常有用,因为它自动处理获取一些收件人的公共密钥 ,防止您或您的用户为了发送加密邮件而不得不手动获取和导入这些密钥。在进行 PKA1 查询时,将立即收集和验证找到的任何密钥 URI,并将其添加到密钥环。将在名为 fetchedkeys.txt 的文件中跟踪使用上述方式成功收集和导入密钥环的密钥,而且在达到此项中指定的小时数后,或按照引用它们的 PKA1 记录的 TTL 值(这些值更大)来自动过期这些密钥。因此在此处指定的值是密钥将被缓存的时长最小值。默认值是 12 小时,允许的最小值是 1 小时。
如果您希望将自己的公共密钥发布到 DNS,您必须创建专用的 TXT 记录。例如,用户 frank@example.com 使用以下密钥-id: 0A2B3C4D5E6F7G8H, 在用于域“example.com”的 DNS 中,您将创建一个 TXT 记录“frank._pka.example.com”(替换邮件地址中的 @ 的是“._pka.”字符串)。TXT 记录的数据格式如下: "v=pka1; fpr=<key's full fingerprint>; uri=<Webmail-URL>/WorldClient.dll?view=mdpgp&k=0A2B3C4D5E6F7G8H" ,其中 <key's full fingerprint> 是密钥的完整指纹(40 字符长度,表示完整的 20 字节指纹值)。您可以通过在 MDPGP GUI 中双击这个密钥来查看其完整的指纹值。 |
使用 HTTP 处理公共密钥 (Webmail)
如果您希望将 Webmail 用作基本的公共密钥服务器,请启用此项;Webmail 将准许您用户的公共密钥的请求。创建请求的 URL 格式如下所示: "http://<Webmail-URL>/WorldClient.dll?View=MDPGP&k=<Key-ID>". 其中 <Webmail-URL> 是转至您 Webmail 服务器的路径(例如“http://wc.example.com”),<Key-ID> 是您所需密钥的长度为 16 个字符的密钥 id(例如“0A1B3C4D5E6F7G8H”)。密钥 id 由密钥指纹的最后 8 个字节构成 - 总共 16 个字符。
在 SMTP 邮件会话期间处理公共密钥 (MDaemon)
如果您希望启用公钥自动传输作为 SMTP 邮件投递过程的一部分,请选中此框。为此,MDaemon 的 SMTP 服务器将准许名为 RKEY 的 SMTP 命令。将电子邮件发送到支持 RKEY 的服务器时,MDaemon 将提供发送者当前首选的公钥发送给其他主机。该主机将响应,表明它已经拥有该密钥(“250 2.7.0密钥已知”)或者需要该密钥,在这种情况下密钥立即以 ASCII 形式传输(“354 Enter”键,以 CRLF.CRLF”结尾)就像电子邮件。不会传输过期或撤销的密钥。如果 MDaemon 有多个发件人的密钥,它始终会发送当前标记为首选的密钥。如果没有首选密钥,则发送找到的第一个密钥。如果无有效密钥则不进行任何操作。只提供属于本地用户的公共密钥。
公共密钥传输是作为投递用户邮件的 SMTP 邮件会话的一部分发生的。为了接受以这种方式传输的公共密钥,它必须和由密钥持有者属于的域进行 DKIM 签名 的邮件一起发送,其中将 i= 设置成密钥持有者的地址,而且必须准确匹配 唯一的发件人报头地址。“密钥持有者”取自密钥本身。此外,该邮件必须从发件人的 SPF 地址中的主机抵达。最后,通过向 MDPGP 规则文件添加一个适当的条目(说明在这个规则文件中),必须为 RKEY 授权密钥持有者(或其整个域,通过使用通配符),指示该域可以被信任用于密钥交换。上述检查都将为您自动完成,不过您必须启用 DKIM 和 SPF 验证,否则无法有效完成这些步骤。
MDPGP 日志显示导入或删除的所有密钥的结果和详细信息,SMTP 会话日志也跟踪此活动。该进程跟踪现有密钥的删除和新的首选密钥的选定,并在这些事件发生变化时更新其发送邮件的所有服务器。
授权所有本地 MDaemon 用户使用所有服务
默认情况下,授权所有本地 MDaemon 用户账户使用您已启用的任何 MDPGP 服务: 签名、加密、解密和验证。如果您希望允许特定的用户使用其中一种服务或更多服务,您可以使用下方的“精确配置谁能及不能使用 MDPGP 服务”这个选项来排除他们。如果您仅希望授权特定的本地用户,请禁用此项。在那种情况下,请使用下方的“精确配置谁能及不能使用 MDPGP 服务”这个选项来为您选择的人授予访问权限。
授权所有非本地 (外来) 用户使用解密/验证服务
默认情况下,如果 MDPGP 知道本地收件人的私人密钥,可以解密从非本地发件人发往本地收件人的任何入站加密邮件。类似的,MDPGP 将验证来自非本地用户的入站邮件中的内嵌签名。如果存在您不希望对其邮件进行解密或验证的非本地发件人,您可以使用下方的“精确配置谁能及不能使用 MDPGP 服务”这个选项来为发件人限制这些服务。如果在发件人是非本地地址时,您不希望解密邮件或验证内嵌签名,请禁用此项。在那种情况下,您仍然可以使用下方的“精确配置谁能及不能使用 MDPGP 服务”这个选项来指定限制例外。
精确配置谁能及不能使用 MDPGP 服务
点击此按钮来打开“rules.txt”文件,用于为 MDPGP 配置用户权限。使用此文件,您可以指定允许谁来签名邮件、加密邮件和解密邮件。您还可以专门限制用户使用这些选项。例如您可以使用“+*@example.com”规则来允许所有 example.com 用户解密邮件,不过可以通过专门添加“-frank@example.com”来禁止 frank@example.com 这么做。请参阅 rules.txt 文件顶部的文本来获得示例和指示说明。
Rules.txt 备注和语法
•只有来自 MDaemon 服务器用户经过验证的 SMTP 邮件有资格进行加密服务。不过您可以指定希望限制加密服务的非本地地址,这就意味着 MDPGP 就算知道其公共密钥也不会加密邮件。
•如果 rules.txt 和“授权所有本地 MDaemon 用户使用所有服务”全局选项发生冲突,将使用 rules.txt 设置。
•如果 rules.txt 和“授权所有非本地 (外来) 用户使用解密/验证服务”全局选项发生冲突,将使用 rules.txt 设置。
•忽略行上 # 后的文本。
•在同一行使用空格分隔多个邮件地址。
•允许在电子邮件中使用通配符 (* 和 ?)。
•即使始终签名 MDPGP 加密邮件,向用户授予加密权限也不会向这名用户授予签名未加密邮件的权限。要签名未加密的邮件,必须授予这名账户签名权限。
•每个电子邮件地址必须使用以下标签作为前缀:
+ (加号) - 地址可以使用 MDPGP 加密服务。
- (减号) - 地址不能使用 MDPGP 加密服务。
! (感叹号) - 地址可以使用 MDPGP 解密服务。
~ (浪号) - 地址不能使用 MDPGP 解密服务。
^ (插入号) - 地址可以使用 MDPGP 签名服务。
= (等号) - 地址不能使用 MDPGP 签名服务。
$ (美元)- 地址可以使用 MDPGP 验证服务。
& (和号) - 地址不能使用 MDPGP 验证服务。
示例:
+*@* — 所有域的所有用户可以加密。
!*@* — 所有域的所有用户可以解密。
^*@* — 所有域的所有用户可以签名。
^*@example.com — example.com 的所有用户可以签名。
+frank@example.com ~frank@example.com — 用户可以加密但是不能解密。
+GROUP:EncryptingUsers — MDaemon EncryptingUsers 群组的成员可以加密
^GROUP:Signers — MDaemon Signers 群组的成员可以签名
使用“设置”选项来配置 MDPGP 自动为所有被许可的账户签名和加密邮件。在账户发送已验证的邮件,而且 MDPGP 知道所需密钥时,将按照下方设置签名或加密邮件。
在下方“手动模式”中所述的专用“主题”代码的优先级始终高于“自动模式”选项。因此如果禁用了其中一个选项,被许可签名或加密邮件的账户仍能使用代码手动签名或加密邮件。 |
设置
如果已知收件人的公共密钥则自动加密邮件
默认情况下,如果允许账户加密邮件,而且已知收件人的公共密钥,MDPGP 将自动为其加密。如果您不希望自动为其加密请禁用此项;可以使用在下方“手动模式”中概述的专用代码手动加密邮件。
如果已知发件人的私人密钥则自动签名邮件
如果您希望在已知发件人账户的私人密钥的情况下,而且允许该账户签署邮件时,希望 MDPGP 自动签署邮件,请点击此项。即使禁用了此项,仍然可以使用下方“手动模式”这一部分中概述的特殊代码来手动签署邮件。
加密/签名同一个域中用户间的邮件
将 MDPGP 设置成自动加密或签名邮件时,即使邮件发自同一个域中的用户之间,只要已知所需密钥,此项仍能使 MDPGP 这么做。默认情况下启用此项。
加密/签名本地 MDaemon 域中用户间的邮件
将 MDPGP 设置成自动加密或签名邮件时,即使邮件发自本地 MDaemon 域中的用户之间,只要已知所需密钥,此项仍能使 MDPGP 这么做。例如,如果您的 MDaemon 域包含“example.com”和“example.net”,将自动加密或签名发自这些域的用户之间的邮件。默认情况下,启用该选项。
加密/签名发给自己的邮件
在将 MDPGP 设置成自动加密或签名邮件时,即使账户正在将邮件发给自己(例如从 frank@example.com 发送至 frank@example.com),此项也能使 MDPGP 这么做。如果账户有权使用加密和解密,那么将能有效使 MDPGP 接受邮件,对其加密,然后立即对其解密,并将该邮件放入同一名用户的邮箱。不过如果没有为账户配置解密,便会使邮件被加密,并将其以加密状态放入同一名用户的邮箱。默认情况下启用此项。
如果您禁用了上述的“自动签名邮件...”和“自动加密邮件...”选项,您正在以“手动模式”使用 MDPGP。MDPGP 不会签名或加密任何邮件,除非邮件经过验证,而且在其“主题”报头中存在以下代码之一:
--pgps |
可能时签名这封邮件。可以将代码放在“主题”的开头或结尾。 |
--pgpe |
可能时加密这封邮件。可以将代码放在“主题”的开头或结尾。 |
--pgpx |
邮件必须进行加密。如果它不能进行加密(例如未知收件人的密钥),那么就不投递这封邮件,会将该邮件退回发件人。可以将代码放在“主题”的开头或结尾。 |
--pgpk |
向我发送公共密钥。用户将此代码放在“主题”的开头并将该邮件发送给自己。然后 MDPGP 会通过电子邮件向用户发送他的公共密钥。 |
--pgpk<Email> |
向我发送这个地址的公共密钥。用户将此代码放在“主题”的开头并将该邮件发送给自己。然后 MDPGP 会通过电子邮件向用户发送这个地址的公共密钥。 示例: 主题: --pgpk<frank@example.com> |
使用在 MDPGP 对话框下半部分的选项来管理公共和私人密钥。每个密钥都有一个条目,您可以右键点击任何条目来导出密钥,对其进行删除,启用/禁用操作,将其设置成“首选密钥”(请参阅上方的“在 SMTP 邮件会话期间处理公共密钥”),或将其设置成域的密钥(见下方)。在您点击“导出密钥”时,会将其保存到\MDaemon\Pem\_mdpgp\exports\ 文件夹,而且您可以有选择性地通过电子邮件将公共密钥发送到一个邮件地址。提供“显示本地/远程”和“过滤器”选项来帮助您定位特定的地址或群组。
使用域密钥
(可选)您可以使用单个密钥对发往特定域的所有邮件进行加密,而不考虑发件人。例如,如果您的域之一和托管在其他地方的域希望对它们之间发送的所有电子邮件进行加密,但是他们不希望为域中的每个用户账户设置和管理单独的加密密钥,则此功能很有用。有多种方式来实现这个目的:
•如果您已经拥有另一个域的公共密钥,并且希望使用该密钥对指向该域的所有出站邮件进行加密,请右键单击该密钥,然后点击“设置成域的密钥”。然后输入域名并点击“确定”。这将创建一个“内容过滤器”规则,以导致所有指向该域的邮件“收件人:” 使用指定的密钥进行加密。
•如果已经向您提供了域的公共密钥,但尚未在列表中,请点击“导入域的密钥”,输入域名并点击“确定”,然后导航至该域的 public.asc 文件并点击“打开”。这还将创建“内容过滤器”规则,用来加密指向该域的这些邮件。
•根据需要自定义“内容过滤器”规则,以准确修改在发送到域之前已加密的邮件。
•要为您的一个域创建一个新密钥,并分配给另一个域来加密发送给您的邮件,请按照说明进行操作,这些说明位于下方的“为特定用户创建密钥”这个选项之下,请从列表中选择“_Domain Key (domain.tld)_ <anybody@domain.tld>”。
不使用密钥来加密您也具有相应私人密钥的出站邮件。如果这样做,MDPGP 将加密邮件,然后立即看到解密密钥是已知的,并立即解密该相同的邮件。 |
通过电子邮件向发件人发送加密失败的详细信息 (--pgpe 命令)
在用户使用 --pgpe 命令来发送加密邮件并遇到加密失败的情况时(例如失败原因是未找到加密密钥),此项会通过电子邮件将失败通知发送给发件人。默认情况下禁用此项,这意味着不发送失败通知邮件。
当邮件发给自己时通过邮件发送公共密钥 (--pgpk command)
当用户向自己发送邮件时,使用“--pgpk<email address>”作为主题 (例如 --pgpk<frank@example.com>)。如果存在用于<电子邮件地址>的公共密钥,则会通过电子邮件发送回请求者。
自动导入发自已验证用户的公共密钥
默认情况下,在已验证的用户发送的邮件中附加了 ASCII 格式的公共密钥时,MDPGP 会将这个密钥导入密钥环。这是一种供用户将联系人的公共密钥导入 MDPGP 的简单方式,通过将公共密钥作为邮件附件发送给自己来实现。如果您不希望自动导入公共密钥,请禁用此项。
自动创建密钥
如果您希望 MDPGP 自动为每个 MDaemon 用户创建公共/私人密钥对,请启用此项。MDPGP 不是一次全部生成,而是随时间进行创建,在下一次为该用户处理一封邮件时创建各个用户的密钥对。默认情况下禁用此项来节约资源,并避免为从不使用 MDPGP 的账户生成密钥。
密钥大小
使用此项来为 MDPGP 生成的密钥指定其大小。您可以将密钥大小设置成 1024、2048 或 4096。默认设置是 2048 位密钥。
在 [xx] 天后过期 (0=从不)
使用此项来指定由 MDPGP 生成的密钥自创建之日起,在过期前有几天有效时间。如果您不希望密钥过期,则将此项设置成“0”。默认设置是 0。
为特定用户创建密钥
要为账户手动生成密钥对:
1.点击“为特定用户创建密钥”。
2.从下拉列表选择账户。 如果您希望创建一个密钥以应用于域的所有账户,请选择列表中的“_Domain Key (domain.tld)_ <anybody@domain.tld>”选项。
3.可选:如果您希望将密钥作为邮件附件发送给用户,请勾选“通过电子邮件将密钥发送给密钥拥有者...”。
4.点击“确定”。
基于收件 IP 加密出站邮件
如果您希望使用特定的加密密钥来加密指向特定 IP 地址的所有邮件,请启用此项并点击“设置”来打开“ MDaemon 邮件传输加密”文件, 您可以在其中列出 IP 地址和关联的密钥 ID。将邮件投递到所列 IP 的任何出站 SMTP 会话都将在投递之前,使用关联的密钥对邮件进行加密。如果邮件已被其他密钥加密,则将跳过此步骤。
导入密钥
如果您希望将密钥文件手动导入 MDPGP,请点击这个按钮,找到密钥文件并点击“打开”。在导入私人密钥文件时,您无需导入相应的公共密钥,因为它已被包含在私人密钥中。如果您正在导入受密码口令保护的私人密钥,MDPGP 将提示您输入这个密钥口令。如果没有密钥口令,您便不能导入这个私人密钥。导入了私人密钥后,MDaemon 会将密钥的密码口令更改成 MDPGP 当前正在使用的密码口令。
导入域的密钥
如果提供了公共加密密钥来加密发送到某个域的所有邮件,请点击此按钮,输入域名,然后点击“确定”,导航到域的 public.asc 文件并点击“打开”。这会将域的公共密钥添加到列表中,并创建“内容过滤器”规则来对该域的所有出站邮件进行加密,而不考虑发件人。
更改密码口令
私人密钥始终受密码口令保护 在您尝试导入一个私人密钥时,您必须输入其密码口令。在导出私人密钥时,导出的密钥仍然受到密码口令的保护,而且没有密码口令的话便无法使用或导入到其他位置。MDPGP 默认的密码口令是 MDaemon。出于安全原因,您应该在使用 MDPGP 后更改这个密码口令,因为直到您这么做之后,创建或成功导入 MDPGP 的各个密钥才会将其密码口令设置(或更改成)MDaemon。您可以通过点击 MDPGP 屏幕上的“更改密码口令”来随时更改密码口令。在您更改密码口令时,会将密钥环上的各个私人密钥更新成新的密码口令。
备份数据文件
点击这个按钮来备份您当前的 Keyring.private 和 Keyring.public 密钥环文件。默认情况下,会将备份文件复制到: "\MDaemon\Pem\_mdpgp\backups" ,并在文件名后附加日期和 .bak 扩展名。
•不加密转发的邮件。 •不加密自动应答邮件。 •不支持密钥服务器和密钥撤销,就如上方的“收集 DNS (pka1) 中的公共密钥并缓存 [xx] 小时”和“通过 HTTP 发送公共密钥(Webmail)”这两个选项所述。 •“内容过滤器”的加密操作不对已加密的邮件执行操作,而且其加密和解密操作受到所有 MDPGP 配置要求的限制。 •默认情况下这个显示 MDaemon 账户的下拉列表显示前 500 个账户。您可以设置 MaxUsersShown=0(位于plugins.dat)来查看所有账户。这可能花费更长时间来加载较大的用户列表。 •MDPGPUtil.exe 这款工具可以通过命令行选项来加密和解密。在无参数的情况下从命令行外壳运行 MDPGPUtil 来获得帮助。 |