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

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

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

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

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

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

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

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

1.1 Apache的安装:


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

 
1.2 Mysql的安装:


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

1.3 PHP 软件 


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

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


  
  1. <?php 
  2. phpinfo(); 
  3. ?> 

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


  
  1. <?php 
  2. $link=mysql_connect ('locahost' ,'test',' ' ); 
  3. if (!$link) echo "Fail !!!"; 
  4. else echo "Success !!!"; 
  5. mysql_close( ); 
  6. ?> 

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

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

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


  
  1. #groupadd -g 1200 postdrop 
  2. #groupadd -g 1000 postfix 
  3. #useradd -M -u 1000 -g postfix -G postdrop -s /sbin/nologin postfix  #不创建宿主目录附属组 
  4. 安装软件: 
  5. #tar zxf postfix-2.4.6.tar.gz -C /usr/local/src 
  6. #cp postfix-2.4.6-vda-ng.path.gz /usr/local/src  #补丁文件,用以支持虚拟用户设置配额 
  7. #cd /usr/local/src 
  8. #gunzip postfix-2.4.6-vda-ng.path.gz 
  9. #cd postfix-2.4.6 
  10. #patch -p1 < ..../postfix-2.4.6-vda-ng.patch    #打补丁 
  11. #make makefiles \ 
  12. 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH \ 
  13. -DUSE_CYRUS_SASL -I/usr/include/sasl' \ 
  14. 'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2' 
  15. #make 
  16. #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


  
  1. inet_interfaces = 192.168.4.1,127.0.0.1   #监听的 ip 地址,默认值为 all 
  2. myhostname = mail.xt.com                   #主机名 
  3. mydomain = xt.com                          #邮件域名 
  4. myorigin = $mydomain                       #外发邮件时发件人地址中的邮件域名 
  5. mydestination = $mydomain,$myhostname     #可接收的邮件地址中的域名 
  6. home_mailbox = Maildir/                    #邮件存储位置和格式 
  7. 常用命令: 
  8. #postfix start            #启动 
  9. #postfix check            #检查配置 
  10. #postfix stop             #停止 
  11. #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 协议)  


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

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


  
  1. #tar jxf squirrelmail-1.4.13.tar.bz2 -C /usr/local/apache2/htdocs 
  2. #cd /usr/local/apache2/htdocs/ 
  3. #mv squirrelmail-1.4.13 webmail 
  4. #cd webmail 
  5. #tar -jxf zh_CH-1.4.13.tar.gz -C /usr/local/apache2/htdocs/webmail 解压汉化软件 
  6.   
  7. 5.2 配置 
  8. #cd /usr/local/apache2/htdocs/webmail 
  9. #mkdir -p attach data 
  10. #chown -R daemon:daemon attach/ data/ 
  11. #chmod 730 attach/ 
  12. #cp config/config_default.php config/config.php 
  13. 创建配置文件 
  14. #vi config/config.php 
  15. $squirrelmail_default_language = 'zh_CN';#改成中文集 
  16. $default_charset = 'zh_CN.UTF-8';              
  17. $domain = 'xt.com'; 
  18. $smtpServerAddress = 'localhost';        #设置发信服务器地址 
  19. $smtpPort = 25;                          #设置发信服务器端口 
  20. $imap_server_type = 'dovecot';           #设置收信服务器软件 
  21. $imapPort = 143;                         #设置收信服务器端口 
  22. $data_dir = '/usr/local/apache2/htdocs/webmail/data/ '; 
  23. $p_w_upload_dir = '/usr/local/apache2/htdocs/webmail/attach/ '; 
  24. #/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.comterry@xt.com

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


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

好了,就先到这里了。