版本1.0
为什么这个?因为最后,这个选项给了我们最大的灵活性。当您托管多个域名时,设置和理解有点复杂,但非常值得。
我们的最终目标是拥有一个电子邮件服务器,支持邮件传递到多个域。每个电子邮件地址只能是该域的地址。例如,joe@domain1.com和joe@domain2.com是两个不同的帐户,每个帐户都收到不同的邮件。
要开始,我们将把所有域变成虚拟主机。即使您使用Postfix设置了一个域,我们也将使该域成为虚拟的。你不需要这样做,但我是因为我认为它更有条理。使Postfix主机一个真正的域,其余的虚拟意味着您将永远需要配置Postfix两次:每个类型的域一次。为此,我们将main.cf中的 myhostname行改为:
myhostname = localhost
接下来,我们将添加以下虚拟域信息到main.cf(所有这些将在后面解释):
在第一行,我们使用一个名为vhosts.txt的文本文件。你可以命名任何你想要的东西。此文本文件内容将是您所托管的所有域名的简单列表。例如:
下一行指定我们将存储我们所有邮件的基本目录。再次,你可以选择任何你想要的。
第三行指向一个我称为vmaps.txt的文本文件。这是一个两列文本文件。第一列指定虚拟电子邮件地址。第二列指定个人邮箱位置。就像真正的域名托管一样,如果您在位置的末尾指定了/,就成为Maildir格式。如果没有,它是mbox。我有哈希指定,因为我也通过运行vmaps.txt转换成哈希文件:
postmap vmaps.txt
这导致一个名为vmaps.txt.db的文件。 Postfix能够比散列的查询信息快于普通的文本文件。
vmaps.txt的内容如下所示:
看第二列。该值附加到我们的virtual_mailbox_base行。因此,虚拟邮箱的绝对路径将成为例如/var/spool/vmail/domain1.com/joe/。不要忘记实际做出目录domain1.com和joe。由于此邮箱采用maildir格式,因此我们将需要3个子目录:new,cur,tmp。这里有几个脚本,但基本上这样做很好:
接下来的两行定义了我们设置的帐户,该帐户将具有访问邮箱的权限。是的,一个帐户将有能力阅读所有的虚拟电子邮件。是的,这可以被认为是一个安全问题。请尽力确保没有人能成为这个用户。我们会将帐户称为“虚拟”。添加任何你想要的系统(例如,useradd),并记下它的uid和gid。
最后一行指定一个文本文件,我们可以在其中放置虚拟帐户的别名。内容如下所示:
最后,您需要为虚拟用户授予邮箱的所有权。运行这将照顾它:
chown -R virtual:virtual / var / spool / vmail
作者: Joe Topjian <joe [at] adminspotting [dot] net>
为什么这个?因为最后,这个选项给了我们最大的灵活性。当您托管多个域名时,设置和理解有点复杂,但非常值得。
我们的最终目标是拥有一个电子邮件服务器,支持邮件传递到多个域。每个电子邮件地址只能是该域的地址。例如,joe@domain1.com和joe@domain2.com是两个不同的帐户,每个帐户都收到不同的邮件。
要开始,我们将把所有域变成虚拟主机。即使您使用Postfix设置了一个域,我们也将使该域成为虚拟的。你不需要这样做,但我是因为我认为它更有条理。使Postfix主机一个真正的域,其余的虚拟意味着您将永远需要配置Postfix两次:每个类型的域一次。为此,我们将main.cf中的 myhostname行改为:
myhostname = localhost
接下来,我们将添加以下虚拟域信息到main.cf(所有这些将在后面解释):
virtual_mailbox_domains = /etc/postfix/vhosts.txt
virtual_mailbox_base = / var / spool / vmail
virtual_mailbox_maps = hash:/etc/postfix/vmaps.txt
virtual_uid_maps = static:1000
virtual_gid_maps = static:1000
virtual_alias_maps = hash:/etc/postfix/valias.txt
domain1.com
domain2.com
virtual.org
domain2.com
virtual.org
下一行指定我们将存储我们所有邮件的基本目录。再次,你可以选择任何你想要的。
第三行指向一个我称为vmaps.txt的文本文件。这是一个两列文本文件。第一列指定虚拟电子邮件地址。第二列指定个人邮箱位置。就像真正的域名托管一样,如果您在位置的末尾指定了/,就成为Maildir格式。如果没有,它是mbox。我有哈希指定,因为我也通过运行vmaps.txt转换成哈希文件:
postmap vmaps.txt
这导致一个名为vmaps.txt.db的文件。 Postfix能够比散列的查询信息快于普通的文本文件。
vmaps.txt的内容如下所示:
joe@domain1.com domain1.com/joe/
joe@domain2.com domain2.com/joe/
john@virtual.org virtual.org/john/
joe@domain2.com domain2.com/joe/
john@virtual.org virtual.org/john/
看第二列。该值附加到我们的virtual_mailbox_base行。因此,虚拟邮箱的绝对路径将成为例如/var/spool/vmail/domain1.com/joe/。不要忘记实际做出目录domain1.com和joe。由于此邮箱采用maildir格式,因此我们将需要3个子目录:new,cur,tmp。这里有几个脚本,但基本上这样做很好:
mkdir new curtmp
chmod 700 new curtmp
chmod 700 new curtmp
接下来的两行定义了我们设置的帐户,该帐户将具有访问邮箱的权限。是的,一个帐户将有能力阅读所有的虚拟电子邮件。是的,这可以被认为是一个安全问题。请尽力确保没有人能成为这个用户。我们会将帐户称为“虚拟”。添加任何你想要的系统(例如,useradd),并记下它的uid和gid。
最后一行指定一个文本文件,我们可以在其中放置虚拟帐户的别名。内容如下所示:
joe@domain1.com joe@yahoo.com
最后,您需要为虚拟用户授予邮箱的所有权。运行这将照顾它:
chown -R virtual:virtual / var / spool / vmail
就是这样 只要运行一个“Postfix重新加载”,你都设置了。 当然,现在我们需要一种实际检索电子邮件的方法。 我会在第二部分中做到这一点。