4. 我该如何设置?

4.1. 创建新账户

为虚拟客户创建一个常规 Linux 账户,并包含 home 目录和邮件功能。

4.2. NCSA 1.5 或 Apache 配置文件

虚拟主机实现仍在不断变化。一些补丁程序可以支持虚拟主机。请查看服务器的发行说明以获取更多详细信息。NCSA 1.5 或 Apache 现在包含虚拟补丁程序,并且我被告知 Spinner 支持虚拟主机。

一个虚拟补丁程序支持以下 srm.conf 语法,但是第二种 NCSA 1.5 定义虚拟主机的方法允许更大的灵活性。

SubDocumentRoot www.domain1.com /usr/local/etc/httpd/docs/domain1
SubDocumentRoot www.domain2.com /usr/local/etc/httpd/docs/domain2

NCSA 和 Apache 支持以下 httpd.conf 语法

ServerAdmin webmaster@domain1.com
DocumentRoot /usr/local/etc/httpda/docs/domain1
ServerName www.domain1.com
ErrorLog logs/errors.domain1.com
TransferLog logs/access_log.domain1.com

4.3. 配置接口

一旦安装了 IPalias 补丁程序,请将以下内容添加到本地 Web 服务器上的 /etc/rc.d/rc.local 文件中。

/sbin/ifconfig eth0 alias www.domain1.com
/sbin/ifconfig eth0 alias www.domain2.com
/sbin/ifconfig eth0 alias www.domainN.com

4.4. 在 Internic 注册

如果您要设置新域名或更改当前域名,则必须在 Internic 注册该域名。模板可以在 ftp://rs.internic.net/templates/domain-template.txt 找到。

4.5. 配置 Named

需要配置 Named,以便您的虚拟域名对外部世界可见。我并不声称是 DNS 专家。欢迎提出建议。

4.5.1. /etc/named.boot 示例

directory /etc/named.data
primary           realdomain.com                  db.realdomain.com
primary           xxx.xxx.xxx.IN-ADDR.ARPA        db.xxx.xxx.xxx
primary           0.0.127.IN-ADDR.ARPA            db.local

primary           domain1.com                     db.domain1.com
primary           domain2.com                     db.domain2.com
cache             .                               named.root

Note

将 x 替换为您的 IP。

4.5.2. /etc/named.data/db.domain1.com 示例

$ORIGIN com.
  domain1    IN      SOA     domain1.com. hostmaster.domain1.com. (
             10134 43200 3600 604800 86400 )
             IN      NS      ns1.realdomain.com.
             IN      MX      10 mail.realdomain.com.
             IN      MX      0 domain1.com.
domain1.com. IN      A       xxx.xxx.xxx.xxx    ;www.domain1.com IP

  $ORIGIN domain1.com.
  ftp        IN      CNAME   domain1.com.
  www        IN      CNAME   domain1.com.
  mail       IN      CNAME   domain1.com.

4.5.3. /etc/named.data/db.xxx.xxx.xxx 示例

您应该已经为当前站点拥有一个 db.xxx.xxx.xxx 文件,请更新它以包含用于反向查找的新虚拟域名。

xx              IN      PTR     www.domain1.com.
xx              IN      PTR     www.domain2.com.

4.5.4. 重启 named

完成编辑配置文件后,您需要重启 named 守护程序。

4.6. 虚拟邮件

您的虚拟客户很可能希望能够将发送到他们域名的邮件转发到另一个域名。一些 sendmail.cf 更改就可以解决问题。经过几个月尝试不同的 sendmail 更改后,这是我发现的第一个有效的方法,并且每个新的虚拟站点只需要一个 sendmail.cf 更改。

4.6.1. Sendmail 配置

  1. 获取包含 makemap btree 支持的 sendmail 当前版本。

  2. 创建一个名为 /etc/domainalias 的文件,其中包含以下映射。

    *@domain1.com           localnet@realdomain.com
    *@domain2.com           townplaz@realdomain.com
    *@domainN.com           soracomp@realdomain.net
    
    webmaster@domain1.com   somuser@anotherhost.com
    jamison@domain2.com     anotheruser@somehost.com

  3. 创建映射的 DB 文件

    makemap btree /etc/domainalias.db  < /etc/domainalias

  4. 4.6.2. /etc/sendmail.cf 更改

    1. 为每个新的虚拟主机添加一个 Cw 记录。

      Cwdomain1.com
      Cwdomain2.com

    2. 只添加一次 domainalias 映射。

      Kdomainalias btree /etc/domainalias.db

    3. 添加/更改规则集 98

      ###################################################################
      ###  Ruleset 98 -- local part of ruleset zero (can be null)     ###
      ###################################################################
      
      S98
      
      R$+ < $+ . >          $1 < $2 >                         remove trailing dots
      R$+ < $+ >            $: < > $(domainalias $1$2 $)      match user@address
      R< > $+ @ $*          $: < $1 > $(domainalias * @ $2 $) match *@address
      R< $+ > * $*          $: < > $1 $2                      replace * with userid
      R < $+ > $+           $: < > $2                         bugfix
      R< > $*               $: $>3 $1                         and rewrite using S3

  5. 4.6.3. Sendmail 测试

    测试 sendmail 配置以验证新的 sendmail.cf 更改。

    sendmail -v -bv info@domain1.com

    最终目的地应该显示出来。

4.7. 虚拟 FTP

目前,我还没有能够让虚拟 FTP 工作。存在一些补丁程序,我相信存在可用的补丁程序。我们只是创建了一个工作目录 /home/ftp/business/domain1,但真正的虚拟 FTP 会更好。

如果有人愿意贡献解决方案,我将非常乐意在此处添加。

Arnt Gulbrandsen 已经重写了 ftpd,并包含了对独立 FTP 服务 Troll Tech FTP 守护程序的支持。