Ubuntu搭建邮箱服务器——iRedMail

Posted by

iRedMail的优点是安装方便简洁,缺点就是在搭建iRedMail之前,不能安装lnmp的环境,否则很有可能出现搭建错误的情况,并且安装的脚本并不会提示我们安装失败了,之后就会发生一系列玄学的事情,另一个缺点就是iRedMail安装完成后(在选择了安装web服务器的情况下),我们很难再在同一台服务器上搭建一个新的网站,如果搭建了一个新的网站,它会重定向到/mail,如果我们在对应网站子目录中添加/mail文件夹,它就会一直不停地跳转……(应该是我比较菜)

解决办法倒是有一个,就是我们在第三方邮件客户端添加我们这个邮件服务器的用户,代为收发(发件如果不正常,请重新修改第三方邮件客户端对我们这个用户的发件配置,把SSL全部打开),然后我们把现有的nginx配置备份(比如直接把/etc/nginx变成/etc/nginx_1),然后重新写入nginx配置(把nginx初始配置放入新的/etc/nginx中),以后如果需要修改邮箱配置,加载回原先的配置就可以了。

这里我们以hzxservice.com这个域名来进行配置

首先,搭建邮件服务器一般是设置二级域名mail.hzxservice.com,或者mx.hzxservice.com,(主域名hzxservice.com我们依旧可以使用来搭建网站)

首先,我们先添加一个A记录,名称设置为mail,ipv4地址填写我们服务器的IP地址,不要开启CDN

其余的域名解析我们稍后再添加,接下来我们配置以下服务器:

这里我们使用Ubuntu20.04TLS,确保lnmp环境一个都没装

这里我们需要下载curl和tar:

apt install curl tar -y

然后我们需要重新设置服务器的主机名:(配置文件为/etc/hostname)

打开/etc/hostname,然后将里面的内容更改为mail,保存退出

然后我们需要更改本地的DNS设置,在其中添加mail.hzxservice.com的解析设置:(配置文件为/etc/hosts)

打开/etc/hosts,然后添加如下内容:

127.0.0.1 mail.hzxservice.com mail

保存退出

然后重启服务器:

reboot

然后我们检查以下配置是否正确:

执行:

hostname

此时我们会看到短主机名:mail,

执行:

hostname -f

此时我们可以看到长主机名:mail.hzxservice.com

接下来,我们下载iRedMail并进行配置,这里我们使用1.5.2版本:

iRedMail 最新版下载:点击查看最新版

wget https://github.com/iredmail/iRedMail/archive/1.5.2.tar.gz -O /root/iRedMail.tar.gz

当然我们也可以直接git:

git clone https://github.com/iredmail/iRedMail.git

这两种方法都可以下载,如果我们采用的是第一种方法下载,我们还需要进行解压:

tar -xf iRedMail.tar.gz

下载完后(并解压完后),我们需要进入对应的文件夹,如果是第一种下载方法,文件夹为iRedMail-1.5.2,如果采用git的方法,文件夹为iRedMail,不知道的话可以用 ls 命令查看

我们进入这个文件夹,

然后运行脚本:

bash iRedMail.sh

第一个询问的是是否要继续安装,我们直接按回车

第二个询问的是安装目录,这里如果没有特殊需求,我们直接按回车

第三个询问的是是否要安装web服务器,这里我们选择安装(nginx那个),直接按回车

第四个询问的是选择的数据库类型,这里我们选择第二个MariaDB,(按↓,然后按空格选择,再按回车确定)

第五个是数据库密码,我们输入密码后按回车

第六个是设置域(不可与hostname相同),也就是@后面的那些,我们这里直接输入主域名:hzxservice.com

第七个是设置管理员密码,我们输入密码后按回车(管理员账号默认为postmaster@hzxservice.com)

第八个是选择要安装的组件,这里我们直接按回车

然后,根据系统提示,我们一直按y然后回车

安装完成后,我们重启服务器,

接下来我们需要为mail.hzxservice.com申请证书,证书申请

certbot certonly -d mail.hzxservice.com --nginx

证书的默认位置:/etc/letsencrypt/live/mail.hzxservice.com/

每个版本的iRedMail证书的位置可能不一样,这里我们先进入/etc/nginx/sites-available中

使用 ls 命令,查看ssl的配置文件

1.5.2版本的配置文件为00-default-ssl.conf

打开这个配置文件,我们可以看到:

server {
    listen 443 ssl http2;
    #listen [::]:443 ssl http2;
    server_name mail.hzxservice.com;

    root /var/www/html;
    index index.php index.html;

    include /etc/nginx/templates/misc.tmpl;
    include /etc/nginx/templates/ssl.tmpl;
    include /etc/nginx/templates/iredadmin.tmpl;
    include /etc/nginx/templates/roundcube.tmpl;
    include /etc/nginx/templates/sogo.tmpl;
    include /etc/nginx/templates/netdata.tmpl;
    include /etc/nginx/templates/php-catchall.tmpl;
    include /etc/nginx/templates/stub_status.tmpl;
}

那么ssl的配置文件就是/etc/nginx/templates/ssl.tmpl,

我们打开/etc/nginx/templates/ssl.tmpl,

找到ssl_certificate,后面改成/etc/letsencrypt/live/mail.hzxservice.com/fullchain.pem

找到ssl_certificate_key,后面改成/etc/letsencrypt/live/mail.hzxservice.com/privkey.pem

保存退出,

重载服务:

service postfix reload;service dovecot reload;service nginx reload

或者:

systemctl restart nginx

接下来,我们要禁用掉iRedMail的灰名单,这个配置文件为:/opt/iredapd/settings.py

打开这个配置文件,找到:

plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"]

将其中的”greylisting”这一项删去,

然后重启iredapd服务:

systemctl restart iredapd

然后我们可以正常访问邮件服务器的对应网站:

  1. https://你的域名/mail ——邮件登录地址
  2. https://你的域名/netdata ——服务器状态监控
  3. https://你的域名/iredadmin ——邮件服务器后台管理
  4. 管理员账号:postmaster@你的域 例如 postmaster@163.com
  5. 管理员密码:安装时候设置的密码
  6. 以上信息,可以在 /root/iRedMail-1.5.2/iRedMail.tips 文件中查看

接下来我们继续配置DNS解析

1.首先我们需要配置PTR反向解析,这就需要对应的服务器服务商支持了,这里我们用搬瓦工搬瓦工搬瓦工中文官网,(bandwagon)(三个网址任选一个,因为其他的可能会出问题,所以这里写了三个)

在搬瓦工中打开服务器的后台,在Main controls(一般打开之后就是这个页面,不需要重新更改),在这个页面中,找到PTR Records (Reverse DNS),我们选择set new record,我们输入mail.hzxservice.com,保存

PTR反向解析是支持从IP到域名的解析,设置完成后,我们可以在其他电脑上(LINUX、UNIX、MACOS、Windows系统都支持这个命令)使用nslookup命令,后面的参数为IP地址:

nslookup xxx.xxx.xxx.xxx

看这个命令能否找到对应的域名

2.接下来我们配置MX记录

MX纪律就是邮件的解析记录,我们需要配置根域名的MX记录为自己的邮件域名地址,优先级设置为10:

添加记录中,类型选择MX,名称使用@,内容(邮件服务器)为mail.hzxservice.com,优先级设置为10,保存

3.设置SPF记录

SPF记录时为了防止垃圾邮件而设定的,告知收件方,从设置的允许列表发出的邮件都是合法的:

添加记录中,类型选择TXT,名称使用@,内容设置为:

v=spf1 ip4:服务器的IPv4地址 ~all

或者:

v=spf1 mx ~all

检测方式:

nslookup -type=txgt hzxservice.com

4.设置DKIM记录

DKIM可以避免被判定为垃圾邮件,DKIM属于一种类似加密签名的解析记录,只有包含此加密数据,且公钥与密钥相匹配才属于合法邮件,要设置DKIM记录,首先要查询DKIM信息:

打开iRedMail配置文件iRedMail.tips,这里的路径为:/root/iRedMail-1.5.2/iRedMail.tips

我们需要将所有的双引号和中间的空格、换行都去掉,(最前面的双引号[和括号],最后面的双引号和括号都要去掉),得到的就是DKIM数据,

添加解析中,类型为TXT,名称为dkim._domainkey,内容为我们的DKIM数据

测试方式:

nslookup -type=text dkim._domainkey.hzxservice.com

5.设置DMARC记录

DMARC记录时当收件方检测到伪造邮件等行为时,将根据您的配置进行操作的一个记录,比如拒绝邮件或放入垃圾邮件以及不做处理等,同时会反馈一份检测报告到配置的邮箱地址内。

添加记录中,类型为TXT,名称为_dmarc,内容为:

v=DMARC1; p=none; pct=100; rua=mailto:dmarc@hzxservice.com

检测方式:

nslookup -type=txt _dmarc.hzxservice.com

DNS设置完成,接下来,我们添加iRedMail用户:

登录https://mail.hzxservice.com/iredadmin,用管理员用户登录(记得选择语言为中文(在登录页面上选择))

。。。。。。

测试邮件评分:https://www.mail-tester.com/

如果你是需要用其他客户端软件来收取或是发送邮件,端口列表在这里:

协议地址端口&加密端口
IAMP邮箱域名143,993
POP3邮箱域名110,995
SMTP邮箱域名25,587