首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> Delphi教程
qmail server howto_qmail
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
这个文章其实我很早前就应该写了,因为以前做过的Qmail的东东非常的多了,但是一直很懒惰, 导致的最大的问题就是每次做FreeBSD下的Qmail系统都是重新看文章来过。今天终于决定边装边写了。

一、安装Qmail
安装Qmail很简单的,使用ports中的qmail来安装就好了:
cd /usr/ports/mail/qmail
make -DWITH_BIG_TODO_PATCH install
make disable-sendmail
make enable-qmail
make clean
这里第三步和第四步是将sendmail的缺省mail变更成为Qmail。需要注意的是这样设置必须要在 /etc/rc.conf 中加入:
sendmail_enable="NONE"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
这些将彻底在系统启动时禁止sendmail的任何动做。

一般的情况下我们会使用Qmail的MailDir方式来启动Qmail,所以我们需要将maildir启动脚本激活,但是我们为后面的svscan要做一些准备,所以将以下脚本:

env env - PATH="/var/qmail/bin:/usr/local/bin" \
qmail-start ./Maildir/
放入 /var/qmail 中的 rc 文件中。并使用 chmod +x /var/qmail/rc 命令给rc加上执行权限。

注意:如果你在安装qmail时如果发现它不能正确找到你的域名解析时安装的配置文件不会安装全,这里你需要自己手工进行一次配置:
cd /var/qmail/configure
./config-fast $HOSTNAME
请使用你这台机器的主机名代替$HOSTNAME。这样操作后,Qmail的缺省配置文件都会自动生成。


二、安装和设置MySQL

安装MySQL需要的是时间而不是技巧:
cd /usr/ports/databases/mysql40-server
make -DWITH_CHARSET=gbk install
make clean
我们要为vpopmail提前准备好MySQL的库和用户:
mysqladmin create vpopmail
mysql -u root -p
mysql>use mysql
mysql>GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , \
DROP , FILE , INDEX , ALTER , SHOW DATABASES , \
CREATE TEMPORARY TABLES , LOCK TABLES ON * . * TO "vpopmail"@ "localhost"IDENTIFIED BY "vpopmail"WITH \
MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 ;
mysql>FLUSH PRIVILEGES;
这里创建了一个用户名为vpopmail,同时设置其密码为vpopmail。

三、安装vpopmail

安装vpopmail更多的是参数要注意,其它的都会很简单:

cd /usr/ports/mail/vpopmail
make WITH_MYSQL=yes WITH_MYSQL_SERVER=localhost \
WITH_MYSQL_USER=vpopmail WITH_MYSQL_PASSWD=vpopmail \
WITH_MYSQL_DB=vpopmail WITH_MYSQL_LIMITS=yes
make install
make clean
vpopmail支持对用户认证数据库的读写分离,这样的读写分离的好处在于可以使用不同的服务器来异步处理用户的增加和查询操作。 在安装完vpopmail后,你可以在 /usr/local/vpopmail/etc 中找到 vpopmail.mysql 文件,它的只是一个空文件。 这个文件需要你加入两行内容,以将对mysql数据库的读和写方法信息告诉vpopmail,它的格式如下:
read_server|read port|read_user|read_password|database_name
update_server|update port|update_user|update_password|database_name
第一行的内容是读取数据库的访问信息,第二行是更新数据库的访问信息。
安装好和vpopmail后我们当然需要测试一下它是否能正常的运行,包括连接MySQL数据库和正常的操作Qmail的数据文件:
cd /usr/local/vpopmail/bin
./vadddomain test.com
./vadduser hd@test.com
第二步是向系统加入 一个域名,第三步是向该域名中加入一个用户。在输入命令后它都会提示你输入密码,域名的密码是用来维护该域中用户的mast用户的密码。 如果没有任何的错误提示,哪么恭喜你,你走过了大多数的艰苦步骤,已经走上了光明大道了。有不少人向我质问不在数据库建立表结构,其实大家要知道你如果做到了以下工作:

  • 在安装之前已经更新了ports
  • 数据库的用户和库已经正确安装
  • 在vpopmail.mysql中设置正确了数据库访问信息
    哪么你的vpopmail会自动的在mysql的库中建立相应的表的。

    四、安装QmailAdmin

    我很痛苦每次增加一个用户就ssh到服务器上,su成vpopmail,再输入命令。也许这只是痛苦的开始,你还要面对改密码、增加邮箱转发等等高级或是额外的用户要求。 于是,一个可爱的管理系统前来将大家于水火中解救出来:QmailAdmin。上面所有的一切,它都能帮你做到。我们来使用万能的ports罢:
    cd /usr/ports/mail/qmailadmin
    make -DWITH_MODIFY_QUOTA
    make install clean
    它将qmailadmin的cgi-bin安装到了 /usr/local/www/cgi-bin.default 的 qmailadmin 目录中。将这个目录用 ln -s 命令连接到你的cgi-bin目录中去。启动你的浏览器试试罢,一个域的管理帐号是postmaster,用域的密码登录进去好了。

    五、安装和配置daemontools

  • 安装
    我很讨厌daemontools的配置,而且非常烦它哪种启动和监视daemon的目录结构,但是好象Qmail的作者很是推崇自己的这个小作品。 再加上谁都担心Qmail哪一小撮进程有一个完蛋后没有人能知道而重新启动,所以我们还是来配置一下这个丑陋的小东西罢。先安装它:
    cd /usr/ports/sysutils/daemontools
    make install clean
    这个工具最大的特点就在于安装容易到了极限,而配置复杂到了极限!先来建立Qmail的服务日志目录,并给Qmail加上权限:
    mkdir -p /var/log/qmail/qmail-smtpd
    mkdir -p /var/log/qmail/qmail-pop3d
    mkdir -p /var/log/qmail/qmail-send

    chmod -R 755 /var/log/qmail
    chown -R qmaill:wheel /var/log/qmail
  • 配置svscan
    最好建立以下内容的一个脚本,执行它:
    #!/bin/sh
    mkdir /service
    chmod 755 /service
    mkdir /var/qmail/supervise
    chmod 755 /var/qmail/supervise

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

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

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

    ln -s /var/qmail/supervise/* /service/
    下面是pop3d的启动脚本:
    #!/bin/sh
    exec /usr/local/bin/tcpserver -H -R -v -c100 0 110 \
    /var/qmail/bin/qmail-popup host.domain.de \
    /usr/local/vpopmail/bin/vchkpw \
    /var/qmail/bin/qmail-pop3d Maildir 2>%26amp;1
    将这个脚本放入 /var/qmail/supervise/qmail-pop3d/ 的 run 文件中,然后:
    再将pop3d的log启动脚本:
    #!/bin/sh
    exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s100000 n20 \
    /var/log/qmail/qmail-pop3d 2>%26amp;1
    放入 /var/qmail/supervise/qmail-pop3d/log 中的 run 文件中,之后执行:
    chmod 755 /var/qmail/supervise/qmail-pop3d/run
    chmod 755 /var/qmail/supervise/qmail-pop3d/log
    chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
    将smtpd的启动脚本:
    #!/bin/sh
    QMAILDUID=`/usr/bin/id -u qmaild`
    NOFILESGID=`/usr/bin/id -g qmaild`
    exec /usr/local/bin/tcpserver -p -R -x \
    /usr/local/vpopmail/etc/tcp.smtp.cdb -u"$QMAILDUID" \
    -g"$NOFILESGID" -v -c100 0 smtp rblsmtpd \
    /var/qmail/bin/qmail-smtpd 2>%26amp;1
    放入 /var/qmail/supervise/qmail-smtpd 的 run 文件中。
    配对的还有smtpd的log启动脚本:
    #!/bin/sh
    exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s100000 n20 \
    /var/log/qmail/qmail-smtpd 2>%26amp;1
    放入 /var/qmail/supervise/qmail-smtpd/log/ 中的 run 文件中。之后执行:
    chmod 755 /var/qmail/supervise/qmail-smtpd/run
    chmod 755 /var/log/qmail/qmail-smtpd/log
    chmod 755 /var/log/qmail/qmail-smtpd/log/run
    无尽的长夜呀,还有一个qmail send要搞!将这个脚本:
    #!/bin/sh
    exec /var/qmail/rc
    放入 /var/qmail/supervise/qmail-send/ 中的 run 文件里。并将以下配对的log启动脚本:
    #!/bin/sh
    exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s100000 n20 \
    /var/log/qmail/qmail-send 2>%26amp;1
    放入 /var/qmail/supervise/qmail-send/log 中的 run 文件,最终曙光来到了,我们执行以下命令:
    chmod 755 /var/qmail/supervise/qmail-send/run
    chmod R 755 /var/log/qmail/qmail-send/log
    chmod R 755 /var/log/qmail/qmail-send/log/run
    不知你的指头是不是酸了呢?总之,这时候去唱个卡拉OK罢,让你的指头休息一下罢,无聊的svscan就像是我们要去唱的哪英的歌一样,被我们“征服”了!

  • 设置系统启动脚本  
    在系统安装时 /usr/local/etc/rc.d 中的 qmail.sh 文件是连接到了 /var/qmail/rc 文件上的,但是我们需要用svscan来启动,所以我们先要将原有的启动脚本删除,再vi一个 新的启动脚本:
    cd /usr/local/etc/rc.d
    rm qmail.sh
    vi qmail.sh
    脚本的内容HD已经辛苦的帮大家抄来了:
    #!/bin/sh
    case "$1" in
    start)
    echo -n "Starting qmail: svscan"
    if cd /var/qmail/supervise; then
    env - PATH="/var/qmail/bin:/usr/local/bin:/usr/bin:/bin" svscan %26amp;
    echo $! > /var/run/svscan.pid
    fi
    echo "."
    ;;
    stop)
    echo -n "Stopping qmail: svscan"
    kill `cat /var/run/svscan.pid`
    echo -n " qmail"
    svc -dx /var/qmail/supervise/*
    echo -n " logging"
    svc -dx /var/qmail/supervise/*/log
    echo "."
    ;;
    stat)
    cd /var/qmail/supervise
    svstat * */log
    ;;
    doqueue|alrm)
    echo "Sending ALRM signal to qmail-send."
    svc -a /var/qmail/supervise/qmail-send
    ;;
    queue)
    /var/qmail/bin/qmail-qstat
    /var/qmail/bin/qmail-qread
    ;;
    reload|hup)
    echo "Sending HUP signal to qmail-send."
    svc -h /var/qmail/supervise/qmail-send
    echo "Sending HUP signal to qmail-pop3d."
    svc -h /var/qmail/supervise/qmail-pop3d
    ;;
    pause)
    echo "Pausing qmail-send"
    svc -p /var/qmail/supervise/qmail-send
    echo "Pausing qmail-smtpd"
    svc -p /var/qmail/supervise/qmail-smtpd
    echo "Pausing qmail-pop3d"
    svc -p /var/qmail/supervise/qmail-pop3d
    ;;
    cont)
    echo "Continuing qmail-send"
    svc -c /var/qmail/supervise/qmail-send
    echo "Continuing qmail-smtpd"
    svc -c /var/qmail/supervise/qmail-smtpd
    echo "Continuing qmail-pop3d"
    svc -c /var/qmail/supervise/qmail-pop3d
    ;;
    restart)
    echo "Restarting qmail:"
    echo "* Stopping qmail-smtpd."
    svc -d /var/qmail/supervise/qmail-smtpd
    echo "* Sending qmail-send SIGTERM and restarting."
    svc -t /var/qmail/supervise/qmail-send
    echo "* Restarting qmail-smtpd."
    svc -u /var/qmail/supervise/qmail-smtpd
    echo "* Sending qmail-pop3d SIGTERM and restarting."
    svc -t /var/qmail/supervise/qmail-pop3d
    ;;
    cdb)
    tcprules /usr/local/vpopmail/etc/tcp.smtp.cdb /usr/local/vpopmail/etc/tcp.smtp.tmp <
    /usr/local/vpopmail/etc/tcp.smtp
    chmod 644 /usr/local/vpopmail/etc/tcp.smtp*
    echo "Reloaded /usr/local/vpopmail/etc/tcp.smtp."
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|doqueue|reload|stat|pause|cont|cdb|queue}"
    exit 1
    ;;
    esac
    exit 0
    在你快乐之余不要忘记要给启动脚本执行权限:
    chmod +x /usr/local/etc/rc.d/qmail.sh
    如果你现在还在清醒状态,哪么请启动我们伟大的Qmail罢。它已经在我们的系统中安静的存在到了你同意它站立起来了:
    /usr/local/etc/rc.d/qmail.sh start
    如果启动后发现了问题请首先查看系统中的sendmail是否还能通过 ps -ax 命令看到,如果还能看到,建议你确定已经向上面所说更新过/etc/rc.conf中的配置后,输入让世界重见光明的命令: reboot 罢!要知道轮回是必然的,皇帝明天就能到我家!

    六、小技巧

    请记住:所有的问题出现时都请到 /var/local/maillog 文件中先查看日志罢。

  • 有关SMTP的安全问题
    有许多朋友都问题了我这个问题,我个人来说认为SMTP认证是一个不错的主意,不过qmail给了我们一个更好玩的防止SMTP滥用的办法。
    装好系统后,先别着急收邮件,你先使用系统的smtp服务来发一个邮件试试,如果邮件的发送目的不是本域之内的邮箱,你就会从服务器得到一个错误:
    553 sorry, that domain isnt in my list of allowed rcpthosts (#5.7.1)
    这里是说本smtp服务器没有将你的目标地址域放 入允许投递的列表中。如果你现在收一下邮件,再发送时就会发现,一切正常了!呵呵,是不是很好玩哟。 这里使用了一个技术,就是当你通过pop3收一回邮件,你的IP地址就会记录在案,你的IP再使用SMTP时就可以向其它的域发送邮件了,而这个IP可使用的时间是30分钟。 如果你想改变这个时间,在编译vpopmail时,修改 Makefile 中的 RELAYCLEAR 变量的值。

    有许多方法是将Qmail的SMTP进行补丁,以利用vpopmail的checkpassword来进行smtp验证,我不喜欢这样用的原因主要有:

    这需要完全的改变Qmail的smtpd代码,系统升级的情况下就会不可用
    这样做会使用SMTP认证的方法,而这样做现在在协议上来说其实是非标准的协议
    我有不少的机器需要使用SMTPD服务,但是现在的大多SMTP客户端,由其是命令行的和程序的接口还不支持认证的SMTP协义
    所以本文对SMTPD的用户认证不再深入讨论,而使用了Qmail+Vpopmail的另一种安全保证方式

  • ,

    文章整理:站长天空 网址:http://www.z6688.com/
    以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

    文章页数:[1] 


    放大字体显示 缩小字体显示 打印文章 推荐给朋友
    热门文章
    ·ListBox控件基本功能-.NET教程,组件控件开发
    ·用window.location.href实现刷新另个框架页面-.NET教程,Asp.Net开发
    ·JSP+STRUTS+EJB+DAO+HIBERNATE实例-JSP教程,Jsp/Servlet
    ·.NET中的设计模式四:命令模式-.NET教程,Asp.Net开发
    ·数字转英文(货币)大写-.NET教程,数据库应用
    ·用户控件用户登录判断-ASP教程,客户端相关
    ·计数器的另一用法:自动切换首页图片-ASP教程,ASP应用
    ·漫谈Java数据库存取技术-JSP教程,Java技巧及代码
    ·正则表达式-.NET教程,Asp.Net开发
    ·即时通讯靠免费短信能赚10亿?
    最新文章
    ·让flash动画适应任何分辨率的网页_flash教程
    ·新手必看之网站的定位篇_站长心得
    ·1000ip的效益也能大于一万ip_网赚技巧
    ·google adsense课堂:西联快汇知识_网赚技巧
    ·googleadsense的无效点击_google推广
    ·google adsense高价关键字[排行榜]_google推广
    ·google搜索引擎的十大应用_google推广
    ·windows vista下如何关闭远程控制_windows vista
    ·修改配置 让windows vista系统实现自动登录_windows vista
    ·整齐划一 将整个网页保存在一个文件中_站长心得
    相关主题
  • qmail+vpopmail+mysql+qmailadmin+ezmlm+igenus构建企业邮局_qmail
  • qmail邮件系统安装(freebsd 3.4)_qmail
  • qmail邮件系统下防止滥用mail relay完全解决方案_qmail
  • qmail使用smtp发信的设置问题集_qmail
  • qmail+vpopmail邮件过滤(练习篇)_qmail
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭