搭建基于iRedMail的邮件服务器

虽说现在企业邮箱解决方案很多,但是作为一个技术死宅,怎么能不自己搭一套玩玩呢。

经过若干小时的研究,发现基于开源软件的邮件解决方案主要有以下三种:

  • Mail-in-a-Box
  • Modoboa
  • iRedMail

其中iRedMail感觉最为完善和成熟。作为企业应用,决定先拿它试验。

其实所有的安装配置过程都可在官网( http://iredmail.org/ )找到,这里汇总一下以便于再次操作。

环境

初始的Ubuntu 14.04 x64环境(已执行apt-get update && apt-get upgrade,但未安装任何服务软件)。

开始安装前需要设置hosts,将服务器完整域名(FQDN)添加至 /etc/hosts 中(FQDN需要在最前面),如(假设我们的服务器域名是 mail.xx.com,邮箱域名是 xx.com):

1
127.0.0.1 mail.xx.com mail

安装

首先下载最新的稳定版本:
http://www.iredmail.org/download.html

解压缩并运行安装脚本:

1
2
3
tar xjf iRedMail-xxx.tar.bz2
cd iRedMail-xxx
sudo bash iRedMail.sh

安装脚本会先更新及安装必须的系统软件,然后显示一个蓝色的界面以询问若干问题。在这里我选择了MySQL作为用户数据库,Nginx作为前端Web Server。

在完成问题之后,脚本会给出一个信息汇总,然后提示继续安装。在继续安装的过程中,还会提示是否启用iRedMail提供的防火墙,同样选择Yes。

安装过程共持续几分钟(取决于网络速度),完成后重启一次系统,即可通过浏览器访问邮箱和管理界面了(地址分别是 https://mail.xx.com/mail https://mail.xx.com/iredadmin)。初始管理账号是 postmaster@xx.com ,密码在安装过程中设置。

配置修改

SSL证书

如果你有购买域名的SSL证书,可在/etc/nginx/conf.d/default.conf中配置以启用。iRedMail默认会生成自签名的证书,使用浏览器打开时会有警告信息。

附件尺寸

默认情况下,附件尺寸不能超过10MB,既然是自己搭的服务,怎么能有此种限制呢!果断改之:

http://www.iredmail.org/docs/change.mail.attachment.size.html

参考以上网址,基本分为三步(假设我们改为100MB)。

1、修改postfix配置

1
2
3
4
sudo postconf -e message_size_limit='104857600'
sudo postconf -e mailbox_size_limit='104857600'

sudo /etc/init.d/postfix restart

2、修改Roundcube限制

先修改php设置(/etc/php5/fpm/php.ini):

1
2
3
memory_limit = 200M;
upload_max_filesize = 100M;
post_max_size = 100M;

然后修改 /opt/www/roundcubemail/.htaccess

1
2
3
php_value    memory_limit   200M
php_value upload_max_filesize 100M
php_value post_max_size 100M

重启服务

1
sudo service php5-fpm restart

3、修改Nginx配置

修改 /etc/nginx/nginx.conf 中的 client_max_body_size

1
client_max_body_size 100m;

重启服务

1
sudo service nginx restart

DNS设置

做完上面这些步骤之后,你的mail server已经可以正常访问和管理了,但是还无法收发邮件。所以这最后一步就是设置DNS。参考地址:
http://www.iredmail.org/docs/setup.dns.html

MX记录

这是邮件服务专用的DNS记录。将其指向你的邮件服务器即可。比如:

1
2
3
NAME            PRIORITY    TYPE    DATA

xx.com. 10 mx mail.xx.com

SPF记录

SPF用于防止别人盗用你的域名发垃圾邮件。一般可用TXT类型的DNS记录来设置:

1
xx.com.   3600    IN  TXT "v=spf1 mx mx:xx.com -all"

DKIM记录

也和垃圾邮件有关,详情看网站说明吧,懒得翻译了 哈哈

首先,需要获取签名信息

1
sudo amavisd-new showkeys

会得到一串类似下面的文本

1
2
3
4
5
6
dkim._domainkey.xx.com.   3600 TXT (
"v=DKIM1; p="
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYArsr2BKbdhv9efugByf7LhaK"
"txFUt0ec5+1dWmcDv0WH0qZLFK711sibNN5LutvnaiuH+w3Kr8Ylbw8gq2j0UBok"
"FcMycUvOBd7nsYn/TUrOua3Nns+qKSJBy88IWSh2zHaGbjRYujyWSTjlPELJ0H+5"
"EV711qseo/omquskkwIDAQAB")

将子域名 dkim._domainkey 设置为TXT记录,内容为括号中的每一行内容去掉双引号连接起来的字符串。

设置完成后可使用以下命令测试是否正确:

1
sudo amavisd-new testkeys

PTR记录

反向域名解析,即将服务器的IP地址映射到域名。此步骤可选,可降低被认定为垃圾邮件的概率,但是需要联系服务器接入ISP进行设置。

测试

恭喜你,邮件服务器配置完成啦!

你可以先在邮箱界面给自己发个邮件测试一下,如果没有问题的话,再尝试向其他邮箱发信或者收信吧。

如果无法收发邮件,可查看 /var/log/mail.log 看看是否有可用的错误信息。