蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 系统管理


    

蓝森林 http://www.lslnet.com 2006年8月19日 12:58

☆ Gentoo Linux 下的 Qmail 安装过程 ☆
 
我用 Gentoo 差不多有一年时间了,使用过后我发现我越来越喜欢它。本来我就一直想用 Linux 配置一个 email 服务,而 gentoo 的安装软件很方便,于是就在网上找了一些安装资料,不知是我的理解能力差还是怎么的,试了 10 多次后还没成功(可怜我的硬盘),近日终以被我“折磨”成功了,现在把安装过程写了下来,希望对想配置 QMail 的朋友有一些帮助。

代码:
-->
☆ Gentoo Linux 下的 Qmail 安装过程 ☆

    在安装之前你还需要安装 apache、mod_php,在这里就不再进行安装的说明。
    以下是我安装时的 USE 参数
        apache USE="threads"
        mod_php USE="-X -qt mysql apache2 tiff gd gd-external imap"
    我的 WWW 目录:/var/www/localhost
    考虑到是做服务器,我的 ACCEPT_KEYWORDS="x86"

一、安装/配置 qmail

  ● 你要确保已经卸载了其他相关邮件服务软件,如:ssmtp, sendmail 或 postfix:
      # emerge -C ssmtp
      # emerge /usr/portage/mail-mta/qmail/qmail-1.03-r13.ebuild

  ● 自定义你的个人信息
      # nano /var/qmail/control/servercert.cnf
      # ebuild /var/db/pkg/mail-mta/qmail-1.03-r13/qmail-1.03-r13.ebuild config

  ● 查看 qmail 的域名信息,确保设置为你所需的域名
      # cat /var/qmail/control/defaultdomain
      # cat /var/qmail/control/locals
      # cat /var/qmail/control/me
      # cat /var/qmail/control/plusdomain
      # cat /var/qmail/control/rcpthosts

  ● 添加启动
      # ln -s /var/qmail/supervise/qmail-send /service/qmail-send
      # ln -s /var/qmail/supervise/qmail-smtpd /service/qmail-smtpd
      # rc-update add svscan default
      # /etc/init.d/svscan start

二、安装/配置 vpopmail

  ● 安装 qmail
      # emerge vpopmail

  ● 在 mysql 里创建 vpopmail 数据表
      # mysql -u root -p<你的mysql密码>
      > create database vpopmail;
      > use mysql;
      > grant select, insert, update, delete, create, drop on vpopmail.* to
        vpopmail@localhost identified by 'vpopmail密码';
      > flush privileges;
      > quit

  ● 修改 /etc/vpopmail.conf
      # nano /etc/vpopmail.conf
        localhost|0|vpopmail|<vpopmail密码>|vpopmail
        localhost|0|vpopmail|<vpopmail密码>|vpopmail

  ● 修改文件权限
      # chown root:vpopmail /etc/vpopmail.conf
      # chmod 640 /etc/vpopmail.conf
      # chown root:vpopmail /var/vpopmail/bin/vchkpw
      # chmod 4711 /var/vpopmail/bin/vchkpw

  ● 使用 smtp 验证,修改 conf-smtpd 文件
      # nano /var/qmail/control/conf-smtpd
        TCPSERVER_OPTS="${TCPSERVER_OPTS} -R"
        QMAIL_SMTP_AUTHHOST=$(<${QMAIL_CONTROLDIR}/me)
        QMAIL_SMTP_CHECKPASSWORD="/var/vpopmail/bin/vchkpw"
        QMAIL_SMTP_POST="<你的域名> /var/vpopmail/bin/vchkpw /bin/true"

三、安装/配置 courier-imap

  ● 安装 courier-imap
      # emerge courier-imap

  ● 配置 courier-imap
      # nano /etc/courier-imap/authdaemonrc
        authmodulelist="authvchkpw"    <-- 确保这一句只包含 authvchkpw

      # nano /etc/courier-imap/imapd
        IMAPDSTART=YES                  <-- 修改为 YES
        AUTHMODULES="authvchkpw"        <-- 确保这一句只包含 authvchkpw

      # nano /etc/courier-imap/pop3d
        POP3DSTART=YES                  <-- 修改为 YES
        AUTHMODULES="authvchkpw"        <-- 确保这一句只包含 authvchkpw

      # nano /etc/courier-imap/pop3d.cnf
        (编辑 [ req_dn ] 段落)          <-- 可以不修改
      # mkpop3dcert

      # nano /etc/courier-imap/imapd.cnf
        (编辑 [ req_dn ] 段落)          <-- 可以不修改
      # mkimapdcert

  ● 添加启动
      # rc-update add courier-imapd default
      # rc-update add courier-imapd-ssl default
      # rc-update add courier-pop3d default
      # rc-update add courier-pop3d-ssl default
      # /etc/init.d/courier-imapd start
      # /etc/init.d/courier-imapd-ssl start
      # /etc/init.d/courier-pop3d start
      # /etc/init.d/courier-pop3d-ssl start

三、安装/配置 qmailadmin

  ● 安装 qmailadmin
      # emerge ezmlm-idx-mysql
      # emerge /usr/portage/net-mail/autorespond/autorespond-2.0.4.ebuild
      # emerge /usr/portage/net-mail/qmailadmin/qmailadmin-1.2.1.ebuild

  ● 设置 qmailadmin
      # cd /var/www/localhost/htdocs
      # mv qmailadmin ../.

四、安装/配置 igenus

  ● 请到 http://www.igenus.org/ 下载最新的 igenus
      # cd /tmp/igenus
      # chmod -R 755 /tmp/igenus
      # chown -R vpopmail:vpopmail /tmp/igenus
      # cd /var/www/localhost/
      # tar -zxvf igenus-2.0.2.tar.gz
      # chown -R vpopmail:vpopmail igenus
      # cd igenus
      # nano config/config_inc.php
        修改如下内容
        $CFG_BASEPATH = "/var/www/localhost/igenus";
        $CFG_MYSQL_HOST = 'localhost';
        $CFG_MYSQL_USER        = 'vpopmail';
        $CFG_MYSQL_PASS = '<vpopmail 密码>';
        $CFG_MYSQL_DB        = 'vpopmail';
        $CFG_TEMP = "/tmp/igenus";
        $CFG_AUTORESPOND_PROM = "/var/qmail/bin/autorespond";
        $CFG_NETDISK_PATH = "/var/netdisk";
        $CFG_NETDISK_DEFAULT_QUOTA = 100;
      创建网络磁盘
      # cd /var
      # mkdir netdisk
      # chmod -R 755 netdisk
      # chown -R vpopmail:vpopmail netdisk
      导入 igenus 包中自带的 sql 文件
      # mysql -u root -p vpopmail < /var/www/localhost/igenus/docs/iGENUS.sql

五、其他一些设置

  ● 修改 /etc/php/apache2-php4/php.ini 以下内容:
      max_execution_time=60
      memory_limit=20M
      post_max_size=10M
      file_uploads=on
      upload_max_filesize=10M
      register_globals=On
      session.bug_compat_42=0
      session.bug_compat_warn=0
      sendmail_path = /var/qmail/bin/qmail-inject

  ● 修改 /etc/apache2/conf/commonapache2.conf
      User vpopmail
      Group vpopmail

  ● 建立虚拟登录域
      # vadddomain <你的域名>
      Please enter password for postmaster:<输入 postmaster 密码>
      enter password again:<再次输入密码>

  ● 登陆 qmailadmin 建立用户
      打开浏览器,键入地址: http://<你的域名>/cgi-bin/qmailadmin
      以 postmaster 登陆,密码为上面设置的密码。

  ● vpopmail 用的是 .maildir 格式的邮箱,而 igenus 用的是 Maildir 格式的邮箱
      # cd /var/vpopmail/domains/<你的域名>/<你的用户名>
      # ln -s .maildir Maildir
      # chown vpopmail:vpopmail Maildir

六、一些很实用的废话

  ● 如果你使用 foxmail 一类的软件,记住在你的 pop3 帐号后面一定要加 @<你的域名> 要不然会说登录错误。如:test@default.3322.org
-->

这是我建的 http://default.3322.org/igenus/
用户名:demo
密 码:demo

引用:
--> 修改 /etc/vpopmail.conf
# nano /etc/vpopmail.conf
localhost|0|vpopmail|<vpopmail密码>|vpopmail
localhost|0|vpopmail|<vpopmail密码>|vpopmail -->

不知怎么修改?
我的/etc/vpopmail.conf

引用:
--> MYSQL_UPDATE_SERVER localhost
MYSQL_UPDATE_USER vpopmail
MYSQL_UPDATE_PASSWD secret

MYSQL_READ_SERVER localhost
MYSQL_READ_USER vpopmail
MYSQL_READ_PASSWD secret -->

小鸭兄,还不鼓励一下,加精。

你的 vpopmail 是什么版本的呀?我的是 vpopmail 5.4.6-r1 的,不过从字面上理解应该是
MYSQL_UPDATE_SERVER localhost
MYSQL_UPDATE_USER vpopmail
MYSQL_UPDATE_PASSWD secret <-- 你的vpopmail密码

MYSQL_READ_SERVER localhost
MYSQL_READ_USER vpopmail
MYSQL_READ_PASSWD secret <-- 你的vpopmail密码

这是我的/etc/vpopmail.conf
# MYSQL CONNECTION SETTINGS FOR VPOPMAIL
#
# Line 1 defines the connection to use for database reads,
# Line 2 defines the connection to use for database updates/writes.
#
# If you omit line 2, then the same settings will be
# used for both read and write.
#
# settings for each line:
# host|port|user|password|database
#
#
# Note:
# The value of host may be either a hostname or an IP address.
# If host is 'localhost', then sockets (Unix) or named pipes (Windows)
# will be used instead of TCP/IP to connect to the server.
# Read-only DB
localhost|0|vpopmail|secret|vpopmail
# Write DB
localhost|0|vpopmail|secret|vpopmail

更证:igenus 的设置 $CFG_TEMP = "/tmp/igenus";

thanks!

我是用Gentoo的hostname.dnsdomainname当域名,按照上面的步骤,到了“建立虚拟登陆域”的时候就出现问题了,
# vadddomain Gentoo.Gentoo2004
Please enter password for postmaster:
enter password again:
vmysql: sql error[c]: MySQL server has gone away
vmysql: sql error[b]: MySQL server has gone away
vmysql: sql error[3]: MySQL server has gone away
could not create limits table CREATE TABLE limits ( domain CHAR(64) PRIMARY KEY, maxpopaccounts INT(10) NOT NULL DEFAULT -1, maxaliases INT(10) NOT NULL DEFAULT -1, maxforwards INT(10) NOT NULL DEFAULT -1, maxautoresponders INT(10) NOT NULL DEFAULT -1, maxmailinglists INT(10) NOT NULL DEFAULT -1, diskquota INT(12) NOT NULL DEFAULT 0, maxmsgcount INT(12) NOT NULL DEFAULT 0, defaultquota INT(12) NOT NULL DEFAULT 0, defaultmaxmsgcount INT(12) NOT NULL DEFAULT 0, disable_pop TINYINT(1) NOT NULL DEFAULT 0, disable_imap TINYINT(1) NOT NULL DEFAULT 0, disable_dialup TINYINT(1) NOT NULL DEFAULT 0, disable_passwordchanging TINYINT(1) NOT NULL DEFAULT 0, disable_webmail TINYINT(1) NOT NULL DEFAULT 0, disable_relay TINYINT(1) NOT NULL DEFAULT 0, disable_smtp TINYINT(1) NOT NULL DEFAULT 0, perm_account TINYINT(2) NOT NULL DEFAULT 0, perm_alias TINYINT(2) NOT NULL DEFAULT 0, perm_forward TINYINT(2) NOT NULL DEFAULT 0, perm_autoresponder TINYINT(2) NOT NULL DEFAULT 0, perm_maillist TINYINT(4) NOT NULL DEFAULT 0, perm_quota TINYINT(2) NOT NULL DEFAULT 0, perm_defaultquota TINYINT(2) NOT NULL DEFAULT 0 )
vmysql: sql error[p]: MySQL server has gone away
Error: (vadduser) can't read domain limits

用下一步的地址,无法登陆,显示 invalid login.哪里有问题?如何做?

从错误的提示信息看,你应该是没有设置正确 /etc/vpopmail.conf ,能否把你的 vpopmail 版本说明一下。

题外话:
Gentoo.Gentoo2004 ? 有这样的域名吗?
如果你用的是 ADSL 上网,可以在 http://www.3322.org 里申请一个动态域名。

gentoo是我的hostname,gentoo2004是dnshostname,是安装gentoo时设置的那个hostname,dnsdomainname。
从浏览器访问http://gentoo.gentoo2004/cgi-bin/qmailadmin显示
qmailadmin 1.2.1
vpopmail 5.4.0

嗯,不错,我来加精

把你的 vpopmail 升到 5.4.6-r1 试试。升了 vpopmail 后你可能还需要执行一下 etc-update 把 vpopmail 的配置文件升级一下,然后重新配置 vpopmail

还有你是自己做 DNS 吗?你的域名我 ping 不通。

我是用 ADSL 上网,在 http://www.3322.org 上申请了一个 default.3322.org 的域名

请参考我的如下设置

# cat /etc/hostname
default

# cat /etc/dnsdomainname
# cat /etc/nisdomainname
# cat /var/qmail/control/defaultdomain
# cat /var/qmail/control/locals
# cat /var/qmail/control/me
# cat /var/qmail/control/plusdomain
# cat /var/qmail/control/rcpthosts
以上所有都为 default.3322.org

引用:
--> 最初由 nothing9 发表
[b]我是用Gentoo的hostname.dnsdomainname当域名,按照上面的步骤,到了“建立虚拟登陆域”的时候就出现问题了,
# vadddomain Gentoo.Gentoo2004
Please enter password for postmaster:
enter password again:
vmysql: sql error[c]: MySQL server has gone away
vmysql: sql error: MySQL server has gone away
vmysql: sql error[3]: MySQL server has gone away
could not create limits table CREATE TABLE limits ( domain CHAR(64) PRIMARY KEY, maxpopaccounts INT(10) NOT NULL DEFAULT -1, maxaliases INT(10) NOT NULL DEFAULT -1, maxforwards INT(10) NOT NULL DEFAULT -1, maxautoresponders INT(10) NOT NULL DEFAULT -1, maxmailinglists INT(10) NOT NULL DEFAULT -1, diskquota INT(12) NOT NULL DEFAULT 0, maxmsgcount INT(12) NOT NULL DEFAULT 0, defaultquota INT(12) NOT NULL DEFAULT 0, defaultmaxmsgcount INT(12) NOT NULL DEFAULT 0, disable_pop TINYINT(1) NOT NULL DEFAULT 0, disable_imap TINYINT(1) NOT NULL DEFAULT 0, disable_dialup TINYINT(1) NOT NULL DEFAULT 0, disable_passwordchanging TINYINT(1) NOT NULL DEFAULT 0, disable_webmail TINYINT(1) NOT NULL DEFAULT 0, disable_relay TINYINT(1) NOT NULL DEFAULT 0, disable_smtp TINYINT(1) NOT NULL DEFAULT 0, perm_account TINYINT(2) NOT NULL DEFAULT 0, perm_alias TINYINT(2) NOT NULL DEFAULT 0, perm_forward TINYINT(2) NOT NULL DEFAULT 0, perm_autoresponder TINYINT(2) NOT NULL DEFAULT 0, perm_maillist TINYINT(4) NOT NULL DEFAULT 0, perm_quota TINYINT(2) NOT NULL DEFAULT 0, perm_defaultquota TINYINT(2) NOT NULL DEFAULT 0 )
vmysql: sql error[p]: MySQL server has gone away
Error: (vadduser) can't read domain limits

用下一步的地址,无法登陆,显示 invalid login.哪里有问题?如何做?
-->

这个应该是域名和IP没有对应的关系。QMAIL对IP和域名的对应要求严格。

to blackwhite
我不是说他的域名有问题,我只是对他的域名感到奇怪.
________________
把你的 vpopmail 升到 5.4.6-r1 试试。………………

引用:
--> 最初由 cnyg 发表
to blackwhite
我不是说他的域名有问题,我只是对他的域名感到奇怪.
________________
把你的 vpopmail 升到 5.4.6-r1 试试。………………
-->

应该是他的域名和IP的关系没有处理好。他的域名是有问题的,名字好怪异。


[ 关闭窗口 ]


Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com