企业级开源邮件系统搭建的全过程:

前言:此过程为搭建企业用的邮件系统,在企业里邮件这种通信是必然存在的。当然可以选择微软的Exchange,但现在大部分企业线上跑的系统都是开源的,所以实现这种开源体系的邮件系统也是必然的。

好处:
1.开源,就是意味着免费

2.自由,就是可以随意利用组件来实现想要的功能

3.方便,就是随便找台机器装个开源的linux就是部署

4.维护需要专门的人员(此为一点小弊端,不像购买微软的Exchange,可以买服务)

实现所需组件:Postfix+dovecot+Cyrus SASL+squirrelmail
一、平台构建

首先就是LAMP平台的部署,其实除开Mysql是必须的之外,像Apache假如不用webmail的话就不用装,Php也是为了支持web页面的,但在此是为了搭建个满足大部分企业的需求,所以都安装了。以下都是采用的源码方式安装,也可直接yum装。

1.1 Apache的安装:

#tar -zxf httpd-2.2.9.tar.gz -C /usr/local/src #cd /usr/local/src/httpd-2.2.9 #./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite #make #make install

 
1.2 Mysql的安装:

首先安装软件: #useradd -M -s /sbin/nologin mysql #tar zxf mysql-5.0.56.tar.gz -C /usr/local/src #cd /usr/local/src/mysql-5.0.56 #./configure --prefix=/usr/local/mysql #make #make install 安装后配置: #cd /usr/local/src/mysql-5.0.56 #cp support-files/my-medium.cnf /etc/my.cnf           #复制主配文件(中等数据库规模) #/usr/local/mysql/bin/mysql_install_db --user=mysql   #初始化  #chown -R root:mysql /usr/local/mysql #chown -R mysql /usr/local/mysql/var  #echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf #添加库文件路径 #ldconfig                                             #刷新库文件搜索路径  启动 #/usr/local/mysql/bin/mysqld_safe --user=mysql &      #后台安全启动  #cd /usr/local/src/mysql-5.0.56 #cp support-files/mysql.server /etc/init.d/mysqld     #复制启动脚本 #chmod +x /etc/init.d/mysqld #chkconfig --add mysqld                               #添加到系统自启动服务中 #chkconfig mysqld on #echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile #设置系统全局的环境变量 PATH 值,方便使用 Mysql 数据库命令

1.3 PHP 软件 

安装软件: #tar jxf php-5.2.6.tar.bz2 -C /usr/local/src #cd /usr/local/src/php-5.2.6 #./configure --prefix=/usr/local/php5 --enable-mbstring \ --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql \ --with-config-file-path=/usr/local/php5 #make #make test #make install 安装后配置: #cd /usr/local/src/php-5.2.6 #cp php.ini-dist /usr/local/php5/php.ini #复制配置文件  #vi /usr/local/apache2/conf/httpd.conf   #修改 Apache 服务的主配置文件 LoadModule php5_module modules/libphp5.so 确认这行的存在(否则重新编译安装apache) AddType application/x-httpd-php .php     #添加这行记录 DirectoryIndex index.php index.html      #在这行添加关于 php 格式的首页

1.4 测试
Apache 测试
#vi /usr/local/apache2/htdocs/test.php

<?php phpinfo(); ?>

IE 浏览器中输入网址 http://ip/test.php
看到页面为php环境信息表示跟 Apache 服务整合成功!!!
Mysql 测试
#vi /usr/local/apache2/htdocs/testdb.php

<?php $link=mysql_connect ('locahost' ,'test',' ' ); if (!$link) echo "Fail !!!"; else echo "Success !!!"; mysql_close( ); ?>

IE 浏览器中输入网址 http://ip/testdb.php
看到“Success!!!”字样表示跟 Mysql 服务整合成功!!!
 
二、Postfix 软件安装

下面是正式关于邮件系统的组件安装:

2.Postfix(核心组件,提供发信)
2.1 停止系统自带的 sendmail 软件
#service sendmail stop
#chkconfig --level 35 sendmail off
2.2 编译安装 postfix 软件

#groupadd -g 1200 postdrop #groupadd -g 1000 postfix #useradd -M -u 1000 -g postfix -G postdrop -s /sbin/nologin postfix  #不创建宿主目录附属组 安装软件: #tar zxf postfix-2.4.6.tar.gz -C /usr/local/src #cp postfix-2.4.6-vda-ng.path.gz /usr/local/src  #补丁文件,用以支持虚拟用户设置配额 #cd /usr/local/src #gunzip postfix-2.4.6-vda-ng.path.gz #cd postfix-2.4.6 #patch -p1 < ..../postfix-2.4.6-vda-ng.patch    #打补丁 #make makefiles \ 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH \ -DUSE_CYRUS_SASL -I/usr/include/sasl' \ 'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2' #make #make install

备注:安装过程会出现互动提问,直接使用默认设置即可。
 
三、Postfix 相关配置
 
3.1 目录结构:
/etc/postfix         工作目录
/usr/libexec/postfix 服务器程序文件
/var/spool/postfix   邮件队列目录
                   incoming 刚接收到的邮件
                   active   正在投递的邮件
                   deferred 以前投递失败的邮件
                   hold     被阻止发送的邮件
                   corrupt  不可读或者不可分析的邮件
/usr/sbin 该目录下有以下一些管理工具程序
                   postalias 构建、修改、查询别名表
                   postconf  显示、编辑 main.cf 配置文件
                   postfix   启动、停止服务
                   postmap   构造、修改、查询表
                   postqueue 管理邮件队列,普通用户使用
                   postsuper 管理邮件队列,root 用户使用
3.2 配置文件:
/etc/postfix/main.cf   是 postfix 服务的配置文件
/etc/postfix/master.cf 是 master 程序的配置文件
命令:#postconf    查看当前 postfix 服务所使用的配置参数
      #postconf -n 查看不同于默认值的配置参数
常规操作:
#postconf -n > main2.cf 只保留与默认值不同的参数,以提高可读性
#mv main.cf main.cf.bak 将原有配置文件改名备份
#mv main2.cf main.cf
3.3 主配文件修改:
#vi /etc/postfix/main.cf

inet_interfaces = 192.168.4.1,127.0.0.1   #监听的 ip 地址,默认值为 all myhostname = mail.xt.com                   #主机名 mydomain = xt.com                          #邮件域名 myorigin = $mydomain                       #外发邮件时发件人地址中的邮件域名 mydestination = $mydomain,$myhostname     #可接收的邮件地址中的域名 home_mailbox = Maildir/                    #邮件存储位置和格式 常用命令: #postfix start            #启动 #postfix check            #检查配置 #postfix stop             #停止 #postfix reload           #重新加载配置

3.4 SMTP 发送邮件测试:
邮件本地账户管理
#groupadd mailusers 
#useradd -g mailusers -s /sbin/nologin terry
#useradd -g mailusers -s /sbin/nologin shrek
#passwd terry
#passwd shrek                           #新建本机用户用来发信测试
SMTP 发送邮件测试
#telnet localhost 25
 helo localhost
 mail from: terry@xt.com
 rcpt to: shrek@xt.com
 data
 subject: this is a test mail.
 test
 .               #点表示结束,并发送
查看收到的邮件
cat /home/shrek/Maildir/new/518957843753285739.mail.xt.com  #ID为自动生成

四、Dovecot 邮局软件 (提供 pop3 / imap4 协议)  

4.1 安装软件: #useradd -M -s /sbin/nologin dovecot            #保证安全性,可不给shell环境 #tar zxf dovecot-1.1.4.tar.gz -C /usr/local/src #cd /usr/local/src/dovecot-1.1.4 #./configure --sysconfdir=/etc --with-mysql #make #make install 4.2 安装后配置: #cp /etc/dovecot-example.conf /etc/dovecot.conf #复制产生主配文件 #vi /etc/dovecot.conf ssl_disable = yes                  #禁用 SSL 机制 protocols = pop3 imap              #指定邮局协议 disable_plaintext_auth = no        #允许明文密码认证 mail_location = maildir:~/Maildir  #设置邮件存储格式和位置  #vi /etc/pam.d/dovecot 创建 pam 认证文件 auth required   pam_nologin.so auth include    system-auth account include system-auth session include system-auth  #/usr/local/sbin/dovecot -c /etc/dovecot.conf #启动  4.3 POP3 邮件接收测试 #telnet localhost 110   #110为pop方式收信端口  user shrek             #使用shrek身份认证  pass 123pwd            #密码  list                   #列出信件列表  retr 1                 #读取编号1的信件

 
五、Webmail 软件(不是必须的,可为用户提供web页面收发邮件)
5.1 squirrelmail 安装:#这里用的外国的一个小软件,也可以用国内做的比较好的webmail,如:extmail等

#tar jxf squirrelmail-1.4.13.tar.bz2 -C /usr/local/apache2/htdocs #cd /usr/local/apache2/htdocs/ #mv squirrelmail-1.4.13 webmail #cd webmail #tar -jxf zh_CH-1.4.13.tar.gz -C /usr/local/apache2/htdocs/webmail 解压汉化软件   5.2 配置 #cd /usr/local/apache2/htdocs/webmail #mkdir -p attach data #chown -R daemon:daemon attach/ data/ #chmod 730 attach/ #cp config/config_default.php config/config.php 创建配置文件 #vi config/config.php $squirrelmail_default_language = 'zh_CN';#改成中文集 $default_charset = 'zh_CN.UTF-8';              $domain = 'xt.com'; $smtpServerAddress = 'localhost';        #设置发信服务器地址 $smtpPort = 25;                          #设置发信服务器端口 $imap_server_type = 'dovecot';           #设置收信服务器软件 $imapPort = 143;                         #设置收信服务器端口 $data_dir = '/usr/local/apache2/htdocs/webmail/data/ '; $p_w_upload_dir = '/usr/local/apache2/htdocs/webmail/attach/ '; #/usr/local/apache2/bin/apachectl restart 重启 apache 服务

客户端 IE 地址栏中输入 http://mail.xt.com/webmail
即可看见登录界面,登录进去即可正常收发邮件:

六、SMTP 用户认证(现在大部分邮箱都要求smtp认证,防止冒充别人发送邮件)
6.1 所需软件
cyrus-sasl-plain
cyrus-sasl-devel
cyrus-sasl-lib
syrus-sasl         #RHEL5默认安装

6.2 设置 Cyrus SASL 函数库
#cp /usr/lib/sasl2/Sendmail.conf /usr/lib/sasl2/smtpd.conf
#vi /usr/lib/sasl2/smtpd.conf
pwcheck_method: saslauthd
#service saslauthd start
#chkconfig --level 35 saslauthd on

6.3 修改 postfix 服务主配置文件
#vim /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes              #启用SMTP认证
smtpd_sasl_security_options = noanonymous #禁用匿名登录
mynetworks = 127.0.0.1
smtpd_recipient_resrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destionation
解释:设置收件人地址过滤规则从上到下逐一匹配,符合即停止
      允许ip为mynetworks的客户使用本邮件系统投递邮件
      允许通过SMTP认证的用户向外发送邮件
      当收件人地址不包括在postfix的授权网络内时拒绝发送该邮件
6.4 SMTP 发信认证测试
#printf "shrek" |openssl base64              #生成加密字符串
c2hyZWS
#printf "123pwd" |openssl  base64
MTIzcXdI
#telnet mail.xt.com 25
 auth login      #认证登录
 c2hyZWS         #加密后的用户名
 MTIzcXdI        #加密后的密码
 mail from: shrek@xt.com
 rept to: terry@xt.com
 data
 subject: test
 this is a test mail!
 .                                            #以点表示结束
 
7. 邮件群发设置
#vi /etc/postfix/main.cf
alias_maps = bash:/etc/aliases
#vi /etc/aliases
teacher:shrek,terry
#newaliases
此时发给 teacher@xt.com 的邮件会群发给 shrek@xt.com terry@xt.com

8. 设置邮件大小
默认提供了 10M 的邮件大小
#vi /etc/postfix/main.cf

message_size_limit = 20971520    #设置为 20M 邮件大小                                  #该设置对于系统用户和虚拟用户都生效 限制邮箱大小的参数和方法: mailbox_size_limit               #针对 Mailbox 邮件存储方式的情况,默认限制为 50M                                  #只对系统用户生效 virtual_mailbox_limit            #针对虚拟用户,默认限制 50M                                  #安装 VDA 补丁后,可以对使用 Mailbox 或 Maildir 存储方式的用户生效 quota                            #磁盘配额,针对 Linux 系统账户                                  #对 Mailbox 和 Maildir 存储方式的用户都生效

好了,就先到这里了。