Mail服务器搭建攻略 iRedMail+Ubuntu20

什么是 iRedMail?

iRedMail 是一个 shell 脚本,它会自动在您的 Linux/BSD 服务器上安装和配置所有必要的邮件服务器组件,从而消除手动安装和配置。使用 iRedMail,您可以在基于 Web 的管理面板中轻松创建无限的邮箱和无限的邮件域。邮箱可以存储在 MariaDB/MySQL、PostgreSQL 数据库或 OpenLDAP 中。以下是 iRedMail 会自动安装和配置的开源软件列表。

  • Postfix SMTP 服务器
  • Dovecot IMAP 服务器
  • 为管理面板和 webmail 提供服务的Nginx Web 服务器
  • OpenLDAP、MySQL/MariaDB 或 PostgreSQL 用于存储用户信息
  • 用于 DKIM 签名和验证的 Amaviised-new
  • SpamAssassin 用于反垃圾邮件
  • ClamAV 用于反病毒
  • Roundcube 网络邮件
  • SOGo群件,提供网络邮件、日历(CalDAV)、通讯录(CardDAV)、任务和ActiveSync服务。
  • 用于保护 SSH 的 Fail2ban
  • mlmmj 邮件列表管理器
  • 网络数据服务器监控
  • 用于灰名单的 iRedAPD Postfix 策略服务器

安装前准备工作

1. 购买一台服务器

要使用 iRedMail 设置完整的电子邮件服务器,您需要一台至少具有 4GB RAM 的服务器,因为安装后,您的服务器将使用超过 1GB 的 RAM。
购买之前要先关注 服务器厂商是否会阻止端口 25。
同时需要购买一个公网IP。

2. 购买一个域名

要使用邮件服务必须要有一个自己的域名,还需要通过备案审核,可以去阿里云-万网购买 最便宜的域名一年只需要几十块钱。还可以有免费的SSL证书。

创建 DNS MX 记录

购买后 需要增加两个解析 一个@ 一个mail 分别解析到自己的服务器上


image.png

3. 配置主机

Step 1:登录服务器

通过SSH登录您的服务器.

ssh root@192.168.xxx

Step 2:升级软件包

登录后运行以下命令来更新现有软件包。

sudo apt update
sudo apt upgrade -y

Step 3:创建一个用户

PS: 比较建议这么干 而不是用root账户直接操作. but此步骤不是必须的

创建用户

adduser mail-master

将用户添加到sudo分组

adduser mail-master sudo

切换用户

su mail-master

Step 4:创建一个完全限定域名

什么是完全限定域名-WIKI

使用以下命令为您的服务器设置一个完全限定的域名 (FQDN)。
该处域名就是第二步购买的域名

sudo hostnamectl set-hostname mail.domain.com

同时需要调整hosts文件

vi /etc/hosts

增加以下内容

127.0.0.1 mail.domain.com localhost

设置完成后可以通过以下命令查看

hostname -f

Step 5:❗️开始设置iRedMail服务

基础操作

找到一个合适的文件夹 然后远程下载服务包,这里使用1.4.0版本
iRedMail-GitHub

wget https://github.com/iredmail/iRedMail/archive/1.4.0.tar.gz

解压缩文件

tar -zxvf iRedMail-1.4.0.tar.gz

进入目录 然后向 iRedMail.sh 添加可执行权限

cd iRedMail-1.4.0/
chmod +x iRedMail.sh

设置完后运行它

sudo ./iRedMail.sh

PS: 这里会下载很多额外的包 如果出现下载失败 可以优先考虑调整DNS服务器

这里开始安装过程

运行后会出现设置向导,使用 Tab 键选择 Yes,然后按 Enter

图片来自官网

然后是默认安装路径 /var/vmail ,一般情况下直接 Enter 就好。

图片来自官网

然后选择是否要运行 Web 服务器。
这里建议是选择使用,因为需要基于web的管理面白来添加邮件帐户。
星号表示选中,默认 Enter 就行。这里会安装一个默认的 Nginx

选择Nginx

然后选择持久化方式,本例使用PostgreSql。


图片来自官网

选择数据库后会需要输入数据库密码,搞个不太简单的扔上去即可。


数据库密码

然后输入一个邮件域名
在此处输入刚买的域名 domain.com 不带子域。不要在域名后按空格键,有可能会导致安装失败。

图片来自官网

然后这里需要输入管理员账号密码,同样找个不太简单的就行了。


图片来自官网

然后这里选择一下需要的插件。

  • SOGo是可选组件,大概是这些(网络邮件、日历、地址簿、ActiveSync)
    组建选择

最后两步分别是
键入Y以开始安装所有邮件服务器组件。
键入Y使用 iRedMail 提供的防火墙规则并重新启动防火墙。
照着敲Y就行了 选了N 全盘重来

现在 iRedMail 安装完成。您将收到网络邮件 URL、网络管理面板和登录凭据的通知。该iRedMail.tips文件包含有关 iRedMail 服务器的重要信息。


图片来自官网

最后根据提示重启服务器

sudo shotdown -r now

这里开始处理SSL证书问题

这会儿访问的话 理论上会报一个SSL证书的问题,iRedMail会默认将所有请求都转发到Https
首先需要查看Nginx的 443是否开启, 如果开启了在看下一步

/etc/nginx/sites-enabled/00-default-ssl.conf
---
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

修改这个文件的ssl证书的key和crt文件路径。

vi /etc/nginx/templates/ssl.tmpl

修改完后需要重新加载一下nginx配置

# 首先查看一下配置内容是否正确
sudo nginx -t
# 重新加载配置
sudo nginx -s reload

如果上面那个命令不好使的话 可以用这个来reload, 如果还不行就只能用系统的重新加载

sudo systemctl reload nginx

然后就可以访问了

https://mail.domain.com/iredadmin/

参考文献


异常参考

# 核心日志位置
tail -500f /var/log/mail.log

❓安装过程下载包异常问题

大多数情况都是云服务商的DNS问题。可以通过修改DNS来解决。

vi /etc/resolv.conf

增加下面这段Google的DNS解析 还有其他的DNS地址

nameserver 8.8.8.8

❓25端口不通问题

SMTP默认使用25端口,BUT云服务器商为了自己的企业邮箱稳定 一般都会默认关掉这个端口,导致无法使用,通过工单来提交解封即可。
BUT 这样有一定的风险, 以下摘自阿里云25端口解封申请

保证TCP 25端口仅用来连接第三方的SMTP服务器,从第三方的SMTP服务器外发邮件。如果发现您使用申请的IP直接通过SMTP发送邮件,阿里云有权永久性封禁TCP 25端口,并不再提供解封服务。

❓ 接收邮件慢问题

部署好之后 发现邮件接收不到 查了半天问题之后 突然发现 邮件稳妥妥的躺在了收件箱里,然后复测了一遍发现大概等10-30分钟才能收到邮件。

目前找个了个可能性是因为灰名单导致收件速度奇慢

方法一 python 直接处理

python3 /opt/iredapd/tools/greylisting_admin.py --disable --from '@.'

方法二 修改配置文件

第一步找到文件

vi /opt/iredapd/settings.py

找到 plugins 数组删除掉其中的 greylisting 。文件中的内容可能为如下:

plugins = ['greylisting', 'throttle']

删除后需要重启iredmail服务

sudo systemctl restart iredapd

重启后等几分钟 尝试重新发送邮件即可.

灰名单的问题描述

However, despite its various advantages, it’s not without shortcomings. To illustrate, if your server uses greylisting, there’s no guarantee that your emails will arrive in your inbox in a reasonable amount of time.

This delay can be frustrating in most cases, but it can also be downright ineffective for time-sensitive emails such as password resets and account activation links. Some legitimate emails may even be wrongfully flagged as spam in rare cases, causing them to be lost.

Ultimately, greylisting is currently one of the best ways to fight email spam.

参考
Manage iRedAPD (white/blacklists, greylisting, throttling and more)
Greylisting技术细节

❓ iRedAdmin访问报错 Internal Server Error

这个问题一般是两种情况 :

  1. 一个是 settings.py 文件的权限问题导致的,不过这种情况一般不会发生 只要用的是同一个用户安装部署和操作的。

  2. 一个是 web.py 没有下载成功,导致打不开,如果自动不行的话需要手动下载一下,建议使用清华的镜像站 稳定好用。直接运行即可。

pip3 install web.py -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

参考
Internal Server Error #63
iredadmin Internal Server Error
清华大学开源镜像站使用方式

❓如果需要打开非SSL的IMAP

PS:表示不太建议这么干, 但是有时候避免不了

这个操作简单 只需要修改 dovecot.conf 的两个参数 然后重启就行

vi /etc/dovecot/dovecot.conf

修改以下两个参数

ssl = required
disable_plaintext_auth = yes
--- ⬆️source ⬇️update
ssl = yes
disable_plaintext_auth = no

修改完成后 重启/reload 都可以

sudo dovecot reload
sudo systemctl restart dovecot

操作后就OK了(建议reload)

参考
Allow insecure POP3/IMAP/SMTP connections without STARTTLS

❓clamd.ctl 找不到问题

Clamd was NOT notified: Can't connect to clamd through /var/run/clamav/clamd.ctl: No such file or directory

可以通过以下命令查看状态如何, 如果是 Active: failed那么需要操作一下

sudo systemctl start clamav-daemon.service

● clamav-daemon.service - Clam AntiVirus userspace daemon
     Loaded: loaded (/lib/systemd/system/clamav-daemon.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/clamav-daemon.service.d
             └─extend.conf
     Active: failed (Result: signal) since Tue 2021-09-07 19:20:50 CST; 20h ago
       Docs: man:clamd(8)
             man:clamd.conf(5)
             https://www.clamav.net/documents/
    Process: 546 ExecStartPre=/bin/mkdir -p /run/clamav (code=exited, status=0/SUCCESS)
    Process: 716 ExecStartPre=/bin/chown clamav /run/clamav (code=exited, status=0/SUCCESS)
    Process: 725 ExecStart=/usr/sbin/clamd --foreground=true (code=killed, signal=KILL)
   Main PID: 725 (code=killed, signal=KILL)

可以执行一下刷新操作, 然后查看运行情况

sudo freshclam

如果刷新失败了 可以按照如下顺序操作

sudo apt-get install clamav
sudo apt-get install clamav-daemon
sudo rm /var/log/clamav/freshclam.log
sudo systemctl start clamav-daemon.service
sudo systemctl status clamav-daemon.service

sudo freshclam

参考
ClamAV: clamd.ctl file is not getting created on ubuntu

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容