1. 项目介绍

项目网站:iRedMail – Free, Open Source Mail Server Solution

iRedMail是一个集成了邮件服务器、管理控制面板和备份工具的开源软件。通过项目提供的脚本工具,可以快速部署多个开源组件。项目提供免费版本的web管理界面,可以对用户和域名做基本管理。如需在web界面上进行更多管理操作,则需要付费购买iRedAdmin-Pro。

项目涉及的套件如下:

参考:Major open source software used in iRedMail

名称说明
Postfix提供MTA服务
Dovecot提供POP3、IMAP等服务
Nginx提供WEB服务
OpenLDAP提供目录服务,主要用于用户账号存储(可选)
MySQLMariaDBPostgreSQL提供数据库服务,用于存储程序数据。也可以用来存储用户账号数据。
mlmmj提供邮件列表管理。iRedMail-0.9.8 及之后版本支持。
Amavisd-newPostfix与Clamav、SpamAssassin之间的桥梁。简单理解由该模块调用Clamav和SpamAssassin进行反病毒、反垃圾检查。
SpamAssassin提供基于内容的反垃圾过滤。
ClamAV提供病毒扫描。
Roundcube webmail提供WebMail,基于PHP开发。
SOGo Groupware一组提供CalDAV、CardDAV、ActiveSync服务的套件。
Fail2ban基于日志扫描并对IP进行阻止的工具。简单理解可以用来防止暴力破解密码攻击。
iRedAPD由iRedMail团队开发的Postfix策略管理软件

2. 准备工作

参考:Install iRedMail on Red Hat Enterprise Linux, CentOS

2.1 注意事项

  • iRedMail被设计为部署在全新服务器系统上,该系统没有安装与邮件相关的组件, 例如 MySQL、OpenLDAP、Postfix、Dovecot、Amavisd等。iRedMail 将安装并自动为您配置它们。否则,它可能会覆盖您的现有文件/配置,尽管它会备份文件之前修改,它可能无法按预期工作。
  • 低流量生产邮件服务器启用垃圾邮件/病毒扫描至少需要4GB内存。
  • 确保操作系统上3个UID/GID未被其他用户/组使用:2000、2001、2002。

2.2 操作系统基本配置

提示:本文操作系统以 Rocky Linux 9.4 为例。

# 主机名设置

(1)设置主机名FQDN(fully qualified domain name):

hostnamectl hostname mail.mailabc.cn

(2)修改/etc/hosts,将上面设置的主机名添加到解析列表

127.0.0.1 mail.mailabc.cn localhost

(3)确认主机名修改正确,如果没有生效则可能需要重启操作系统。

hostname -f
# selinux配置
# vi /etc/selinux/config
SELINUX=disabled

上述配置需要重启操作系统生效。

# YUM源配置

Rocky Linux9默认提供的yum源已启用appstream,使用默认配置即可。

额外安装EPEL yum源:

dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

2.3 下载安装包

# 下载

wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.6.8.tar.gz

最新版请前往官网主页下载:Download the latest iRedMail release

3. 安装iRedMail

3.1 解压缩安装包

tar -zxvf iRedMail-1.6.8.tar.gz
cd iRedMail-1.6.8

3.2 执行安装

执行命令:

sh iRedMail.sh

根据下面提示界面进行配置:

欢迎页

下一步,设置邮件存储目录:

下一步,设置web服务器:

设置web服务器

下一步,选择后台数据库,这里我使用的是MariaDB:

选择数据库

下一步,设置数据库root用户密码:

设置root密码

下一步,设置邮箱域名,注意不是主机名,这里以mailabc.cn为例:

设置邮箱域名

下一步,设置postmaster管理员密码,该账号可以登录webmail和IRedAdmin管理后台:

设置管理员用户密码

下一步,选择需要安装的套件。SOGo慎重选择,需要额外配置yum源,并且下载很慢,如果确有需要,可以考虑通过其他手段先把安装包下载到本地:

额外套件选择

汇总上面的选择信息:

输入y继续,下面即开始进行安装包的下载和校验。此时,上面所作的配置选择会被保存到iRedMail-1.6.8/config文件中,如果此时中断安装,下次重新执行安装脚本则会直接跳过上述的选择向导。

后续将下载软件包,首先下载的是下面5个安装包(注意:这是1.6.8版本所需的软件包,其他版本可能略有不同),下载目录位置为iRedMail-1.6.8/pkgs/misc:

iRedAdmin-2.5.tar.gz
mlmmjadmin-3.1.9.tar.gz
iRedAPD-5.3.3.tar.gz
netdata-v1.44.1.gz.run
roundcubemail-1.6.5-complete.tar.gz

如果下载很慢,可以通过其他手段到这里下载:Index of /yum/misc

如果选择了安装SOGo,下载也会非常慢,需要另行处理。

3.3 安装后注意事项

安装完成后,查看iRedMail-1.6.8/iRedMail.tips 该文件,这里记录了如下信息:

  • URLs、基于Web的应用程序的用户名和密码。
  • 邮件服务相关软件配置文件的位置。
  • 其他一些重要和敏感的信息。

这里给出一份示例:

Admin of domain mailabc.cn:

    * Account: postmaster@mailabc.cn
    * Password: admin123

    You can login to iRedAdmin with this account, login name is full email address.

First mail user:
    * Username: postmaster@mailabc.cn
    * Password: admin123
    * SMTP/IMAP auth type: login
    * Connection security: STARTTLS or SSL/TLS

    You can login to webmail with this account, login name is full email address.

* Enabled services:  rsyslog firewalld postfix mariadb nginx php-fpm dovecot clamd@amavisd amavisd clamav-freshclam fail2ban crond


SSL cert keys (size: 4096):
    - /etc/pki/tls/certs/iRedMail.crt
    - /etc/pki/tls/private/iRedMail.key

Mail Storage:
    - Mailboxes: /var/vmail/vmail1
    - Mailbox indexes: 
    - Global sieve filters: /var/vmail/sieve
    - Backup scripts and backup copies: /var/vmail/backup

MySQL:
    * Root user: root, Password: "admin@123" (without quotes)
    * Bind account (read-only):
        - Username: vmail, Password: m69iWEZlS2H5BTmd3Vp4v5VbSBtFiesp
    * Vmail admin account (read-write):
        - Username: vmailadmin, Password: qyIHTj6ntVi4qMDu3ha44wRRi4H9bTcK
    * Config file: /etc/my.cnf
    * RC script: /etc/init.d/mariadb

Virtual Users:
    - /root/iRedMail-1.6.8/samples/iredmail/iredmail.mysql
    - /root/iRedMail-1.6.8/runtime/*.sql

Backup MySQL database:
    * Script: /var/vmail/backup/backup_mysql.sh
    * See also:
        # crontab -l -u root

Postfix:
    * Configuration files:
        - /etc/postfix
        - /etc/postfix/aliases
        - /etc/postfix/main.cf
        - /etc/postfix/master.cf

    * SQL/LDAP lookup config files:
        - /etc/postfix/mysql

Dovecot:
    * Configuration files:
        - /etc/dovecot/dovecot.conf
        - /etc/dovecot/dovecot-ldap.conf (For OpenLDAP backend)
        - /etc/dovecot/dovecot-mysql.conf (For MySQL backend)
        - /etc/dovecot/dovecot-pgsql.conf (For PostgreSQL backend)
        - /etc/dovecot/dovecot-used-quota.conf (For real-time quota usage)
        - /etc/dovecot/dovecot-share-folder.conf (For IMAP sharing folder)
    * Syslog config file:
        - /etc/rsyslog.d/1-iredmail-dovecot.conf (present if rsyslog >= 8.x)
    * RC script: /etc/init.d/dovecot
    * Log files:
        - /var/log/dovecot/dovecot.log
        - /var/log/dovecot/sieve.log
        - /var/log/dovecot/lmtp.log
        - /var/log/dovecot/lda.log (present if rsyslog >= 8.x)
        - /var/log/dovecot/imap.log (present if rsyslog >= 8.x)
        - /var/log/dovecot/pop3.log (present if rsyslog >= 8.x)
        - /var/log/dovecot/sieve.log (present if rsyslog >= 8.x)
    * See also:
        - /var/vmail/sieve/dovecot.sieve
        - Logrotate config file: /etc/logrotate.d/dovecot

Nginx:
    * Configuration files:
        - /etc/nginx/nginx.conf
        - /etc/nginx/sites-available/00-default.conf
        - /etc/nginx/sites-available/00-default-ssl.conf
    * Directories:
        - /etc/nginx
        - /var/www/html
    * See also:
        - /var/www/html/index.html

php-fpm:
    * Configuration files: /etc/php-fpm.d/www.conf

PHP:
    * PHP config file for Nginx: 
    * Disabled functions: posix_uname,eval,pcntl_wexitstatus,posix_getpwuid,xmlrpc_entity_decode,pcntl_wifstopped,pcntl_wifexited,pcntl_wifsignaled,phpAds_XmlRpc,pcntl_strerror,ftp_exec,pcntl_wtermsig,mysql_pconnect,proc_nice,pcntl_sigtimedwait,posix_kill,pcntl_sigprocmask,fput,phpinfo,system,phpAds_remoteInfo,ftp_login,inject_code,posix_mkfifo,highlight_file,escapeshellcmd,show_source,pcntl_wifcontinued,fp,pcntl_alarm,pcntl_wait,ini_alter,posix_setpgid,parse_ini_file,ftp_raw,pcntl_waitpid,pcntl_getpriority,ftp_connect,pcntl_signal_dispatch,pcntl_wstopsig,ini_restore,ftp_put,passthru,proc_terminate,posix_setsid,pcntl_signal,pcntl_setpriority,phpAds_xmlrpcEncode,pcntl_exec,ftp_nb_fput,ftp_get,phpAds_xmlrpcDecode,pcntl_sigwaitinfo,shell_exec,pcntl_get_last_error,ftp_rawlist,pcntl_fork,posix_setuid

ClamAV:
    * Configuration files:
        - /etc/clamd.d/amavisd.conf
        - /etc/freshclam.conf
        - /etc/logrotate.d/clamav
    * RC scripts:
            + /etc/init.d/clamd@amavisd
            + /etc/init.d/freshclamd

Amavisd-new:
    * Configuration files:
        - /etc/amavisd/amavisd.conf
        - /etc/postfix/master.cf
        - /etc/postfix/main.cf
    * RC script:
        - /etc/init.d/amavisd
    * SQL Database:
        - Database name: amavisd
        - Database user: amavisd
        - Database password: nm5GQ4NcNERpMPfOGtmYkRyGS1ptTQpc

DNS record for DKIM support:

; key#1 2048 bits, s=dkim, d=mailabc.cn, /var/lib/dkim/mailabc.cn.pem
dkim._domainkey.mailabc.cn.     3600 TXT (
  "v=DKIM1; p="
  "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArqDwKcOUovXQab1htrjk"
  "46yt9lqtYOyqgf0rPviw/X2MSVyDh12WlGe3hSLTgavdeyvUB5T7QPJ+WlvNoO8S"
  "B7QGCJnty3zIgxPKZKpVfelWTFa2vubv+vV0Xqc/wfSWIi2qBDv92alCPYtzCsGc"
  "B/kIYHJrN6rZKyo1m5DlVHSt6EqdbBbWFUIzJN8vsgd/EbpoPOCSyOdqJHdwFN/j"
  "W5s8SbDDUPCkn28t/Fyumy6h5hri5qsK9rwSOsT09h5yCfOM9keyB5fGggg0aGtO"
  "GPjHqXZHjx6Fgu/jXtU/ggrH6fCcjtnJcYFNQU2F+tI8QabUNeVjkj8bq2eiWV50"
  "JQIDAQAB")
SpamAssassin:
    * Configuration files and rules:
        - /etc/mail/spamassassin
        - /etc/mail/spamassassin/local.cf

iRedAPD - Postfix Policy Server:
    * Version: 5.3.3
    * Listen address: 127.0.0.1, port: 7777
    * SQL database account:
        - Database name: iredapd
        - Username: iredapd
        - Password: NiMXyBOQn83zV6mvxhqAOBQw363CyGeI
    * Configuration file:
        - /opt/iredapd/settings.py
    * Related files:
        - /opt/iRedAPD-5.3.3
        - /opt/iredapd (symbol link to /opt/iRedAPD-5.3.3

iRedAdmin - official web-based admin panel:
    * Version: 2.5
    * Root directory: /opt/www/iRedAdmin-2.5
    * Config file: /opt/www/iRedAdmin-2.5/settings.py
    * Web access:
        - URL: https://mail.mailabc.cn/iredadmin/
        - Username: postmaster@mailabc.cn
        - Password: admin123
    * SQL database:
        - Database name: iredadmin
        - Username: iredadmin
        - Password: OYagG9UkBRble5lK2FE5y79cFqNDUJ4U

Roundcube webmail: /opt/www/roundcubemail-1.6.5
    * Config file: /opt/www/roundcubemail-1.6.5/config
    * Web access:
        - URL: http://mail.mailabc.cn/mail/ (will be redirected to https:// site)
        - URL: https://mail.mailabc.cn/mail/ (secure connection)
        - Username: postmaster@mailabc.cn
        - Password: admin123
    * SQL database account:
        - Database name: roundcubemail
        - Username: roundcube
        - Password: f4xKyFgYVbL5B9gXiF66NkBqIUbmEWoV
    * Cron job:
        - Command: "crontab -l -u root"

netdata (monitor):
    - Config files:
        - All config files: /opt/netdata/etc/netdata
        - Main config file: /opt/netdata/etc/netdata/netdata.conf
        - Modified modular config files:
            - /opt/netdata/etc/netdata/go.d
            - /opt/netdata/etc/netdata/python.d
    - HTTP auth file (if you need a new account to access netdata, please
      update this file with command like 'htpasswd' or edit manually):
        - /etc/nginx/netdata.users
    - Log directory: /opt/netdata/var/log/netdata
    - SQL:
        - Username: netdata
        - Password: SaWFClrRLUdzAbEOXjd3kdeEzRsSNOQZ
        - NOTE: No database required by netdata.

Admin of domain mailabc.cn:

    * Account: postmaster@mailabc.cn
    * Password: admin123

    You can login to iRedAdmin with this account, login name is full email address.

First mail user:
    * Username: postmaster@mailabc.cn
    * Password: admin123
    * SMTP/IMAP auth type: login
    * Connection security: STARTTLS or SSL/TLS

    You can login to webmail with this account, login name is full email address.

至此,部署工作结束。后续我们再探讨这套系统的具体使用方法。

参考来源:iRedMail开源邮件系统安装记录 | MailABC邮件知识百科

更多内容可以关注公众号mailabc获取。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐