⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1900.html

📁 著名的linux英雄站点的文档打包
💻 HTML
📖 第 1 页 / 共 5 页
字号:
  <p>&#160;</p>
  <h3>目录</h3>
  <p><a href="#a.1">1.&#160; 概述</a></p>
  <p><a href="#a.1.1">1.1.&#160; 目的</a></p>
  <p><a href="#a.1.2">1.2.&#160; 更新历史</a></p>
  <p><a href="#a.1.3">1.3.&#160; TODO</a></p>
  <p><a href="#a.1.4">1.4.&#160; 鸣谢</a></p>
  <p><a href="#a.2">2.&#160; 系统功能</a></p>
  <p><a href="#a.3">3.&#160; 系统基本前提</a></p>
  <p><a href="#a.4">4.&#160; 配置MySQL</a></p>
  <p><a href="#a.4.1">4.1.&#160; 运行</a></p>
  <p><a href="#a.4.2">4.2. 测试</a></p>
  <p><a href="#a.4.3">4.3.&#160; 配置</a></p>
  <p><a href="#a.5">5.&#160; 安装pam_mysql</a></p>
  <p><a href="#a.5.1">5.1.&#160; 下载</a></p>
  <p><a href="#a.5.2">5.2.&#160; 编译与安装</a></p>
  <p><a href="#a.5.3">5.3.&#160; 配置</a></p>
  <p><a href="#a.6">6.&#160; 安装Cyrus-SASL</a></p>
  <p><a href="#a.6.1">6.1.&#160; 下载</a></p>
  <p><a href="#a.6.2">6.2.&#160; 编译与安装</a></p>
  <p><a href="#a.6.3">6.3.&#160; 配置</a></p>
  <p><a href="#a.6.4">6.4.&#160;运行</a></p>
  <p><a href="#a.7">7.&#160; 安装Postfix</a></p>
  <p><a href="#a.7.1">7.1.&#160; 下载</a></p>
  <p><a href="#a.7.2">7.2.&#160; 编译与安装</a></p>
  <p><a href="#a.7.3">7.3.&#160; 配置</a></p>
  <p><a href="#a.7.4">7.4.&#160; 运行</a></p>
  <p><a href="#a.7.5">7.5.&#160; 测试</a></p>
  <p><a href="#a.8">8.&#160; 安装Cyrus-IMAP</a></p>
  <p><a href="#a.8.1">8.1.&#160; 下载</a></p>
  <p><a href="#a.8.2">8.2.&#160; 编译与安装</a></p>
  <p><a href="#a.8.3">8.3.&#160; 配置</a></p>
  <p><a href="#a.8.4">8.4.&#160; 运行</a></p>
  <p><a href="#a.8.5">8.5.&#160; 测试</a></p>
  <p><a href="#a.9">9.&#160; 安装IMP</a></p>
  <p><a href="#a.9.1">9.1.&#160; 下载</a></p>
  <p><a href="#a.9.2">9.2.&#160; 配置Apache/PHP</a></p>
  <p><a href="#a.9.3">9.3.&#160; 配置Horde</a></p>
  <p><a href="#a.9.4">9.4.&#160; 配置Imp</a></p>
  <p><a href="#a.9.5">9.5.&#160; 配置Turba</a></p>
  <p><a href="#a.9.6">9.6.&#160; 测试IMP</a></p>
  <p><a href="#a.10">10.&#160; 其它</a></p>
  <p><a href="#a.10.1">10.1.&#160; 启动脚本</a></p>
  <p><a href="#a.10.2">10.2.&#160; </a><a href="#a.10.3">整体测试</a></p>
  <hr size="1">
  <p>&#160;</p>
</blockquote>
<h1><a name="a.1" id="a.1"></a>1.&#160; 概述</h1>
<h2><a name="a.1.1"></a>1.1.&#160; 目的</h2>
<p>  本文试图介绍如何在一个Linux平台上安装一套功能完整的邮件系统。这里我们以Postfix做SMTP服务器、Courier-IMAP做
POP3/IMAP4服务器、通过Cyrus-SASL对存储在MySQL数据库中的用户进行验证和授权,并且使用IMP来提供一个完善的WEBMAIL
界面。</p>
<p>  这个邮件系统的设计目标是提供一个可扩充的、具备大多数功能的邮件系统。</p>
<p>  如果希望使用Cyrus-IMAP做为POP3/IMAP4服务器,可以参阅本文的姊妹篇:<a href="javascript:if(confirm('http://www.cngnu.org/technology/Postfix_I.html  \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.  \n\nDo you want to open it from the server?'))window.location='http://www.cngnu.org/technology/Postfix_I.html'" tppabs="http://www.cngnu.org/technology/Postfix_I.html">http://www.cngnu.org/technology/Postfix_I.html</a>。</p>
<p>   本文的最新版本可以在这里找到:<a href="javascript:if(confirm('http://www.cngnu.org/technology/Postfix_II.html  \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.  \n\nDo you want to open it from the server?'))window.location='http://www.cngnu.org/technology/Postfix_II.html'" tppabs="http://www.cngnu.org/technology/Postfix_II.html">http://www.cngnu.org/technology/Postfix_II.html</a></p>
<p>  有关本文所涉及的技术问题,请到<a href="javascript:if(confirm('http://www.anti-spam.org.cn/forums/  \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.  \n\nDo you want to open it from the server?'))window.location='http://www.anti-spam.org.cn/forums/'" tppabs="http://www.anti-spam.org.cn/forums/">http://www.anti-spam.org.cn/forums/</a>的mail版讨论,我会尽快回复的,请勿就技术问题给我发邮件。</p>
<p>  本文的版权遵循GPL,可以在不删除版权信息和注明修改的情况下任意传播。</p>
<h2><a name="a.1.2"></a>1.2.&#160; 更新历史</h2>
<ul>
  <li>2004-01-29 第一次发布,版本0.20。</li>
  <li>2004-02-04 修正了一些笔误。</li>
</ul>
<h2><a name="a.1.3"></a>1.3.&#160; TODO </h2>
<ul>
  <li>增加邮件列表功能</li>
  <li>增加SSL部分的内容</li>
  <li>翻译:希望有能力的朋友可以翻译这篇文章为英文,这样国外的朋友也可以看到</li>
</ul>
<h2><a name="a.1.4"></a>1.4.&#160; 鸣谢</h2>
<p>&#160; </p>
<h1><a name="a.2"></a>2.&#160; 系统功能</h1>
<p>  系统逻辑结构:</p>
<pre><font face="Courier New, Courier, mono" size="2">
+--------------------------------------------------------------+
|                                                              |
|  25/25    25/25                110/993  143/995    80/443    |
| Incoming Outgoing                POP3     IMAP    WEB-MAIL   |
|    /\       /\                    /\       /\        /\      |
|    ||       ||                    ||       ||        ||      |
|    \/       \/                    \/       \/        \/      |
+---------------------------------+----------------+-----------+
|                  Postfix        |                |    IMP    |
|              +------------------+                +-----------+
|              |    Cyrus-SASL    |        Courier-IMAP        |
+----------+   +------------------+--------------+             |
| MailDrop |   |authdaemond.mysql |(authmysqlrc) |             |
+----------+---+------------------+--------------+-------------+
| MailDir/ |                   MySQL             |   MailDir/  |
+----------+-------------------------------------+-------------+</font></pre>
<p>   整个系统对外的界面包括几个部分,用来发信的SMTP、用来收信的POP3和IMAP、以及一个WEB界面的邮件使用系统。这里没有提供WEB界面的管理工具,需要大家自行依据实际需要开发。如果需要商业应用,可以购买CEM产品(<a href="javascript:if(confirm('http://cngnu.net/products/cem/  \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.  \n\nDo you want to open it from the server?'))window.location='http://cngnu.net/products/cem/'" tppabs="http://cngnu.net/products/cem/">http://cngnu.net/products/cem/</a>),其中包括了完善的管理界面和优化的邮件服务器环境。</p>
<p>  MySQL作为系统中存储数据的核心,它存储了用户的信息。这个信息不但用于POP3/IMAP和SMTP AUTH的认证需要,而且也为Postfix提供了本地接收者列表、邮件转发功能和过滤功能开关。</p>
<p>  认证分为两种类型,Postfix中的发信认证是通过SASL对MySQL进行查询进行的;Courier-IMAP的收信认证是通过Courier-IMAP的MySQL支持进行的。</p>
<p>  用户的信件是存储在标准的(Qmail格式)MailDir/中的。Postfix接收到信件后通过MailDrop投递到用户的MailDir/中。Courier-IMAP通过认证后访问MailDir/来读取信件。</p>
<h1><a name="a.3"></a>3.&#160; 系统基本前提</h1>
<p>  本文以Linux系统为目标平台,支持多数的Linux平台如RedHat 7.x/8.x/9.x/AS2.1/AS3、Mandrake 8.x/9.x等,理论上也会支持其他的Linux发行版,甚至其他的UNIX系统。</p>
<p>  这里以RedHat Linux Advance Server Enterprise V 3.0 (以下简称AS3)为说明平台。我采用了最基本的AS3安装,只选择了“Web
  Server”、“Dns Name Server”、“MySQL Database Server”、“Development Tools”和“Kernel
  Development”等软件包组(“Core”和“Base”组是默认必选的软件包)。</p>
<p>  除此外,还需要额外安装以下RPM:</p>
<p>  1、php-mysql-4.3.2-8.ent.i386.rpm(在CD3)</p>
<h1><a name="a.4"></a>4.&#160; 安装MySQL</h1>
<h2><a name="a.4.1" id="a.4.1"></a>4.1.&#160; 下载</h2>
<p>  AS3默认是只包含MySQL除了服务器程序外的部分的,所以需要从RPMFIND下载MySQL的源RPM重建(最好使用源码包,采用MySQL.com提供的RPM和BIN包都可能在其它使用mysql的部分编译时候出现错误)。</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr>
    <td>
      <p>[root@mail root]# <span class="type">cd /usr/src</span></p>
      <p>[root@mail src]# <span class="type">wget <a href="javascript:if(confirm('ftp://rpmfind.net/linux/redhat/enterprise/3/en/os/i386/SRPMS/mysql-3.23.58-1.src.rpm  \n\nThis file was not retrieved by Teleport Pro, because it did not meet the project\'s file type specifications.  \n\nDo you want to open it from the server?'))window.location='ftp://rpmfind.net/linux/redhat/enterprise/3/en/os/i386/SRPMS/mysql-3.23.58-1.src.rpm'" tppabs="ftp://rpmfind.net/linux/redhat/enterprise/3/en/os/i386/SRPMS/mysql-3.23.58-1.src.rpm">ftp://rpmfind.net/linux/redhat/enterprise/3/en/os/i386/SRPMS/mysql-3.23.58-1.src.rpm</a></span></p></td>
  </tr>
</tbody></table>
<h2><a name="a.4.2" id="a.4.2"></a>4.2.&#160; 编译与安装</h2>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr>
    <td>
      <p>[root@mail src]# <span class="type">rpmbuild --rebuild mysql-3.23.58-1.src.rpm </span></p>
      <p>[root@mail src]# <span class="type">cd redhat/RPMS/i386</span></p>
      <p>[root@mail i386]# <span class="type">rpm -ivh mysql-server-3.23.58-1.i386.rpm</span></p></td>
  </tr>
</tbody></table>
<p>  为提高MySQL的安全性,使之只监听在本地打环端口,修改/etc/my.cnf:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr>
    <td>
      <p>[root@mail i386]# <span class="type">cd</span></p>
      <p>[root@mail root]# <span class="type">vi /etc/my.cnf </span></p></td>
  </tr>
</tbody></table>
<p>  在[mysqld]小节里面添加:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr>
    <td bgcolor="#ffffcc">bind-address=127.0.0.1</td>
  </tr>
</tbody></table>
<p>  并设置其开机时候自动运行:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr>
    <td>
      <p>[root@mail root]# <span class="type">chkconfig --level 0123456 mysqld
          on </span></p></td>
  </tr>
</tbody></table>
<p></p>
<h2><a name="a.4.3" id="a.4.3"></a>4.3.&#160; 运行</h2>
<p>  启动命令如下:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr>
    <td>
      <p>[root@mail i386]# <span class="type">/etc/init.d/mysqld start</span></p></td>
  </tr>
</tbody></table>
<h2><a name="a.4.4" id="a.4.4"></a>4.4.&#160; 测试</h2>
<p>  启动MySQL后,首先检查日志/var/log/messages有无错误信息,然后检查进程,应该有如下进程存在:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr>
    <td>
      <p>[root@mail root]# <span class="type">pstree | grep mysqld</span></p>
      <p>&#160;</p>
      <p>|-safe_mysqld---mysqld</p>
      <p>&#160;</p></td>
  </tr>
</tbody></table>
<p>  接着检查端口,应该有如下端口打开:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr>
    <td>
      <p>[root@mail root]#<font color="#ff0000"> </font><span class="type">netstat
          -an | grep LISTEN</span></p>
      <p>&#160;</p>
      <p>tcp  0  0 127.0.0.1:3306  0.0.0.0:*  LISTEN<br>
    </p></td>
  </tr>
</tbody></table>
<p>&#160;</p>
<h2><a name="a.4.1"></a>4.5.&#160; 建立数据库</h2>
<p>  MySQL安装配置好以后,创建如下SQL脚本mail.sql:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr>
    <td bgcolor="#ffffcc">
      <p>CREATE DATABASE mail;</p>
      <p>GRANT ALL ON mail.* TO mail@localhost</p>
      <p>IDENTIFIED BY "secret";</p>
      <p>FLUSH PRIVILEGES;</p>
      <p>&#160;</p>
      <p>USE mail;</p>
      <p>CREATE TABLE USER (<br>
        ID int(10) unsigned NOT NULL auto_increment,<br>
        USERNAME varchar(128) NOT NULL default '',<br>
        PASSWORD varchar(40) NOT NULL default '',<br>
        CLEAR_PASSWORD varchar(40) NOT NULL default '', <br>
        FORWARD varchar(128) NOT NULL default '',<br>
        DOMAIN varchar(64) NOT NULL default '',<br>
        HOMEDIR varchar(128) NOT NULL default '',<br>
        MAILDIR varchar(128) NOT NULL default '', <br>
        MAIL varchar(64) NOT NULL default '', <br>
        GID int(11) NOT NULL default 450,<br> 
        UID int(11) NOT NULL default 450,<br>
        FILTER varchar(64) NOT NULL default 'OK',<br>
        QUOTA int(11) NOT NULL default '10485760',<br>
        STATUS tinyint(4) NOT NULL default '1',<br>
        PRIMARY KEY (ID),<br>
        UNIQUE KEY USERNAME (USERNAME),<br>
        UNIQUE KEY MAIL (MAIL)<br>
        ) TYPE=MyISAM;</p>
      <p>&#160;</p>
      <p>INSERT INTO USER (USERNAME,PASSWORD,CLEAR_PASSWORD,<br>
      FORWARD,DOMAIN,HOMEDIR,MAILDIR,MAIL)</p>
      <p>VALUES ('trueuser','$1$pi.WVgBx$a3dUCzBnbY76jnZlqWQCQ/','testpw',</p>
      <p>'trueuser','cngnu.org','/data/mail/trueuser','/data/mail/trueuser/Maildir',</p>
      <p>'trueuser@cngnu.org'),<br>
        ('virtualuser@cngnu.org','$1$pi.WVgBx$a3dUCzBnbY76jnZlqWQCQ/','testpw',</p>
      <p>'virtualuser@cngnu.org','cngnu.org','/data/mail/cngnu.org/virtualuser',<br>
      '/data/mail/cngnu.org/virtualuser/Maildir','virtualuser@cngnu.org');</p>
      <p></p></td>
  </tr>
</tbody></table>
<p>&#160;</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr>
    <td>
      <p>[root@mail root]# <span class="type">mysql &lt; mail.sql</span></p></td>
  </tr>
</tbody></table>
<p>  在MySQL中创建邮件用户数据库,并添加两个测试邮箱:</p>
<ul>
  <li>非虚拟域邮箱“trueuser”,密码是“testpw”</li>
  <li>虚拟域邮箱“virtualuser@cngnu.org”,密码是“testpw”</li>
</ul>
<p>  上面的mail数据库的USER表用来保存用户信息:</p>
<ul>
  <li>USERNAME是用户名。USERNAME不但作为认证的字段,而且是本地邮箱查找条件(见下面的Postfix的virtual.mysql)。这里采用了加密密码是为了更好的安全性。对于
      <ul>
        <li>非虚拟域邮箱:USERNAME字段是邮件的本地部分(“@”前面的部分)</li>
        <li>虚拟域邮箱:USERNAME字段是邮件地址全称</li>
      </ul>
  </li>

  <li>PASSWORD
字段是邮箱的MD5-Crypt密码,CLEAR_PASSWORD是明文密码。邮箱的密码是“testpw”,加密后的(MD5-CRYPT)密文是
“$1$pi.WVgBx$a3dUCzBnbY76jnZlqWQCQ/”(可以通过系统的passwd命令来添加一个用户,生成密码,然后从
/etc/shadow中复制。)。保存两个密码是由于Cyrus-SASL的mysql认证方式不支持加密的密码,而Courier-IMAP的
mysql认证却使用加密的密码。</li>
  <li>FORWARD字段默认情况下与USERNAME一样,在此情况下,邮件递交到本地邮箱(由
于Postfix区分邮箱的大小写,所以通过这样的一个转发,正好可以消除大小写的区别);如果FORWARD字段是另外一个用户名或者邮件地址,则该邮
件被转发到别的用户或其它邮件地址。</li>
  <li>DOMAIN字段用来快速找出某个域下存在的邮箱,仅为管理方便使用。</li>
  <li>MAILDIR字段用来给MailDrop指出邮件投递那里,HOMEDIR字段是邮件用户的主目录,通常指向一个任意存在的公共位置,不过可以使每个用户都拥有自己的主目录,在其中可以放入maildrop的过滤规则来实现用户级别的过滤。</li>
  <li>MAIL
字段是邮件地址全称。对于非虚拟域邮箱,它包含了本地部分外的域部分;对于虚拟域邮箱,它和USERNAME字段一样。一方面是为了管理方便使用,同时该
字段还用来做maildrop递交和全局过滤控制FILTER的查找条件(见FILTER字段及下面Postfix的filter.mysql)。</li>
  <li>GID字段和UID字段是系统使用的投递用户ID,即MailDrop的运行身份(在Postfix的master.cf指定)。</li>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -