Think Cloud Think Oracle
一、自建邮件服务器的原则
客户原来的想法是直接购买商业版的企业邮件服务器,结果直接被他老板给驳回了,原因有两点:一是企业邮件服务器中难免会有公司商业机密信息,跑在共享的公有云环境中,安全很难保证;第二点是公司需要至少3TB的邮件存储空间,商业版的邮件服务器报价太高了。
本文中记录了在Oracle IaaS环境搭建企业级邮件服务器的全部关键步骤和技术指标,涉及主机名处理、软件安装、DNS记录解析、反垃圾邮件、邮件客户端配置、域名与账户管理等关键步骤,所以行文有些冗长。以下文字内容为技术文档形式,您可以选择性阅读。
二、硬件环境与软件配置
1、IaaS环境:
硬件配置:2 OCPU 15G内存 3TB存储空间,600用户,每人5G存储空间
操作系统:Ubuntu 16.04 LTS 64位
主机名:
dc9XXX.compute-XXXXX.oraclecloud.internal
2、邮件服务器软件:
iRedMail是一个开源、免费的邮件服务器项目,其核心组件及其对应的功能主要有:
Postfix: SMTP 服务器;
Dovecot:POP3/IMAP/Managesieve 服务器;
Apache: Web服务器;
MySQL: 用于存储其它程序的数据,也可用于存储邮件帐号;
Amavisd: 提供 DKIM 签名及校验、SPF校验、为外发邮件添加“免责声明”内容,并调用 SpamAssassin 做基于邮件内容的发垃圾扫描,调用 ClamAV 做邮件病毒扫描;
Awstats: 用于分析 Apache 和 Postfix 日志文件,并生成简单的图表;
iRedAdmin:基于web的邮件帐号管理程序。
三、iRedMail安装前的准备
1、官方网站:http://www.iredmail.org/
3、执行:hostname -f 检查你的域名设置是不是正确。
4、最后执行:hostname -F /etc/hostname 让域名设置生效。
5、到你的域名DNS管理处,将域名的DNS解析到你的邮件服务器上。
6、同时添加MX记录,如下图所示:
四、iRedMail安装方法
1、执行以下代码,下载并安装iRedMail,本篇文章以Ubuntu作为操作对象,内存要求最低512MB以上:
sudo apt-get update
sudo apt-get install bzip2
wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.7.tar.bz2
tar xjf iRedMail-0.9.7.tar.bz2
cd iRedMail-0.9.7
bash iRedMail.sh
2、接着就会进入到iRedMail 安装进程的欢迎页面。
3、同意后,输入你想要安装iRedMail 的位置。
4、勾选你想要安装的数据库组件,一般我们选择MysqL用来存储数据。
5、设置MysqL管理员密码。
6、填写你的邮件域名,这个域名和刚刚设置的主机域名是不能一样的。
7、接着设置Webmail和iRedAdmin管理员密码。
8、最后,就是选择iRedMail的组件,这些组件提供的都是非常实用的功能。
9、在安装组件的过程中,还会生成一些配置,你只要输入Y,回车。
10、最后,iRedMail安装完成,同时还会显示账号和密码等配置信息。
11、重启系统。
五、iRedMail管理使用
Roundcube webmail: http://your_server/mail/
iRedAdmin: http://your_server/iredadmin/
phpLDAPadmin:http://your_server/phpldapadmin/
phpMyAdmin:http://your_server/phpmyadmin/
Awstats: http://your_server/awstats/awstats.pl?config=web (或者 ?config=smtp)
4、Roundcube webmail写信页面。(支持HTML和TXT两种模式)
6、iRedAdmin是一个邮局服务器管理平台。可以添加、删除、停用用户账户和邮件域。
7、在iRedAdmin中可以查看并管理你的服务器配置,还可以对管理员和账号进行管理。
9、另外iRedAdmin还可以添加账号、域名、用户等。
10、你也可以进入phpMyAdmin 来进行MysqL管理和调整。
六、iRedMail设置SPF和DKIM
注:这部分关键点就是DNS解析规则要配置正确。
1、SPF是指Sender Policy Framework,是为了防范垃圾邮件而提出来的一种DNS记录类型,SPF是一种TXT类型的记录。不给iRedMail设置好SPF,你发出去的邮件基本上会被判定为垃圾邮件。
2、添加SPF也很简单,到你的域名DNS处添加TXT,值为(注意替换成你自己的):v=spf1 mx mx:mail.techdao.info –all 或者是 v=spf1 ip4:1.2.3.4 -all
3、DKIM(DomainKeys Identified Mail)基于传统的密钥认证方式,产生公钥(public key)和私钥(private key),公钥将会存放在 DNS服务器中, 而私钥会存放在发信服务器上。数字签名由发送服务器自动产生,并依附在邮件头中,发送到收信服务器里。
4、 邮件的接收端将会对邮件头中的签名和从DNS获取公钥进行验证, 检查邮件是否被伪造。 DKIM签名是现行通用的反垃圾技术之一,有了该配置, 邮件的到达率将会显著提升。
5、执行:amavisd showkeys 生成密钥,或者用命令:amavisd-new showkeys ,比如:
6、复制密钥,到你的域名DNS管理处添加TXT记录,记录值就是密钥。
7、再执行:amavisd testkeys 验证,成功则会显示通过。或者用命令:amavisd-new testkeys
七、iRedMail的pop3和SMTP、
批量创建用户、支持大附件
1、iRedMail支持pop3和SMTP,可以选择加密和非加密,非加密的端口pop使用110,smtp是25,加密的是995和465。Thunderbird要用993和587端口。
cd iRedMail-0.8.7/tools/
bash create_mail_user_MySQL.sh exmple.com user1 user2 user3
4、这个时候,会创建output.sql 文件
mysql -uroot -p
mysql> USE vmail;
mysql> SOURCE $path/to/output.sql;
STORAGE_BASE_DIRECTORY=”/var/vmail/vmail01″ #如果你安装的时候修改的邮件的存储路径
LDAP_SUFFIX=”dc=iredmail,dc=org” #你的ldap SUFFIX
BINDPW=’passwd’ #ldap管理员cn=manager 密码
5、最后,你也可以直接运行脚本,创建用户
bash create_mail_user_OpenLDAP.sh example.com user1 user2
6、客户端发送大附件。如果你是希望邮件客户端发送大附件,你需要运行
# postconf -e message_size_limit=’104857600′ #把附件增加到100m
7、重启postfix服务
/etc/init.d/postfix restart
upload_max_filesize = 100M;
post_max_size = 100M;
9、然后是修改 /usr/share/apache2/roundcube/.htaccess 文件
php_value upload_max_filesize 100M
php_value post_max_size 100M
10、最后,重启apache服务: /etc/init.d/apache2 restart
注意:iRedMail默认会开启,自动更新模式,全部的系统组件均会自动更新,更新报告会发到管理员邮件组。
八、iRedMail开源邮件服务器使用小结
1、iRedMail执行密钥生成的命令amavisd showkeys 和amavisd-new showkeys 作用是一样的,只不过有些操作系统不支持amavisd命令,改用amavisd-new 就好了。
2、iRedMail提供了详尽的日志报告,如果你出现无法发信或者无法收信,都可以从日志报告查找到原因,经常导致错误的原因可能是postfix、Dovecot等没有正常运行。
推荐阅读