邮件发送中Virtual domains 和 Local domains 的概念

参考原文网址:https://workaround.org/ispmail/lenny/virtual-domains-in-db

可能有些翻译问题

数据库中的虚拟域名(Virtual domains)

在开始进一步配置之前,需要先了解下面的一些概念:

本地域名(Local domains)

Postfix 从互联网接收邮件。通常,Postfix 通过设置 “mydestination”的值了解本地域名和本地用户(Linux系统中默认在 /etc/passwd 文件下)。这表明,所有的用户都能够采用任何本地域名接收邮件。以下面的设置为例:

mydestination = example1.com, example2.com, example3.com

假设系统中的用户为 “johndoe”则有 Postfix可以接受收件名称为如下的电子邮件:

johndoe@example1.com

johndoe@example2.com

johndoe@example3.com

虚拟域名(Virtual domains)

本地域名和用户名称可以存放在 MySQL、PostgreSQL等数据库中。以这种方式配置的话,Postfix需要了解如何接入数据库,并能够操作数据库的信息。这种配置下的邮件地址被称为虚拟域名(virtual domains),邮件用户被称为虚拟用户(virtual users)。它们都是存放在数据库中。

Postfix 能够识别两种基本的虚拟域名——“Virtual alias domains”和“virtual_alias_maps”。具体来说,“Virtual alias domains”用于将邮件从一个地址,转发到另外一个或者多个地址。它无法为任务用户接收邮件,只是转发邮件。“Virtual_alias_maps”包含用户的收、发邮件地址信息、收件人域名或者是全部的域名。同样,“Virtual_alias_map”同样可以用于本地的地址管理。

还有一种虚拟域名(Virtual domains)被称为“Virtual mailbox domains”,是用于实际接收邮件的。

上面的描述过于抽象,以一个例子来说明。假如在你的系统中,假如有一个“Virtual_mailbx_maps”内容如下:

Virtual userVirtual mailbox location

john@doe.org/var/mail/doe.org/john/Maildir

jack@doe.org/var/mail/doe.org/jack/Maildir

jeff@foo.org/var/mail/foo.org/jeff/Maildir

如上表所示,虚拟用户(Virtual user)john 对应的邮箱地址为 /var/mail/doe.org/john/Maildir 。因此,所有发给这个用户的邮件,均是存放在相应的邮箱下面(以上这段是个人理解)。然而,上面的收件地址中出现了 “doe.org”、“foo.org”这两个域名。但是,二者代表的意义难以理解。因此,解释这两者的意义在名为“Virtual_mailbox_domains”的表中解释,如下所示:

Virtual domainJust some dummy string

doe.orgbanana daiquiri

foo.orgtequila sunrise

即是说,doe.org 代表 “Virtual domain”列中的 doe.org;foo.org 代表“Virtual domain”列中的 foo.org。在上面的表中,右侧的列是没有意义的。有两列是因为 Postfix 在进行关联的时候,需要两列进行关联。左侧的列(“left-hand side”=LHS)通常为键(key),包含有 Postfix 查找的信息;右侧的列(“right-hand side”=RHS)是告诉 Postfix 如何实现所需功能。对于虚拟域名(Virtual domain)来说,右侧的列是无关紧要的。

通过上面的介绍可以知道,通过表的映射,可以使不同的值关联起来。因此,对数据库进行查询的时候,还需要向 Postfix 解释所查询的哪两列。当然,了解了这些,还尚未解释清楚 Postfix 是如何实现与数据库连接,协同工作的。关于如何配置 Postfix 与 数据库,可以参照网址:。下面是一个简单的说明实例:

在 /etc/postfix/mysql-virtual-alias-maps.cf 中有如下的代码:

# Information on how to connect to your MySQL serveruser = someonepassword = some_passwordhosts = 127.0.0.1# The database name on the servers.dbname = mailserver# The SQL query template.query = SELECT destination FROM virtual_aliases WHERE source=’%s’那么,在 Postfix 的配置文件中(/etc/postfix/main.cf)中,将“virtual_alias_maps”配置成为如下格式即可:

virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_alias_maps.cf则,假如 Postfix 要将一封电子邮件发送给 john@doe.net,然后需要去检查 virtual alias map。Posfix 首先连接到 IP 地址为 127.0.0.1 的 MySQL 数据库,并用“user”和“password”变量提供的用户名称和密码登陆。之后,Postfix 会打开变量“dbname”指向的数据库,并执行 query 命令。在执行指令的过程中,将 source 的“%s”用邮件名称代替,所以在 MySQL 中执行的查询指令是:

SELECT destination FROM virtual_aliases WHERE source=’john@doe.net’假如这个查询返回以下的数值:

这意味着,,john@doe.net是下面邮件的别名:jack@example.com,jeff@example.com,kerstin@example.com。

想要成功,就一定要和成功的人在一起,不然反之

邮件发送中Virtual domains 和 Local domains 的概念

相关文章:

你感兴趣的文章:

标签云: