下载地址:
http://www.chifeng.name/dist/extmail-project-cluster-mail-system-chifeng.pdf
哲思沙龙第九期
主题:畅谈ExtMail项目和分布式邮件系统
本次沙龙以邮件系统为主题,和大家分享ExtMail开源项目,以及布式邮件系统的设计和原理。
1,ExtMail项目简介,以及系列软件如ExtMail, EMOS等介绍;
2,邮件系统架构的演化,企业邮局,邮件系统虚拟化,单机版,冷备版,邮件系统高可用(HA),分布式邮件系统。
3,着重介绍分布式邮件系统的设计与原理,包括可能遇到的问题以及面临的挑战等等。
沙龙内容适合以下人员参与:企业邮件用户或IT主管,对邮件系统感兴趣的管理员、技术人员,邮件相关的开源软件开发者,都是一次难得的交流机会。
嘉宾:Chifeng
Extmail社区核心成员,多年从事邮件系统运维和开发。
关键字:ExtMail, 分布式邮件系统
礼品:EMOS1.5光盘(正式版), 图书,T恤等
时间:2009年12月12日,星期六,14:00 – 17:00
地点:北京市海淀区北四环西路58号理想国际大厦
报名:哲思技术交流是开放的,任何感兴趣的朋友都可以自由参加。希望大家能够准时到达会场。
知识准备:对邮件系统有一点了解
联系人:孔建军,152-1036-4393
感谢:ExtMail社区,哲思社区,新浪网
关于ExtMail
ExtMail是国内最流行的开源邮件系统,目前服务着数万家企业,每天为数百万用户提供企业邮件服务。
关于哲思
哲思社区(zeuux.com)是中国领先的自由软件互动社区和协作平台。通过采用先进的自由软件和互联网技术,哲思为用户提供创新的在线社区使用体验,包括即时通讯、电子邮件、日历、朋友、博客、活动等丰富强大的互联网功能,以满足自由软件用户对社交、通讯、内容资讯、项目协作等多方面的需求。我们相信,通过创新的在线互动社区,将显著提升中国自由软件事业的发展速度,让自由软件走向大众,我们期待你的加入!
OpenSolaris0811默认用的是Sendmail,作为一个Postfix的fans,当然第一件事就是替换他为Postfix,步骤如下:
1,由于我使用pkgutil安装,所以先装这个工具
pkgadd -d http://blastwave.network.com/csw/pkgutil_i386.pkg
我是x86的平台,如果是sparc平台则装pkgutil_sparc.pkg
2,安装Postfix,执行下面命令,一路按y即可
pkgutil -i postfix
3,执行下面几个命令
svcadm disable sendmail
svcadm enable nfs/client
mkdir /var/spool/postfix
chgrp postdrop /var/spool/postfix/
cd /opt/csw/var/spool/postfix/
find . -depth | cpio -pdm /var/spool/postfix/
cd /etc/ && ln -s opt/csw/postfix/
/opt/csw/bin/newaliases
4,改动几个你常用的参数并且启动postfix
postconf -e myhostname=mail.chifeng.name
svcadm restart cswpostfix
5,发信测试吧,肯定可以了。邮件日志在/var/log/syslog。
6,最好设置一下环境变量,方便使用,这点上我不得不说,OpenSolaris的包管理机制真垃圾,到处乱放!!唉,不说了,贴PATH
PATH=/usr/gnu/bin:/usr/bin:/usr/X11/bin:/usr/sbin:/sbin:/bin:/usr/local/bin:/usr/local/sbin:/root/bin:/opt/csw/bin:/opt/csw/sbin
创建了一个Postfix的镜像站点,每天晚上零点更新一次,欢迎访问,地址如下:
关键字
MTA:邮件传输代理
Postfix介绍
在邮件系统中,Postfix担任MTA的角色。起初,Postfix被设计为用来代理Sendmail,如今的Postfix已经独树一帜,流水线、模块化的设计,灵活的配置和扩展,快速的投递,超强的稳定性和安全性,活跃的开发团队,以及在高负载下的良好表现,使得Postfix已经远远超过了同类软件。
Postfix安装
RPM包的安装方式
如果你使用一个像CentOS这样的Linux操作系统,你可以通过RPM包来安装postfix,CentOS的安装光盘中已经带有Postfix的安装包,你只需要通过yum命令来安装即可。
#yum install postfix
Ports安装方式
如果你使用FreeBSD操作系统,则可以通过Ports来直接安装Postfix,安装前请确保你的Ports tree已经更新到最新。
#cd /usr/ports/mail/postfix/
#make install clean
快速开始
在Postfix成功安装之后,你可以通过如下配置来快速使用Postfix帮助你传递邮件(以FreeBSD操作系统为例)。
#echo ‘sendmail_enable=”NONE” ‘ >> /etc/rc.conf
#echo ‘postfix_enable=”YES” ‘ >> /etc/rc.conf
#postalias /etc/aliases
#/usr/local/etc/rc.d/postfix start
现在,你已经可以使用Postfix来帮你转发邮件了,使用mail命令投递一封邮件试试吧。
#echo “helo world” | mail chifeng@gmail.com
注:持续更新中,完整后发给Qingran。
花了点时间测试了一下OpenLDAP的主辅库同步,记录一下配置文件。
0,假设两台机器分别为:ldap-master.extmail.org ldap-slave1.extmail.org
1,首先要做的是把主库上的数据和配置文件全部拷贝一份到辅库上去,并放到对应的目录下,包含如下文件
/var/db/openldap-data/*
/usr/local/etc/openldap/*
然后重启一下slapd,再进行下面的配置
2,主库上配置slapd.conf类似如下内容,主要是增加了replogfile和replica,前者是指定了同步日志的位置,slurpd会读取这个日志文件,后者则指定了辅库的hostname和binddn,这个binddn需要和辅库上的updatedn一致,表示从这个节点开始同步。
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/extmail.schema
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
modulepath /usr/local/libexec/openldap
moduleload back_bdb
database bdb
suffix “dc=extmail.org”
rootdn “cn=Manager,dc=extmail.org”
rootpw secret
replogfile /var/db/openldap-data/replog
replica host=ldap-slave1.extmail.org:389
binddn=”cn=Manager,dc=extmail.org”
bindmethod=simple credentials=secret
directory /var/db/openldap-data
index objectClass eq
index mail,active,virtualDomain,mailLocalAddress eq,pres
3,辅库的配置,只多了一个updatedn命令
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/extmail.schema
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
modulepath /usr/local/libexec/openldap
moduleload back_bdb
database bdb
suffix “dc=extmail.org”
rootdn “cn=Manager,dc=extmail.org”
rootpw secret
updatedn “cn=Manager,dc=extmail.org”
directory /var/db/openldap-data
index objectClass eq
index mail,active,virtualDomain,mailLocalAddress eq,pres
4,重启slapd,slurpd。然后在主库上更新一条记录,查看是否同步过来。
master: /var/db/openldap-slurp/replica/slurpd.replog
slave: /var/log/debug.log
BCC(blind carbon-copy)
隐蔽副本。在邮件里面一般叫暗送或密送。跟CC不同,BCC不会在header里面留下任何痕迹,但是maillog里面会有记录。如果BCC过去的那个地址不能接收,同样会产生bounce信息给sender。
这儿有一个视频帮助了解CC,BCC
http://v.youku.com/v_show/id_cj00XMTAxODM5MjQ=.html
在postfix中,有三个参数涉及到BCC。
always_bcc
很明显了,总是暗送。比如我们配置always_bcc=chifeng@extmail.org,只要经过postfix队列的邮件都会暗送一份给chifeng@extmail.org这个邮件地址。
sender_bcc_maps
根据字面意思,就知道是指定发件人为谁的暗送一份到一个指定的地址。假设用hash表来存储。
配置sender_bcc_maps = hash:/usr/local/etc/postfix/sender_bcc,然后编辑sender_bcc这个文件
test@extmail.org test_bak@extmail.org
然后postmap一下,那么test@extmail.org发出的每一封邮件都会暗送一份到test_bak@extmail.org。
recipient_bcc_maps
这个跟sender_bcc_maps意思一样,唯一不同的就是sender替换为recipient了,就不废话了。
postfix提供这三个参数,让我们很方便的就能够对整个邮件系统的邮件进行归档处理,监控每一封邮件,也可以有针对性的对某一些用户的邮件进行监控。注意:很有可能你已经被bcc了。:D
Extmail Release
Extmail-1.0.4和Extman-0.2.4发布了,这次设计改动比较多,具体可以参考这儿。这次与以往的最大不同就是,我们team的4个人均对新版的发布做出了不同的贡献。当然bbc贡献最大,不过团队威力已经在逐步显现!:)
FreeBSD ports我已经send-pr。
下载地址:http://www.extmail.org/download
演示地址:http://demo.extmail.org
ExtMail Solution for FreeBSD
http://www.extmail.org/docs/extmail_solution_freebsd/
这个文档的确是很久都没有更新过了,不是没有时间,就是一个字,懒!很多软件已经升级到了新版,参数也有一定的改动。现在终于又让他与时俱进了。。。1)感谢hzqbbc的催促。2)感谢delphij的mail指出了LDAP部分的错误。
新版基于FreeBSD6.3 Release,Postfix2.4.6。重要特点是一切基于ports,貌似那个老大说过一句名言:”有ports用ports,没有ports做个ports也要用ports”。我们鄙视那些用FreeBSD又不用ports的人。:D