企业级开源邮件系统搭建的全过程:
前言:此过程为搭建企业用的邮件系统,在企业里邮件这种通信是必然存在的。当然可以选择微软的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: [email protected]
rcpt to: [email protected]
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/ ‘; $attachment_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: [email protected]
rept to: [email protected]
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
此时发给 [email protected] 的邮件会群发给 [email protected] 和[email protected]
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 存储方式的用户都生效
好了,就先到这里了。