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

📄 1417.html

📁 著名的linux英雄站点的文档打包
💻 HTML
📖 第 1 页 / 共 5 页
字号:
      <p>IDENTIFIED BY "secret";</p>
      <p>FLUSH PRIVILEGES;</p>
      <p>&nbsp;</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>
  FORWARD varchar(128) NOT NULL default '',<br>
  DOMAIN varchar(64) NOT NULL default '',<br>
  MAIL varchar(64) NOT NULL default '', <br>
        FILTER varchar(64) NOT NULL default 'OK',<br>
        PARTITION varchar(32) NOT NULL default 'default',<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>&nbsp;</p>
      <p>INSERT INTO USER (USERNAME,PASSWORD,FORWARD,DOMAIN,MAIL)</p>
      <p>VALUES ('trueuser','$1$pi.WVgBx$a3dUCzBnbY76jnZlqWQCQ/',</p>
      <p>'trueuser','cngnu.org','trueuser@cngnu.org'),<br>
        ('virtualuser@cngnu.org','$1$pi.WVgBx$a3dUCzBnbY76jnZlqWQCQ/',</p>
      <p>'virtualuser~cngnu.org','cngnu.org','virtualuser@cngnu.org');</p>
      <p></p></td>
  </tr>
</tbody></table>
<p>&nbsp;</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和PASSWORD字段就是用户名和MD5-Crypt密码。USERNAME不但作为认证的字段,而且是本地邮箱查找条件(见下面的Postfix的virtual.mysql)。这里采用了加密密码是为了更好的安全性。对于
    <ul>
      <li>非虚拟域邮箱:USERNAME字段是邮件的本地部分(“@”前面的部分)</li>
      <li>虚拟域邮箱:USERNAME字段是邮件地址全称</li>
    </ul>
邮箱的密码是“testpw”,加密后的(MD5-CRYPT)密文是“$1$pi.WVgBx$a3dUCzBnbY76jnZlqWQCQ/”(可以通过系统的passwd命令来添加一个用户,生成密码,然后从/etc/shadow中复制。)
  </li>
  <li>FORWARD字段默认是指向用户的“存储邮箱”名的(Cyrus-IMAP所管理的邮箱名称),即进行本地投递;如果FORWARD字段是另外一个用户名或者邮件地址,则该邮件被转发到别的用户或其它邮件地址。对于
    <ul>
    <li>非虚拟域邮箱:其存储邮箱与用户名相同</li>
    <li>虚
拟域邮箱:为了支持多个域,考虑到不同的域可能拥有相同的用户名(本地部分),所以使用邮件全称作为用户的登录名(POP/IMAP的登录名和SMTP认
证的登录名),但是由于Cyrus-IMAP不直接支持虚拟域(虽然可以创建带“@”的邮箱,在Cyrus-IMAP的2.2.x版本支持虚拟域,但是目
前该版本还是测试版),不能在邮件的本地部分包含“@”,所以实际的存储邮箱名把“@”替换为“~”。(参见下面Cyrus-IMAP部分描述)</li>
  </ul>
此外,由于Postfix令人吃惊的区分邮箱的大小写,所以通过这样的一个转发,正好可以消除大小写的区别。
</li>

  <li>DOMAIN字段用来快速找出某个域下存在的邮箱,仅为管理方便使用。</li>
  <li>MAIL字段是邮件地址
全称。对于非虚拟域邮箱,它包含了本地部分外的域部分;对于虚拟域邮箱,它和USERNAME字段一样。一方面是为了管理方便使用,同时该字段还用来做全
局过滤控制FILTER的查找条件(见FILTER字段及下面Postfix的filter.mysql)。</li>
  <li>FILTER字段用于控制该邮箱是否接受服务器的全局邮件过滤。该值设置为“OK”或为空表示对该邮箱不进行过滤;设置为“DUNNO”表示对该邮箱进行Postfix中定于的全局过滤。该值可以是任何合法的Postfix的access过滤规则。</li>
  <li>PARTITION字段用于指明邮箱存储的Cyrus-IMAP邮件分区。可以建立多个不同的邮件分区。仅为了管理方便使用。</li>
  <li>QUOTA字段指定邮箱的磁盘限额。仅为了管理方便使用。</li>
  <li>STATUS字段用来指示该用户是否有效,可以通过修改该值为0来临时禁止某个用户。</li>
</ul>
<h1><a name="a.5"></a>5.&nbsp; 安装pam_mysql</h1>
<h2><a name="a.5.1"></a>5.1.&nbsp; 下载</h2>
<p>  <a href="javascript:if(confirm('http://sourceforge.net/projects/pam-mysql/  \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://sourceforge.net/projects/pam-mysql/'" tppabs="http://sourceforge.net/projects/pam-mysql/">http://sourceforge.net/projects/pam-mysql/</a></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('http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.4.7.tar.gz  \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://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.4.7.tar.gz'" tppabs="http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.4.7.tar.gz">http://telia.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.5.tar.gz</a></span></p>
    </td>
  </tr>
</tbody></table>
<p>  注:如果不能访问该网站取得pam_mysql,请自行使用代理服务器访问。</p>
<h2><a name="a.5.2"></a>5.2.&nbsp; 编译与安装</h2>
<p>  编译pam_mysql:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr> 
    <td> <p>[root@mail src]# <span class="type">tar -zxf pam_mysql-0.5.tar.gz</span></p>
      <p>[root@mail src]# <span class="type">cd pam_mysql</span></p>
    </td>
  </tr>
</tbody></table>
<p>  修改pam_mysql.c的源代码,去掉调试消息:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr> 
    <td> <p>[root@mail pam_mysql]# <span class="type">vi +54 pam_mysql.c</span></p>
    </td>
  </tr>
</tbody></table>
<p>  将如下一行:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr> 
    <td bgcolor="#ffffcc">#define DEBUG</td>
  </tr>
</tbody></table>
<p>  修改为:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr> 
    <td bgcolor="#ffffcc">/* #define DEBUG */</td>
  </tr>
</tbody></table>
<p>  然后编译:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr> 
    <td> <p>[root@mail pam_mysql]# <span class="type">make</span></p>
      <p>[root@mail pam_mysql]# <span class="type">cp pam_mysql.so /lib/security</span></p></td>
  </tr>
</tbody></table>
<p>&nbsp;</p>
<p>  有些情况下,这个编译会报错,但是如果编译能生成pam_mysql.so模块,还是可以用的。</p>
<h2><a name="a.5.3"></a>5.3.&nbsp; 配置</h2>
<p>  创建/etc/pam.d/mail,它用来支持Cyrus-IMAP的imap认证、pop认证和Postfix的smtp认证:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr> 
    <td> <p>[root@mail pam_mysql]# <span class="type">cd /etc/pam.d</span></p>
      <p>[root@mail pam.d]# <span class="type">echo auth sufficient pam_mysql.so 
        user=mail passwd=secret \</span></p>
      <p>&gt; <span class="type">host=localhost db=mail table=USER usercolumn=USERNAME 
        passwdcolumn=PASSWORD \</span></p>
      <p>&gt; <span class="type">crypt=1 sqllog=0 &gt; /etc/pam.d/mail</span></p>
      <p>[root@mail pam.d]# <span class="type">echo account required pam_mysql.so 
        user=mail passwd=secret \</span></p>
      <p>&gt; <span class="type">host=localhost db=mail table=USER usercolumn=USERNAME 
        passwdcolumn=PASSWORD \</span></p>
      <p>&gt;<span class="type"> crypt=1 sqllog=0 &gt;&gt; /etc/pam.d/mail</span></p>
      <p>[root@mail pam.d]# <span class="type">echo auth sufficient pam_unix_auth.so 
        &gt;&gt; /etc/pam.d/mail</span></p>
      <p>[root@mail pam.d]# <span class="type">echo account sufficient pam_unix_acct.so 
        &gt;&gt; /etc/pam.d/mail</span></p>
    </td>
  </tr>
</tbody></table>
<p>  这里前面两行是指通过mysql数据库来认证用户,后面两行指是通过UNIX的基本方式认证用户(即系统用户)。这里我们之所以保留UNIX系
统认证模式,是因为我们下面要通过系统用户cyrus来管理cyrus-imap邮箱。不过你也可以选择将这个管理帐号cyrus放入mysql认证数据
库里面,只需要你在上面的数据库里面添加一个cyrus用户。</p>
<p>  通过给上面的crypt赋予不同的值可以使用多种密码存储方式:</p>
<ul>
  <li>crypt=0:表示使用明文来存储密码。这样存储的好处是简单,但是不够安全。</li>
  <li>crypt=1:表
示使用UNIX系统的DES加密密码方式来存储。即通常的UNIX的/etc/passwd(老式系统加密口令存储在这里)或/etc/shadow(较
为新的系统加密口令存放在这里)中存储的加密口令。加密口令有两种,一种是普通的des加密的,也叫crypt(),这种密码是13位长,前面两个字符是
加密种子;还有一种是使用了MD5算法增强了的,也叫MD5 crypt(),这种密码的加密种子是以$1$开头的12个字符,密码长度不定。</li>
  <li>crypt=2:表示使用mysql的SQL函数password()加密方式来存储。</li>
  <li>crypt=3:表示使用md5的散列方式来存储。这种方式和MD5 crypt()是不一样的。</li>
</ul>
<p>  一般如果从系统用户迁移到使用数据库的虚拟用户时,可以使用crypt=1方式,系统会自动辨别两种加密口令。如果需要开发用户修改口令的功能时,C和Perl里面的crypt函数不能支持MD5 
  crypt()口令,需要使用额外的编程或模块来支持。</p>
<p>  做个符号链接/etc/pam.d/imap,它用来支持Cyrus-IMAP的imap认证:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr> 
    <td> <p>[root@mail pam.d]# <span class="type">[ -f imap ] &amp;&amp; mv imap 
        imap.orig </span></p>
      <p></p>
      <p>[root@mail pam.d]# <span class="type">ln -s mail imap</span></p></td>
  </tr>
</tbody></table>
<p></p>
<p>  同样创建/etc/pam.d/pop&nbsp;,它用来支持Cyrus-IMAP的pop3认证:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr> 
    <td> <p>[root@mail pam.d]# <span class="type">[ -f pop ] &amp;&amp; mv pop 
        pop.orig</span></p>
      <p></p>
      <p>[root@mail pam.d]# <span class="type">ln -s mail pop</span></p>
    </td>
  </tr>
</tbody></table>
<p>  同样创建/etc/pam.d/smtp&nbsp;,它用来支持Postfix的smtp auth认证:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr> 
    <td> <p>[root@mail pam.d]# <span class="type">[ -f smtp ] &amp;&amp; mv smtp 
        smtp.orig</span></p>
      <p>[root@mail pam.d]# <span class="type">ln -s mail smtp</span></p>
    </td>
  </tr>
</tbody></table>
<p>  系统上可能已经存在了这些文件,将原来的改名备份或删除即可。</p>
<h1><a name="a.6"></a>6.&nbsp; 配置Cyrus-SASL</h1>
<h2><a name="a.6.1"></a>6.1.&nbsp; 配置</h2>
<p>  AS3默认安装的Cyrus-SASL可以满足这套邮件系统的需要,一般不必重新编译。</p>
<p>  设置Postfix使用SASL的saslauthd认证守护进程来支持smtp
    auth认证,并只打开了plain和login认证模块:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr> 
    <td> <p>[root@mail pam.d]#<span class="type"> cd </span></p>
      <p>[root@mail root]# <span class="type">echo pwcheck_method: 
    saslauthd &gt; /usr/lib/sasl2/smtpd.conf</span></p>      <p>[root@mail root]# <span class="type">echo mech_list: plain login &gt;&gt; /usr/lib/sasl2/smtpd.conf</span></p></td>
  </tr>
</tbody></table>
<p>&nbsp;  Cyrus-IMAP的SASL配置不使用标准的sasl语法,它的配置文件放在/etc/imapd.conf中,详细配置在Cyrus-IMAP部分说明。</p>
<p>  配置saslauthd使用PAM认证方案:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr>
    <td>
      <p>[root@mail root]# <span class="type">vi /etc/sysconfig/saslauthd</span></p>    </td>
  </tr>
</tbody></table>
<p>&nbsp;  内容如下:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr>
    <td bgcolor="#ffffcc">MECH=pam</td>
  </tr>
</tbody></table>
<p>  修改/etc/sysconfig/saslauthd并将saslauthd设置为自动运行</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr>
    <td>
      <p>[root@mail root]# <span class="type">chkconfig --level 0123456 saslauthd
    on </span></p></td>
  </tr>
</tbody></table>
<h2><a name="a.6.2" id="a.6.2"></a>6.2.&nbsp; 运行</h2>
<p>  运行saslauthd守护进程,并使其使用pam认证模式来提供认证信息:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
  <tbody><tr> 
    <td> <p>[root@mail root]# <span class="type">/etc/rc.d/init.d/saslauthd
    start</span></p></td>
  </tr>
</tbody></table>
<p>  整个系统使用的认证机制比较复杂。所有的应用(SMTP、IMAP、POP3等)都采用SASL2的saslauthd来认证;而
saslauthd是通过它所支持的PAM模式来借助pam_mysql接口对存储在MySQL数据库中用户信息进行认证的。请参阅上面的系统结构以了解
认证流程。</p>
<p>&nbsp;</p>

⌨️ 快捷键说明

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