Chinaunix首页 | 论坛 | 博客
  • 博客访问: 746188
  • 博文数量: 176
  • 博客积分: 2548
  • 博客等级: 少校
  • 技术积分: 1749
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-29 16:36
个人简介

爱咋咋地

文章分类

全部博文(176)

文章存档

2024年(1)

2023年(17)

2022年(19)

2021年(3)

2020年(1)

2018年(1)

2017年(1)

2014年(1)

2013年(4)

2012年(11)

2011年(19)

2010年(22)

2009年(71)

2008年(5)

分类: LINUX

2009-09-02 20:46:28

一. 开源软件包

    1). postfix (postfix-2.6.5.tar.gz -- )  

    2). cyrus-imap (cyrus-imapd-2.3.14.tar.gz  ftp://ftp.andrew.cmu.edu/pub/cyrus/cyrus-imapd-2.3.14.tar.gz)

    3). cyrus-sasl (系统自带 或 cyrus-sasl-2.1.23.tar.gz  ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.23.tar.gz)

    4). BerkeleyDB( RHEL 4.7 自带)

    5). Openssl( RHEL 4.7 自带)

    6). Mysql(mysql-5.0.45.tar.gz)

二.安装

    1). Mysql:

    > groupadd mysql

    > useradd -g mysql mysql  

    > ./configure -with-charset=gbk --with-extra-charsets="gbk gb2312 big5 utf8" --with-big-tables --without-man --without-docs

    > make;make install

    > scripts/mysql_install_db --user=mysql

    然后启动mysql服务并测试成功后,再进行下面步骤。

    还需要在/etc/ld.so.conf.d 中添加 mysqlclient.conf文件,文件内容如下:

          mysqlclient.conf的内容如下:

            /usr/local/lib/mysql

     然后运行ldconfig来使之生效

    2). cyrus-sasl

        rhel系统自带了cyrus-sasl开发包和动态库,但在测试过程中发现,有可能系统自带的cyrus-sasl-2.1.19和postfix有兼容性问题,所以下载最新版本的cyrus-sasl-2.1.23,并从源码编译安装。

         ./configure enable-checkapop --enable-login --enable-auth-sasldb --prefix=/usr

         make;make install

    3). postfix:

        > make tidy

        > make makefiles CCARGS="-DHAS_MYSQL -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -DUSE_TLS -I/usr/include/sasl/ -I/usr/local/include/mysql " AUXLIBS="-lsasl2 -ldb-4.7 -lssl -lcrypto -L/usr/local/lib/mysql -lmysqlclient -lz -lm"

        > groupadd postfix
        > groupadd postdrop
        > useradd -g postfix -G postdrop postfix

       > make

       > make install (按提示修改属性,基本可以一路回车)

    4). cyrus-imap > wget ftp://ftp.andrew.cmu.edu/pub/cyrus/cyrus-imapd-2.3.14.tar.gz
       > tar zxf cyrus-imapd-2.3.14.tar.gz
       > cd cyrus-imapd-2.3.14
       > ./configure --with-bdb --with-openssl
       > make
       > make install
       > cd perl/imap/
       > perl Makefile.PL
       > make
       > make install
       > useradd cyrus
       > passwd cyrus


三. 配置服务

     1). Mysql服务配置: (略)

     2). Postfix 服务配置:

        1./etc/postfix/为postfix的配置主目录
                   cd /etc/postfix/
       
                   ( 默认安装时已经有很多配置文件了,并且内容很多。可以把所有配置文件放入一个文件夹内,然后自己从零开始写配置文件内容。这样便于理解postfix的配置意义。)
       
                   mkdir conf
                   mv * conf  //把postfix默认安装的所有配置文件都移到conf目录中,以备参考,我们从头开始自己配置postfix。
       
        2.采用最小配置法
                  (1)postfix 最小配置只用2个配置文件就可以运行了(main.cf 和 master.cf) :
       
                               main.cf中是postfix的大部分功能配置选项。
       
                               master.cf 中为master进程(postfix的主进程)用来管理其他功能进程的配置文件
       
                               ln -s conf/master.cf . //master.cf是postfix主进程使用的配置文件,它控制系统所应该启用的所有进程,这个配置文件基本没什么要改的
                  (2)main.cf 文件内容:
       
                          mydomain=alimail.com
                          mydestination=$mydomain
       
        3.postfix进阶配置(虚拟域+smtp认证)
                vi main.cf
                >#domain   //本地域的配置项
                >mydomain=alimail.com  //本服务器的本地域名
                >mydestination=$mydomain //本服务器的接受发给本地域的所有邮件
                >#myorigin = $mydomain  //还不知道
                >myhostname =als_ims_disktest1 //在添加用户认证的时候,如果没有指定用户域,就默认为这个配置项的域名
                >
                >#virtual domains  //虚拟域的配置项
                >virtual_mailbox_domains = example1.com  //虚拟域名
                >virtual_mailbox_base = /var/mail/vhosts //虚拟域mailbox的存储路径前缀
                >virtual_uid_maps = static:5000   //虚拟域mailbox存储文件所属用户id
                >virtual_gid_maps = static:5000   //虚拟域
                >virtual_mailbox_maps = mysql:/etc/postfix/vmailbox.sql //虚拟域用户与mailbox或maildir之间的映射表
                     //映射表格式为:
                     //[用户名]  [路径]
                     //test@example.com example.com/test/ 最后用"/"结尾的是用maildir方式
                     //test@example.com example.com/test  最后没用"/"结尾的是用mailbox方式
               
                >virtual_mailbox_limit = 0 //配置虚拟账户容量为"无限制"
                >
                >#smtp auth   //smtp认证配置
                >smtpd_sasl_auth_enable  = yes //启用smtp认证
                >smtpd_sasl_type = cyrus //smtp认证方式
                >smtpd_sasl_path = smtpd //smtp认证进程
                >smtpd_sasl_local_domain = $myhostname  //sasl认证时用户的默认域
                >smtpd_sasl_security_options = noanonymous //允许plain认证,不允许匿名认证
                >broken_sasl_auth_clients = yes //支持老的outlook所需要的auth语法风格
               
                >smtpd_recipient_restrictions = //smtpd转发规则
                >        permit_mynetworks
                >        permit_sasl_authenticated
                >        reject_unauth_destination
               
                In mysql:
                mysql> create database postfix;
                mysql> use postfix;
                mysql> create table vmailbox_table ( vuser varchar(255) not null, vmailbox varchar(1024) not null );
                mysql> insert into vmailbox_table(vuser , vmailbox ) value("admin@example1.com","example1.com/admin");
                mysql> select * from vmailbox_table;
               
                vi vmailbox.sql  //采用mysql保存虚拟域用户mailbox映射
                >user = root  //mysql用户名
                >password =  //mysql密码
                >dbname = postfix //应用数据库
                >query = SELECT vmailbox FROM vmailbox_table WHERE vuser='%s' //sql 查询语句
               
                vi /etc/sasl2/smtpd.conf
                >pwcheck_method: auxprop
                >auxprop_plugin: sasldb //通过文件名为sasldb2的bdb数据库文件进行验证,
                   //或者改为pwcheck_method: saslauthd用saslauthd验证服务来进行验证
                >mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 //smtpd支持的认证类型
               
                chmod a+r /etc/sasldb2  //修改验证数据库文件的访问权限
                saslpasswd2 -c test  //创建验证用户信息 -u 选项为该用户所在的域,默认为本机的hostname
               
                mkdir -p /var/mail/vhosts //创建虚拟域mailbox存放的目录
                chmod 755 /var/mail/vhosts //修改该目录的访问权限
                mkdir /var/mail/vhosts/example1.com/  //为每个虚拟域创建mailbox存放目录
                chmod 777 /var/mail/vhosts/example1.com/ //修改该目录权限
               
                postfix reload 
               
                然后就可以用telnet来测试邮件验证服务了
                telnet localhost 25
                                                                <220 als_ims_disktest1 ESMTP Postfix
                >ehlo localhost
                <250-als_ims_disktest1
                <250-PIPELINING
                <250-SIZE 10240000
                <250-VRFY
                <250-ETRN
                <250-AUTH PLAIN LOGIN
                <250-AUTH=PLAIN LOGIN
                <250-ENHANCEDSTATUSCODES
                <250-8BITMIME
                <250 DSN
                >auth plain AHRlc3QAdGVzdA==
                <235 2.7.0 Authentication successful
               
                "auth plain AHRlc3QAdGVzdA=="中后面的字符串(base64后的用户名和密码)可以用:
                perl -MMIME::Base64 -e 'print encode_base64("\0test\0test");'
                的命令得出
               
                如果服务端返回了"235 2.7.0 Authentication successful"证明验证通过。
     3). cyrus-imap服务配置:
            主要参考

            cd 

            拷贝源码文件中的默认配置为cyrus系统的配置文件
            cp ./master/conf/normal.conf /etc/cyrus.conf

            创建imapd的配置文件
            vi /etc/imapd.conf
            >configdirectory: /var/imap
            >partition-default: /var/spool/imap
            >admins: cyrus
            >sasl_pwcheck_method: auxprop
            >allowplaintext:yes

            创建imapd所需要的目录           
            cd /var
            mkdir imap
            chown cyrus imap
            chgrp mail imap
            chmod 750 imap
           
            cd /var/spool
            mkdir imap
            chown cyrus imap
            chgrp mail imap
            chmod 750 imap
           
            cd /usr
            mkdir sieve
            chown cyrus sieve
            chgrp mail sieve
            chmod 750 sieve
           
            运行cyrus-imap自己提供的配置工具
            su cyrus
            tools/mkimap
            exit
           
            修改用于lmtp投递用的socket的访问权限
            chmod a+wr /var/imap/socket/lmtp
            chmod a+wrx /var/imap/socket
            chmod a+wrx /var/imap

            为cyrus-imap服务管理员创建认证信息
            saslpasswd2 -c cyrus

            创建pop/imap账户
            cyradm -u cyrus localhost
            >cm user.

            修改postfix为用lmtp进行投递
            vi /etc/postfix/main.cf

            > virtual_transport = lmtp:unix:/var/imap/socket/lmtp
            postfix reload

阅读(1664) | 评论(0) | 转发(0) |
0

上一篇:Problem of Cyrus-IMAP & Cyrus-SASL

下一篇:IMP

给主人留下些什么吧!~~