码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-02-16 22:16:10      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:virtual domains   local domains   虚拟域名   本地域名   邮件服务器   

可能有些翻译问题
数据库中的虚拟域名(Virtual domains)
        在开始进一步配置之前,需要先了解下面的一些概念:
  • 本地域名(Local domains)
        Postfix 从互联网接收邮件。通常,Postfix 通过设置 “mydestination”的值了解本地域名和本地用户(Linux系统中默认在 /etc/passwd 文件下)。这表明,所有的用户都能够采用任何本地域名接收邮件。以下面的设置为例:
mydestination = example1.com, example2.com, example3.com
假设系统中的用户为 “johndoe”则有 Postfix可以接受收件名称为如下的电子邮件:
  • 虚拟域名(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 user Virtual 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 domain Just some dummy string
doe.org banana daiquiri
foo.org tequila 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 与 数据库,可以参照网址:http://www.postfix.org/MYSQL_README.html。下面是一个简单的说明实例:
在 /etc/postfix/mysql-virtual-alias-maps.cf 中有如下的代码:
# Information on how to connect to your MySQL server
user = someone
password = some_password
hosts = 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‘
假如这个查询返回以下的数值:
  • jack@example.com
  • jeff@example.com
  • kerstin@example.com
这意味着,john@doe.net 是下面邮件的别名:jack@example.com,jeff@example.com,kerstin@example.com。

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

标签:virtual domains   local domains   虚拟域名   本地域名   邮件服务器   

原文地址:http://blog.csdn.net/shiyuan0/article/details/43853359

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!