美文网首页
Mail服务器搭建攻略 iRedMail+Ubuntu20

Mail服务器搭建攻略 iRedMail+Ubuntu20

作者: Azkaban | 来源:发表于2021-09-08 17:21 被阅读0次

    什么是 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

    相关文章

      网友评论

          本文标题:Mail服务器搭建攻略 iRedMail+Ubuntu20

          本文链接:https://www.haomeiwen.com/subject/idivwltx.html