免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 18148 | 回复: 25
打印 上一主题 下一主题

[Mail] 新手的Centos5.2+postfix安装配置,请大家校验. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-20 18:33 |只看该作者 |倒序浏览
Centos5.2搭建Postfix邮件系统
                                                
序言:
    用了5天的时间,终于现实了我要达到目标.最开始的2天其实已经按着网上的教程现实了本次试验的目标.但是其中很多错误的排查,并没有及时的纪录和思考.以及对整个系统所需要的软件包功能,也没有多少理解.总觉得第一次的试验多少是侥幸成功.糊里糊涂的一次试验.因此,为了在验证一次,加深理解.我又从新建了虚拟机,从新安装操作系统,从新搭建postfix邮件系统.
    多哩罗嗦写下这长一个文档,尽可能的纪录下了每一步操作,及产生错误时解决的方法.
    从开始对linux的一无所知到搭建起这个系统,算来已经有3,4个月了.当我看到postfix时,这个系统好大,用了如此多的软件包.我想我要把它搭起来,会是一件伟大的事,在本论坛的mail服务器版看了很多很多安装教程,把<POSTFIX权威指南>粗粗的看了一次.看postfix的安装教程似乎不是很困难,可是当我一步一步做下来的时候,几乎每一步都会出错,有的错误一个小时两个小时都解决不了,我想过放弃,太难了.我还对linux还不了解,等以后我了解多了,在搞它.可我又想,这么复杂的一个系统,我要把它拿下,多有成就感.好吧,有错不怕,见一个解决一个,能解决一个是一个,大不了最后失败.
     两天的时间,解决着每个出现的错误,解决一个,我就似乎看到成功不远了.最后当我现实了我想要到达的目标时,感觉迷迷糊糊的,什么都没明白,就是解决错误了.于是我想在从来一次吧.做一件事,总的让自己清楚是做了些什么.当然最重要的是把过程记录下来,以后多练习,多总结.总有一天我不会再用一周的时间才能把它搞定.第二次依旧有很多出现了大量错误,加上我边做别记录操作,花了3天时间.
    在此次试验过程中,很多的错误都是由于输入的参数和配置错误引起的,仔细要仔细.试验不是为了一点错都不出错就成功的,那样似乎没有任何成就感,而且网上到处都是基本的安装配置教程,学习不是为了按着教程一步不犯错的完成,这样似乎失去了意义,就是要出错,学的就是一种排查和解决错误的能力.
    到现在越学,越觉得linux太复杂了,太难了.似乎依旧不得要领,无法入门,写这么多废话,希望能和大家分享和探讨下学习linux方法和经验.欢迎大家批评指正.
    在此,感谢网上那些分享教程的朋友,感谢本论坛的热心朋友,虽然我很少提问题,但问的问题,总会获得论坛里热心的朋友回答.
    From the Internet,For the Internet.
                                                                                   
   

                                                                                         By Drvial
PDF文档 Postfix安装配置.pdf (821.72 KB, 下载次数: 1152)
一 系统运行环境
1.1硬件要求
      基本上,能够安装linux系统就能够满足硬件的要求…….
1.2运行环境
      操作系统为centos 5.2+VMware-workstation6.0.
      我使用的VM6虚拟机和Centos5.2做的本次试验.
1.3所需软件
      1, Centos 服务器操作系统
      2, Postfix 邮件服务器系统的smtp服务器,在邮件服务器系统中充当MTA角色.
      3, Mysql 开源数据库,用于存储邮件系统虚拟域,虚拟帐户信息.
      4, apache web服务器软件,用于extman对邮件系统的后台管理,extmail的web邮件收发.
      5, php   extman和extmail需要使用php解析
      6, cyrus-sasl 用于实现身份验证的smtp服务器
      7, courier-authlib 现实带验证的pop3服务器
      8, courier-imap 用于实现pop3,imap收邮件功能
      9,extman 用于邮件服务器的后台管理
      10,extmail 用于实现webmail
      11,DBD-mysql 用于解决依赖关系,extmail将会用到
      12,unix-syslog 用于解决依赖关系,extmail将会用到
      13,BerkeleyDB 用于提供数据库效率
      14, openssl 提供安全的邮件服务器连接 (本次试验未配置此功能)
      15, maildrop 用于替代postfix的mta功能,邮件投递代理,将收到的邮件转发到用户的邮箱目录(本次试验未配置此功能)
      16,clamav   反病毒工具              (本次试验未配置此功能)
      17,SpamAssassin  反垃圾邮件过滤器  (本次试验未配置此功能)
      18,amavisd-new  是一个连接MTA和内容检测工具  (本次试验未配置此功能)
二 准备工作
2.1 下载所需要的软件
     按照上面给出的地址下载,默认情况,本文所有软件包都放置在/usr/local/src下.所使用的安装包都为源码包.
2.2 禁用服务和软件
     默认环境下,有部分服务和软件已被起用及安装到系统里,这些都影响到本系统的安装.所以需要禁止和卸载.
  2.2.1禁用selinux
     Selinux 是 linux 系统中一个强制性的安全机制,但也带来了不少麻烦,为了避免不必要的麻烦,还是先关了吧。我之前在 Fedora cora 5 上安装邮件服务器时就因为没有关掉 selinux ,而苦恼了一段时间。
      [root @test root]# vi /etc/selinux/conifg
       # This file controls the state of SELinux on the system.
       # SELINUX= can take one of these three values:
       #       enforcing - SELinux security policy is enforced.
       #       permissive - SELinux prints warnings instead of enforcing.
       #       disabled - SELinux is fully disabled.
              将 SELINUX=enforcing
              改成
              SELINUX=disabled
       # SELINUXTYPE= type of policy in use. Possible values are:
       #       targeted - Only targeted network daemons are protected.
       #       strict - Full SELinux protection.
               SELINUXTYPE=targeted
  2.2.2 卸载sendmail
       默认安装系统时,sendmail
       查看系统是否安装sendmail
       [root@mail mysql]# rpm -qa | grep sendmail
       sendmail-8.13.8-2.el5
       卸载
       [root@mail mysql]# rpm -e sendmail
        error: Failed dependencies:
        /usr/sbin/sendmail is needed by (installed) redhat-lsb-3.1-12.3.EL.el5.centos.i386
        smtpdaemon is needed by (installed) mdadm-2.6.4-1.el5.i386
        smtpdaemon is needed by (installed) fetchmail-6.3.6-1.1.el5.i386
        smtpdaemon is needed by (installed) mutt-1.4.2.2-3.0.2.el5.i386
        提示出错,有相关依赖关系,使用--nodeps强制卸载
        [root@mail mysql]# rpm -e  --nodeps sendmail
        warning: /var/log/mail/statistics saved as /var/log/mail/statistics.rpmsave
        会提示警告不要管,继续.
  2.2.3 卸载httpd
        [root@mail bin]# rpm -qa |grep httpd
        httpd-2.2.3-11.el5_1.centos.3
        [root@mail bin]# rpm -e --nodeps  httpd
        卸载sasl
        [root@mail mysql]# rpm -qa | grep sasl
        cyrus-sasl-plain-2.1.22-4
        cyrus-sasl-lib-2.1.22-4
        cyrus-sasl-2.1.22-4
        [root@mail mysql]# rpm -e --nodeps cyrus-sasl-plain cyrus-sasl-lib cyrus-sasl
2.3 创建邮件系统运行时所需要的用户和组
       因为安全和管理方面的考虑,一些软件我们不希望其以root用户为属主而运行,甚至有些软件没有为其创建专用用户,安装不能进行.因此,我们要预先创建postfix系统所用到的用户和组.对于centos或redhat等发行版,用命令useradd创建用户时,也就同时创建了一个同名的组.而另外一些linux发行版创建用户时不会创建同名组,这需要单独执行groupadd来创建所需组.
       下面是我们需要创建的用户和组,及其说明.
       用户名          组名                 作用                                    备注
       mysql           mysql         数据库mysql运行用户
       extmail         extmail        虚拟邮件帐号所使用用户及组            uid:501,gid:501
       postfix          postfix         postfix主程序使用帐号和组
                       postdrop       postfix setid_group                   setgid_group=postdrop
      #这里有2个值得注意的地方,他们是extmail用户,组及postdrop.在postfix邮件系统中,有好几个程序是以extmail来运行,postdrop是postfix主配置文件main.cf里标明的, setgid_group=postdrop.
三 安装软件包
3.1 Mysql安装和配置
  3.1.1 编译安装mysql
     [root@mail /]# cd /usr/local/src
     [root@mail src]# ls
     apache  mysql  php  postfix
     [root@mail src]# cd mysql/
     [root@mail mysql]# ls
     mysql-5.1.36.tar.gz
     [root@mail mysql]# tar –zxvf  mysql-5.1.36.tar.gz
     [root@mail mysql]# cd mysql-5.1.36
     [root@mailmysql-5.1.36]#./configure  --prefix=/usr/local/mysql
     --enable-thread-safe-client  --enable-local-infile --with-charset=gbk  --with-low-memory
     #我在这里出错了,提示: configure: error: No curses/termcap library found
     #google说是缺少ncurses包,挂载安装盘,找到ncurses-devel-5.5-24.20060715.i386.rpm安装
     [root@mailmysql-5.1.36]#make
     [root@mailmysql-5.1.36]#make  install
     make[4]: Entering directory `/data0/software/mysql-5.1.34/mysql-test'
     #到这里时候会等待很久,我开始以为出错了,强行终止了,google发行已经有前人没耐心犯过错了~
  3.1.2 MySQL配置文件
      如果你想要设置一个选项文件,使用support-files目录中的一个作为模板。在这个目录中有4个模板文件,是根据
不同机器的内存定制的。
     [root@mail mysql-5.1.36]# cp support-files/my-medium.cnf /etc/my.cnf
     [root@mail mysql-5.1.36]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld   
  3.1.3设置开机自动启动
     [root@mail mysql-5.1.36]# chmod 700 /etc/rc.d/init.d/mysqld
     [root@mail mysql-5.1.36]# chkconfig --add mysqld
     [root@mail mysql-5.1.36]# chkconfig --level 345 mysqld on
     [root@mail mysql-5.1.36]# cd /usr/local/mysql/
  3.1.4初始化授权表  
     用mysql_install_db创建MySQL
     [root@mail mysql]# ./bin/mysql_install_db  --user=mysql
     设定目录访问权限,并设置mysql,root帐号访问权限。
     [root@mail mysql]# chown -R root .
     [root@mail mysql]# chgrp  -R mysql .
     [root@mail mysql]# chown -R mysql var
  3.1.5 运行mysql
     [root@mail mysql]# bin/mysqld_safe  --user=mysql &
     (如果没有问题的话,应该会出现类似这样的提示:
      [1] 42264
      #Starting mysqld daemon with databases from /usr/local/mysql/var
      如果出现 mysql ended这样的语句,表示Mysql没有正常启动,你可以到log中查找问题,Log文件的通常在 /etc/my.cnf中配置,大多数问题是权限设置不正确引起的.
     日志文件路径
       mysql安装路径(/usr/local/mysql)./var/主机名.err
     我的错误日志路径 /usr/local/mysql/var/mail.drvial.com.err
  3.1.6 测试mysql
     [root@mail mysql]# bin/mysqladmin  ping
     mysqld is alive
     [root@mail mysql]# bin/mysqladmin  version
     bin/mysqladmin  Ver 8.42 Distrib 5.1.36, for pc-linux-gnu on i686
     Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
     This software comes with ABSOLUTELY NO WARRANTY. This is free software,
     and you are welcome to modify and redistribute it under the GPL license
     Server version          5.1.36-log
     Protocol version        10
     Connection              Localhost via UNIX socket
     UNIX socket             /tmp/mysql.sock
     Uptime:                 5 min 56 sec
     Threads: 1  Questions: 2  Slow queries: 0  Opens: 15  Flush tables: 1  Open tables: 8  Queries per second
     avg: 0.5
     查看3306端口是否打开。要注意在防火墙中开放该端口
     [root@mail mysql]# netstat -atln
     Active Internet connections (servers and established)
     Proto Recv-Q Send-Q Local Address               Foreign Address             State
     tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN
  3.1.7设置root密码
     默认安装密码为空,为了安全你需要修改密码。
       [root@mail mysql]#/usr/local/mysql/bin/mysqladmin –u  root  password 密码
     修改环境变量文件/etc/profile,添加mysql的PATH变量.
      [root@mail mysql]#vi /etc/profile
      在以下字段添加添加pathmunge /usr/local/mysql/bin
      # Path manipulation
      if [ "$EUID" = "0" ]; then
        pathmunge /sbin
        pathmunge /usr/sbin
        pathmunge /usr/local/sbin
        pathmunge /usr/local/mysql/bin
      也可以做符号连接如下:
      [root@mail mysql]#cd bin
      [root@mail mysql]#for i in *; do ln -s /usr/local/mysql/bin/$i /usr/bin/$i; done
      这样既可以在任何目录路径下,都可以在shell提示符下直接执行/usr/local/mysql/bin下的管理程序.
  3.1.8添加连接库
    postfix安装时候会用到,否则报错.
    [root@mail mysql]#echo “/usr/local/mysql/lib/mysql” >> /etc/ls.so.conf
    [root@mail mysql]# ldconfig
     Ok!Mysql安装完毕.
3.2 安装apache
  3.2.1 编译安装apache
     [root@mail src]# cd apache
     [root@mail apache]# ls
     httpd-2.2.11.tar.gz
     [root@mail apache]# tar -zxvf httpd-2.2.11.tar.gz
     [root@mail httpd-2.2.11]# ./configure --prefix=/usr/local/apache
     --enable-so  --enable-rewrite --with-zlib  --enable-mods-shared=most
     [root@mail httpd-2.2.11]#make
     [root@mail httpd-2.2.11]#make install
  3.2.2 设置开机自启动
     [root@mail apache]# cd /usr/local/apache/bin/
     [root@mail bin]# cp apachectl  /etc/rc.d/init.d/httpd
     [root@mail bin]# chmod 700 /etc/rc.d/init.d/httpd
     [root@mail bin]# vi /etc/rc.d/init.d/httpd
     在# |||||||||||||||||||| START CONFIGURATION SECTION  ||||||||||||||||||||下添加下面三行:
     #Comments to support chkconfig on RedHat Linux
      #chkconfig: 2345 90 90
      #description:http server
     注意:前面的#不能少,没有这三行,在使用chkconfig时会提示你:service httpd does not support chkconfig
     [root@mail bin]# chkconfig --add httpd
     [root@mail bin]# chkconfig --level 345 httpd on
     这样,在运行级别345上httpd就可以自动启动了。
     对于这个提示:
     httpd: Could not determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName
     只需要编辑httpd.conf,找到ServerName xxxx这一行,去掉前面的注释即可。
  3.2.3 配置apache
    [root@mail bin]# cd /usr/local/apache/conf
    [root@mail conf]# vi httpd.conf
    更改user,group为postfix
    启动apache
    [root@mail conf]#service httpd start
    [root@mail apache]# netstat -atln
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address            Foreign Address           State
    tcp        0      0 :::80                       :::*                        LIST
    ok!apache安装完毕
3.3 安装php
  3.3.1 编译安装php
     [root@mail apache]# cd /usr/local/src/php
     [root@mail php]# tar -zxvf php-5.2.10.tar.gz
     [root@mail php]# cd php-5.2.10
     [root@mail php-5.2.10]#./configure  --prefix=/usr/local/php
     --with-apxs2=/usr/local/apache/bin/apxs
     --with-mysql=/usr/local/mysql/
     --with-mysqli=/usr/local/mysql/bin/mysql_config
     --with-zlib --with-gd --enable-mbstring=all
     #我这里报错
     checking for xml2-config path…
     configure: error: xml2-config not found. Please check your libxml2 installation.
     #google是缺少libxml2-dev包, 挂载安装盘找到libxml2-dev包,并安装.
     [root@mail php-5.2.10]#make
     [root@mail php-5.2.10]#make install
     [root@mail php-5.2.10]# cp php.ini-dist  /usr/local/php/lib/php.ini
  3.3.2编辑apache使支持php
     [root@mail php-5.2.10]#vi /usr/local/apache/conf/httpd.conf
     在DirectoryIndex处添加 index.php
     DirectoryIndex   index.html  index.php
     在AddType添加
     AddType application/x-httpd-php  .php
  3.3.3 测试apache是否支持pap
     [root@mail php-5.2.10]#vi /usr/local/apache/htdocs/index.html
     编辑apache/htdocs目录下的index.html
     添加如下代码
     <?php
     Phpinfo();
     ?>
    保存,重命名为index.php
    [root@mail php-5.2.10]#mv  /usr/local/apache/htdocs/index.html  /usr/local/apache/htdocs/index.php
    在浏览器输入http://localhost 或者http://ip,确定apache是否以支持php.
    Ok,php安装完毕!
3.4 安装phpmyadmin
    (这个不是必须,用于管理Mysql数据库)
  3.4.1解压拷贝到apache目录下
    将所文件解压后拷贝到apache的htdocs目录的某个目录下.
    [root@mail php]# tar -zxvf phpMyAdmin-3.2.0.1-all-languages.tar.gz
    [root@mail php]# cp -r phpMyAdmin-3.2.0.1-all-languages  /usr/local/apache/htdocs/phpMyadmin
    [root@mail php]# cd /usr/local/apache/htdocs/phpMyadmin/libraries
    phpmyadmin的配置文件是libraries/config.default.php.
    [root@mail libraries]# vi config.default.php
  3.4.2解决需要一个密语验证的问题
    phpmyadmin登录MySQL的方式:
    config -- 直接在配置文件中写入一个能登录mysql的帐号和密码,只要浏览这个datamgr目录就可以直接以这个写入配置文件的mysql帐号进行管理mysql的操作。特点是方便,缺点是没有安全性。
    http -- 利用web服务器的验证功能,浏览datamgr这个目录前会跳出一个身份验证窗口,只要mysql帐号对得上就可以有datamgr目录的访问权。这样比较安全,不过用cgi或fastcgi的方式配置php将无法使用该功能,因为cgi不会想服务器发送一些验证信息变量。
   cookie -- 和http一样也会跳出一个验证窗口,不过这个不是用web服务器的验证功能,直接是php写的一个普通登录窗口,只要浏览器支持cookie就行,21世界的浏览器都应该支持cookie这个基本功能,所以我们一般选择cookie验证方式。
    这些字段和config.default.php对应的是
    $cfg['Servers'][$i]['auth_type'] = 'cookie';  (valid choices: config, http, HTTP, signon or cookie)
    $cfg['Servers'][$i]['user'] = 'root'; // MySQL user
    $cfg['Servers'][$i]['password'] = ''; // MySQL password (only needed
    config要三处都要填完,http填auth_type为http就行了,cookie的话除了填这里,还要填写一个加密用的私钥,往配置文件的上面找.
    $cfg['blowfish_secret'] = '111';
    blowfish_secret随便填写一些字符就行了,如111.
  3.4.3为phpMyadmin安装mcrypt
    否则会提示以下警告:无法加载 mcrypt 扩展,请检查您的 PHP 配置
    安装步骤详见:
     http://hi.baidu.com/drvial/blog/ ... 8ac3df277fb5d3.html

[ 本帖最后由 drvial 于 2009-7-20 18:41 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-07-20 18:37 |只看该作者
3.5 安装courier-authlib
  3.5.1 编译安装
   [root@mail postfix]# tar -jxvf courier-authlib-0.62.4.tar.bz2
   [root@mail postfix]# cd courier-authlib-0.62.4
   [root@mail courier-authlib-0.62.4]# ./configure  --prefix=/usr/local/courier-authlib
   --without-authpam  - -without-authdap  --without-authshadow  --without-vchkpw  --with-authmysql
   --with-mysql-libs=/usr/local/mysql/lib/mysql --with-mysql-includes=/usr/local/mysql/include/mysql
   [root@mail courier-authlib-0.62.4]#make
   [root@mail courier-authlib-0.62.4]#make install
  3.5.2 配置authlib
   [root@mail courier-authlib-0.62.4]# cd /usr/local/courier-authlib/
   [root@mail courier-authlib]# chmod 755 var/spool/authdaemon/
   [root@mail courier-authlib]# cd etc/authlib/
   [root@mail authlib]# cp authdaemonrc.dist  authdaemonrc
   [root@mail authlib]# cp authmysqlrc.dist  authmysqlrc
   [root@mail authlib]# vi authdaemonrc
   修改/etc/authdaemonrc 文件为:
   authmodulelist="authmysql"
   authmodulelistorig="authmysql"
   daemons=10
   [root@mail authlib]# vi authmysqlrc
   修改/etc/authmysqlrc 为以下内容,其中501,501 为postfix 用户的UID和GID。
   MYSQL_SERVER localhost
   MYSQL_PORT 3306                   (指定你的mysql监听的端口,这里使用默认的3306)
   MYSQL_USERNAME  extmail      (这时为后文要用的数据库的所有者的用户名)
   MYSQL_PASSWORD extmail        (密码)
   MYSQL_SOCKET  /tmp/mysql.sock
   MYSQL_DATABASE  extmail
   MYSQL_USER_TABLE  mailbox
   MYSQL_CRYPT_PWFIELD  password
   MYSQL_UID_FIELD  '501'  501为postfix用户uid
   MYSQL_GID_FIELD  '501'  501为postfix组gid
   MYSQL_LOGIN_FIELD  username
   MYSQL_HOME_FIELD  concat('/var/mailbox/',homedir)
   MYSQL_NAME_FIELD  name
   MYSQL_MAILDIR_FIELD  concat('/var/mailbox/',maildir)
  3.5.3设置开机自启动
   [root@mail bin]# cp /usr/local/src/postfix/courier-authlib-0.62.4/courier-authlib.sysvinit  
                      /etc/init.d/courier-authlib
   [root@mail bin]# chmod 755 /etc/init.d/courier-authlib
   [root@mail bin]# chkconfig --add courier-authlib
   [root@mail bin]# chkconfig --level 345  courier-authlib on
3.6 安装cyrus-sasl
  3.6.1 编译安装
   [root@mail postfix]# tar -zxvf cyrus-sasl-2.1.18.tar.gz
   [root@mail postfix]# cd cyrus-sasl-2.1.18
   [root@mail cyrus-sasl-2.1.18]# ./configure --prefix=/usr/local/sasl2
   --disable-gssapi --disable-anon  --disable-digest
   --enable-plain  --enable-login  
   --enable-sql  --with-mysql=/usr/local/mysql/
   --with-mysql-includes=/usr/local/mysql/include/mysql/
   --with-mysql-libs=/usr/local/mysql/lib/mysql/ -      
   --with-authdaemond=/usr/local/courier-authlib/var/spool/authdaemon/socket
   #一定要加--enable-login,因为SASL2默认不支持login这种验证方式,而OUTLOOK是通过login来进行SMTP验证的。
   [root@mail cyrus-sasl-2.1.18]#make
   #我在这里执行报错
   auth_getpwent.c:48:20: des.h: No such file or directory
    make[3]: *** [auth_getpwent.o] Error 1
    make[3]: Leaving directory `/usr/local/src/postfix/cyrus-sasl-2.1.18/saslauthd'
    make[2]: *** [all] Error 2
    make[2]: Leaving directory `/usr/local/src/postfix/cyrus-sasl-2.1.18/saslauthd'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/usr/local/src/postfix/cyrus-sasl-2.1.18'
    make: *** [all] Error 2
   解决办法:将安装目录下mac/libdes/public/des.h拷贝到安装根目录
   [root@mail cyrus-sasl-2.1.18]# cp mac/libdes/public/des.h .
   [root@mail cyrus-sasl-2.1.18]#make install
  3.6.2 配置sasl
   创建运行时需要的目录并调试启动
   [root@mail cyrus-sasl-2.1.18]# mkdir -pv /var/state/saslauthd
   在/var/目录下建一个目录给saslauthd进程存在临时数据。假如没有这些目录,运行saslauthd时,会提示出错。
接着为确保CYRUS-SASL2函数库知道怎样验证所收来的SASL认证请求,必须创建一个SASL的配置文档。配置文档名为smtpd.conf位于/usr/local/sasl2/lib/sasl2这个目录,在该文档中您定义您希望使用的认证数据库方法,以下这个例子使用saslauthd来验证认证请求.
   [root@mail cyrus-sasl-2.1.18]# vi /usr/local/sasl2/lib/sasl2/smtpd.conf
   添加以下内容
   pwcheck_method: saslauthd
   mech_list: PLAIN LOGIN   
  3.6.3启动并测试
   [root@mail cyrus-sasl-2.1.18]#/usr/local/sasl2/sbin/saslauthd  -a  shadow  pam  -d
   [root@mail cyrus-sasl-2.1.18]#/usr/local/sasl2/sbin/saslauthd -a shadow pam
   [root@mail cyrus-sasl-2.1.18]#/usr/local/sasl2/sbin/testsaslauthd -u root -p root(用户密码)
   0: OK "Success."
   假如出现以上信息,就说明saslauthd正常运行了。testsaslauthd程式默认是没有编译的,您需要在源码目录树的saslauthd子目录中运行# make testsaslauthd命令生成。
  3.6.4添加连接库
   postfix编译安装会用到,否则报错.
   [root@mail cyrus-sasl-2.1.18]#echo "/usr/local/sasl2/lib" >> /etc/ld.so.conf
   [root@mail cyrus-sasl-2.1.18]#echo "/usr/local/sasl2/lib/sasl2" >> /etc/ld.so.conf
   [root@mail cyrus-sasl-2.1.18]# ldconfig
  3.6.5添加库连接到/usr/lib
   因为postfix会到/usr/lib目录下去找SASL2库,而我们是把程式安装在/usr/local/sasl2中,所以我们要在/usr/lib目录下做一个链接:
   [root@mail ~]# ln -s /usr/local/sasl2/lib/sasl2/ /usr/lib/sasl2
   这个必须连接放到/usr/lib下,否则为postfix开启基于cyrus-sasl的认证功能时,
   Ok,完毕~
3.7 安装postfix
  3.7.1 编译安装
   [root@mail postfix-2.6.0]# tar -zxvf postfix-2.6.0.tar.gz
   [root@mail postfix]# cd postfix-2.6.0
   [root@mail postfix-2.6.0]# make -f Makefile makefiles
   'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql
   -DUSE_SASL_AUTH  -DUSE_CYRUS_SASL  -I/usr/local/sasl2/include/sasl'
   'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/local/sasl2/lib  -lsasl2'
   #这里注意啦! -lmysqlclient -lz –lm这三个开头是L的小写,不是i的大写,这个错误折腾了2小时…
   [root@mail postfix-2.6.0]#make
   [root@mail postfix-2.6.0]#make install
   Install_root: [/]/
   tempdir: [/usr/local/src/ postfix-2.4.5]/tmp
   config_directory: [/etc/postfix] /etc/postfix
   daemon_directory: [/usr/libexec/postfix] /usr/local/postfix/libexec
   command_directory: [/usr/sbin] /usr/local/postfix/sbin
   queue_directory: [/var/spool/postfix] /var/spool/postfix
   sendmail_path: [/usr/sbin/sendmail] /usr/sbin
   newaliases_path: [/usr/bin/newaliases] /usr/bin/newaliases
   mailq_path: [/usr/bin/mailq] /usr/bin/mailq
   mail_owner: [postfix] postfix
   setgid_group: [postdrop]  postdrop
   html_directory: [no] no
   manpages: [/usr/local/man] /usr/local/postfix/man   
   readme_directory: [no] no
   按以上选项安装postfix.
  3.7.2 配置potfix
   生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低:
   [root @ test postfix-2.4.5] #  newaliases
   #这个必须执行,否则后面会报错fatal: open database /etc/aliases.db: No such file or directory
   [root@mail postfix-2.6.0]#cd /usr/local/postfix
   [root@mail postfix]#vi /etc/postfix/main.cf
   修改以下几项为您需要的配置
   myhostname = mail.drvial.com
   myorigin = drvial.com
   mydomain = drvial.com
   mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
   mynetworks = 192.168.2.0/24, 127.0.0.0/8
   inet_interfaces = all
   上述配置中,需要特别注意的是mydomain和myhostname,这2个项的值不要设置成一样,否则postfix将不能正确启动,虚拟邮箱不可用。
   说明:
   myorigin参数用来指明发件人所在的域名;
   mydestination参数指定postfix接收邮件时收件人的域名,即您的postfix系统要接收到哪个域名的邮件;
   myhostname 参数指定运行postfix邮件系统的主机的主机名,默认情况下,其值被设定为本地机器名;
   mydomain参数指定您的域名,默认情况下,postfix将myhostname的第一部分删除而作为mydomain的值;
   mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问;
   inet_interfaces 参数指定postfix系统监听的网络接口;
   注意:
   #在postfix的配置文件中,参数行和注释行是不能处在同一行中的;
   #任何一个参数的值都不需要加引号,否则,引号将会被当作参数值的一部分来使用;
   #每修改参数及其值后执行 postfix reload 即可令其生效;但若修改了inet_interfaces,则需重新启动postfix;
   #如果一个参数的值有多个,可以将它们放在不同的行中,只需要在其后的每个行前多置一个空格即可;postfix会把第一个字符为空格或tab的文本行视为上一行的延续;
  3.7.3设置开机自启动
    [root@mail postfix]#echo ”/usr/local/postfix/sbin/postfix  start” >>/etc/rc.local
    启动postfix
    [root@mail postfix]#/usr/local/postfix/sbin/postfix  start
  3.7.4 可能的postfix启动故障
    1, fatal: file /etc/postfix/main.cf: parameter mail_owner: unknown user name value: postfix mynetworks
       =127.0.0.0/8,10.1.1.0/24
      解決方法inte--inteface=all
    2, fatal: file /etc/postfix/main.cf: parameter mail_owner: unknown user name value: postfix myhostname
       = mail.test.com mydomain = test.com myorigin = test.com inet_interfaces = all
      解決方法:postconf -e mail_owner=postfix
    3, fatal: open database /etc/aliases.db: No such file or directory
      解決方法 执行:newaliase
    4, warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
      找到/etc/postfix/main.cf文件中的alias_maps = hash:/etc/aliases, nis:mail.aliases 去掉其后即可.
  3.7.5连接postfix,验正服务启动状况:
     [root@mail postfix]# telnet localhost 25
     Trying 127.0.0.1...
     Connected to mail.drvial.com (127.0.0.1).
     Escape character is '^]'.
     220 mail.drvial.com ESMTP Postfix
     ehlo mail.drvial.com
     250- mail.drvial.com
     250-PIPELINING
     250-SIZE 10240000
     250-VRFY
     250-ETRN
     250-ENHANCEDSTATUSCODES
     250-8BITMIME
     250 DSN
     mail from:root@ drvial.com
     250 2.1.0 Ok
     rcpt to:drvial@ drvial.com
     250 2.1.5 Ok
     data
     354 End data with <CR><LF>.<CR><LF>
     subject:Mail test!
     Mail test!!!
     .
     250 2.0.0 Ok: queued as AB94A1A561
     quit
     221 2.0.0 Bye
     Connection closed by foreign host.
     切换到redhat用户进行收信:
     [root@mail postfix]# su – drvial
     $ mail
     Mail version 8.1 6/6/93.  Type ? for help.
     "/var/spool/mail/drvial": 1 message 1 new
      >N  1 root@drvial.com
       Wed Sep  5 10:59  15/488   "Mail test!"
      &
  3.7.6 为postfix开启基于cyrus-sasl的认证功能
     使用以下命令验正postfix是否支持cyrus风格的sasl认证,如果您的输出为以下结果,则是支持的:
     [root@mail postfix]#/usr/local/postfix/sbin/postconf  -a
     cyrus
     dovecot
     [root@mail postfix]#vi /etc/postfix/main.cf
     在最后添加以下内容:
############################CYRUS-SASL############################
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_application_name = smtpd
smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!
     [root@mail postfix]#vi /usr/local/lib/sasl2/smtpd.conf
     添加如下内容:
     pwcheck_method: saslauthd
     mech_list: PLAIN LOGIN
     让postfix重新加载配置文件
     [root@mail postfix]#/usr/local/postfix/sbin/postfix reload
     [root@mail postfix]#telnet localhost 25
     Trying 127.0.0.1...
     Connected to mail.drvial.com (127.0.0.1).
     Escape character is '^]'.
     220 Welcome to our mail.drvial.com ESMTP,Warning: Version not Available!
     ehlo mail.drvial.com
     250- mail.drvial.com
     250-PIPELINING
     250-SIZE 10240000
     250-VRFY
     250-ETRN
     250-AUTH PLAIN LOGIN
     250-AUTH=PLAIN LOGIN               (请确保您的输出以类似两行)
     250-ENHANCEDSTATUSCODES
     250-8BITMIME
     250 DSN
  3.7.7 配置postfix以支持虚拟域和虚拟用户
     1、编辑/etc/postfix/main.cf,添加如下内容:
########################Virtual Mailbox Settings########################
virtual_mailbox_base = /var/mailbox
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:501  #501为你添加的postfix用户uid
virtual_gid_maps = static:501  #501为你添加的postfix组gid
virtual_transport = virtual
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1
要注意的地方是 virtual_uid_maps及virtual_gid_maps的值,它是postfix用户的uid和postfix组的gid,与前面的文件/usr/local/authlib/etc/authlib/authmysqlrc的"MYSQL_UID_FIELD""MYSQL_GID_FIELD"一定要保持一致,
##########################QUOTA Settings########################
message_size_limit = 14336000
virtual_mailbox_limit = 20971520
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please Tidy your mailbox and try again later.
virtual_overquota_bounce = yes
     2、添加为支持虚拟域和虚拟用户所用到的配置文件,以下4个配置文件是不存在的,需要创建.
编辑/etc/postfix/mysql_virtual_alias_maps.cf ,添加如下内容:
     user = extmail
     password = extmail
     hosts = localhost
     dbname = extmail
     table = alias
     select_field = goto
     where_field = address
编辑/etc/postfix/mysql_virtual_domains_maps.cf ,添加如下内容:
     user = extmail
     password = extmail
     hosts = localhost
     dbname = extmail
     table = domain
     select_field = description
     where_field = domain
编辑/etc/postfix/mysql_virtual_mailbox_limit_maps.cf ,添加如下内容:
     user = extmail
     password = extmail
     hosts = localhost
     dbname = extmail
     table = mailbox
     select_field = quota
     where_field = username
编辑/etc/postfix/mysql_virtual_mailbox_maps.cf ,添加如下内容:
     user = extmail
     password = extmail
     hosts = localhost
     dbname = extmail
     table = mailbox
     select_field = maildir
     where_field = username
   说明:
1、这里用到的数据库及用户的建立可以后文中的extmail说明部分来实现,您可以参照那一部分来理解这里指定的数据库及其用户名等;
2、以上新建文件亦可以从extman安装文件中获得,您也可以由此不用手动输入;
3、虚拟用户邮箱目录我这里沿用了/var/mailbox,你可以指定为别的目录,比如常见到的/var/spool/mail,或者/home/domains等;但如果这里做了修改,请在后文中用到时作了相应的修改;

论坛徽章:
0
3 [报告]
发表于 2009-07-20 18:37 |只看该作者
3.8 安装Courier-IMAP
  3.8.1 编译安装
    [root@mail postfix]# tar -jxvf courier-imap-4.5.1.tar.bz2
    [root@mail postfix]# cd courier-imap-4.5.1
    [root@mail courier-imap-4.5.1]# ./configure  --prefix=/usr/local/courier-imap
    --enable-unicode --disable-root-check --with-trashquota --without-ipv6
    CPPFLAGS='-I/usr/local/courier-authlib/include'
LDFLAGS='-L/usr/local/courier-authlib/lib/courier-authlib'  
    COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig     
[root@mail courier-imap-4.5.1]# make
[root@mail courier-imap-4.5.1]# make install
  
  3.8.2 配置imap
    [root@mail courier-imap-4.5.1]# cd /usr/local/courier-imap/
    [root@mail courier-imap]# cp ./etc/imapd.dist  ./etc/imapd
    [root@mail courier-imap]# cp ./etc/imapd-ssl.dist  ./etc/imapd-ssl
    [root@mail courier-imap]# cp ./etc/pop3d.dist  ./etc/pop3d
    [root@mail courier-imap]# cp ./etc/pop3d-ssl.dist  ./etc/pop3d-ssl
    配置Courier-IMAP,为用户提供pop3服务:
    [root@mail courier-imap]# vi ./etc/pop3d
    POP3DSTART=YES
    注:如果你想为用户提供IMAP服务,则需在"/usr/local/courier-imap/etc/imapd"文件中设置"IMAPDSTART=yes";其它类同;
  3.8.3 设置开机启动
    [root@mail courier-imap]#cd /usr/local/src/postfix/courier-imap-4.5.1/
    [root@mail courier-imap-4.5.1]#cp courier-imap.sysvinit  /etc/rc.d/init.d/courier-imapd
[root@mail courier-imap-4.5.1]#chmod 755 /etc/rc.d/init.d/courier-imapd
    [root@mail courier-imap-4.5.1]#chkconfig --add courier-imapd
    [root@mail courier-imap-4.5.1]#chkconfig --level 2345 courier-imapd on
    [root@mail courier-imap-4.5.1]#service courier-imapd start
  3.8.4新建虚拟用户邮箱所在的目录
    新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:
    [root@mail courier-imap-4.5.1]#mkdir –pv /var/mailbox
    [root@mail courier-imap-4.5.1]#chown –R postfix /var/mailbox
    接下来重新配置SMTP 认证,编辑 /usr/local/lib/sasl2/smtpd.conf:
    [root@mail courier-imap-4.5.1]#vi /usr/lib/sasl2/smtpd.conf
    确保其为以下内容:
    pwcheck_method: authdaemond
    log_level: 3
    mech_listLAIN LOGIN
    authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
3.9 安装Extmail
  3.9.1 解压安装
    [root@mail postfix]# tar -zxvf extmail.tar.gz
    [root@mail postfix]# cp -r extmail-1.0.5/  /usr/local/apache/htdocs/extmail
    [root@mail postfix]# cd /usr/local/apache/htdocs/extmail
    [root@mail extmail]# cp webmail.cf.default  webmail.cf
    [root@mail extmail]# cd html/
    [root@mail html]# cp -r default  ../
    [root@mail html]# cp -r images  ../
    [root@mail html]# cp  index.html  ../
  3.9.2 修改主配置文件
    [root@mail extmail]# vi webmail.cf
    部分修改选项的说明:
    SYS_CONFIG = /usr/local/apache/htdocs/extmail/
    SYS_LANGDIR = /usr/local/apache/htdocs/extmail/lang
    SYS_TEMPLDIR = /usr/local/apache/htdocs/extmail/html
    SYS_MESSAGE_SIZE_LIMIT = 5242880    #用户可以发送的最大邮件
    SYS_USER_LANG = en_US
    语言选项,可改作:
    SYS_USER_LANG = zh_CN
    SYS_MAILDIR_BASE = /home/domains
    此处即为您在前文所设置的用户邮件的存放目录,可改作:
    SYS_MAILDIR_BASE = /var/mailbox
    SYS_MYSQL_USER = db_user
    SYS_MYSQL_PASS = db_pass
    以上两句句用来设置连接数据库服务器所使用用户名、密码和邮件服务器用到的数据库,这里修改为:
    SYS_MYSQL_USER = extmail
    SYS_MYSQL_PASS = extmail
    SYS_MYSQL_HOST = localhost
    指明数据库服务器主机名,这里默认即可
    SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
    连接数据库的sock文件位置,这里修改为:
    SYS_MYSQL_SOCKET = /tmp/mysql.sock
    SYS_MYSQL_TABLE = mailbox
    SYS_MYSQL_ATTR_USERNAME = username
    SYS_MYSQL_ATTR_DOMAIN = domain
    SYS_MYSQL_ATTR_PASSWD = password
    以上用来指定验正用户登录里所用到的表,以及用户名、域名和用户密码分别对应的表中列的名称;这里默认即可
    SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
    此句用来指明authdaemo socket文件的位置,这里修改为:
    SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket
  3.9.3 apache相关配置
    [root @test root] # vi /etc/httpd/httpd.conf
    在这个<Directory "/usr/local/apache/htdocs">…..省略</Directory>后添加
    <Directory "usr/local/apache/htdocs/extmail/cgi">
         Options Indexes FollowSymLinks +ExecCGI
         AllowOverride None
         Order allow,deny
         Allow from all
    </Directory>
    <Directory "usr/local/apache/htdocs/extman/cgi">
        Options Indexes FollowSymLinks +ExecCGI
        AllowOverride None
        Order allow,deny
       Allow from all
     </Directory>
     在这个模块里添加index.cgi,如下:
     <IfModule dir_module>
       DirectoryIndex index.html index.php index.cgi
       </IfModule>
      在这个<IfModule mime_module>模块里添加如下:
      AddHandler cgi-script .cgi
3.10安装Unix-syslog和DBI-1.607,DBD-Mysql
     Extmail依赖unix-syslog,DBD-mysql.DBD-Mysql需要DBI包.
  3.10.1 安装Unix-syslog
     [root @mail postfix]# tar -zxvf Unix-Syslog-0.100.tar.gz
     [root @mail postfix]# cd Unix-Syslog-0.100
     [root@mail Unix-Syslog-1.1]#perl Makefile.PL
     [root@mail Unix-Syslog-1.1]#make
     [root@mail Unix-Syslog-1.1]## make install
  3.10.2 安装DBI-1.607,DBD-Mysql
     [root @mail postfix]# tar –zxvf  DBI-1.607.tar.gz
     [root@mail postfix]# cd DBI-1.607
     [root@mail DBI-1.607]# perl Makefile.PL
     [root@mail DBI-1.607]#make
     [root@mail DBI-1.607]#make install
     [root @mail postfix]# tar –zxvf   DBD-mysql-3.0002.tar.gz
     [root@mail postfix]# cd DBD-mysql-3.0002
     [root@mail DBD-mysql-3.0002]# perl Makefile.PL
     [root@mail DBD-mysql-3.0002]#make
     [root@mail DBD-mysql-3.0002]#make install
     好了,到此为止,您的Webmail已经可以使用了,可以在浏览器中输入指定的虚拟主机的名称进行访问,如下:
     http://localhost/extmail 或者 http://ip/extmail
3.11安装Extman
  3.11.1 解压安装
    [root@mail postfix]# tar -zxvf extman-1.0.0.tar.gz
    [root@mail postfix]# cp -r extman-1.0.0 /usr/local/apache/htdocs/extman
    [root@mail postfix]# cd /usr/local/apache/htdocs/extman
    [root@mail extman]# mkdir /var/tmp/extman
    [root@mail extman]# chown postfix.postfix /var/tmp/extman
    [root@mail extman]# chown -R  postfix.postfix cgi
    [root@mail extmanl]# cd html/
    [root@mail html]# cp -r default  ../
    [root@mail html]# cp -r images  ../
    [root@mail html]# cp  index.html  ../
  3.11.2 配置Extman
    [root@mail html]#vi webman.cf
    修改如下配置
    SYS_CONFIG = /usr/local/apache/htdocs/extman/
    SYS_LANGDIR = /usr/local/apache/htdocs/extman/lang
    SYS_TEMPLDIR = /usr/local/apache/htdocs/extman/html
    SYS_MAILDIR_BASE = /home/domains
    此处即为您在前文所设置的用户邮件的存放目录,可改作:
    SYS_MAILDIR_BASE = /var/mailbox/
    SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
    此处修改为:
    SYS_MYSQL_SOCKET = /tmp/mysql.sock
    SYS_SESS_DIR = /var/tmp/extman/
    SYS_CAPTCHA_ON = 0  #
  3.11.3 建立数据库
    使用extman源码目录下docs目录中的extmail.sql和init.sql建立数据库:
    [root@mail extman]# cd docs/
    [root@mail docs]# mysql -u root -p <extmail.sql
    Enter password:
    [root@mail docs]# mysql -u root -p <init.sql
    Enter password:
    在浏览器中输入以下连接进行访问:
    http://localhost/extman 或者 http://ip/extman
    进入邮件服务器的后台,添加域与添加用户邮箱。默认管理帐号为:root@extmail.org  密码为:extmail*123*。我这里添加了一个 drvial.com 域和一个用户邮箱:drvial@drvial.com.至于开通邮件服务器自动注册邮箱服务,只需要编辑该域,将“允许自由注册邮箱”前面打上勾即可。
  3.11.3校验码和图形日志(这两个我还没弄呢~~)
    可以配置extman/webman.cf中SYS_CAPTCHA_ON = 0  #取消校验码,1为使用校验码,
    (1) 如果您安装后无法正常显示校验码,安装perl-GD模块会解决这个问题。如果想简单,您可以到以下地址下载适合您的平台的rpm包,安装即可:  http://dries.ulyssis.org/rpm/packages/perl-GD/info.html
    (2) extman-0.2.2自带了图形化显示日志的功能;此功能需要rrdtool的支持,您需要安装此些模块才可能正常显示图形日志。
接下来安装图形日志的运行所需要的软件包Time::HiRes、File::Tail和rrdtool,其中前两个包您可以去http://search.cpan.org搜索并下载获得,后一个包您可以到 http://oss.oetiker.ch/rrdtool/pub/?M=D下载获得; 注意安装顺序不能改换。

论坛徽章:
0
4 [报告]
发表于 2009-07-20 18:39 |只看该作者
四 测试系统
4.1测试smtp
     通过以下命令获得 drvial@drvial.com的用户名和密码的BASE64编码
     获得用户名BASE64编码
     [root@drvial extman]# perl -e 'use MIME::Base64;print encode_base64("drvial\@drvial.com")'
     ZHJ2aWFsQGRydmlhbC5jb20=
     获得密码BASE64编码
     [root@drvial extman]# perl -e 'use MIME::Base64;print encode_base64("drvial")'
     ZHJ2aWFs
     [root@drvial extman]# telnet localhost 25
     Trying 127.0.0.1...
     Connected to localhost.localdomain (127.0.0.1).
     Escape character is '^]'.
     220 Welcome to our mail.drvial.com ESMTP,Warning:Version not Available!
     ehlo mail.drvial.com
     250-mail.drvial.com
     250-PIPELINING
     250-SIZE 14336000
     250-VRFY
     250-ETRN
     250-AUTH LOGIN PLAIN
     250-AUTH=LOGIN PLAIN
     250-ENHANCEDSTATUSCODES
     250-8BITMIME
     250 DSN
     auth login
     334 VXNlcm5hbWU6
     ZHJ2aWFsQGRydmlhbC5jb20==
     334 UGFzc3dvcmQ6
     ZHJ2aWFs==
     235 2.7.0 Authentication successful   #正常
     quit
     221 2.0.0 Bye
     Connection closed by foreign host.
4.2测试pop3
     [root@drvial extman]# telnet localhost 110
     Trying 127.0.0.1...
     Connected to localhost.localdomain (127.0.0.1).
     Escape character is '^]'.
     +OK Hello there.
     user drvial@drvial.com
     +OK Password required.
     pass drvial
     +OK logged in.   #正常
     quit
     +OK Bye-bye.
     Connection closed by foreign host.
4.3测试authlib
     [root@drvial extman]# /usr/local/courier-authlib/sbin/authtest -s login drvial@drvial.com drvial
     Authentication succeeded.
     Authenticated: drvial@drvial.com  (uid 501, gid 501)
     Home Directory: /var/mailbox/drvial.com/drvial
           Maildir: /var/mailbox/drvial.com/drvial/Maildir/
             Quota: (none)
     Encrypted Password: $1$uAYUSAHN$mTVYsRgWhXpzfHp9Dqld3/
     Cleartext Password: drvial
           Options: (none)
     如上显示正常
4.4测试sasl
     [root@drvial ~]# /usr/local/sasl2/sbin/testsaslauthd  -u root -p root
     0: OK "Success."  
五 系统排错
     错误总是无处不在,因为每一步都需要输入很多参数,编辑很多配置,很仔细很仔细了,大部分错误的产生还是因为参数写错或者配置写错造成的.为了出现错误后,可以排查.需要学会看日志,需要学会google.
5.1查看日志排错
     Mail的日志是/var/log/maillog
     系统日志是/var/log/messages
     为了获得更详细的日志将配置authdaemonrc
     [root@drvial ~]# vi /usr/local/courier-authlib/etc/authlib/authdaemonrc
     DEBUG_LOGIN=2  设置此项为2,原来默认是0.当系统无错误时在更改为0.
5.2可能的错误及解决办法
     1.warning: SASL authentication failure: cannot connect to Courier authdaemond: Permission denied
       解决方法:检查 authdaemond的socket所在目录及其父目录的属性是否对smtpd可读。如果不可读则出现这个问
                 题(permission的问题)。
     2.warning: SASL authentication failure: cannot connect to Courier authdaemond: No such file or directory
       解决方法:检查/usr/local/lib/sasl2/smtpd.conf,看看是否有多写一个空格,一般空格很难直观的发现.
     3,查看 /var/log/maillog ,报如下错误:
       Sep 17 16:04:56 redhat pop3d: chdir Maildir: No such file or directory
       Sep 17 16:04:57 redhat pop3d: Connection, ip=[192.168.2.1]
       Sep 17 16:04:57 redhat pop3d: chdir Maildir: No such file or directory
       解决方法:authmysqlrc 文件里 MYSQL_MAILDIR_FIELD 字段有空格。
     4,warning: do not list domain test.com in BOTH mydestination and virtual_mailbox_domains
       解决方法:将/etc/postfix/main.cf文件内mydestination设置为空即可,或完全注释也行. mydomain和
                myhostname,这2个项的值不要设置成一样.
     5,fatal: file /etc/postfix/main.cf: parameter mail_owner: unknown user name value:
       postfix mynetworks =127.0.0.0/8,10.1.1.0/24
       解決方法:postconf -e mail_owner=postfix
     6,fatal: file /etc/postfix/main.cf: parameter mail_owner: unknown user name value: postfix myhostname =
       mail.test.com mydomain = test.com myorigin = test.com inet_interfaces = all
       解決方法:配置/etc/postfix/main.cf 中的inte--inteface=all
     7, fatal: open database /etc/aliases.db: No such file or directory
       解決方法:执行:newaliase
     8,warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
       解决方法:找到/etc/postfix/main.cf文件中的alias_maps = hash:/etc/aliases, nis:mail.aliases 去掉其后即可
     9, warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms
        fatal: no SASL authentication mechanisms
        warning: process /usr/libexec/postfix/smtpd pid 16829
       解决方法:
       # ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
参考资料
       1, RHEL4上安装基于postfix的全功能邮件服务器(全部使用目前最新源码包构建)
       http://bbs2.chinaunix.net/viewth ... p%3Bfilter%3Ddigest
       2, Postfix 电子邮件系统精要
         http://www.51cto.com/art/200710/57530.htm
       3, <POSTFIX权威指南>

论坛徽章:
0
5 [报告]
发表于 2009-07-20 22:37 |只看该作者
对于小的应用可以使用的性能也很好的

论坛徽章:
0
6 [报告]
发表于 2009-07-25 15:21 |只看该作者
太经典了,收藏

赞一下楼主的毅力,我开始搞postfix也快2个星期了,其中也因为解决了一些小问题,沾沾自喜,可是到了最后,还是到了最后卡住

希望这次能借楼主的东风,马到成功

[ 本帖最后由 mzq8293 于 2009-7-25 15:26 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2009-08-11 23:25 |只看该作者
extmail uid:gid = 501:501
postfix uid:gid = 502:502

在 /usr/local/courier-authlib/etc/authlib/authmysqlrc
MYSQL_UID_FIELD  '501'  
MYSQL_GID_FIELD  '501'

在 /etc/postfix/main.cf
virtual_uid_maps = static:501  
uid virtual_gid_maps = static:501  

在使用extmail发邮件的时候,查看日志得到以下信息
Aug 12 06:36:00 localhost postfix/smtpd[2621]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Aug 12 06:36:00 localhost postfix/smtpd[2621]: connect from localhost.localdomain[127.0.0.1]
Aug 12 06:36:00 localhost postfix/smtpd[2621]: 3E9041C0183: client=localhost.localdomain[127.0.0.1]
Aug 12 06:36:00 localhost postfix/cleanup[2627]: 3E9041C0183: message-id=<20090811223600.3E9041C0183@mail.mazq.com>
Aug 12 06:36:00 localhost postfix/qmgr[2467]: 3E9041C0183: from=<test1@mazq.com>, size=649, nrcpt=1 (queue active)
Aug 12 06:36:00 localhost postfix/virtual[2629]: warning: maildir access problem for UID/GID=501/501: create maildir file /var/mailbox/mazq.com/test1/Maildir/tmp/1250030160.P2629.localhost.localdomain: Permission denied
Aug 12 06:36:00 localhost postfix/virtual[2629]: warning: perhaps you need to create the maildirs in advance
Aug 12 06:36:00 localhost postfix/smtpd[2621]: disconnect from localhost.localdomain[127.0.0.1]
Aug 12 06:36:00 localhost postfix/virtual[2629]: 3E9041C0183: to=<test1@mazq.com>, relay=virtual, delay=0.16, delays=0.1/0.02/0/0.04, dsn=4.2.0, status=deferred (maildir delivery failed: create maildir file /var/mailbox/mazq.com/test1/Maildir/tmp/1250030160.P2629.localhost.localdomain: Permission denied)

请楼主给看看是怎么回事

论坛徽章:
7
天蝎座
日期:2013-08-16 23:19:32丑牛
日期:2014-01-08 09:20:14寅虎
日期:2014-01-11 11:03:44午马
日期:2014-04-28 11:02:40天秤座
日期:2014-05-16 23:24:24摩羯座
日期:2014-07-20 10:46:04卯兔
日期:2014-08-08 15:21:41
8 [报告]
发表于 2009-08-12 00:28 |只看该作者
正好想从sendmail换成postfix了。
借鉴了。
楼主辛苦。

论坛徽章:
0
9 [报告]
发表于 2009-08-13 19:13 |只看该作者

回复 #7 mzq8293 的帖子

mkdir –pv /var/mailbox
chown –R postfix /var/mailbox
看看/var/mailbox目录的权限

论坛徽章:
0
10 [报告]
发表于 2009-08-15 22:15 |只看该作者
顶啊。。这两天也在弄psotfix,不过好像有点不成功,现在看看你的明白很多。做的不错。。顶一下。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP