登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

梦想之鹰的天空

天高任鸟飞......放飞....心情..........放飞.....梦想

 
 
 

日志

 
 

qmail + webmail on Linux9 安装全过程   

2008-05-09 11:35:07|  分类: Linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

qmail installation guide

author: lupeng lockbox@163.com

version: v1.1 2004-6-27

qmail is an excellent MTA(Mail Transport Agent) written by Dan Bernstein.

Why qmail:

* Security. qmail is secure.

* Speed. qmail is capable of handing millions of deliveries per day on a moderate system.

* Reliability. qmail writes mail to disk before it announces success.

* Extremely easy virtual domain administration.

* User-controlled mailing lists using ezmlm.

* Intuitive, straightforward, and simple administration.

Requirements:

* You must be running UNIX or a UNIX-like operating system.

* You must have a working DNS, and your system must have a DNS name.

* You must have a working C compiler.

Install file list:

* netqmail-1.05.tar.gz

* ucspi-tcp-0.88.tar.gz

* daemontools-0.76.tar.gz

* vpopmail-5.4.0.tar.gz

* mysql-standard-4.0.20-pc-linux-i686.tar.gz

* apache_1.3.31.tar.gz

* php-4.3.7.tar.gz

* autorespond-2.0.4.tar.gz

* ezmlm-0.53.tar.gz

* ezmlm-idx-0.40.tar.gz

* qmailadmin-1.2.0.tar.gz

* sqwebmail-3.5.3.tar.gz

Patches:

* ezmlm-idx-0.53.400.unified_41.patch

Scripts:

* qmailctl

* inst_check

* qmailadmin_zh

* zh-cn/*

* images/webmail/*

Preparation:

Login the system as root.

mkdir -p /usr/local/src

mkdir -p /package

Move the files of installation, patches and scripts except daemontools-0.76.tar.gz to /usr/local/src

Move daemontools-0.76.tar.gz to /package

chmod 1755 /package

Start installation:

cd /usr/local/src

tar -xvzf netqmail-1.05.tar.gz

cd netqmail-1.05

./collate.sh # important sentence!!!

cd ..

tar -xvzf ucspi-tcp-0.88.tar.gz

rm *.tar # optional, unless space is very tight

cd /package

tar -xvzf daemontools-0.76.tar.gz

rm *.tar # optional, again

################################

# Install qmail

################################

mkdir /var/qmail

mkdir /etc/qmail

ln -s /etc/qmail /var/qmail/control

# Create users and groups

userdel alias

userdel qmaild

userdel qmaill

userdel qmailp

userdel qmailq

userdel qmailr

userdel qmails

groupdel nofiles

groupdel qmail

groupadd nofiles

useradd -g nofiles -d /var/qmail/alias alias

useradd -g nofiles -d /var/qmail qmaild

useradd -g nofiles -d /var/qmail qmaill

useradd -g nofiles -d /var/qmail qmailp

groupadd qmail

useradd -g qmail -d /var/qmail qmailq

useradd -g qmail -d /var/qmail qmailr

useradd -g qmail -d /var/qmail qmails

cd /usr/local/src/netqmail-1.05/netqmail-1.05

make setup check

# If your DNS is configured properly, this script should be all you need at this point:

./config

# Or you can configure your domain.

./config-fast mail.myqmail.com

################################

# Install ucspi-tcp

################################

cd /usr/local/src/ucspi-tcp-0.88

patch < /usr/local/src/netqmail-1.05/other-patches/ucspi-tcp-0.88.errno.patch

make

make setup check

################################

# Install daemontools

################################

cd /package

tar -xvzf daemontools-0.76.tar.gz

cd /package/admin/daemontools-0.76/src

patch < /usr/local/src/netqmail-1.05/other-patches/daemontools-0.76.errno.patch

cd ..

package/install

# Start qmail script

vi /var/qmail/rc

######## Write the following section to file:/var/qmail/rc ########

#!/bin/sh

# Using stdout for logging

# Using control/defaultdelivery from qmail-local to deliver messages by default

exec env - PATH="/var/qmail/bin:$PATH" \

qmail-start "`cat /var/qmail/control/defaultdelivery`"

######## End ########

chmod 755 /var/qmail/rc

mkdir /var/log/qmail

echo ./Maildir/ >/var/qmail/control/defaultdelivery

mv /usr/local/src/qmailctl /var/qmail/bin/

chmod 755 /var/qmail/bin/qmailctl

ln -s /var/qmail/bin/qmailctl /usr/bin

# Create the supervise

mkdir -p /var/qmail/supervise/qmail-send/log

mkdir -p /var/qmail/supervise/qmail-smtpd/log

vi /var/qmail/supervise/qmail-send/run

######## Write the following section to file:/var/qmail/supervise/qmail-send/run ########

#!/bin/sh

exec /var/qmail/rc

######## End ########

vi /var/qmail/supervise/qmail-send/log/run

######## Write the following section to file:/var/qmail/supervise/qmail-send/log/run ########

#!/bin/sh

exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail

######## End ########

vi /var/qmail/supervise/qmail-smtpd/run

######## Write the following section to file:/var/qmail/supervise/qmail-smtpd/run ########

#!/bin/sh

QMAILDUID=`id -u qmaild`

NOFILESGID=`id -g qmaild`

MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`

LOCAL=`head -1 /var/qmail/control/me`

if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then

echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in

echo /var/qmail/supervise/qmail-smtpd/run

exit 1

fi

if [ ! -f /var/qmail/control/rcpthosts ]; then

echo "No /var/qmail/control/rcpthosts!"

echo "Refusing to start SMTP listener because it'll create an open relay"

exit 1

fi

exec /usr/local/bin/softlimit -m 2000000 \

/usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \

-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

######## End ########

echo 20 > /var/qmail/control/concurrencyincoming

chmod 644 /var/qmail/control/concurrencyincoming

vi /var/qmail/supervise/qmail-smtpd/log/run

######## Write the following section to file:/var/qmail/supervise/qmail-smtpd/log/run ########

#!/bin/sh

exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd

######## End ########

chmod +t /var/qmail/supervise/qmail-send

chmod +t /var/qmail/supervise/qmail-smtpd

chmod 755 /var/qmail/supervise/qmail-send/run

chmod 755 /var/qmail/supervise/qmail-send/log/run

chmod 755 /var/qmail/supervise/qmail-smtpd/run

chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

mkdir -p /var/log/qmail/smtpd

chown qmaill /var/log/qmail /var/log/qmail/smtpd

ln -s /var/qmail/supervise/* /service/

# Allow the local host to inject mail via SMTP:

echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp

qmailctl cdb

# Stop and disable the installed MTA:

/etc/init.d/sendmail stop

/sbin/init.d/sendmail stop

/etc/rc.d/init.d/sendmail stop

# Uninstall the sendmail:

rpm -e --nodeps sendmail

# Verify that nothing is listening to the SMTP port (25):

netstat -a | grep smtp

# If something is running, make sure it's not qmail by doing:

qmailctl stop

# The repeat the netstat check:

netstat -a | grep smtp

# Replace any existing /usr/lib/sendmail with the qmail version:

mv /usr/lib/sendmail /usr/lib/sendmail.old # ignore errors

mv /usr/sbin/sendmail /usr/sbin/sendmail.old # ignore errors

chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old # ignore errors

ln -s /var/qmail/bin/sendmail /usr/lib

ln -s /var/qmail/bin/sendmail /usr/sbin

# Create these aliases "stone":

echo stone > /var/qmail/alias/.qmail-root

echo stone > /var/qmail/alias/.qmail-postmaster

ln -s .qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon

chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster

# Start qmail service:

qmailctl start

# Now qmail should now be running. You can run "qmailctl stat" to verify that the services are up and running:

# qmailctl stat

# And run "qmailctl cdb" to reload the /etc/tcp.smtp

# qmailctl cdb

mkdir /var/qmail/supervise/qmail-pop3d

vi /var/qmail/supervise/qmail-pop3d/run

######## Write the following section to file:/var/qmail/supervise/qmail-pop3d/run ########

#!/bin/sh

exec /usr/local/bin/softlimit -m 3000000 \

/usr/local/bin/tcpserver -v -R -H -l 0 0 110 /var/qmail/bin/qmail-popup \

mail.myqmail.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1

######## End ########

mkdir /var/qmail/supervise/qmail-pop3d/log

vi /var/qmail/supervise/qmail-pop3d/log/run

######## Write the following section to file:/var/qmail/supervise/qmail-pop3d/log/run ########

#!/bin/sh

exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t \

/var/log/qmail/pop3d

######## End ########

mkdir /var/log/qmail/pop3d

chown qmaill /var/log/qmail/pop3d

chmod 755 /var/qmail/supervise/qmail-pop3d/run

chmod 755 /var/qmail/supervise/qmail-pop3d/log/run

ln -s /var/qmail/supervise/qmail-pop3d /service

vi /var/qmail/bin/qmailctl

######## Add the following section to "start" part of the file:/var/qmail/bin/qmailctl ########

if svok /service/qmail-pop3d ; then

svc -u /service/qmail-pop3d /service/qmail-pop3d/log

else

echo qmail-pop3d supervise not running

fi

######## End ########

######## Add the following section to "stop" part of the file:/var/qmail/bin/qmailctl ########

echo " qmail-pop3d"

svc -d /service/qmail-pop3d /service/qmail-pop3d/log

######## End ########

######## Add the following section to "stat" part of the file:/var/qmail/bin/qmailctl ########

svstat /service/qmail-pop3d

svstat /service/qmail-pop3d/log

######## End ########

######## Add the following section to "pause" part of the file:/var/qmail/bin/qmailctl ########

echo "Pausing qmail-pop3d"

svc -p /service/qmail-pop3d

######## End ########

######## Add the following section to "cont" part of the file:/var/qmail/bin/qmailctl ########

echo "Continuing qmail-pop3d"

svc -c /service/qmail-pop3d

######## End ########

######## Add the following section to "restart" part of the file:/var/qmail/bin/qmailctl ########

echo "* Restarting qmail-pop3d."

svc -t /service/qmail-pop3d /service/qmail-pop3d/log

######## End ########

# Test the Installation:

cd /usr/local/src

sh inst_check

# When everything looks right, inst_check will report:

# Congratulations, your LWQ installation looks good!

################################

# Install mysql

################################

groupadd mysql

useradd -g mysql mysql

cd /usr/local

tar -xvzf /usr/local/src/mysql-standard-4.0.20-pc-linux-i686.tar.gz

ln -s mysql-standard-4.0.20-pc-linux-i686 mysql

cd mysql

scripts/mysql_install_db

cd ..

chown -R root.mysql mysql-standard-4.0.20-pc-linux-i686

chmod -R 640 mysql

chmod -R u+X,g+X mysql

chmod -R ug+x mysql/bin

chmod -R g+w mysql/data

chmod -R u+x mysql/scripts

cp /usr/local/mysql/support-files/my-medium.cnf /usr/local/mysql/data/my.cnf

chgrp mysql /usr/local/mysql/data/my.cnf

cd /usr/local/mysql

bin/safe_mysqld --user=mysql &

# Set the root password

/usr/local/mysql/bin/mysqladmin -u root password 'secret'

# Configure MySQL so it is running all the time from bootup onwards

cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql

chmod 744 /etc/rc.d/init.d/mysql

chkconfig --add mysql

################################

# Install apache

################################

cd /usr/local/src

chown -R root.root apache_1.3.31.tar.gz

tar -xvzf apache_1.3.31.tar.gz

groupadd www

useradd -g www www

cd /usr/local/src/apache_1.3.31

./configure \

--prefix=/usr/local/apache \

--enable-module=so \

--enable-module=rewrite \

--enable-shared=rewrite \

--server-uid=www \

--server-gid=www

make

make install

################################

# Install php

################################

cd /usr/local/src

tar -xvzf php-4.3.7.tar.gz

chown -R root.root php-4.3.7.tar.gz

cd php-4.3.7

./configure \

--with-mysql=/usr/local/mysql \

--with-apxs=/usr/local/apache/bin/apxs

make

make install

cp php.ini-dist /usr/local/lib/php.ini

vi /usr/local/lib/php.ini

######## Modify the /usr/local/lib/php.ini file and make sure it contains the following commands. ########

max_execution_time=60

memory_limit=10M

post_max_size=8M

upload_max_filesize=8M

file_uploads=On

log_errors=On

error_log=/usr/local/apache/logs/php_error_log

######## End ########

chown -R root.www /usr/local/lib/php

chmod -R g-w,o-rwx /usr/local/lib/php

vi /usr/local/apache/conf/httpd.conf

######## Modify the /usr/local/apache/conf/httpd.conf file and make sure it contains the following commands. ########

User www

Group www

ServerAdmin postmaster@myqmail.com

ServerName mail.five-star.cn

# Following line should be present already as it would be inserted by the PHP make

# Make sure you move it outside of the IfDefineSSL section if the make (incorrectly) put it there

LoadModule php4_module libexec/libphp4.so

# uncomment (or add) the following line

AddType application/x-httpd-php .php

# Add the index.php into this line so apache will use this file as a default in addition to index.html

DirectoryIndex index.php index.html

######## End ########

rm -Rf /usr/local/apache/htdocs/*

rm -f /usr/local/apache/index.html.*

rm -Rf /usr/local/apache/cgi-bin/*

cd /usr/local

chown -R root.root apache

chmod 755 apache

chmod -R 600 apache/*

chmod -R u+X apache

cd apache

chmod -R u+x bin

chgrp -R www cgi-bin

chmod -R u+x,g+x cgi-bin

chgrp -R www icons

chmod -R g+rX icons

chgrp -R www logs

chmod g+wX logs

chgrp -R www htdocs

chmod -R g+rX htdocs

# Run apache every time at bootup.

rm -rf /etc/rc.d/init.d/httpd

vi /etc/rc.d/init.d/httpd

######## Create the /etc/rc.d/init.d/httpd file with the following commands. ########

#!/bin/sh

#

# Startup script for the Apache Web Server

#

# chkconfig: 345 85 15

# description: Apache is a World Wide Web server. It is used to serve \

# HTML files and CGI.

# processname: httpd

# pidfile: /var/run/httpd.pid

# Source function library.

./etc/rc.d/init.d/functions

# See how we were called.

case "$1" in

start)

echo -n "Starting httpd: "

daemon /usr/local/apache/bin/httpd

echo

touch /var/lock/subsys/httpd

;;

stop)

echo -n "Shutting down http: "

killproc httpd

echo

rm -f /var/lock/subsys/httpd

rm -f /var/run/httpd.pid

;;

status)

status httpd

;;

restart)

$0 stop

$0 start

;;

reload)

echo -n "Reloading httpd: "

killproc httpd -HUP

echo

;;

*)

echo "Usage: $0 {start|stop|restart|reload|status}"

exit 1

esac

exit 0

######## End ########

chown root.root /etc/rc.d/init.d/httpd

chmod 744 /etc/rc.d/init.d/httpd

chkconfig --add httpd

################################

# Install vpopmial

################################

groupadd vchkpw

useradd -g vchkpw vpopmail

cd /usr/local/src

tar -xvzf vpopmail-5.4.0.tar.gz

chown -R root.root vpopmail-5.4.0

cd vpopmail-5.4.0

mkdir ~vpopmail/etc

chown vpopmail.vchkpw ~vpopmail/etc

echo "localhost|0|vpopmailuser|vpoppasswd|vpopmail" > ~vpopmail/etc/vpopmail.mysql

chown vpopmail.vchkpw ~vpopmail/etc/vpopmail.mysql

chmod 640 ~vpopmail/etc/vpopmail.mysql

/usr/local/mysql/bin/mysql --password="secret"

CREATE DATABASE vpopmail;

GRANT select,insert,update,delete,create,drop ON vpopmail.* TO vpopmailuser@localhost IDENTIFIED BY 'vpoppasswd';

quit

./configure \

--disable-roaming-users \

--enable-logging=p \

--disable-passwd \

--enable-clear-passwd \

--disable-domain-quotas \

--enable-auth-module=mysql \

--disable-many-domains \

--enable-auth-logging \

--enable-mysql-logging \

--enable-valias \

--disable-mysql-limits

make

make install-strip

vi ~vpopmail/etc/vlimits.default

default_quota 20971520 # Set the mail box default size 20M.

echo "myqmail.com" > /home/vpopmail/etc/defaultdomain

# Setup the quota warning message that is sent to users when they are at 90% quota.

vi quotawarn.msg

######## Create the quotawarn.msg file with the following commands. ########

From: SomeCompany Postmaster

Reply-To: postmaster@myqmail.com

To: SomeCompany User:;

Subject: Mail quota warning

Mime-Version: 1.0

Content-Type: text/plain; charset=iso-8859-1

Content-Transfer-Encoding: 7bit

Your mailbox on the server is now more than 90% full.

So that you can continue to receive mail,

you need to remove some messages from your mailbox.

If you require assistance with this,

please contact our support department :

email : support@myqmail.com

Tel : xx xxxx xxxx

######## End ########

cp quotawarn.msg /home/vpopmail/domains/.quotawarn.msg

echo "Message rejected. Not enough storage space in user's mailbox to accept message." > /home/vpopmail/domains/.over-quota.msg

# add a domain

/home/vpopmail/bin/vadddomain myqmail.com myqmail

# add a test account

/home/vpopmail/bin/vadduser stone@myqmail.com stone

# delete a user

# /home/vpopmail/bin/vdeluser stone@myqmail.com

# delete a domain

# /home/vpopmail/bin/vdeldomain myqmail.com

################################

# Install autoresponder

################################

cd /usr/local/src

tar -xvzf autorespond-2.0.4.tar.gz

chown -R root.root autorespond-2.0.4

cd autorespond-2.0.4

make

make install

################################

# Install ezmlm / ezmlm-idx

################################

cd /usr/local/src

tar -xvzf ezmlm-0.53.tar.gz

chown -R root.root ezmlm-0.53

cd /usr/local/src

tar -xvzf ezmlm-idx-0.40.tar.gz

chown -R root.root ezmlm-idx-0.40

cp -R ezmlm-idx-0.40/* ezmlm-0.53/

# (you need to press y quite a few times to allow the patch files to overwrite the original files)

cd ezmlm-0.53

patch < idx.patch

patch -p1 < ../ezmlm-idx-0.53.400.unified_41.patch

make

make man

make setup

################################

# Install qmailadmin

################################

cd /usr/local/src

tar -xvzf qmailadmin-1.2.0.tar.gz

chown -R root.root qmailadmin-1.2.0

cd qmailadmin-1.2.0

./configure \

--enable-htmldir=/usr/local/apache/htdocs \

--enable-cgibindir=/usr/local/apache/cgi-bin \

--enable-maxusersperpage=12 \

--enable-maxaliasesperpage=12 \

--enable-modify-quota \

--disable-ezmlm-mysql \

--disable-help

make

make install-strip

# Chinese qmailadmin

# Backup the orginal files.

mv /usr/local/share/qmailadmin/lang/en /usr/local/share/qmailadmin/lang/en_bak

mv /usr/local/src/qmailadmin_zh /usr/local/share/qmailadmin/lang/en

# Test the qmailadmin

http://mail.myqmail.com/cgi-bin/qmailadmin

################################

# Install sqwebmail

################################

cd /usr/local/src

tar -xvzf sqwebmail-3.5.3.tar.gz

chown -R root.root sqwebmail-3.5.3.tar.gz

cd sqwebmail-3.5.3

./configure \

--without-authpwd --without-authshadow --without-authpam \

--without-authuserdb --without-authldap --without-authdaemon \

--with-authvchkpw --with-fcgi --enable-unicode=gb2312 \

--enable-webpass=vpopmail \

--enable-cgibindir=/usr/local/apache/cgi-bin \

--enable-imagedir=/usr/local/apache/htdocs/images/webmail \

--enable-mimetypes=/usr/local/apache/htdocs \

--enable-mimecharset=gb2312 \

--with-defaultlang=zh

make

make install

make install-configure

cp -a /usr/local/apache/htdocs/images/webmail /usr/local/apache/htdocs/

mv -f /usr/local/src/zh-cn/* /usr/local/share/sqwebmail/html/zh-cn

mv /usr/local/src/images/webmail/* /usr/local/apache/htdocs/images/webmail/

# Test the webmail

http://mail.myqmail.com/cgi-bin/sqwebmail

Download the source

* qmail, http://www.qmail.org/netqmail-1.05.tar.gz

* ucspi-tcp, ftp://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz

* daemontools, ftp://cr.yp.to/daemontools/daemontools-0.76.tar.gz

References:

http://www.lifewithqmail.org/lwq.html

http://www.pipeline.com.au/staff/mbowe/isp/webmail-server.htm

http://cr.yp.to

If any questions, welcome to email to me: lockbox@163.com

  评论这张
 
阅读(708)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018