LINUX下Mail服务器配置
随着互联网的飞速发展,电子邮件已经成为人们生活中必不可少的通信工具。架设邮件系统相对来说比较的麻烦些,在网上有很多的相关资料可以查阅。真的很感谢这么多热于奉献的网友,使这个网络更加的强大。一直以来都想架设自己的MAIL服务器,由于时间和条件的关系未曾如愿,等到有空了一心放 到这上面的时候,又遇到了各种各样的问题,在我永不放弃信念下,我架设的邮件服务器终于告成。当然了,功能还有太多不完善的地方,我会在以后的时间加以弥补,使其更加的强大。此次尝试感触颇多,学习是一个永无止境的过程,
永远不要停滞在一个地方顽固不前,遇到问题一定要解决它,在遇到问题和解决问题的过程中找到人生乐趣。以下我把自己的安装过程写出来,不求给广大网友指点迷津,只求自己能够三省吾身。相信自己,一天成长一点,一天积累一点。
安装ucspi-tcp用来简单的建立客户机-服务器tcp后台程序
[root@mail mail]# tar zxvf ucspi-tcp0.88.tar.gz
[root@mail mail]# cd ucspi-tcp-0.88
[root@mail mail]# make
[root@mail ucspi-tcp-0.88]# make setup check
./install
./instcheck
安装daemontools
――――――是inetd和winetd的代替品,用它来监听qmail-send,qmail-smtpd,qmail-pop3d
[root@mail ucspi-tcp-0.88]# mkdir -p /package
[root@mail ucspi-tcp-0.88]# chmod 1755 /package/
[root@mail ucspi-tcp-0.88]# cd /package/
[root@mail package]# tar zxvf daemontools-0.76.tar.gz
[root@mail package]# cd admin/daemontools-0.76/
[root@mail daemontools-0.76]# patch -p1</package/daemontools-0.76.errno.patch
patching file src/error.h
[root@mail daemontools-0.76]# package/install
Adding svscanboot to inittab...
init should start svscan now.
测试如下:
[root@mail httpd-2.0.50]# sleep 5
[root@mail httpd-2.0.50]# ps ax|grep svscan
31570 ? S 0:00 /bin/sh /command/svscanboot
31572 ? S 0:00 svscan /service
31580 pts/1 S 0:00 grep svscan
安装qmail―――本文的主角,世界上使用最广的邮件系统之一
[root@mail mail]# tar zxvf qmail-1.03.tar.gz
[root@mail mail]# cd qmail-1.03
[root@mail qmail-1.03]# patch -p1<../qmail-1.03.errno.patch
patching file cdb_seek.c
patching file dns.c
patching file error.3
patching file error.h
[root@mail qmail-1.03]# mkdir /var/qmail
[root@mail qmail-1.03]# groupadd nofiles
[root@mail qmail-1.03]# useradd -g nofiles -d /var/qmail/alias alias
[root@mail qmail-1.03]# useradd -g nofiles -d /var/qmail qmaild
[root@mail qmail-1.03]# useradd -g n
ofiles -d /var/qmail qmaill[root@mail qmail-1.03]# useradd -g nofiles -d /var/qmail qmailp
[root@mail qmail-1.03]# groupadd qmail
[root@mail qmail-1.03]# useradd -g qmail -d /var/qmail qmailq
[root@mail qmail-1.03]# useradd -g qmail -d /var/qmail qmailr
[root@mail qmail-1.03]# useradd -g qmail -d /var/qmail qmails
[root@mail qmail-1.03]# make
[root@mail qmail-1.03]# make setup check
[root@mail qmail-1.03]# ./config-fast mail.china-yr.com
Your fully qualified host name is mail.china-yr.com.
Putting mail.china-yr.com into control/me...
Putting china-yr.com into control/defaultdomain...
Putting china-yr.com into control/plusdomain...
Putting mail.china-yr.com into control/locals...
Putting mail.china-yr.com into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to mail.china-yr.com.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
[root@mail qmail-1.03]# cd ~alias;touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
[root@mail alias]# chmod 644 ~alias/.qmail*
在ftp://ftp.pipeline.com.au/pipeint/sources/linux/WebMail/qmailctl.txt
下载qmailctl.txt 并且上传到指定目录
[root@mail mail]# cp qmailctl.txt /etc/init.d/qmail
[root@mail mail]# mkdir -p /var/qmail/supervise/qmail-send/log
[root@mail mail]# mkdir -p /var/qmail/supervise/qmail-smtpd/log
[root@mail mail]# mkdir -p /var/qmail/supervise/qmail-pop3d/log
[root@mail mail]# vi /var/qmail/supervise/qmail-send/run
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" qmail-start ./Maildir/
[root@mail mail]# vi /var/qmail/supervise/qmail-send/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t \
s10000000 n30 /var/log/qmail/send
[root@mail mail]# vi /var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver \
-H -l hostname.yourdomain.com \
-v -x /etc/tcp.smtp.cdb \
-c
20 -R -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \/var/qmail/bin/qmail-smtpd hostname.yourdomain.com \
/var/lib/vpopmail/bin/vchkpw /bin/true 2>&1
[root@mail mail]# vi /var/qmail/supervise/qmail-smtpd/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s10000000 \
n30 /var/log/qmail/smtpd
[root@mail mail]# vi /var/qmail/supervise/qmail-pop3d/run
/usr/local/bin/tcpserver \
-H -l example.com \
-v -x /etc/tcp.pop3.cdb -c 30 -R 0 pop3 \
/var/qmail/bin/qmail-popup example.com \
/var/lib/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
[root@mail mail]# vi /var/qmail/supervise/qmail-pop3d/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s10000000 \
n30 /var/log/qmail/pop3d
[root@mail mail]# chmod 755 /var/qmail/supervise/qmail-send/run
[root@mail mail]# chmod 755 /var/qmail/supervise/qmail-send/log/run
[root@mail mail]# chmod 755 /var/qmail/supervise/qmail-smtpd/run
[root@mail mail]# chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
[root@mail mail]# chmod 755 /var/qmail/supervise/qmail-pop3d/run
[root@mail mail]# chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
[root@mail mail]# mkdir /var/log/qmail
[root@mail mail]# mkdir /var/log/qmail/smtpd
[root@mail mail]# mkdir /var/log/qmail/send
[root@mail mail]# mkdir /var/log/qmail/pop3d
[root@mail mail]# chown -R qmaill /var/log/qmail
[root@mail mail]# ln -s /var/qmail/supervise/qmail-send /service/
[root@mail mail]# ln -s /var/qmail/supervise/qmail-smtpd/ /service/
[root@mail mail]# ln -s /var/qmail/supervise/qmail-pop3d/ /service/
[root@mail mail]# vi /var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver \
-H -l mail.china-yr.com \
-v -x /etc/tcp.smtp.cdb \
-c 20 -R -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \
/var/qmail/bin/qmail-smtpd mail.china-yr.com
\[root@mail mail]# vi /var/qmail/supervise/qmail-pop3d/run
#!/bin/sh
exec /usr/local/bin/softlimit -m 3000000 \
/usr/local/bin/tcpserver \
-H -l mail.china-yr.com \
-v -x /etc/tcp.pop3.cdb -c 30 -R 0 pop3 \
/var/qmail/bin/qmail-popup mail.china-yr.com \
/var/lib/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
[root@mail mail]# cd /etc/init.d/
[root@mail init.d]# chmod +x qmail
[root@mail init.d]# /etc/init.d/qmail start
Starting qmail
[root@mail init.d]# groupadd -g 89 vchkpw
[root@mail init.d]# useradd -g vchkpw -u 89 -d /home/vpopmail vpopmail
[root@mail init.d]# mkdir -p /home/vpopmail/etc
[root@mail init.d]# echo "china-yr.com">/home/vpopmail/etc/defaultdomain
[root@mail init.d]# echo '127.0.0.1:allow,RELAYCLIENT=""'>/home/vpopmail/etc/tcp.smtp
[root@mail init.d]# cd /home/vpopmail/etc ; tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
[root@mail etc]# echo "localhost|0|vpopmail|123456|vpopmail" > /home/vpopmail/etc/vpopmail.mysql
[root@mail etc]# chmod 640 /home/vpopmail/etc/vpopmail.mysql
[root@mail etc]# chown -R vpopmail.vchkpw /home/vpopmail/etc
安装VPOPMAIL
---一个以qmail为基础的虚拟域管理包,其允许在一个IP地址添加多个虚拟域
[root@mail vpopmail-5.4.0]# ./configure --enable-auth-module=mysql --enable-auth-logging=n --enable-mysql-logging=n --enable-logging=e --enable-valias=y --enable-pssswd=n --enable-roaming-users=y --enable-incdir=/usr/
local/mysql/include --enable-libdir=/usr/local/mysql/lib
Current settings
---------------------------------------
vpopmail directory = /home/vpopmail
uid = 89
gid = 89
roaming users = ON --enable-roaming-users
tcpserver file = /home/vpopmail/etc/tcp.smtp
open_smtp file = /home/vpopmail/etc/open-smtp
rebuild tcpserver file = ON --enable-rebuild-tcpserver-file (default)
password learning = OFF --disable-learn-passwords (default)
md5 passwords = ON --enable-md5-passwords (default)
file locking = ON --enable-file-locking (default)
vdelivermail fsync = OFF --disable-file-sync (default)
make seekable = ON
--enable-make-seekable (default)clear passwd = ON --enable-clear-passwd (default)
user dir hashing = ON --enable-users-big-dir (default)
address extensions = OFF --disable-qmail-ext (default)
ip alias = OFF --disable-ip-alias-domains (default)
domain quotas = OFF --disable-domainquotas (default)
auth module = mysql --enable-auth-module=mysql
mysql replication = OFF --disable-mysql-replication (default)
mysql logging = OFF --disable-mysql-logging (default)
mysql limits = OFF --disable-mysql-limits (default)
MySQL valias = ON --enable-valias
auth inc = -I/usr/local/mysql/include
auth lib = -L/usr/local/mysql/lib -lmysqlclient -lz
system passwords = OFF --disable-passwd (default)
pop syslog = show only failed attempts
--enable-logging=e (default)
auth logging = OFF --disable-auth-logging
all domains in one SQL table = --enable-many-domains (default)
[root@mail vpopmail-5.4.0]# make
出现错误:如下…..
vauth.c: In function `vwrite_dir_control':
vauth.c:1101: warning: format argument is not a pointer (arg 3)
vauth.c: In function `vcreate_dir_control':
vauth.c:1117: warning: format argument is not a pointer (arg 3)
vauth.c:1138: warning: format argument is not a pointer (arg 3)
vauth.c: In function `vdel_dir_control':
vauth.c:1155: warning: format argument is not a pointer (arg 3)
vauth.c: In function `valias_select':
vauth.c:1263: warning: format argument is not a pointer (arg 3)
vauth.c:1267: warning: assignment makes pointer from integer without a cast
vauth.c: In function `valias_select_next':
vauth.c:1274: error: subscripted value is neither array nor pointer
vauth.c: In function `valias_insert':
vauth.c:1294: warning: format argument is not a pointer (arg 3)
vauth.c: In function `valias_remove':
vauth.c:1314: warning: format argument is not a pointer (arg 3)
vauth.c: In function `valias_delete':
vauth.c:1334: warning: format argument is not a pointer (arg 3)
vauth.c: In function `valias_delete_domain':
vauth.c:1354: warni
ng: format argument is not a pointer (arg 3)vauth.c: In function `vcreate_valias_table':
- 最新评论