爱咋咋地
分类: 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
>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