Chinaunix首页 | 论坛 | 博客
  • 博客访问: 854305
  • 博文数量: 68
  • 博客积分: 10011
  • 博客等级: 上将
  • 技术积分: 2800
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-04 20:57
文章分类

全部博文(68)

文章存档

2008年(68)

我的朋友

分类: LINUX

2008-10-14 09:49:07

CentOS 5.1下 postfix + extmail + dovecot + maildrop 最新版安装笔记
本文最初发表于 http://hi.baidu.com/delphiss/blog/item/38571c94f7a7d50e7af48052.html转载请注明出处作者:wdy
安装环境是 CentOS 5.1,分区的时候 对 /var/spool/postfix 和 /var/vmail 进行了单独分区。
/var/spool/postfix 是postfix存储队列的地方, /var/vmail 是用来存储虚拟账号邮件的。
CentOS提供了很方便的yum在线安装,我的基本原则是非重要、对版本不敏感的模块尽量用yum安装,邮件系统主要模块则用源码编译安装。
首先用yum安装的模块有: mysql mysql-server mysql-devel db4-devel openssl gcc libxml2 libxml2-devel gcc-c++
几个模块都需要用到PCRE, 前面说的 gcc-c++ 是安装PCRE必须的。下载安装 RCRE:
先说明一下几个模块的搭配。
MTA 用的是 postfix的最新版本 postfix-2.5.5。
web模块是最先需要确定的,因为它决定了mysql表结构,这里选用国产的extmail,其他的根据extmail的需要倒推来确定。
webmail 使用 extmail-1.0.5 ,web管理模块用 extman-0.2.5
最新版本的extmail对maildrop的自动回复、转发等提供了很好的支持,所以MDA采用最流行的maildrop(2.0.4 )
这里面简单说一下为什么要用maildrop。
对虚拟用户投递的支持,postfix自带了一个投递代理(MDA):virtual
virtual投递代理在 master.cf 里描述为:virtual unix - n n - - virtual
如果我们在main.cf 里 设置 virtual_transport = virtual ,就表示对于包含在 virtual_mailbox_domains 域名里的邮件,都使用virtual进行投递。
postfix自带的virtual只提供了最基本的QUOTA功能,如果想使用更复杂的功能,如自动转发,自动回复,邮件自定义过滤等,就需要换成更高级的MDA。
当然可选择的MDA有很多种,比如 procmail, maildrop 等。我这里选用maildrop,为啥?大家都用这个。。。
用户信息存储方式也有很多可选的,比如mysql,ldap等。这里选mysql,原因是各个模块,包括extmail等对这个支持最好最方便最简单。
maildrop 在投递邮件的时候,需要确定一些数据,比如收件用户的Maildir的路径,保存邮件用的uid,gid,邮箱容量等,这些数据需要maildrop的同门师兄 courier-authlib 来提供,所以要先吧courier-authlib装好。
下面要说的是SMTP 的 SASL认证(这个说来话长,有空补上)。postfix的模块化设计在这里也体现出比qmail高明的地方。
postfix 2.3 以后sasl支持三种模块:Cyrus SASL version 1 Cyrus SASL version 2 Dovecot protocol version 1
网上大部分的文章都是讲用 Cyrus SASL 2(并用Cyrus IMAP 提供POP3/IMAP服务),本文采用后起新秀 Dovecot 做为 sasl模块,Dovecot同时提供 POP3/IMAP 服务。
Dovecot使用最新的dovecot-1.1.4 。
开始安装!
下载 postfix-2.5.5.tar.gz
postfix安装的是需要指定几个专门的用户和组,先创建
#groupadd -g 2001 postfix#useradd -g postfix -u 1001 -s /sbin/nologin -M postfix#groupadd -g 2002 postdrop#useradd -g postdrop -u 2002 -s /bin/false -M postdrop
编译#make makefiles CCARGS='-DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\"dovecot\" \-DHAS_PCRE -DHAS_MYSQL \-I/usr/include/ -I/usr/local/include -I/usr/include/mysql/' \AUXLIBS='-L/usr/local/lib -L/usr/lib/mysql -lmysqlclient -lpcre'#make#make install
make install的提问全部回车默认。注意参数 -DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\"dovecot\" 表示启用SASL身份认证,并默认使用dovecot。mysql的几个路径可以根据实际情况做修改,我这里的目录都是yum默认安装的。
先导入mysql表结构和数据。
下载extman-0.2.5.tar.gz解开后进入 docs目录
建库建表:#mysql -u root -p < extmail.sql(注意extmail.sql里配置的数据库,用户名,口令都是extmail)
导入初始数据:#mysql -u root -p < init.sql(先吧 init.sql 文件里的 extmail.org 改成你自己的域名)
把目录下 mysql_*.cf 全部拷贝至 /etc/postfix# cp mysql_*.cf /etc/postfix/
下载 dovecot-1.1.4.tar.gz
#./configure --prefix=/usr/local/dovecot --sysconfdir=/etc/dovecot --with-sql --with-sql-drivers --with-mysql --with-ssl=openssl#make#make install
注:dovecot的安装参考了javaeye unixboy的文章,略有改动
配置dovecot.conf#cd /etc/dovecot#cp dovecot-example.conf dovecot.conf#vi dovecot.conf-------------分割线---------------base_dir=/var/run/dovecotprotocols=imap imaps pop3 pop3slisten=*disable_plaintext_auth = no ssl_disable = yes mail_location = maildir:/var/vmail/%d/%n/Maildirpop3_uidl_format=%08Xu%08Xv
auth default {...mechanisms = plain login digest-md5 cram-md5 # 去掉注释passdb sql { args = /etc/dovecot/dovecot-sql.conf}...# 去掉注释userdb sql { args = /etc/dovecot/dovecot-sql.conf}...socket listen { ... client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix }}}-------------分割线---------------
配置dovecot-sql.conf#cp dovecot-sql-example.conf dovecot-sql.conf#vi dovecot-sql.conf-------------分割线---------------driver = mysqlconnect = host=localhost dbname=extmail user=extmail password=extmaildefault_pass_scheme = MD5-CRYPT
password_query = SELECT username AS user, password AS password \ FROM mailbox WHERE username = '%u' AND active = '1'
user_query = \SELECT maildir as home,2001 as uid ,2001 as gid \FROM mailbox WHERE username='%u' and active='1'
-------------分割线---------------
创建符号链接#ln -s /usr/local/dovecot/sbin/dovecot /usr/bin/dovecot
继续配置 postfix
#mv /etc/aliases /etc/aliases.old#ln -s /etc/postfix/aliases /etc/aliases#/usr/bin/newaliases
# vi main.cf
myhostname = mail.abc.commydomain = abc.commyorigin = $mydomainmydestination = $myhostname localhost localhost.$mydomainmynetworks = 127.0.0.0/8inet_interfaces = allhome_mailbox = Maildir/
sendmail_path = /usr/sbin/sendmailnewaliases_path = /usr/bin/newaliasesmailq_path = /usr/bin/mailqsetgid_group = postdrophtml_directory = nomanpage_directory = /usr/local/mansample_directory = /etc/postfix
#=====================Vritual Mailbox settings=========================virtual_mailbox_base = /var/vmail/virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cfvirtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cfvirtual_alias_domains =virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cfvirtual_uid_maps = static:2001virtual_gid_maps = static:2001virtual_transport = virtual
#====================QUOTA========================message_size_limit = 52428800mailbox_size_limit = 209715200virtual_mailbox_limit = 209715200virtual_create_maildirsize = yesvirtual_mailbox_extended = yesvirtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cfvirtual_mailbox_limit_override = yesvirtual_overquota_bounce = yes
#====================SASL ESMTP Authenticat=================smtpd_sasl_auth_enable = yessmtpd_sasl_type = dovecot#smtpd_sasl_path 注意这个是dovecot的sasl路径,与 dovecot.conf 里的对应smtpd_sasl_path = private/authbroken_sasl_auth_clients = yessmtpd_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_destinationsmtpd_sasl_local_domain =smtpd_sasl_security_options = noanonymoussmtpd_banner=$myhostname ESMTP
readme_directory = nocommand_directory = /usr/sbindaemon_directory = /usr/libexec/postfixqueue_directory = /var/spool/postfixmail_owner = postfixdata_directory = /var/lib/postfix
启动服务dovecotpostfix start
如果出错,看看 /var/log/maillog
未完待续...
阅读(1587) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~