当前位置:操作系统 > Unix/Linux >>

qmail+vpopmail+squirrelmail安装经验谈

参考文档: http://www.pipeline.com.au/staff/mbowe/isp/webmail-server.htm

  http://www.jerfu.com/toaster/FullToaster_1.0.6.html

  http://shupp.org/toaster/

  本文将结合以上三个文档,介绍自己在 Solaris 8 下和 RedHat 7.2 下的安装经验。

  LAMP 的安装,不再赘述,包括 SSL 的支持也不在这里叙述。笔者尽量用简明的

  安装脚本来解释安装中需要注意的问题。

  作者:FreeLAMP.com 徐永久

  最后更新:2003年6月10日 星期二

  各种软件的下载地点在文后列出。我喜欢把下载以后的文件集中在一个目录存放,

  假设我们把下载后的文件存放的目录叫做 $QM_GZDIR 表示存放 qmail 相关的 .tar.gz 的目录。

  在下面的安装脚本中,你可以用 export QM_GZDIR=/root/download/qmail 等来使用这个变量。

  一、安装 UCSPI-TCP

  cd /usr/local/src

  tar xzf $QM_GZDIR/ucspi-tcp-0.88.tar.gz

  chown -R root.root ucspi-tcp-0.88

  cd ucspi-tcp-0.88

  # 对 rblsmtpd 打补丁,使之能够使用所有最新的 RBL 区

  # 这个补丁可以定制一个错误信息返回给发信人。

  patch -p0 rblsmtpd.c < $QM_GZDIR/ucspi-rss.diff

  # 修改 rblsmtpd.c 以增加错误文本的最大长度,从 200个字符修改为 500 个。

  # 这样就可以把足够说明问题的信息返回给被 RBL 过滤掉的发件人。

  vi rblsmtpd.c

  去 166 行,修改

  if (text.len > 200) text.len = 200;

  为:

  if (text.len > 500) text.len = 500;

  make

  make setup check

  二、安装 DAEMONTOOLS

  mkdir -p /package

  chmod 1755 /package

  cd /package

  tar xzfp $QM_GZDIR/daemontools-0.76.tar.gz

  cd admin/daemontools-0.76

  package/install

  安装完毕,用 ps -ef|grep sv 就可以看到有进程在跑了。

  需要注意的是,在 Solaris 上需要修改 /etc/inittab 中的

  SV:123456:respawn:/command/svscanboot

  为:

  SV:123456:respawn:/command/svscanboot </dev/null >/dev/msglog 2>&1

  才可以看到进程运行。

  无论是 Solaris 还是 Linux ,如果不想 daemontools 运行,可以注释掉

  inittab 中的这句话,然后用 init q 命令重新刷新一下运行级别即可。

  三、安装 qmail

  这部分是最冗长,也是最核心的部分。各人有各人的做法,真的是千奇百怪。

  或许是系统的体例或者习惯不一样吧,例如很多的文档喜欢把 .tar.gz 解压到

  /var/src 下,我认为 Linux 下的作风是 /usr/local/src ,因此我固执的把这种作风

  移植到了 Solaris 上面。

  cd /usr/local/src

  groupadd nofiles

  useradd -g nofiles -d /var/qmail qmaild

  useradd -g nofiles -d /var/qmail qmaill

  useradd -g nofiles -d /var/qmail qmailp

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

  groupadd qmail

  useradd -g qmail -d /var/qmail qmailq

  useradd -g qmail -d /var/qmail qmailr

  useradd -g qmail -d /var/qmail qmails

  tar xzf $QM_GZDIR/qmail-1.03.tar.gz

  cd qmail-1.03

  # 对 dns 打补丁

  patch -p1 < $QM_GZDIR/qmail-103.patch

  # 对 qmailqueue 打补丁

  # 这个补丁能支持其他一些流行的附加产品,例如 Qmail-Scanner

  patch -p1 < $QM_GZDIR/qmailqueue-patch

  # 针对 qmail-local 和 qmail-pop3d 能和 maildir++ quota 兼容而打补丁

  patch < $QM_GZDIR/qmail-maildir++.patch

  # 针对本地时间戳打补丁,使邮件头上的时间显示为本地时间而不是 GMT。

  patch -p1 < $QM_GZDIR/qmail-date-localtime.patch.txt

  # 支持 badmailfrom 的日志记录以及 badrcptto 功能。

  patch < $QM_GZDIR/qmail-badmailfrom-badrcptto.patch.txt

  # 修改qmail-smtpd.c ,以防止远程服务器发送非法格式的邮件,导致服务死循环。

  vi qmail-smtpd.c

  在大约 51 行左右把 straynewline 函数的 451 修改成 553

  make

  make setup check

  (cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root)

  chmod 644 ~alias/.qmail*

  ./config-fast mail.abc.com

  cp $QM_GZDIR/qmailctl.txt /var/qmail/bin/qmailctl

  chmod 755 /var/qmail/bin/qmailctl

  ln -s /var/qmail/bin/qmailctl /etc/rc.d/init.d/qmail

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

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

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

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

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

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

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

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

  #!/bin/sh

  exec env - PATH="/var/qmail/bin:$PATH" qmail-start ./Maildir/

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

  #!/bin/sh

  # Keep 30 logs of max 10Mb each

  #

  # They will get rotated when they reach 10Mb in size,

  # or at midnight when our crontab script fires (whichever event comes 1st)

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

  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

  -v -x /home/vpopmail/etc/tcp.smtp.cdb

  -c 20 -R -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp

  /usr/local/bin/rblsmtpd -b -C

  -r 'relays.ordb.org:Your message was rejected because the mail server you use is configured to allow OPEN RELAY - More detailed information regarding this problem is available from http://www.ordb.org/lookup/?%IP% - Please forward this error through to your email server support staff for easy resolution.'

  -r 'inputs.relays.osirusoft.com:Your message was rejected because the mail server you use is either configured to allow OPEN RELAY - More information regarding this problems is available at http://relays.osirusoft.com/cgi-bin/rbcheck.cgi?addr=%IP% - Please forward this error to your email server support staff for resolution.'

  -r 'proxies.relays.monkeys.com:Your message was rejected because the message was sent from an OPEN PROXY - More information regarding this problems is available at http://www.monkeys.com/upl/listed-ip-0.cgi?ip=%IP% - Please forward this error to your email server support staff for resolution.'

  /var/qmail/bin/qmail-smtpd 2>&1

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

  #!/bin/sh

  # Keep 30 logs of max 10Mb each

  #

  # They will get rotated when they reach 10Mb in size,

  # or at midnight when our crontab script fires (whichever event comes 1st)

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

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

  #!/bin/sh

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

  /usr/local/bin/tcpserver

  -v -x /etc/tcp.pop3.cdb -c 30 -R 0 pop3

  /var/qmail/bin/qmail-popup mail.abc.com

  /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1

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

  #!/bin/sh

  # Keep 30 logs of max 10Mb each

  # They will get rotated when they reach 10Mb in size,

  # or at midnight when our crontab script fires (whiche
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,