免费注册 查看新帖 |

Chinaunix

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

[Mail] CentOS 5.1下 postfix + extmail + dovecot + maildrop 最新版安装笔记(原创) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-11 13:09 |只看该作者 |倒序浏览
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:
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.8.tar.gz

先说明一下几个模块的搭配。

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

  1. base_dir=/var/run/dovecot
  2. protocols=imap imaps pop3 pop3s
  3. listen=*
  4. disable_plaintext_auth = no
  5. ssl_disable = yes
  6. mail_location = maildir:/var/vmail/%d/%n/Maildir
  7. pop3_uidl_format=%08Xu%08Xv

  8. auth default {
  9.   ...
  10.   mechanisms = plain login digest-md5 cram-md5
  11.         
  12.   # 去掉注释
  13.   passdb sql {
  14.           args = /etc/dovecot/dovecot-sql.conf
  15.   }
  16.   ...
  17.   # 去掉注释
  18.   userdb sql {
  19.           args = /etc/dovecot/dovecot-sql.conf
  20.   }
  21.   ...
  22.   socket listen {
  23.     ...
  24.     client {
  25.       path = /var/spool/postfix/private/auth
  26.       mode = 0660
  27.       user = postfix
  28.       group = postfix
  29.     }
  30.   }
  31. }
复制代码



配置dovecot-sql.conf
#cp dovecot-sql-example.conf dovecot-sql.conf
#vi dovecot-sql.conf
  1. driver = mysql
  2. connect =  host=localhost dbname=extmail user=extmail password=extmail
  3. default_pass_scheme = MD5-CRYPT

  4. password_query = SELECT username AS user, password AS password \
  5.    FROM mailbox WHERE username = '%u' AND active = '1'

  6. user_query = \
  7.   SELECT maildir as home,2001 as uid ,2001 as gid \
  8.   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
  1. myhostname = mail.abc.com
  2. mydomain = abc.com
  3. myorigin = $mydomain
  4. mydestination = $myhostname localhost localhost.$mydomain
  5. mynetworks = 127.0.0.0/8
  6. inet_interfaces = all
  7. home_mailbox = Maildir/

  8. sendmail_path = /usr/sbin/sendmail
  9. newaliases_path = /usr/bin/newaliases
  10. mailq_path = /usr/bin/mailq
  11. setgid_group = postdrop
  12. html_directory = no
  13. manpage_directory = /usr/local/man
  14. sample_directory = /etc/postfix

  15. #=====================Vritual Mailbox settings=========================
  16. virtual_mailbox_base = /var/vmail/
  17. virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
  18. virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
  19. virtual_alias_domains =
  20. virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
  21. virtual_uid_maps = static:2001
  22. virtual_gid_maps = static:2001
  23. virtual_transport = virtual

  24. #====================QUOTA========================
  25. message_size_limit = 52428800
  26. mailbox_size_limit = 209715200
  27. virtual_mailbox_limit = 209715200
  28. virtual_create_maildirsize = yes
  29. virtual_mailbox_extended = yes
  30. virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
  31. virtual_mailbox_limit_override = yes
  32. virtual_overquota_bounce = yes

  33. #====================SASL ESMTP Authenticat=================
  34. smtpd_sasl_auth_enable = yes
  35. smtpd_sasl_type = dovecot
  36. #smtpd_sasl_path 注意这个是dovecot的sasl路径,与 dovecot.conf 里的对应
  37. smtpd_sasl_path = private/auth
  38. broken_sasl_auth_clients = yes
  39. smtpd_recipient_restrictions =  permit_mynetworks,
  40. permit_sasl_authenticated,
  41. reject_invalid_hostname,
  42. reject_non_fqdn_hostname,
  43. reject_unknown_sender_domain,
  44. reject_non_fqdn_sender,
  45. reject_non_fqdn_recipient,
  46. reject_unknown_recipient_domain,
  47. reject_unauth_pipelining,
  48. reject_unauth_destination
  49. smtpd_sasl_local_domain =
  50. smtpd_sasl_security_options = noanonymous
  51. smtpd_banner=$myhostname ESMTP


  52. readme_directory = no
  53. command_directory = /usr/sbin
  54. daemon_directory = /usr/libexec/postfix
  55. queue_directory = /var/spool/postfix
  56. mail_owner = postfix
  57. data_directory = /var/lib/postfix
复制代码




启动服务
dovecot
postfix start

如果出错,看看 /var/log/maillog

未完待续...

论坛徽章:
0
2 [报告]
发表于 2008-10-11 22:12 |只看该作者
支持原创

.......

论坛徽章:
0
3 [报告]
发表于 2010-03-01 21:26 |只看该作者
支持楼主,这几天测试一下dovecot+postfix+mysql
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP