1

Topic: iRedMail Enterprise Edition (EE) v1.5.0 has been released.

A Heartfelt Thank You to Our iRedAdmin-Pro and iRedMail Easy Customers

EE is our flagship product and it replaces iRedMail, iRedAdmin-Pro, and iRedMail Easy with a single binary. Easy to install, also offers one-click upgrades support. We strongly recommend deploying new servers with EE or migrating existing setups from iRedMail or iRedMail Easy to EE.
---

iRedMail Enterprise Edition (EE) v1.5.0 has been released, with Debian 13 support and docker images (based on Debian 12 and Ubuntu 24.04). All customers are recommended to upgrade.

- Full list of changes: https://docs.iredmail.org/ee.changelog.html
- Upgrade: https://docs.iredmail.org/upgrade.ee.html
- Deploy a new server: https://docs.iredmail.org/install.ee.html
- Features and pricing: https://www.iredmail.org/ee.html

Migration Guides

- Migrate from a server deployed with the downloadable iRedMail installer:
  https://docs.iredmail.org/iredmail.to.ee.html

- Migrate from a server deployed with iRedMail Easy:
  https://docs.iredmail.org/easy.to.ee.html

Best regards,
The iRedMail Team

----

Spider Email Archiver: On-Premises, lightweight email archiving software developed by iRedMail team. Supports Amazon S3 compatible storage and custom branding.

2

Re: iRedMail Enterprise Edition (EE) v1.5.0 has been released.

Hi,
after upgrading existing installation to iRedMailEE I received errors, could you help me ?

Deploy iRedMail - full-featured mail server solution.

TASK [common] Get basic info of target system for further troubleshooting.
- Distribution: Ubuntu-22.04
- CPU: 2 core(s), amd64
- Memory: 6144 MB
- SWAP: 8191 MB
- iRedMail backend: mariadb
- Docker: False
changed [211.163µs]

TASK [preparations] Debian/Ubuntu: Change server hostname to inventory hostname: /etc/hostname
ok: /etc/hostname [55.455µs]

TASK [preparations] Debian/Ubuntu: Update server hostname to /etc/mailname
ok: /etc/mailname [3.526237ms]

TASK [preparations] Make sure 'dbus' service is running.
changed: dbus [4.009275ms]

TASK [preparations] Set hostname without rebooting server.
changed [136.052106ms]

TASK [preparations] Update /etc/hosts to include inventory hostname in `127.0.0.1` line.
changed: /etc/hosts [14.221057ms]

TASK [preparations] Update cloud-init config file to preserve hostname.
failed: /etc/cloud/cloud.cfg
[ERROR] task error: file /etc/cloud/cloud.cfg does not exist
...ignore error

TASK [preparations] Install required package (for command `apt-get-repository`).
ok: software-properties-common [32.204757ms]

TASK [preparations] Enable required apt repositories: multiverse, universe.
changed [1.785218925s]

TASK [preparations] Debian/Ubuntu: Update apt repo cache.
changed [2.05276162s]

TASK [preparations] Install required base packages.
changed: acl apt-transport-https bzip2 cron ca-certificates curl dbus dirmngr gzip openssl python3-apt python3-setuptools rsyslog software-properties-common unzip wget python3-pymysql python3-psycopg2 [19.614258828s]

TASK [preparations] Create directory used to store SSL cert/key/ca files: /opt/iredmail/ssl.
ok: /opt/iredmail/ssl [2.519357ms]

TASK [preparations] Generate self-signed SSL cert and key.
ok [201.03µs]

TASK [preparations] Generate full chain.
ok [11.94µs]

TASK [preparations] Generate Diffie Hellman Group (512 bits) with openssl.
changed [215.341968ms]

TASK [preparations] Generate Diffie Hellman Group (2048 bits) with openssl. It may take some time, please be patient.
changed [21.015685109s]

TASK [preparations] sysctl: Linux tuning.
changed: fs.file-max=20000000 [84.713182ms]
changed: fs.nr_open=20000000 [1.588991ms]

TASK [preparations] Create directories used to store additional files.
ok: /opt/iredmail [30.738µs]
changed: /opt/iredmail/bin [1.621134ms]

TASK [preparations] Check whether /var/vmail is a symlink.
changed [19.39µs]

TASK [preparations] Create storage base directory.
ok: /var/vmail [18.284µs]

TASK [preparations] rsyslog: Make sure directory used to store modular config files exists.
ok: /etc/rsyslog.d [40.739µs]

TASK [preparations] rsyslog: [Debian/Ubuntu] Do not log mail facility to /var/log/syslog.
changed: /etc/rsyslog.d/50-default.conf [28.108054ms]

TASK [preparations] rsyslog: [Debian/Ubuntu] Do not log to /var/log/mail.(info|warn|err).
changed: /etc/rsyslog.d/50-default.conf, regexp: ^(mail.)(info|warn|err)(.*/var/log/mail.)(info|warn|err)$, replace: #\1\2\3\4 [2.512782ms]

TASK [preparations] Create unix group: vmail.
changed: vmail [8.455478ms]

TASK [preparations] Create unix user: vmail.
changed: vmail [312.322627ms]

TASK [preparations] Create unix group: milter.
changed: milter [762.034298ms]

TASK [preparations] Create unix user: milter.
changed: milter [1.101202782s]

TASK [mariadb] Install MariaDB server.
ok: mariadb-server [7.366274ms]

TASK [mariadb] Enable MariaDB service.
changed: mysql [1.278509894s]

TASK [mariadb] Create directory used to store custom modular config files: /opt/iredmail/custom/mysql.
changed: /opt/iredmail/custom/mysql [6.734957ms]

TASK [mariadb] Generate /opt/iredmail/custom/mysql/README.
changed: /opt/iredmail/custom/mysql/README [2.258949ms]

TASK [mariadb] Generate main config file my.cnf.
changed: /etc/mysql/my.cnf [4.19273ms]

TASK [mariadb] Check whether MariaDB server had been initialized.
changed [51.609µs]

TASK [mariadb] Increase max open file descriptors.
changed: /etc/security/limits.d/mysql.conf [2.655525ms]

TASK [mariadb] Systemd: Create directory used to store modular systemd config file.
changed: /etc/systemd/system/mysql.service.d [1.310295ms]

TASK [mariadb] Systemd: Generate /etc/systemd/system/mysql.service.d/override.conf.
changed: /etc/systemd/system/mysql.service.d/override.conf [2.839917ms]

TASK [mariadb] systemctl daemon-reload
changed [96.446875ms]

TASK [mariadb] Restart MariaDB service.
changed: mysql [8.418772629s]

TASK [mariadb] Pause 2 seconds to wait for MariaDB service online.
changed [2.001508207s]

TASK [mariadb] Make sure MariaDB service is running.
changed: mysql [4.070101ms]

TASK [mariadb] Create user root@127.0.0.1 and set password.
changed: root [28.642531ms]
failed: root
[ERROR] task error: exit status 1, ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
...ignore error

TASK [mariadb] Debian/Ubuntu: Reset root password(s).
failed
stderr: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[ERROR] task error: exit status 1, ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
...ignore error

TASK [mariadb] Reset MySQL root password.
failed: root
[ERROR] task error: exit status 1, ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
...ignore error

TASK [mariadb] Remove database: test.
changed: test [4.761157ms]

TASK [mariadb] Delete anonymous SQL user.
changed [4.832691ms]

TASK [mariadb] Generate ~/.my.cnf-root.
changed: /root/.my.cnf [2.433651ms]

TASK [mariadb] Generate logrotate config file: /etc/logrotate.d/mysql-server.
changed: /etc/logrotate.d/mysql-server [13.669392ms]

TASK [vmaildb] SQL: Create database: vmail.
changed: vmail [4.912013ms]

TASK [vmaildb] SQL: Create and grant permissions to user 'vmailadmin'.
changed: vmailadmin [45.435548ms]

TASK [vmaildb] Generate ~/.my.cnf-vmailadmin.
changed: /root/.my.cnf-vmailadmin [14.156865ms]

TASK [vmaildb] [SQL] Generate file on disk from embedded file: iredmail.mysql.
changed: /tmp/upload.sql [674.63µs]

TASK [vmaildb] [SQL] Import embedded file.
changed: vmail [1.117017781s]

TASK [vmaildb] [SQL] Remove uploaded file.
changed: /tmp/upload.sql [71.026µs]

TASK [vmaildb] Create and grant read-only permissions on 'vmail' to SQL user 'vmail'.
changed: vmail [52.793911ms]

TASK [vmaildb] Generate ~/.my.cnf-vmail.
changed: /root/.my.cnf-vmail [12.275968ms]

TASK [vmaildb] [SQL] Generate file on disk from embedded template: add_first_mail_domain.sql.
changed: /tmp/upload.sql [1.332681ms]

TASK [vmaildb] [SQL] Import embedded file.
changed: vmail [5.001228ms]

TASK [vmaildb] [SQL] Remove uploaded file.
changed: /tmp/upload.sql [62.9µs]

TASK [vmaildb] [SQL] Generate file on disk from embedded template: add_mail_user_postmaster.sql.
changed: /tmp/upload.sql [1.583676ms]

TASK [vmaildb] [SQL] Import embedded file.
changed: vmail [48.981526ms]

TASK [vmaildb] [SQL] Remove uploaded file.
changed: /tmp/upload.sql [61.06µs]

TASK [vmaildb] [SQL] Generate file on disk from embedded file: extend_mailbox.mysql.
changed: /tmp/upload.sql [695.571µs]

TASK [vmaildb] [SQL] Import embedded file.
changed: vmail [5.679256ms]

TASK [vmaildb] [SQL] Remove uploaded file.
changed: /tmp/upload.sql [70.085µs]

TASK [vmaildb] [SQL] Generate file on disk from embedded file: remove_old_columns.mysql.
changed: /tmp/upload.sql [667.918µs]

TASK [vmaildb] [SQL] Import embedded file.
changed: vmail [5.156465ms]

TASK [vmaildb] [SQL] Remove uploaded file.
changed: /tmp/upload.sql [62.443µs]

TASK [milter] Download milter (v1.1.0).
changed: /usr/local/bin/milter-v1.1.0-linux-amd64 [855.765237ms]

TASK [milter] Generate systemd service script.
changed: /lib/systemd/system/milter.service [2.491658ms]

TASK [milter] systemctl daemon-reload
changed [97.452259ms]

TASK [milter] Create application root directory.
changed: /opt/milter [1.340153ms]

TASK [milter] Enable milter service.
changed: milter [101.987403ms]

TASK [milter] Create log directory: /var/log/milter.
changed: /var/log/milter [1.284234ms]

TASK [milter] SQL: Create database: milter.
changed: milter [5.006253ms]

TASK [milter] SQL: Create and grant permissions to user 'milter'.
changed: milter [84.95514ms]

TASK [milter] Generate ~/.my.cnf-milter.
changed: /root/.my.cnf-milter [1.490495ms]

TASK [milter] Generate config file: /opt/milter/settings.json.
changed: /opt/milter/settings.json [3.840609ms]

TASK [milter] Generate bash script from template.
changed: /tmp/.gosible/upload-bash.sh [1.892705ms]

TASK [milter] Run bash script.
changed [172.037459ms]

TASK [milter] Script output.
stdout:
[Migrated 2 key(s).]
stderr: writing RSA key writing RSA key
changed [457.625µs]

TASK [milter] Remove uploaded script.
changed: /tmp/.gosible/upload-bash.sh [69.678µs]

TASK [milter] Generate DKIM private key.
changed [104.604912ms]

TASK [milter] Generate DKIM public key.
changed [3.226196ms]

TASK [milter] [SQL] Generate file on disk from embedded template: sql/insert_dkim_key.mysql.
changed: /tmp/upload.sql [1.410655ms]

TASK [milter] [SQL] Import embedded file.
changed: vmail [5.206739ms]

TASK [milter] [SQL] Remove uploaded file.
changed: /tmp/upload.sql [59.836µs]

TASK [postfix] Stop and disable conflict MTA services.
failed: exim
[ERROR] task error: failed in stopping service exim: exit status 5, Failed to stop exim.service: Unit exim.service not loaded.
...ignore error
failed: exim4
[ERROR] task error: failed in stopping service exim4: exit status 5, Failed to stop exim4.service: Unit exim4.service not loaded.
...ignore error
failed: sendmail
[ERROR] task error: failed in stopping service sendmail: exit status 5, Failed to stop sendmail.service: Unit sendmail.service not loaded.
...ignore error
failed: smtpd
[ERROR] task error: failed in stopping service smtpd: exit status 5, Failed to stop smtpd.service: Unit smtpd.service not loaded.
...ignore error

TASK [postfix] Install Postfix packages.
ok: postfix postfix-pcre libsasl2-modules postfix-mysql [29.456036ms]

TASK [postfix] Enable Postfix service.
changed: postfix [324.487812ms]

TASK [postfix] Backup main.cf.
changed: /etc/postfix/main.cf-2025-09-24T09:01:45+02:00 [1.346597ms]

TASK [postfix] Backup master.cf.
changed: /etc/postfix/master.cf-2025-09-24T09:01:45+02:00 [562.02µs]

TASK [postfix] Run shell script for advanced customizations: /opt/iredmail/custom/postfix/custom.sh.
changed [1.869976ms]

TASK [iredapd] Create unix group: iredapd.
changed: iredapd [1.543613ms]

TASK [iredapd] Create unix user: iredapd.
changed: iredapd [200.055837ms]

TASK [iredapd] Install dependent packages.
changed: python3-sqlalchemy python3-dnspython python3-pymysql python3-ldap python3-psycopg2 python3-more-itertools python3-pip python3-wheel python3-multipart [8.933909786s]

INCLUDE [iredapd] Install iRedAPD (version 5.9.2).

TASK [iredapd] Copy systemd service script.
ok: /lib/systemd/system/iredapd.service [51.621µs]

TASK [iredapd] systemctl daemon-reload
changed [105.594488ms]

TASK [iredapd] Enable iRedAPD service.
changed: iredapd [110.917161ms]

TASK [iredapd] SQL: Create database: iredapd.
changed: iredapd [4.917931ms]

TASK [iredapd] SQL: Create and grant permissions to user 'iredapd'.
changed: iredapd [40.119701ms]

TASK [iredapd] Generate ~/.my.cnf-iredapd.
changed: /root/.my.cnf-iredapd [10.162013ms]

TASK [iredapd] Create SQL tables.
changed: iredapd [5.391671ms]

TASK [iredapd] Enable greylisting service.
changed: iredapd [13.136721ms]

TASK [iredapd] Add cron job: iRedAPD: Clean up expired tracking records hourly.
changed [17.070838ms]

TASK [iredapd] Add cron job: iRedAPD: Convert SPF DNS record of specified domain names to IP
changed [54.852µs]

TASK [iredapd] Generate config file: /opt/iredapd/settings.py.
changed: /opt/iredapd/settings.py [3.974561ms]

TASK [iredapd] Create directory used to store custom config file: /opt/iredmail/custom/iredapd.
changed: /opt/iredmail/custom/iredapd [1.200789ms]

TASK [iredapd] Make sure custom config file exists: /opt/iredmail/custom/iredapd/settings.py.
ok: /opt/iredmail/custom/iredapd/settings.py [219.943µs]

TASK [iredapd] Create symbol link: /opt/iredmail/custom/iredapd/settings.py -> /opt/iredapd/custom_settings.py.
changed: /opt/iredapd/custom_settings.py [517.627µs]

TASK [iredapd] Make sure SQL structure is up to date.
changed [2.562459816s]

TASK [iredapd] LOG: Generate modular rsyslog config file: /etc/rsyslog.d/1-iredmail-iredapd.conf
changed: /etc/rsyslog.d/1-iredmail-iredapd.conf [1.975834ms]

TASK [iredapd] LOG: Generate modular logrotate config file: /etc/logrotate.d/iredapd.
changed: /etc/logrotate.d/iredapd [1.87867ms]

TASK [iredapd] LOG: Create log directory: /var/log/iredapd.
changed: /var/log/iredapd [56.147µs]

TASK [iredapd] LOG: Set owner / group / permission for log directory.
ok: /var/log/iredapd [26.981µs]

TASK [iredapd] LOG: Set owner / group / permission: /var/log/iredapd/iredapd.log.
changed: /var/log/iredapd/iredapd.log [1.657053ms]

TASK [ntp] Install ntp/chrony server to sync local time.
changed: ntp [23.111449128s]

TASK [ntp] Enable and restart ntp/chrony service.
changed: ntp [363.762568ms]

TASK [dovecot] Install Dovecot packages.
ok: dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-managesieved dovecot-sieve dovecot-mysql [43.637976ms]

TASK [dovecot] Enable Dovecot service.
changed: dovecot [348.174093ms]

TASK [dovecot] Systemd: Create directory used to store modular systemd config file.
changed: /etc/systemd/system/dovecot.service.d [1.317784ms]

TASK [dovecot] Systemd: Generate /etc/systemd/system/dovecot.service.d/override.conf.
changed: /etc/systemd/system/dovecot.service.d/override.conf [2.277914ms]

TASK [dovecot] systemctl daemon-reload
changed [104.380542ms]

TASK [dovecot] Create required directories.
ok: /var/vmail/public [39.710789ms]
ok: /var/vmail/sieve [31.681µs]
changed: /opt/iredmail/bin/dovecot [1.262998ms]
changed: /opt/iredmail/bin/dovecot/sieve [1.027337ms]
changed: /var/vmail/imapsieve_copy [1.045444ms]

TASK [dovecot] Create directory used to store modular Dovecot config files.
changed: /etc/dovecot/conf-available [75.721µs]
changed: /etc/dovecot/conf-enabled [37.275µs]

TASK [dovecot] Generate Dovecot config file: /etc/dovecot/dovecot.conf.
changed: /etc/dovecot/dovecot.conf [16.410666ms]

TASK [dovecot] Generate modular Dovecot config files under /etc/dovecot/conf-available.
changed: /etc/dovecot/conf-available/fts-xapian.conf [2.331643ms]
changed: /etc/dovecot/conf-available/nfs.conf [2.124213ms]
changed: /etc/dovecot/conf-available/service-imap-hibernate.conf [3.049525ms]
changed: /etc/dovecot/conf-available/stats.conf [2.442324ms]

TASK [dovecot] Enable modular config files under /etc/dovecot/conf-enabled.
changed: /etc/dovecot/conf-enabled/service-imap-hibernate.conf [613.3µs]
changed: /etc/dovecot/conf-enabled/stats.conf [528.699µs]

TASK [dovecot] Generate Dovecot user/password lookup config file: /etc/dovecot/dovecot-mysql.conf.
changed: /etc/dovecot/dovecot-mysql.conf [4.235586ms]

TASK [dovecot] Generate sieve relevant files/scripts.
changed: /var/vmail/sieve/dovecot.sieve.iredmail [2.839881ms]
changed: /opt/iredmail/bin/dovecot/sieve/report_spam.sieve [2.528346ms]
changed: /opt/iredmail/bin/dovecot/sieve/report_ham.sieve [2.456165ms]
changed: /opt/iredmail/bin/dovecot/sieve/imapsieve_copy [3.656363ms]
changed: /opt/iredmail/bin/dovecot/scan_reported_mails [2.950052ms]

TASK [dovecot] Generate file used to store master users.
changed: /etc/dovecot/dovecot-master-users [1.204111ms]

TASK [dovecot] Add reminder info in master_user config file.
changed: /etc/dovecot/dovecot-master-users [96.482µs]

TASK [dovecot] Generate modular Dovecot config files.
changed: /etc/dovecot/dovecot-share-folder.conf [4.138351ms]
changed: /etc/dovecot/dovecot-used-quota.conf [3.705624ms]
changed: /etc/dovecot/dovecot-last-login.conf [4.496517ms]

TASK [dovecot] Generate quota warning script: /opt/iredmail/bin/dovecot/quota_warning.sh.
changed: /opt/iredmail/bin/dovecot/quota_warning.sh [2.538759ms]

TASK [dovecot] Disable FTS (full-text search).
ok: /etc/dovecot/conf-enabled/fts-xapian.conf [15.713µs]

TASK [dovecot] Add cron job: Dovecot: Optimize the FTS (full-text search) index.
changed [49.89µs]

TASK [dovecot] Disable modular config file for NFS storage.
ok: /etc/dovecot/conf-enabled/nfs.conf [14.465µs]

TASK [dovecot] sysctl tunings.
changed: fs.inotify.max_user_instances=2048 [1.460456ms]
changed: vm.swappiness=10 [30.168692ms]
changed: vm.dirty_ratio=90 [101.289608ms]
changed: vm.dirty_background_ratio=2 [19.35222ms]

TASK [dovecot] Create directory used to store custom config snippet files.
changed: /opt/iredmail/custom/dovecot/conf-enabled [1.145849ms]

TASK [dovecot] [SYMBOL LINK] /var/vmail/sieve/dovecot.sieve.iredmail -> /var/vmail/sieve/dovecot.sieve.
changed: /var/vmail/sieve/dovecot.sieve [81.538765ms]

TASK [dovecot] Generate file used to store custom master users.
changed: /opt/iredmail/custom/dovecot/master-users [1.177279ms]

TASK [dovecot] Add cron job: Scan spam/ham reported by end users.
changed [153.691µs]

TASK [dovecot] Add cron job: Optimize the full text search index.
changed [65.468µs]

TASK [dovecot] LOG: Generate modular rsyslog config file: /etc/rsyslog.d/1-iredmail-dovecot.conf
changed: /etc/rsyslog.d/1-iredmail-dovecot.conf [2.129698ms]

TASK [dovecot] LOG: Generate modular logrotate config file: /etc/logrotate.d/dovecot.
changed: /etc/logrotate.d/dovecot [23.263416ms]

TASK [dovecot] LOG: Create log directory: /var/log/dovecot.
changed: /var/log/dovecot [53.798µs]

TASK [dovecot] LOG: Set owner / group / permission for log directory.
changed: /var/log/dovecot [1.219015ms]

TASK [dovecot] LOG: Set owner / group / permission: /var/log/dovecot/dovecot.log.
ok: /var/log/dovecot/dovecot.log [30.705µs]

TASK [dovecot] Make sure extra log files exist.
ok: /var/log/dovecot/imap.log [48.219µs]
ok: /var/log/dovecot/pop3.log [35.472µs]
ok: /var/log/dovecot/lda.log [28.753µs]
changed: /var/log/dovecot/managesieve.log [6.958729ms]

TASK [mlmmj] Create unix group: mlmmj.
changed: mlmmj [1.608288ms]

TASK [mlmmj] Create unix user: mlmmj.
changed: mlmmj [267.637462ms]

TASK [mlmmj] Install mlmmj package.
ok: mlmmj altermime [15.324821ms]

TASK [mlmmj] Create directory used to store mlmmj data: /var/vmail/mlmmj.
ok: /var/vmail/mlmmj [51.029µs]
ok: /var/vmail/mlmmj-archive [52.031µs]

TASK [mlmmj] Create command used to modify footer.
changed: /usr/bin/mlmmj-amime-receive [22.90285ms]

TASK [mlmmj] Add cron job: mlmmj: maintenance for mailing lists.
changed [196.342µs]

TASK [uwsgi] Install uwsgi package (or dependent packages).
ok [614ns]

TASK [mlmmjadmin] Install mlmmjadmin dependent packages.
ok: uwsgi uwsgi-plugin-python3 python3-requests python3-pymysql python3-psycopg2 python3-ldap python3-more-itertools python3-multipart [58.715281ms]

INCLUDE [mlmmjadmin] Install mlmmjadmin (version 3.5.0).

TASK [mlmmjadmin] Create directory used to store mlmmjadmin log files: /var/log/mlmmjadmin.
changed: /var/log/mlmmjadmin [9.278997ms]

TASK [mlmmjadmin] [Debian/Ubuntu] Copy systemd service script.
ok: /lib/systemd/system/mlmmjadmin.service [52.637µs]

TASK [mlmmjadmin] [Debian/Ubuntu] Generate uwsgi config file.
changed: /opt/mlmmjadmin/rc_scripts/uwsgi/debian.ini [4.152658ms]

TASK [mlmmjadmin] systemctl daemon-reload
changed [106.602652ms]

TASK [mlmmjadmin] Enable mlmmjadmin service.
changed: mlmmjadmin [105.080172ms]

TASK [mlmmjadmin] Generate config file: /opt/mlmmjadmin/settings.py
changed: /opt/mlmmjadmin/settings.py [4.784587ms]

TASK [mlmmjadmin] Create directory used to store custom config file: /opt/iredmail/custom/mlmmjadmin
changed: /opt/iredmail/custom/mlmmjadmin [1.238851ms]

TASK [mlmmjadmin] Make sure custom config file exists: /opt/iredmail/custom/mlmmjadmin/settings.py.
changed: /opt/iredmail/custom/mlmmjadmin/settings.py [43.094µs]

TASK [mlmmjadmin] Set correct owner/group and permission: /opt/iredmail/custom/mlmmjadmin/settings.py.
changed: /opt/iredmail/custom/mlmmjadmin/settings.py [1.167073ms]

TASK [mlmmjadmin] Create symbol link: /opt/iredmail/custom/mlmmjadmin/settings.py -> /opt/mlmmjadmin/custom_settings.py.
changed: /opt/mlmmjadmin/custom_settings.py [826.906µs]

TASK [mlmmjadmin] LOG: Generate modular rsyslog config file: /etc/rsyslog.d/1-iredmail-mlmmjadmin.conf
changed: /etc/rsyslog.d/1-iredmail-mlmmjadmin.conf [1.97313ms]

TASK [mlmmjadmin] LOG: Generate modular logrotate config file: /etc/logrotate.d/mlmmjadmin.
changed: /etc/logrotate.d/mlmmjadmin [11.986695ms]

TASK [mlmmjadmin] LOG: Create log directory: /var/log/mlmmjadmin.
changed: /var/log/mlmmjadmin [54.305µs]

TASK [mlmmjadmin] LOG: Set owner / group / permission for log directory.
changed: /var/log/mlmmjadmin [1.190798ms]

TASK [mlmmjadmin] LOG: Set owner / group / permission: /var/log/mlmmjadmin/mlmmjadmin.log.
changed: /var/log/mlmmjadmin/mlmmjadmin.log [1.0382ms]

TASK [mlmmjadmin] Sync profiles to SQL/LDAP.
changed [605.269331ms]

TASK [antispam] Install Amavisd + SpamAssassin + ClamAV packages.
ok: amavisd-new libcrypt-openssl-rsa-perl libmail-dkim-perl altermime arj nomarch cpio liblz4-tool lzop cabextract p7zip-full rpm libmail-spf-perl unrar-free pax libdbd-mysql-perl spamassassin clamav-freshclam clamav-daemon [139.458951ms]

TASK [antispam] Amavisd: Enable service.
changed: amavis [330.028151ms]

TASK [antispam] SQL: Create database: amavisd.
changed: amavisd [4.812051ms]

TASK [antispam] SQL: Create and grant permissions to user 'amavisd'.
changed: amavisd [81.556001ms]

TASK [antispam] Generate ~/.my.cnf-amavisd.
changed: /root/.my.cnf-amavisd [32.664429ms]

TASK [antispam] [SQL] Generate file on disk from embedded file: amavisd/amavisd.mysql.
changed: /tmp/upload.sql [679.142µs]

TASK [antispam] [SQL] Import embedded file.
changed: amavisd [1.585468487s]

TASK [antispam] [SQL] Remove uploaded file.
changed: /tmp/upload.sql [76.918µs]

TASK [antispam] [SQL] Generate file on disk from embedded file: amavisd/default_spam_policy.mysql.
changed: /tmp/upload.sql [714.813µs]

TASK [antispam] [SQL] Import embedded file.
changed: amavisd [24.299ms]

TASK [antispam] [SQL] Remove uploaded file.
changed: /tmp/upload.sql [76.904µs]

TASK [antispam] [SQL] Generate file on disk from embedded file: amavisd/extend_msgs.mysql.
changed: /tmp/upload.sql [756.126µs]

TASK [antispam] [SQL] Import embedded file.
changed: amavisd [4.744012645s]

TASK [antispam] [SQL] Remove uploaded file.
changed: /tmp/upload.sql [80.004µs]

TASK [antispam] Amavisd: Generate directories required by Amavisd.
changed: /var/spool/amavisd [1.344117ms]
changed: /var/spool/amavisd/tmp [1.03584ms]
changed: /var/spool/amavisd/quarantine [1.009589ms]
changed: /var/spool/amavisd/db [2.039588ms]
changed: /var/spool/amavisd/var [1.026546ms]

TASK [antispam] Amavisd: Generate main config file: /etc/amavis/conf.d/50-user.
changed: /etc/amavis/conf.d/50-user [9.772113ms]

TASK [antispam] Amavisd: Create directory used to store custom config files.
changed: /opt/iredmail/custom/amavisd [1.13127ms]
ok: /opt/iredmail/custom/amavisd [18.946µs]

TASK [antispam] Amavisd: Make sure custom config file exist with correct owner and permission: /opt/iredmail/custom/amavisd/amavisd.conf.
changed: /opt/iredmail/custom/amavisd/amavisd.conf [984.304µs]

TASK [antispam] Amavisd: Generate /opt/iredmail/custom/amavisd/README.
changed: /opt/iredmail/custom/amavisd/README [2.925399ms]

TASK [antispam] Amavisd: Generate directory used to store DKIM keys: /opt/iredmail/custom/amavisd/dkim
changed: /opt/iredmail/custom/amavisd/dkim [1.135939ms]

TASK [antispam] Amavisd: Detect old DKIM key: /var/lib/dkim/retsat1.com.pl.pem
changed [11.153µs]

TASK [antispam] Amavisd: Detect new DKIM key: /opt/iredmail/custom/amavisd/dkim/retsat1.com.pl.pem
changed [11.785µs]

TASK [antispam] Amavisd: Find all DKIM keys.
failed
stderr: ls: cannot access '/opt/iredmail/custom/amavisd/dkim/*.pem': No such file or directory
[ERROR] task error: exit status 2, ls: cannot access '/opt/iredmail/custom/amavisd/dkim/*.pem': No such file or directory
[ERROR] task: 
name: 'Amavisd: Find all DKIM keys.'
register: _pem_files
shell:
    cmd: ls {{ amavisd_custom_dkim_dir }}/*.pem


TASK [antispam] Disable unused services: spamd, clamav-clamonacc.
failed: spamd
[ERROR] task error: failed in disabling service spamd: exit status 1, Failed to disable unit: Unit file spamd.service does not exist.
...ignore error
changed: clamav-clamonacc [139.949443ms]

TASK [antispam] SpamAssassin: Generate config file: /etc/spamassassin/local.cf.
changed: /etc/spamassassin/local.cf [24.277122ms]

TASK [antispam] SpamAssassin: Generate razor config file: /etc/spamassassin/razor.conf.
changed: /etc/spamassassin/razor.conf [14.149567ms]

TASK [antispam] SpamAssassin: Debian/Ubuntu: Enable sa-update for daily update.
changed: /etc/default/spamassassin [62.535µs]

TASK [antispam] SpamAssassin: Add daemon user 'debian-spamd' to amavisd group 'amavis'.
changed: debian-spamd [326.674423ms]

TASK [antispam] SQL: Create database: sa_bayes.
changed: sa_bayes [5.103906ms]

TASK [antispam] SQL: Create and grant permissions to user 'sa_bayes'.
changed: sa_bayes [45.532337ms]

TASK [antispam] Generate ~/.my.cnf-sa_bayes.
changed: /root/.my.cnf-sa_bayes [10.666346ms]

TASK [antispam] [SQL] Generate file on disk from embedded file: spamassassin/bayes.mysql.
changed: /tmp/upload.sql [870.755µs]

TASK [antispam] [SQL] Import embedded file.
changed: sa_bayes [1.54528664s]

TASK [antispam] [SQL] Remove uploaded file.
changed: /tmp/upload.sql [52.503µs]

TASK [antispam] systemctl daemon-reload
changed [99.643837ms]

TASK [antispam] ClamAV: Enable service.
changed: clamav-daemon [359.412559ms]
changed: clamav-freshclam [341.177163ms]

TASK [antispam] ClamAV: Start freshclam service.
changed: clamav-freshclam [3.983798ms]

TASK [antispam] Systemd: Create directory used to store modular systemd config file.
changed: /etc/systemd/system/clamav-daemon.service.d [1.254151ms]

TASK [antispam] Systemd: Generate /etc/systemd/system/clamav-daemon.service.d/override.conf.
changed: /etc/systemd/system/clamav-daemon.service.d/override.conf [2.409623ms]

TASK [antispam] systemctl daemon-reload
changed [104.298957ms]

TASK [antispam] ClamAV: Generate config file for clamd: /etc/clamav/clamd.conf.
changed: /etc/clamav/clamd.conf [209.182044ms]

TASK [antispam] ClamAV: Generate config file for freshclam: /etc/clamav/freshclam.conf.
changed: /etc/clamav/freshclam.conf [4.107121ms]

TASK [antispam] ClamAV: Create database directory.
changed: /var/lib/clamav [1.167077ms]

TASK [antispam] ClamAV: Add clamav daemon user 'clamav' to amavisd group 'amavis'.
ok: clamav [598.023µs]

TASK [antispam] LOG: Generate modular rsyslog config file: /etc/rsyslog.d/1-iredmail-clamav.conf
changed: /etc/rsyslog.d/1-iredmail-clamav.conf [1.328751ms]

TASK [antispam] LOG: Generate modular logrotate config file: /etc/logrotate.d/clamav.
changed: /etc/logrotate.d/clamav [1.269908ms]

TASK [antispam] LOG: Create log directory: /var/log/clamav.
changed: /var/log/clamav [54.277µs]

TASK [antispam] LOG: Set owner / group / permission for log directory.
changed: /var/log/clamav [1.440891ms]

TASK [antispam] LOG: Set owner / group / permission: /var/log/clamav/clamav.log.
changed: /var/log/clamav/clamav.log [1.056006ms]

TASK [antispam] LOG: Make sure extra log file(s) exist with correct owner and permission.
changed: /var/log/clamav/freshclam.log [1.164544ms]

TASK [antispam] Disable default clamav logrotate config files.
changed: item=/etc/logrotate.d/clamav-daemon [1.054187ms]
changed: item=/etc/logrotate.d/clamav-freshclam [933.498µs]

TASK [antispam] Create directory used to store logwatch config files.
ok: /etc/logwatch/conf/logfiles [33.145µs]

TASK [antispam] Add custom logwatch config file since clamav/freshclam is configured to use syslog.
changed: /etc/logwatch/conf/logfiles/clam-update.conf [1.176308ms]

TASK [antispam] ClamAV: Update apparmor config file to allow clamd scanning emails.
changed: /etc/apparmor.d/local/usr.sbin.clamd [71.682µs]

TASK [nginx] Install Nginx packages.
changed: nginx [2.918915138s]

TASK [nginx] Linux: Disable and stop Apache/Lighttpd service to make sure Nginx can use ports 80/443.
failed: httpd
[ERROR] task error: failed in stopping service httpd: exit status 5, Failed to stop httpd.service: Unit httpd.service not loaded.
...ignore error
failed: apache2
[ERROR] task error: failed in stopping service apache2: exit status 5, Failed to stop apache2.service: Unit apache2.service not loaded.
...ignore error
failed: lighttpd
[ERROR] task error: failed in stopping service lighttpd: exit status 5, Failed to stop lighttpd.service: Unit lighttpd.service not loaded.
...ignore error

TASK [nginx] Enable Nginx service.
changed: nginx [366.622169ms]

TASK [nginx] Generate main config file: /etc/nginx/nginx.conf.
changed: /etc/nginx/nginx.conf [8.826401ms]

TASK [nginx] Enable required modular config files.
ok: /etc/nginx/conf-enabled/0-general.conf [36.527µs]
ok: /etc/nginx/conf-enabled/cache.conf [18.791µs]
ok: /etc/nginx/conf-enabled/client_max_body_size.conf [24.344µs]
ok: /etc/nginx/conf-enabled/default_type.conf [28.653µs]
changed: /etc/nginx/conf-enabled/fastcgi.conf [897.67µs]
ok: /etc/nginx/conf-enabled/gzip.conf [18.238µs]
ok: /etc/nginx/conf-enabled/headers.conf [20.169µs]
ok: /etc/nginx/conf-enabled/log.conf [19.649µs]
ok: /etc/nginx/conf-enabled/mime_types.conf [17.301µs]
changed: /etc/nginx/conf-enabled/open_file_cache.conf [1.034817ms]
changed: /etc/nginx/conf-enabled/reset_timedout_connection.conf [703.47µs]
ok: /etc/nginx/conf-enabled/sendfile.conf [18.302µs]
ok: /etc/nginx/conf-enabled/server_tokens.conf [18.919µs]
ok: /etc/nginx/conf-enabled/types_hash_max_size.conf [17.615µs]

TASK [nginx] Enable default web hosts.
changed: /etc/nginx/sites-enabled/00-default.conf [908.777µs]
changed: /etc/nginx/sites-enabled/00-default-ssl.conf [601.816µs]

TASK [nginx] Enable statistics.
changed: /etc/nginx/sites-conf.d/default-ssl/stub_status.conf [594.816µs]

TASK [nginx] Enable php support.
ok: /etc/nginx/conf-enabled/php_fpm.conf [33.856µs]

TASK [nginx] Enable php-fpm statistics.
changed: /etc/nginx/sites-conf.d/default-ssl/php_fpm_status.conf [874.948µs]

TASK [nginx] Detect default index page: /var/www/html/index.html.
changed [21.896µs]

TASK [nginx] Create directories used to store custom config files.
changed: /opt/iredmail/custom/nginx [1.267264ms]
changed: /opt/iredmail/custom/nginx/conf-enabled [1.328732ms]
changed: /opt/iredmail/custom/nginx/sites-enabled [1.016656ms]
changed: /opt/iredmail/custom/nginx/sites-conf.d [1.011039ms]
changed: /opt/iredmail/custom/nginx/sites-conf.d/default [1.002554ms]
changed: /opt/iredmail/custom/nginx/sites-conf.d/default-ssl [1.028432ms]
changed: /opt/iredmail/custom/nginx/webapps [1.205872ms]

TASK [nginx] Generate /opt/iredmail/custom/nginx/README.
changed: /opt/iredmail/custom/nginx/README [3.385992ms]

TASK [nginx] Make sure we have a shell script used for advanced customization: /opt/iredmail/custom/nginx/custom.sh.
changed: /opt/iredmail/custom/nginx/custom.sh [985.736µs]

TASK [nginx] Run shell script for advanced customizations: /opt/iredmail/custom/nginx/custom.sh.
changed [2.032595ms]

TASK [nginx] Check historical file which should be removed: /etc/nginx/conf-enabled/php-fpm.conf
changed [12.676µs]

TASK [phpfpm] Install php-fpm packages.
ok: php-fpm php-cli [15.119244ms]

TASK [phpfpm] Enable php-fpm service.
changed: php8.1-fpm [356.509677ms]

TASK [phpfpm] Update /etc/php/8.1/fpm/php.ini.
changed: /etc/php/8.1/fpm/php.ini, regexp: ^;{0,1}(expose_php\b) .*, replace: \1 = Off [31.775486ms]
changed: /etc/php/8.1/fpm/php.ini, regexp: ^;{0,1}(suhosin.session.encrypt\b) .*, replace: \1 = Off [92.062541ms]
changed: /etc/php/8.1/fpm/php.ini, regexp: ^;{0,1}(memory_limit\b) .*, replace: \1 = 512M [13.466882ms]
changed: /etc/php/8.1/fpm/php.ini, regexp: ^;{0,1}(upload_max_filesize\b) .*, replace: \1 = 15M [61.451043ms]
changed: /etc/php/8.1/fpm/php.ini, regexp: ^;{0,1}(post_max_size\b) .*, replace: \1 = 16M [3.655844ms]
changed: /etc/php/8.1/fpm/php.ini, regexp: ^;{0,1}(disable_functions\b) .*, replace: \1 = apache_setenv,eval,xmlrpc_entity_decode,phpAds_XmlRpc,ftp_exec,mysql_pconnect,proc_nice,fput,phpinfo,phpAds_remoteInfo,ftp_login,inject_code,highlight_file,escapeshellcmd,show_source,fp,ini_alter,ftp_raw,ftp_connect,apache_child_terminate,ini_restore,ftp_put,passthru,proc_terminate,phpAds_xmlrpcEncode,ftp_nb_fput,ftp_get,phpAds_xmlrpcDecode,shell_exec,ftp_rawlist,posix_uname,posix_getpwuid,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,pcntl_wexitstatus,pcntl_wifstopped,pcntl_wifexited,pcntl_wifsignaled,pcntl_strerror,pcntl_wtermsig,pcntl_sigtimedwait,pcntl_sigprocmask,pcntl_wifcontinued,pcntl_alarm,pcntl_wait,pcntl_waitpid,pcntl_getpriority,pcntl_signal_dispatch,pcntl_wstopsig,pcntl_signal,pcntl_setpriority,pcntl_exec,pcntl_sigwaitinfo,pcntl_get_last_error,pcntl_fork [34.381458ms]
changed: /etc/php/8.1/fpm/php.ini, regexp: ^;{0,1}(session.save_path\b) .*, replace: \1 = /var/lib/php/sessions [43.645721ms]
changed: /etc/php/8.1/fpm/php.ini, regexp: ^;{0,1}(date.timezone\b) .*, replace: \1 = UTC [32.158629ms]
changed: /etc/php/8.1/fpm/php.ini, regexp: ^;{0,1}(max_execution_time\b) .*, replace: \1 = 60s [41.722621ms]

TASK [phpfpm] Update php-fpm config file: /etc/php/8.1/fpm/php-fpm.conf.
changed: /etc/php/8.1/fpm/php-fpm.conf, item=[error_log syslog] [17.856186ms]
changed: /etc/php/8.1/fpm/php-fpm.conf, item=[syslog.ident php-fpm] [94.004µs]
changed: /etc/php/8.1/fpm/php-fpm.conf, item=[syslog.facility local5] [70.415µs]
changed: /etc/php/8.1/fpm/php-fpm.conf, item=[syslog.facility local5] [66.946µs]
changed: /etc/php/8.1/fpm/php-fpm.conf, item=[pid /run/php/php-fpm.pid] [72.953µs]

TASK [phpfpm] Create directory used to store php session data: /var/lib/php/sessions.
ok: /var/lib/php/sessions [27.487µs]

TASK [phpfpm] Enable required modular Nginx config file for php support.
ok: /etc/nginx/conf-enabled/php_fpm.conf [29.497µs]

TASK [phpfpm] Generate modular config files for PHP support.
changed: /etc/nginx/sites-conf.d/default-ssl/99-php_catchall.conf [691.758µs]

TASK [phpfpm] Create directory used to store modular php-fpm config files: /etc/php/8.1/fpm/pool.d.
ok: /etc/php/8.1/fpm/pool.d [29.042µs]

TASK [phpfpm] Generate config file for default php-fpm pool.
changed: /etc/php/8.1/fpm/pool.d/www.conf [8.959639ms]

TASK [phpfpm] LOG: Generate modular rsyslog config file: /etc/rsyslog.d/1-iredmail-php-fpm.conf
changed: /etc/rsyslog.d/1-iredmail-php-fpm.conf [1.973353ms]

TASK [phpfpm] LOG: Generate modular logrotate config file: /etc/logrotate.d/php8.1-fpm.
changed: /etc/logrotate.d/php8.1-fpm [2.214213ms]

TASK [phpfpm] LOG: Create log directory: /var/log/php-fpm.
changed: /var/log/php-fpm [32.863µs]

TASK [phpfpm] LOG: Set owner / group / permission for log directory.
changed: /var/log/php-fpm [2.029038ms]

TASK [phpfpm] LOG: Set owner / group / permission: /var/log/php-fpm/php-fpm.log.
ok: /var/log/php-fpm/php-fpm.log [28.297µs]

TASK [phpfpm] LOG: Make sure extra log file(s) exist with correct owner and permission.
changed: /var/log/php-fpm/access.log [9.903791ms]
ok: /var/log/php-fpm/slow.log [38.518µs]

TASK [phpfpm] Restart php-fpm service.
changed: php8.1-fpm [613.862056ms]

TASK [roundcube] Install dependent packages.
changed: php-bz2 php-curl php-gd php-imap php-intl php-json php-ldap php-mbstring php-mysql php-pgsql php-pspell php-xml php-zip mcrypt mariadb-client aspell [45.982097203s]

INCLUDE [roundcube] Install Roundcube (version 1.6.11).

TASK [roundcube] Enable PHP module: intl.
ok [11.311µs]

TASK [roundcube] Set permission for Roundcube directories: logs, temp 
changed: /opt/www/roundcubemail-1.6.11/logs [810.026µs]
changed: /opt/www/roundcubemail-1.6.11/temp [1.952843ms]

TASK [roundcube] Generate main config file: /opt/www/roundcubemail/config/config.inc.php.
changed: /opt/www/roundcubemail/config/config.inc.php [14.516035ms]

TASK [roundcube] Create directory used to store custom config file.
changed: /opt/iredmail/custom/roundcube [1.279943ms]
changed: /opt/iredmail/custom/roundcube/plugins [6.59946ms]
changed: /opt/iredmail/custom/roundcube/skins [9.225592ms]
changed: /opt/iredmail/custom/roundcube/images [1.030715ms]

TASK [roundcube] Generate /opt/iredmail/custom/roundcube/README.
changed: /opt/iredmail/custom/roundcube/README [2.367905ms]

TASK [roundcube] Make sure custom config file exists with correct owner/group and permission: /opt/iredmail/custom/roundcube/custom.inc.php.
changed: /opt/iredmail/custom/roundcube/custom.inc.php [1.177194ms]

TASK [roundcube] Make sure custom config file has '<?php' in first line.
changed: /opt/iredmail/custom/roundcube/custom.inc.php [4.929467ms]

TASK [roundcube] Create symbol link: /opt/iredmail/custom/roundcube/custom.inc.php -> /opt/www/roundcubemail/config/custom.inc.php.
changed: /opt/www/roundcubemail/config/custom.inc.php [596.232µs]

TASK [roundcube] [SYMBOL LINK] /opt/iredmail/custom/roundcube/images -> /opt/www/roundcubemail/images.
changed: /opt/www/roundcubemail/images [648.118µs]

TASK [roundcube] Get all third-party plugin names.
changed [22.556ms]

TASK [roundcube] Create symbol link of third-party plugins to Roundcube installation directory.
changed: /opt/www/roundcubemail/plugins/a [709.512µs]
changed: /opt/www/roundcubemail/plugins/a [874.797µs]
changed: /opt/www/roundcubemail/plugins/a [584.879µs]
changed: /opt/www/roundcubemail/plugins/a [1.237092ms]
changed: /opt/www/roundcubemail/plugins/a [1.455626ms]
changed: /opt/www/roundcubemail/plugins/a [638.775µs]
changed: /opt/www/roundcubemail/plugins/d [1.04486ms]
changed: /opt/www/roundcubemail/plugins/d [940.82µs]
changed: /opt/www/roundcubemail/plugins/e [554.768µs]
changed: /opt/www/roundcubemail/plugins/e [571.327µs]
changed: /opt/www/roundcubemail/plugins/e [631.385µs]
changed: /opt/www/roundcubemail/plugins/f [1.093533ms]
changed: /opt/www/roundcubemail/plugins/h [504.118µs]
changed: /opt/www/roundcubemail/plugins/h [612.56µs]
changed: /opt/www/roundcubemail/plugins/h [573.872µs]
changed: /opt/www/roundcubemail/plugins/i [489.538µs]
changed: /opt/www/roundcubemail/plugins/i [996.182µs]
changed: /opt/www/roundcubemail/plugins/j [649.112µs]
changed: /opt/www/roundcubemail/plugins/k [605.253µs]
changed: /opt/www/roundcubemail/plugins/m [677.139µs]
changed: /opt/www/roundcubemail/plugins/m [801.219µs]
changed: /opt/www/roundcubemail/plugins/n [1.345971ms]
changed: /opt/www/roundcubemail/plugins/n [800.738µs]
changed: /opt/www/roundcubemail/plugins/n [628.082µs]
changed: /opt/www/roundcubemail/plugins/p [746.101µs]
changed: /opt/www/roundcubemail/plugins/r [862.124µs]
changed: /opt/www/roundcubemail/plugins/r [1.503244ms]
changed: /opt/www/roundcubemail/plugins/s [623.342µs]
changed: /opt/www/roundcubemail/plugins/s [772.109µs]
changed: /opt/www/roundcubemail/plugins/s [1.128697ms]
changed: /opt/www/roundcubemail/plugins/u [859.304µs]
changed: /opt/www/roundcubemail/plugins/v [1.0762ms]
changed: /opt/www/roundcubemail/plugins/v [675.625µs]
changed: /opt/www/roundcubemail/plugins/v [704.503µs]
changed: /opt/www/roundcubemail/plugins/z [1.598104ms]

TASK [roundcube] Get all third-party skin names.
changed [9.101593ms]

TASK [roundcube] Create symbol link of third-party skins: /opt/iredmail/custom/roundcube/skins/<skin> -> /opt/www/roundcubemail/skins/<skin>.
changed: /opt/www/roundcubemail/skins/skins [630.925µs]

TASK [roundcube] Make sure we have a shell script used for advanced customization: /opt/iredmail/custom/roundcube/custom.sh.
changed: /opt/iredmail/custom/roundcube/custom.sh [1.172232ms]

TASK [roundcube] Run shell script for advanced customizations: /opt/iredmail/custom/roundcube/custom.sh.
changed [1.918256ms]

TASK [roundcube] Generate plugin config files.
changed: /opt/www/roundcubemail/plugins/password/config.inc.php [32.664649ms]
changed: /opt/www/roundcubemail/plugins/managesieve/config.inc.php [47.483339ms]
changed: /opt/www/roundcubemail/plugins/markasjunk/config.inc.php [2.428443ms]

TASK [roundcube] Create custom config file for Roundcube plugin: /opt/iredmail/custom/roundcube/config_password.inc.php.
changed: /opt/iredmail/custom/roundcube/config_password.inc.php [1.26234ms]

TASK [roundcube] Make sure custom config file has '<?php' in first line.
changed: /opt/iredmail/custom/roundcube/config_password.inc.php [1.239706ms]

TASK [roundcube] Create custom config file for Roundcube plugin: /opt/iredmail/custom/roundcube/config_managesieve.inc.php.
changed: /opt/iredmail/custom/roundcube/config_managesieve.inc.php [1.223048ms]

TASK [roundcube] Make sure custom config file has '<?php' in first line.
changed: /opt/iredmail/custom/roundcube/config_managesieve.inc.php [926.27µs]

TASK [roundcube] Create custom config file for Roundcube plugin: /opt/iredmail/custom/roundcube/config_markasjunk.inc.php.
changed: /opt/iredmail/custom/roundcube/config_markasjunk.inc.php [1.237476ms]

TASK [roundcube] Make sure custom config file has '<?php' in first line.
changed: /opt/iredmail/custom/roundcube/config_markasjunk.inc.php [967.531µs]

TASK [roundcube] Add cron job: Roundcube: cleanup Roundcube SQL database
changed [131.082µs]

TASK [roundcube] Add cron job: Roundcube: cleanup Roundcube temporary files.
changed [4.26951ms]

TASK [roundcube] SQL: Create database: roundcubemail.
changed: roundcubemail [4.815194ms]

TASK [roundcube] SQL: Create and grant permissions to user 'roundcube'.
changed: roundcube [28.842946ms]

TASK [roundcube] Generate ~/.my.cnf-roundcube.
changed: /root/.my.cnf-roundcube [14.731734ms]

TASK [roundcube] Grant permissions to SQL user 'roundcube', db 'vmail'.
changed: roundcube [48.047097ms]

TASK [roundcube] Import initial Roundcube SQL database.
changed: roundcubemail [17.481584ms]

TASK [roundcube] Update database schema.
failed
stdout: Updating database schema (2021081000)... [FAILED]
stderr: ERROR: Error in DDL upgrade 2021081000: [1050] Table 'responses' already exists
[ERROR] task error: exit status 1, ERROR: Error in DDL upgrade 2021081000: [1050] Table 'responses' already exists
...ignore error
[ERROR] assembleTask RenderTaskArgValues err: yaml: line 7: did not find expected ',' or ']'
[ERROR] task: 
debug:
    msg:
        - 'stdout:'
        - '{{ _updatedb.StdoutLines }}'
        - 'stderr: {{ _updatedb.Stderr }}'
name: Output of updating database.

parse task error: yaml: line 7: did not find expected ',' or ']'

3

Re: iRedMail Enterprise Edition (EE) v1.5.0 has been released.

Please fix it manually by running shell commands below, then re-perform EE deployment:

cd /opt/www/roundcubemail/SQL/mysql/
mysql roundcubemail < 2021100300.sql
mysql roundcubemail < 2022081200.sql
mysql roundcubemail -e "update system set value=2022081200 where name='roundcube-version';"

4

Re: iRedMail Enterprise Edition (EE) v1.5.0 has been released.

After upgrade scripts to implement customisations are empty
for example:
/opt/iredmail/custom/custom.sh