openship 0.4.4 → 0.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -24
- package/dist/bare-2HYDXQEH.js +23 -0
- package/dist/{bowser-MFQA6OS4.js → bowser-O3AEA6AN.js} +5 -1
- package/dist/{chunk-KD7VO4LG.js → chunk-2ZLR7ULL.js} +255 -65
- package/dist/{chunk-YHXCHW7Q.js → chunk-3JQTL4R4.js} +236 -99
- package/dist/{chunk-E77LJWJK.js → chunk-4TJC4JZQ.js} +20 -9
- package/dist/{chunk-YL67EWYZ.js → chunk-4Z5QO7N6.js} +6 -2
- package/dist/{chunk-WJPCBU7Z.js → chunk-5FNIWBFI.js} +10 -6
- package/dist/{chunk-Y37KHU7L.js → chunk-5MZ624VX.js} +5 -0
- package/dist/{chunk-QKFRZNKN.js → chunk-6APIPIJY.js} +8 -4
- package/dist/{chunk-JZLNHGLW.js → chunk-6APULWSU.js} +153 -133
- package/dist/{chunk-F4DFVG6Q.js → chunk-6B5YCFFV.js} +8 -4
- package/dist/{chunk-XVSAUO2I.js → chunk-AVIB7CT7.js} +5 -1
- package/dist/{chunk-TEYJYSMT.js → chunk-C5OHTYEF.js} +12 -6
- package/dist/{chunk-7UOB5GGQ.js → chunk-DYPH4HCI.js} +5 -0
- package/dist/{chunk-XIFRMKYT.js → chunk-EI575GHN.js} +6 -2
- package/dist/{chunk-4CQWT2WL.js → chunk-FPRHYBY2.js} +5 -0
- package/dist/chunk-FQGJZ2HS.js +248 -0
- package/dist/{chunk-JR2OCMJA.js → chunk-FRNAR33O.js} +6 -2
- package/dist/{chunk-JUJBBF5U.js → chunk-FXTBHTWY.js} +362 -42
- package/dist/chunk-ILFETZOM.js +131 -0
- package/dist/{chunk-5ZCKQ2MI.js → chunk-IXCHURVK.js} +7 -3
- package/dist/{chunk-6ERIMTBC.js → chunk-JYGD5WSN.js} +5 -0
- package/dist/{chunk-4VNS5WPM.js → chunk-KI2EY3WB.js} +4 -0
- package/dist/{chunk-3U4SPZD5.js → chunk-L2VOGB2X.js} +7 -104
- package/dist/{chunk-NB2VEIWG.js → chunk-MZ2WEHHY.js} +7 -3
- package/dist/{chunk-BUBSSKO6.js → chunk-O6ZZF52V.js} +5 -1
- package/dist/{chunk-LBFH7THC.js → chunk-OWED2GRM.js} +5 -1
- package/dist/{chunk-4MG3BVHE.js → chunk-OXWDY22G.js} +6 -2
- package/dist/{chunk-4FABQGQP.js → chunk-Q2CIRAOK.js} +5 -0
- package/dist/{chunk-4LEL3H2Z.js → chunk-RPHRPFEH.js} +5 -0
- package/dist/{chunk-46YJFP4S.js → chunk-SQ77DZOI.js} +1728 -1484
- package/dist/{chunk-S6DSRLNE.js → chunk-TGIINPVM.js} +15 -2
- package/dist/{chunk-U2DPZSXA.js → chunk-TYVME3XD.js} +9 -1
- package/dist/{chunk-HFYDYK4D.js → chunk-V6AN6XLZ.js} +18 -6
- package/dist/{chunk-ZKJOFWBJ.js → chunk-VDMQJHPI.js} +38 -15
- package/dist/{chunk-E6W2JMMU.js → chunk-VFINNTUL.js} +22 -1
- package/dist/{chunk-OJE6YWPQ.js → chunk-VWPEKOH6.js} +6 -2
- package/dist/{chunk-5N7VUGL6.js → chunk-W73X43R7.js} +6 -2
- package/dist/cloud-7QYOGF7F.js +11 -0
- package/dist/cloud-ZSKOS4GY.js +30 -0
- package/dist/detect-SH4FHFBI.js +36 -0
- package/dist/{dist-L3MPOWCA.js → dist-IQJ6H6UZ.js} +6 -2
- package/dist/{dist-es-KE56MWYO.js → dist-es-5DY7K32L.js} +9 -5
- package/dist/dist-es-JSTDUS7Q.js +26 -0
- package/dist/{dist-es-GTAMF674.js → dist-es-OSNJBLXB.js} +8 -4
- package/dist/{dist-es-NRZIQY5B.js → dist-es-RYHIPOTN.js} +17 -13
- package/dist/{dist-es-XQCOTGC7.js → dist-es-VNKHQVIB.js} +7 -3
- package/dist/{dist-es-WZCR7DHQ.js → dist-es-WV4AMOII.js} +11 -7
- package/dist/{dist-es-ZW3HFQUM.js → dist-es-X3B5QYKB.js} +9 -5
- package/dist/docker-U7AF5PTA.js +16 -0
- package/dist/docker-edge-executor-VHW3JPJS.js +13 -0
- package/dist/edge-import-V5CBA47C.js +45 -0
- package/dist/ensure-container-edge-CMYROUSI.js +33 -0
- package/dist/{event-streams-7LGDL56D.js → event-streams-EHRAKL75.js} +7 -3
- package/dist/executor-YPT6RH6O.js +30 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +258 -245
- package/dist/{loadSso-N273C5I7.js → loadSso-46FQRIZS.js} +13 -9
- package/dist/local-executor-V7U5VOZW.js +12 -0
- package/dist/nginx-2GTRUIDE.js +24 -0
- package/dist/noop-FMMFG2EZ.js +11 -0
- package/dist/{openresty-lua-HAO4EUDY.js → openresty-lua-4WLGDSER.js} +13 -3
- package/dist/server/engine/ChangeLog +2289 -0
- package/dist/server/engine/Documentations +5 -0
- package/dist/server/engine/LICENSE +674 -0
- package/dist/server/engine/README.md +34 -0
- package/dist/server/engine/conf/amavisd +150 -0
- package/dist/server/engine/conf/clamav +71 -0
- package/dist/server/engine/conf/core +632 -0
- package/dist/server/engine/conf/dovecot +151 -0
- package/dist/server/engine/conf/fail2ban +72 -0
- package/dist/server/engine/conf/global +698 -0
- package/dist/server/engine/conf/iredapd +52 -0
- package/dist/server/engine/conf/logwatch +28 -0
- package/dist/server/engine/conf/postfix +97 -0
- package/dist/server/engine/conf/postgresql +93 -0
- package/dist/server/engine/conf/spamassassin +39 -0
- package/dist/server/engine/dialog/config_via_dialog.sh +258 -0
- package/dist/server/engine/dialog/optional_components.sh +122 -0
- package/dist/server/engine/dialog/pgsql_config.sh +52 -0
- package/dist/server/engine/dialog/virtual_domain_config.sh +94 -0
- package/dist/server/engine/functions/amavisd.sh +267 -0
- package/dist/server/engine/functions/backend.sh +85 -0
- package/dist/server/engine/functions/clamav.sh +100 -0
- package/dist/server/engine/functions/cleanup.sh +393 -0
- package/dist/server/engine/functions/dovecot.sh +583 -0
- package/dist/server/engine/functions/fail2ban.sh +209 -0
- package/dist/server/engine/functions/iredapd.sh +356 -0
- package/dist/server/engine/functions/optional_components.sh +24 -0
- package/dist/server/engine/functions/packages.sh +522 -0
- package/dist/server/engine/functions/packages_freebsd.sh +179 -0
- package/dist/server/engine/functions/postfix.sh +457 -0
- package/dist/server/engine/functions/postgresql.sh +239 -0
- package/dist/server/engine/functions/spamassassin.sh +49 -0
- package/dist/server/engine/functions/system_accounts.sh +128 -0
- package/dist/server/engine/iRedMail.sh +144 -0
- package/dist/server/engine/pkgs/get_all.sh +338 -0
- package/dist/server/engine/pkgs/pkgs.freebsd.sha256 +3 -0
- package/dist/server/engine/pkgs/pkgs.openbsd.sha256 +6 -0
- package/dist/server/engine/pkgs/pkgs.sha256 +1 -0
- package/dist/server/engine/samples/amavisd/amavisd.conf +677 -0
- package/dist/server/engine/samples/amavisd/amavisd.mysql +278 -0
- package/dist/server/engine/samples/amavisd/amavisd.pgsql +253 -0
- package/dist/server/engine/samples/amavisd/amavisd.schema +942 -0
- package/dist/server/engine/samples/amavisd/default_spam_policy.sql +46 -0
- package/dist/server/engine/samples/dovecot/dovecot-2.4-mariadb.conf +758 -0
- package/dist/server/engine/samples/dovecot/dovecot-2.4-openldap.conf +767 -0
- package/dist/server/engine/samples/dovecot/dovecot-2.4-pgsql.conf +762 -0
- package/dist/server/engine/samples/dovecot/dovecot-last-login.conf +50 -0
- package/dist/server/engine/samples/dovecot/dovecot-ldap.conf +21 -0
- package/dist/server/engine/samples/dovecot/dovecot-share-folder.conf +22 -0
- package/dist/server/engine/samples/dovecot/dovecot-sql.conf +28 -0
- package/dist/server/engine/samples/dovecot/dovecot-used-quota.conf +13 -0
- package/dist/server/engine/samples/dovecot/dovecot.conf +484 -0
- package/dist/server/engine/samples/dovecot/dovecot.sieve +7 -0
- package/dist/server/engine/samples/dovecot/dovecot2-quota-warning.sh +38 -0
- package/dist/server/engine/samples/dovecot/sql/imap_share_folder.mysql +16 -0
- package/dist/server/engine/samples/dovecot/sql/last_login.mysql +12 -0
- package/dist/server/engine/samples/dovecot/sql/used_quota.mysql +26 -0
- package/dist/server/engine/samples/dovecot/systemd/override.conf +3 -0
- package/dist/server/engine/samples/fail2ban/action.d/banned_db.conf +9 -0
- package/dist/server/engine/samples/fail2ban/bin/fail2ban_banned_db +268 -0
- package/dist/server/engine/samples/fail2ban/fail2ban.local +17 -0
- package/dist/server/engine/samples/fail2ban/filter.d/dovecot.iredmail.conf +5 -0
- package/dist/server/engine/samples/fail2ban/filter.d/postfix-pregreet.iredmail.conf +16 -0
- package/dist/server/engine/samples/fail2ban/filter.d/postfix.iredmail.conf +18 -0
- package/dist/server/engine/samples/fail2ban/filter.d/roundcube.iredmail.conf +9 -0
- package/dist/server/engine/samples/fail2ban/jail.d/dovecot.local +8 -0
- package/dist/server/engine/samples/fail2ban/jail.d/nginx-http-auth.local +8 -0
- package/dist/server/engine/samples/fail2ban/jail.d/postfix-pregreet.local +9 -0
- package/dist/server/engine/samples/fail2ban/jail.d/postfix.local +8 -0
- package/dist/server/engine/samples/fail2ban/jail.d/roundcube.local +9 -0
- package/dist/server/engine/samples/fail2ban/jail.d/sogo.local +8 -0
- package/dist/server/engine/samples/fail2ban/jail.d/sshd.local +8 -0
- package/dist/server/engine/samples/fail2ban/jail.local +6 -0
- package/dist/server/engine/samples/fail2ban/openbsd/rc +27 -0
- package/dist/server/engine/samples/fail2ban/sql/fail2ban.mysql +49 -0
- package/dist/server/engine/samples/fail2ban/sql/fail2ban.pgsql +48 -0
- package/dist/server/engine/samples/firewall/firewalld/services/ssh.xml +6 -0
- package/dist/server/engine/samples/firewall/firewalld/zones/iredmail.xml +15 -0
- package/dist/server/engine/samples/firewall/iptables/ip6tables.init.debian +362 -0
- package/dist/server/engine/samples/firewall/iptables/ip6tables.rules +53 -0
- package/dist/server/engine/samples/firewall/iptables/iptables.init.debian +363 -0
- package/dist/server/engine/samples/firewall/iptables/iptables.rules +54 -0
- package/dist/server/engine/samples/firewall/nftables.conf +58 -0
- package/dist/server/engine/samples/freebsd/newsyslog.conf.d/dovecot.conf +3 -0
- package/dist/server/engine/samples/freebsd/newsyslog.conf.d/iredapd.conf +1 -0
- package/dist/server/engine/samples/freebsd/newsyslog.conf.d/mlmmjadmin.conf +1 -0
- package/dist/server/engine/samples/freebsd/newsyslog.conf.d/php-fpm.conf +2 -0
- package/dist/server/engine/samples/freebsd/newsyslog.conf.d/slapd.conf +1 -0
- package/dist/server/engine/samples/freebsd/syslog.d/dovecot.conf +2 -0
- package/dist/server/engine/samples/freebsd/syslog.d/fail2ban.conf +2 -0
- package/dist/server/engine/samples/freebsd/syslog.d/iredapd.conf +2 -0
- package/dist/server/engine/samples/freebsd/syslog.d/mlmmjadmin.conf +2 -0
- package/dist/server/engine/samples/freebsd/syslog.d/php-fpm.conf +2 -0
- package/dist/server/engine/samples/freebsd/syslog.d/slapd.conf +2 -0
- package/dist/server/engine/samples/iredmail/iredmail.mysql +491 -0
- package/dist/server/engine/samples/iredmail/iredmail.pgsql +465 -0
- package/dist/server/engine/samples/iredmail/iredmail.schema +456 -0
- package/dist/server/engine/samples/iredmail/used_quota_triggers_dovecot_2.3.pgsql +40 -0
- package/dist/server/engine/samples/iredmail/used_quota_triggers_dovecot_2.4.pgsql +18 -0
- package/dist/server/engine/samples/logrotate/dovecot +13 -0
- package/dist/server/engine/samples/logrotate/iredapd +13 -0
- package/dist/server/engine/samples/logrotate/mlmmjadmin +13 -0
- package/dist/server/engine/samples/logrotate/openldap +19 -0
- package/dist/server/engine/samples/logrotate/php-fpm +13 -0
- package/dist/server/engine/samples/openbsd/ldapd.conf +58 -0
- package/dist/server/engine/samples/openbsd/pf.conf +28 -0
- package/dist/server/engine/samples/postfix/command_filter.pcre +3 -0
- package/dist/server/engine/samples/postfix/freebsd/mailer.conf +9 -0
- package/dist/server/engine/samples/postfix/helo_access.pcre +180 -0
- package/dist/server/engine/samples/postfix/ldap/catchall_maps.cf +11 -0
- package/dist/server/engine/samples/postfix/ldap/recipient_bcc_maps_domain.cf +11 -0
- package/dist/server/engine/samples/postfix/ldap/recipient_bcc_maps_user.cf +11 -0
- package/dist/server/engine/samples/postfix/ldap/relay_domains.cf +11 -0
- package/dist/server/engine/samples/postfix/ldap/sender_bcc_maps_domain.cf +11 -0
- package/dist/server/engine/samples/postfix/ldap/sender_bcc_maps_user.cf +11 -0
- package/dist/server/engine/samples/postfix/ldap/sender_dependent_relayhost_maps_domain.cf +11 -0
- package/dist/server/engine/samples/postfix/ldap/sender_dependent_relayhost_maps_user.cf +11 -0
- package/dist/server/engine/samples/postfix/ldap/sender_login_maps.cf +11 -0
- package/dist/server/engine/samples/postfix/ldap/transport_maps_domain.cf +11 -0
- package/dist/server/engine/samples/postfix/ldap/transport_maps_user.cf +11 -0
- package/dist/server/engine/samples/postfix/ldap/virtual_alias_maps.cf +11 -0
- package/dist/server/engine/samples/postfix/ldap/virtual_group_maps.cf +11 -0
- package/dist/server/engine/samples/postfix/ldap/virtual_group_members_maps.cf +11 -0
- package/dist/server/engine/samples/postfix/ldap/virtual_mailbox_domains.cf +11 -0
- package/dist/server/engine/samples/postfix/ldap/virtual_mailbox_maps.cf +12 -0
- package/dist/server/engine/samples/postfix/main.cf +282 -0
- package/dist/server/engine/samples/postfix/main.cf.amavisd +7 -0
- package/dist/server/engine/samples/postfix/main.cf.dovecot +8 -0
- package/dist/server/engine/samples/postfix/main.cf.ldap +39 -0
- package/dist/server/engine/samples/postfix/main.cf.mlmmj +5 -0
- package/dist/server/engine/samples/postfix/main.cf.mysql +39 -0
- package/dist/server/engine/samples/postfix/main.cf.pgsql +39 -0
- package/dist/server/engine/samples/postfix/main.cf.postscreen +30 -0
- package/dist/server/engine/samples/postfix/master.cf +87 -0
- package/dist/server/engine/samples/postfix/mysql/catchall_maps.cf +5 -0
- package/dist/server/engine/samples/postfix/mysql/domain_alias_catchall_maps.cf +5 -0
- package/dist/server/engine/samples/postfix/mysql/domain_alias_maps.cf +5 -0
- package/dist/server/engine/samples/postfix/mysql/recipient_bcc_maps_domain.cf +5 -0
- package/dist/server/engine/samples/postfix/mysql/recipient_bcc_maps_user.cf +5 -0
- package/dist/server/engine/samples/postfix/mysql/relay_domains.cf +5 -0
- package/dist/server/engine/samples/postfix/mysql/sender_bcc_maps_domain.cf +5 -0
- package/dist/server/engine/samples/postfix/mysql/sender_bcc_maps_user.cf +5 -0
- package/dist/server/engine/samples/postfix/mysql/sender_dependent_relayhost_maps.cf +6 -0
- package/dist/server/engine/samples/postfix/mysql/sender_login_maps.cf +5 -0
- package/dist/server/engine/samples/postfix/mysql/transport_maps_domain.cf +5 -0
- package/dist/server/engine/samples/postfix/mysql/transport_maps_maillist.cf +5 -0
- package/dist/server/engine/samples/postfix/mysql/transport_maps_user.cf +5 -0
- package/dist/server/engine/samples/postfix/mysql/virtual_alias_maps.cf +5 -0
- package/dist/server/engine/samples/postfix/mysql/virtual_mailbox_domains.cf +5 -0
- package/dist/server/engine/samples/postfix/mysql/virtual_mailbox_maps.cf +5 -0
- package/dist/server/engine/samples/postfix/pgsql/catchall_maps.cf +5 -0
- package/dist/server/engine/samples/postfix/pgsql/domain_alias_catchall_maps.cf +5 -0
- package/dist/server/engine/samples/postfix/pgsql/domain_alias_maps.cf +5 -0
- package/dist/server/engine/samples/postfix/pgsql/recipient_bcc_maps_domain.cf +5 -0
- package/dist/server/engine/samples/postfix/pgsql/recipient_bcc_maps_user.cf +5 -0
- package/dist/server/engine/samples/postfix/pgsql/relay_domains.cf +5 -0
- package/dist/server/engine/samples/postfix/pgsql/sender_bcc_maps_domain.cf +5 -0
- package/dist/server/engine/samples/postfix/pgsql/sender_bcc_maps_user.cf +5 -0
- package/dist/server/engine/samples/postfix/pgsql/sender_dependent_relayhost_maps.cf +6 -0
- package/dist/server/engine/samples/postfix/pgsql/sender_login_maps.cf +5 -0
- package/dist/server/engine/samples/postfix/pgsql/transport_maps_domain.cf +5 -0
- package/dist/server/engine/samples/postfix/pgsql/transport_maps_maillist.cf +5 -0
- package/dist/server/engine/samples/postfix/pgsql/transport_maps_user.cf +5 -0
- package/dist/server/engine/samples/postfix/pgsql/virtual_alias_maps.cf +5 -0
- package/dist/server/engine/samples/postfix/pgsql/virtual_mailbox_domains.cf +5 -0
- package/dist/server/engine/samples/postfix/pgsql/virtual_mailbox_maps.cf +5 -0
- package/dist/server/engine/samples/postfix/postscreen_access.cidr +6 -0
- package/dist/server/engine/samples/postgresql/sql/add_first_domain_and_user.sql +34 -0
- package/dist/server/engine/samples/postgresql/sql/grant_permissions.sql +14 -0
- package/dist/server/engine/samples/postgresql/sql/init_vmail_db.sql +15 -0
- package/dist/server/engine/samples/rsyslog.d/1-iredmail-dovecot.conf +23 -0
- package/dist/server/engine/samples/rsyslog.d/1-iredmail-fail2ban.conf +2 -0
- package/dist/server/engine/samples/rsyslog.d/1-iredmail-iredapd.conf +12 -0
- package/dist/server/engine/samples/rsyslog.d/1-iredmail-mlmmjadmin.conf +12 -0
- package/dist/server/engine/samples/rsyslog.d/1-iredmail-openldap.conf +2 -0
- package/dist/server/engine/samples/rsyslog.d/1-iredmail-phpfpm.conf +3 -0
- package/dist/server/engine/samples/spamassassin/local.cf +186 -0
- package/dist/server/engine/samples/spamassassin/razor.conf +1 -0
- package/dist/server/engine/samples/systemd/clamd.service.d/override.conf +2 -0
- package/dist/server/engine/samples/systemd/mariadb.service.d/override.conf +3 -0
- package/dist/server/engine/samples/systemd/slapd.service.d/override.conf +6 -0
- package/dist/server/engine/samples/yum/CentOS-Linux-AppStream.repo +6 -0
- package/dist/server/engine/samples/yum/CentOS-Linux-PowerTools.repo +6 -0
- package/dist/server/engine/samples/yum/CentOS-Stream-AppStream.repo +7 -0
- package/dist/server/engine/samples/yum/CentOS-Stream-PowerTools.repo +7 -0
- package/dist/server/engine/samples/yum/symas-openldap.repo +6 -0
- package/dist/server/engine/tools/add_enabled_service.py +60 -0
- package/dist/server/engine/tools/backup_mysql.sh +238 -0
- package/dist/server/engine/tools/backup_openldap.sh +230 -0
- package/dist/server/engine/tools/backup_pgsql.sh +217 -0
- package/dist/server/engine/tools/backup_sogo.sh +156 -0
- package/dist/server/engine/tools/create_mail_user_OpenLDAP.py +335 -0
- package/dist/server/engine/tools/create_mail_user_OpenLDAP.sh +287 -0
- package/dist/server/engine/tools/create_mail_user_SQL.sh +127 -0
- package/dist/server/engine/tools/enable_postscreen.sh +144 -0
- package/dist/server/engine/tools/fail2ban_unban_ip.sh +39 -0
- package/dist/server/engine/tools/find_sasl_login_ip.sh +20 -0
- package/dist/server/engine/tools/find_top_sasl_usernames.sh +28 -0
- package/dist/server/engine/tools/generate_ssl_keys.sh +85 -0
- package/dist/server/engine/tools/kill_high_cpu_sogo_process.sh +32 -0
- package/dist/server/engine/tools/ldap_assign_user_to_groups.py +151 -0
- package/dist/server/engine/tools/ldap_move_members_to_another_group.py +129 -0
- package/dist/server/engine/tools/migrate_sql_alias_table.py +177 -0
- package/dist/server/engine/update/0.9.8/amavisd.mysql +29 -0
- package/dist/server/engine/update/0.9.8/amavisd.pgsql +39 -0
- package/dist/server/engine/update/0.9.8/iredmail.mysql +53 -0
- package/dist/server/engine/update/0.9.8/iredmail.pgsql +61 -0
- package/dist/server/engine/update/0.9.9/iredmail.mysql +2 -0
- package/dist/server/engine/update/0.9.9/iredmail.pgsql +2 -0
- package/dist/server/engine/update/1.0/iredmail.mysql +2 -0
- package/dist/server/engine/update/1.0/iredmail.pgsql +2 -0
- package/dist/server/engine/update/1.2/last_login.mysql +16 -0
- package/dist/server/engine/update/1.4.0/iredmail.mysql +22 -0
- package/dist/server/engine/update/1.4.0/iredmail.pgsql +20 -0
- package/dist/server/engine/update/1.4.1/iredmail.mysql +3 -0
- package/dist/server/engine/update/1.4.1/iredmail.pgsql +3 -0
- package/dist/server/engine/update/1.4.1/sogo.mysql +11 -0
- package/dist/server/engine/update/1.4.1/sogo.pgsql +30 -0
- package/dist/server/engine/update/1.4.1/update-ldap.py +66 -0
- package/dist/server/engine/update/1.4.2/iredmail.mysql +9 -0
- package/dist/server/engine/update/1.4.2/iredmail.pgsql +9 -0
- package/dist/server/engine/update/1.4.2/sogo.pgsql +30 -0
- package/dist/server/engine/update/1.6.0/sogo_view.pgsql +27 -0
- package/dist/server/engine/update/1.6.3/iredmail.mysql +1 -0
- package/dist/server/engine/update/1.7.0/fail2ban.mysql +11 -0
- package/dist/server/engine/update/1.7.0/fail2ban.pgsql +12 -0
- package/dist/server/engine/update/1.7.1/amavisd.mysql +1 -0
- package/dist/server/engine/update/1.7.2/vmail.mysql +30 -0
- package/dist/server/engine/update/1.7.3/deleted_mailboxes.mysql +43 -0
- package/dist/server/engine/update/1.7.3/iredadmin.mysql +26 -0
- package/dist/server/engine/update/1.7.3/vmail.mysql +79 -0
- package/dist/server/engine/update/1.7.3/vmail.pgsql +9 -0
- package/dist/server/engine/update/README.md +1 -0
- package/dist/server/engine/update/ldap/README.md +40 -0
- package/dist/server/engine/update/ldap/update-ldap-dovecot-2.3.py +69 -0
- package/dist/server/index.js +55574 -53675
- package/dist/server/migrations/0071_gh_device_token.sql +3 -0
- package/dist/server/migrations/0072_gh_device_token_method.sql +1 -0
- package/dist/server/migrations/meta/_journal.json +14 -0
- package/dist/setup-HQIZLUOJ.js +20 -0
- package/dist/{signin-DR462ERO.js → signin-ITOPKKUB.js} +13 -9
- package/dist/{sso-oidc-VBZLJUK5.js → sso-oidc-NON2PD7Y.js} +13 -9
- package/dist/{sts-EJLZ4Z77.js → sts-HHFFSAY2.js} +12 -8
- package/package.json +1 -1
- package/dist/bare-ITM45QBX.js +0 -18
- package/dist/cloud-JMPHO3CW.js +0 -7
- package/dist/cloud-W5G6YXAY.js +0 -24
- package/dist/dist-es-4C322O5D.js +0 -22
- package/dist/docker-3FVJMFC3.js +0 -12
- package/dist/docker-edge-executor-ZIWAZWPL.js +0 -9
- package/dist/edge-import-Y34YL6JK.js +0 -39
- package/dist/executor-J7BHW5HF.js +0 -26
- package/dist/nginx-YZWKYKQU.js +0 -16
- package/dist/noop-RRNCIUI5.js +0 -7
- package/dist/setup-5X3WEEHA.js +0 -14
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
-- used_quota
|
|
2
|
+
-- Used to store realtime mailbox quota in Dovecot.
|
|
3
|
+
-- WARNING: Works only with Dovecot 1.2+.
|
|
4
|
+
--
|
|
5
|
+
-- Note: Don't touch this table, it will be updated by Dovecot automatically.
|
|
6
|
+
CREATE TABLE IF NOT EXISTS `used_quota` (
|
|
7
|
+
`username` VARCHAR(255) NOT NULL,
|
|
8
|
+
`bytes` BIGINT NOT NULL DEFAULT 0,
|
|
9
|
+
`messages` BIGINT NOT NULL DEFAULT 0,
|
|
10
|
+
`domain` VARCHAR(255) NOT NULL DEFAULT '',
|
|
11
|
+
PRIMARY KEY (`username`),
|
|
12
|
+
INDEX (domain)
|
|
13
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
14
|
+
|
|
15
|
+
-- Trigger `used_quota_before_insert` is used to set `used_quota.domain`.
|
|
16
|
+
-- NOTE: `used_quota.domain` is not used by Dovecot, but used in iRedAdmin to
|
|
17
|
+
-- get better SQL query performance while calculating per-domain used
|
|
18
|
+
-- quota.
|
|
19
|
+
DELIMITER //
|
|
20
|
+
CREATE TRIGGER `used_quota_before_insert`
|
|
21
|
+
BEFORE INSERT ON `used_quota` FOR EACH ROW
|
|
22
|
+
BEGIN
|
|
23
|
+
SET NEW.domain = SUBSTRING_INDEX(NEW.username, '@', -1);
|
|
24
|
+
END;
|
|
25
|
+
//
|
|
26
|
+
DELIMITER ;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# - Store banned IP in SQL db while it's banned.
|
|
2
|
+
# - Remove banned IP from SQL db while it's unbanned.
|
|
3
|
+
|
|
4
|
+
[Definition]
|
|
5
|
+
actionstart = /usr/local/bin/fail2ban_banned_db start <name>
|
|
6
|
+
actioncheck =
|
|
7
|
+
actionban = /usr/local/bin/fail2ban_banned_db ban <ip> <port> <protocol> <name> <ipjailfailures> <ipjailmatches>
|
|
8
|
+
actionunban = /usr/local/bin/fail2ban_banned_db unban <ip>
|
|
9
|
+
actionstop = /usr/local/bin/fail2ban_banned_db stop <name>
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Author: Zhang Huangbin <zhb@iredmail.org>
|
|
3
|
+
# Puprpose:
|
|
4
|
+
# - Store banned IP address in SQL db while it's banned by Fail2ban.
|
|
5
|
+
# - Remove unbanned IP address from SQL db while it's unbanned by Fail2ban.
|
|
6
|
+
# - Unban IP addresses which have column `remove=1`.
|
|
7
|
+
|
|
8
|
+
# Usage:
|
|
9
|
+
#
|
|
10
|
+
# *) Store a banned IP address:
|
|
11
|
+
#
|
|
12
|
+
# banned_db ban <ip> <ports> <protocol> <jail> <failures> [loglines]
|
|
13
|
+
#
|
|
14
|
+
# - <ip>: One IP address each time.
|
|
15
|
+
# - <ports>: Network ports. Multiple ports must be separated by comma.
|
|
16
|
+
# - <protocol>: `tcp` or `udp`.
|
|
17
|
+
# - <jail>: Fail2ban jail name.
|
|
18
|
+
# - <failures>: number of times the failure occurred in the log file.
|
|
19
|
+
# - [loglines]: matched log lines. OPTIONAL.
|
|
20
|
+
#
|
|
21
|
+
# *) Remove an one or multiple unbanned IP addresses. Notes:
|
|
22
|
+
#
|
|
23
|
+
# - it removes IP from all jails.
|
|
24
|
+
# - multiple IP addresses must be separated by space.
|
|
25
|
+
#
|
|
26
|
+
# banned_db unban <ip> [ip] [ip]
|
|
27
|
+
#
|
|
28
|
+
# *) Cleanup a jail. When Fail2ban is stopping or restarting, `cleanup` will
|
|
29
|
+
# be executed. Cleanup manually is supported too:
|
|
30
|
+
#
|
|
31
|
+
# banned_db cleanup <jail>
|
|
32
|
+
#
|
|
33
|
+
# *) Query SQL db and remove IP addresses which have `remove=1`.
|
|
34
|
+
#
|
|
35
|
+
# banned_db unban_db
|
|
36
|
+
#
|
|
37
|
+
# Examples:
|
|
38
|
+
#
|
|
39
|
+
# banned_db start dovecot-iredmail
|
|
40
|
+
# banned_db ban 192.168.0.1 110,143,993,995 tcp dovecot-iredmail 3
|
|
41
|
+
# banned_db unban 192.168.0.1
|
|
42
|
+
# banned_db stop dovecot-iredmail
|
|
43
|
+
# banned_db unban_db
|
|
44
|
+
|
|
45
|
+
#
|
|
46
|
+
# Sample Fail2ban jail config file (/etc/fail2ban/jail.d/xx.local):
|
|
47
|
+
#
|
|
48
|
+
# [jail-name]
|
|
49
|
+
# ...
|
|
50
|
+
# action = ...[your other actions here]...
|
|
51
|
+
# banned_db[name=jail-name, port="80", protocol=tcp]
|
|
52
|
+
#
|
|
53
|
+
# WARNING: the name set in `banned_db[name=]` must be same as the jail name.
|
|
54
|
+
|
|
55
|
+
export PATH="/usr/bin:/usr/local/bin:$PATH"
|
|
56
|
+
|
|
57
|
+
export DB_NAME="fail2ban"
|
|
58
|
+
export DB_TABLE_BANNED="banned"
|
|
59
|
+
export DB_TABLE_JAILS="jails"
|
|
60
|
+
export DB_USER="fail2ban"
|
|
61
|
+
|
|
62
|
+
# GeoIP
|
|
63
|
+
export CMD_GEOIPLOOKUP="$(which geoiplookup 2>/dev/null)"
|
|
64
|
+
export CMD_GEOIPLOOKUP6="$(which geoiplookup6 2>/dev/null)"
|
|
65
|
+
|
|
66
|
+
# `dig`. Used to query reverse hostname.
|
|
67
|
+
export CMD_DIG="/usr/bin/dig"
|
|
68
|
+
|
|
69
|
+
if [ -f /root/.my.cnf-fail2ban ]; then
|
|
70
|
+
export CMD_SQL="mysql --defaults-file=/root/.my.cnf-fail2ban ${DB_NAME}"
|
|
71
|
+
export DB_TYPE="mysql"
|
|
72
|
+
elif [ -f /root/.my.cnf ]; then
|
|
73
|
+
export CMD_SQL="mysql --defaults-file=/root/.my.cnf ${DB_NAME}"
|
|
74
|
+
export DB_TYPE="mysql"
|
|
75
|
+
else
|
|
76
|
+
# Absolute path to ~/.pgpass
|
|
77
|
+
# - RHEL: /var/lib/pgsql/.pgpass
|
|
78
|
+
# - Debian/Ubuntu: /var/lib/postgresql/.pgpass
|
|
79
|
+
# - FreeBSD: /var/db/postgres/.pgpass
|
|
80
|
+
# - OpenBSD: /var/postgresql/.pgpass
|
|
81
|
+
for dir in \
|
|
82
|
+
/var/lib/pgsql \
|
|
83
|
+
/var/lib/postgresql \
|
|
84
|
+
/var/db/postgres \
|
|
85
|
+
/var/postgresql; do
|
|
86
|
+
if [ -f ${dir}/.pgpass ]; then
|
|
87
|
+
export PGPASSFILE="${dir}/.pgpass"
|
|
88
|
+
export CMD_SQL="psql -U ${DB_USER} -d ${DB_NAME}"
|
|
89
|
+
export DB_TYPE="pgsql"
|
|
90
|
+
break
|
|
91
|
+
fi
|
|
92
|
+
done
|
|
93
|
+
fi
|
|
94
|
+
|
|
95
|
+
if [ X"${CMD_SQL}" == X'' ]; then
|
|
96
|
+
echo "No MySQL or PostgreSQL related config file found. Abort."
|
|
97
|
+
echo " - MySQL: /root/.my.cnf-fail2ban (or /root/.my.cnf)"
|
|
98
|
+
echo " - PostgreSQL: ~/.pgpass (under PostgreSQL daemon user's home directory)"
|
|
99
|
+
exit 255
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
export _action="$1"
|
|
103
|
+
|
|
104
|
+
if [[ X"${_action}" == X'start' ]]; then
|
|
105
|
+
_jail="${2}"
|
|
106
|
+
|
|
107
|
+
if [[ X"${DB_TYPE}" == X'pgsql' ]]; then
|
|
108
|
+
# CentOS 7 ships PostgreSQL-9.2 which doesn't support `ON CONFLICT DO NOTHING`,
|
|
109
|
+
# so we query it first, insert it if not existing.
|
|
110
|
+
(${CMD_SQL} <<EOF
|
|
111
|
+
SELECT id FROM ${DB_TABLE_JAILS} WHERE name='${_jail}' LIMIT 1;
|
|
112
|
+
EOF
|
|
113
|
+
) | grep '1 row' &>/dev/null
|
|
114
|
+
|
|
115
|
+
if [[ X"$?" != X'0' ]]; then
|
|
116
|
+
${CMD_SQL} >/dev/null <<EOF
|
|
117
|
+
INSERT INTO ${DB_TABLE_JAILS} (name, enabled) VALUES ('${_jail}', 1);
|
|
118
|
+
EOF
|
|
119
|
+
fi
|
|
120
|
+
else
|
|
121
|
+
${CMD_SQL} >/dev/null <<EOF
|
|
122
|
+
INSERT IGNORE INTO ${DB_TABLE_JAILS} (name, enabled) VALUES ('${_jail}', 1);
|
|
123
|
+
EOF
|
|
124
|
+
fi
|
|
125
|
+
elif [[ X"${_action}" == X"ban" ]]; then
|
|
126
|
+
_ip="${2}"
|
|
127
|
+
_ports="${3}"
|
|
128
|
+
_protocol="${4}"
|
|
129
|
+
_jail="${5}"
|
|
130
|
+
_failures="${6}"
|
|
131
|
+
|
|
132
|
+
shift 6
|
|
133
|
+
|
|
134
|
+
# (base64) Encode log lines to avoid possible SQL injection.
|
|
135
|
+
if [[ -x /usr/bin/base64 ]]; then
|
|
136
|
+
# Linux
|
|
137
|
+
_loglines="$(echo $@ | base64)"
|
|
138
|
+
elif [[ -x /usr/bin/b64encode ]]; then
|
|
139
|
+
# OpenBSD and FreeBSD.
|
|
140
|
+
_loglines="$(echo $@ | b64encode - |grep -Ev '^(begin-base64 |====$)')"
|
|
141
|
+
else
|
|
142
|
+
_loglines=""
|
|
143
|
+
fi
|
|
144
|
+
|
|
145
|
+
if [[ X"${_ip}" == X'' ]] || \
|
|
146
|
+
[[ X"${_ports}" == X'' ]] || \
|
|
147
|
+
[[ X"${_protocol}" == X'' ]] || \
|
|
148
|
+
[[ X"${_jail}" == X'' ]]; then
|
|
149
|
+
echo "IP, ports, protocol, or jail name is empty. Abort."
|
|
150
|
+
exit 255
|
|
151
|
+
fi
|
|
152
|
+
|
|
153
|
+
_hostname="$(hostname)"
|
|
154
|
+
|
|
155
|
+
# Lookup for country name.
|
|
156
|
+
_country=''
|
|
157
|
+
if echo ${_ip} | grep ':' &>/dev/null; then
|
|
158
|
+
if [[ -x ${CMD_GEOIPLOOKUP6} ]]; then
|
|
159
|
+
_country="$(${CMD_GEOIPLOOKUP6} ${_ip} | grep '^GeoIP Country Edition:' | awk -F': ' '{print $2}' | grep -iv 'not found' | tr -d '"' | tr -d "'")"
|
|
160
|
+
fi
|
|
161
|
+
else
|
|
162
|
+
if [[ -x ${CMD_GEOIPLOOKUP} ]]; then
|
|
163
|
+
_country="$(${CMD_GEOIPLOOKUP} ${_ip} | grep '^GeoIP Country Edition:' | awk -F': ' '{print $2}' | grep -iv 'not found' | tr -d '"' | tr -d "'")"
|
|
164
|
+
fi
|
|
165
|
+
fi
|
|
166
|
+
|
|
167
|
+
# Lookup reverse DNS name.
|
|
168
|
+
_rdns=''
|
|
169
|
+
if [[ -x "${CMD_DIG}" ]]; then
|
|
170
|
+
_rdns_orig="$(${CMD_DIG} +short +timeout=3 -x ${_ip} 2>/dev/null)"
|
|
171
|
+
_rdns_strip="${_rdns_orig%\.}"
|
|
172
|
+
printf -v _rdns "${_rdns_strip}"
|
|
173
|
+
fi
|
|
174
|
+
|
|
175
|
+
if [ X"${DB_TYPE}" == X'mysql' ]; then
|
|
176
|
+
# MySQL stores local time with time zone info, we expect UTC time.
|
|
177
|
+
${CMD_SQL} >/dev/null <<EOF
|
|
178
|
+
INSERT IGNORE INTO ${DB_TABLE_BANNED} (
|
|
179
|
+
ip, ports, protocol, jail,
|
|
180
|
+
hostname, country, rdns, timestamp,
|
|
181
|
+
failures, loglines)
|
|
182
|
+
VALUES (
|
|
183
|
+
'${_ip}', '${_ports}', '${_protocol}', '${_jail}',
|
|
184
|
+
'${_hostname}', '${_country}', '${_rdns}', UTC_TIMESTAMP(),
|
|
185
|
+
'${_failures}', '${_loglines}');
|
|
186
|
+
EOF
|
|
187
|
+
else
|
|
188
|
+
# CentOS 7 ships PostgreSQL-9.2 which doesn't support `ON CONFLICT DO NOTHING`,
|
|
189
|
+
# so we query it first, insert it if not existing.
|
|
190
|
+
(${CMD_SQL} <<EOF
|
|
191
|
+
SELECT id FROM ${DB_TABLE_BANNED} WHERE ip='${_ip}' AND ports='${_ports}' AND protocol='${_protocol}' AND jail='${_jail}' LIMIT 1;
|
|
192
|
+
EOF
|
|
193
|
+
) | grep '1 row' &>/dev/null
|
|
194
|
+
|
|
195
|
+
if [[ X"$?" == X'0' ]]; then
|
|
196
|
+
echo "Already banned."
|
|
197
|
+
else
|
|
198
|
+
${CMD_SQL} >/dev/null <<EOF
|
|
199
|
+
INSERT INTO ${DB_TABLE_BANNED} (
|
|
200
|
+
ip, ports, protocol, jail,
|
|
201
|
+
hostname, country, rdns,
|
|
202
|
+
failures, loglines)
|
|
203
|
+
VALUES (
|
|
204
|
+
'${_ip}', '${_ports}', '${_protocol}', '${_jail}',
|
|
205
|
+
'${_hostname}', '${_country}', '${_rdns}',
|
|
206
|
+
'${_failures}', '${_loglines}');
|
|
207
|
+
EOF
|
|
208
|
+
echo "Stored."
|
|
209
|
+
fi
|
|
210
|
+
fi
|
|
211
|
+
|
|
212
|
+
elif [[ X"${_action}" == X"unban" ]]; then
|
|
213
|
+
shift 1
|
|
214
|
+
_ips="$@"
|
|
215
|
+
|
|
216
|
+
if [[ X"${_ips}" == X'' ]]; then
|
|
217
|
+
echo "No IP address(es) specified."
|
|
218
|
+
else
|
|
219
|
+
for _ip in ${_ips}; do
|
|
220
|
+
${CMD_SQL} >/dev/null <<EOF
|
|
221
|
+
DELETE FROM ${DB_TABLE_BANNED} WHERE ip='${_ip}';
|
|
222
|
+
EOF
|
|
223
|
+
done
|
|
224
|
+
|
|
225
|
+
[[ X"$?" == X'0' ]] && echo "Removed."
|
|
226
|
+
fi
|
|
227
|
+
|
|
228
|
+
elif [[ X"${_action}" == X'stop' ]] || [[ X"${_action}" == X"cleanup" ]]; then
|
|
229
|
+
_jail="$2"
|
|
230
|
+
|
|
231
|
+
if [[ X"${_jail}" != X'' ]]; then
|
|
232
|
+
${CMD_SQL} >/dev/null <<EOF
|
|
233
|
+
DELETE FROM ${DB_TABLE_BANNED} WHERE jail='${_jail}';
|
|
234
|
+
DELETE FROM ${DB_TABLE_JAILS} WHERE name='${_jail}';
|
|
235
|
+
EOF
|
|
236
|
+
fi
|
|
237
|
+
|
|
238
|
+
[[ X"$?" == X'0' ]] && echo "All IP addresses have been removed."
|
|
239
|
+
elif [[ X"${_action}" == X"unban_db" ]]; then
|
|
240
|
+
# Call fail2ban-client to unban given IP address(es).
|
|
241
|
+
tmp_file="$(mktemp)"
|
|
242
|
+
|
|
243
|
+
# Exclude extra info on output, just leave jail/ip.
|
|
244
|
+
(${CMD_SQL} <<EOF
|
|
245
|
+
SELECT jail, ip FROM ${DB_TABLE_BANNED} WHERE remove=1;
|
|
246
|
+
EOF
|
|
247
|
+
) | grep -Ev '(jail.*ip|--|\(|^$)' | tr -d '|' >> ${tmp_file}
|
|
248
|
+
|
|
249
|
+
while read jail ip; do
|
|
250
|
+
# Avoid SQL injection: don't allow whitespace, ';', quotes in
|
|
251
|
+
# jail name and IP address.
|
|
252
|
+
if echo ${jail} | grep "[ ;\"\']" &>/dev/null; then
|
|
253
|
+
echo "[WARNING] Invalid jail name: '${jail}'."
|
|
254
|
+
continue
|
|
255
|
+
fi
|
|
256
|
+
|
|
257
|
+
if echo ${ip} | grep "[ ;\"\']" &>/dev/null; then
|
|
258
|
+
echo "[WARNING] Invalid IP address: '${ip}'."
|
|
259
|
+
continue
|
|
260
|
+
fi
|
|
261
|
+
|
|
262
|
+
# fail2ban-client returns number of processed rows on command line,
|
|
263
|
+
# let's discard it to avoid noise/confusion.
|
|
264
|
+
fail2ban-client set ${jail} unbanip ${ip} >/dev/null
|
|
265
|
+
[[ X"$?" == X'0' ]] && echo "Unbanned ${ip} from jail [${jail}]."
|
|
266
|
+
done < ${tmp_file}
|
|
267
|
+
rm -f ${tmp_file} &>/dev/null
|
|
268
|
+
fi
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
[Definition]
|
|
2
|
+
|
|
3
|
+
# Option: loglevel. Default is ERROR
|
|
4
|
+
# Available options: CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG
|
|
5
|
+
loglevel = INFO
|
|
6
|
+
|
|
7
|
+
# Set the log target
|
|
8
|
+
logtarget = SYSLOG
|
|
9
|
+
|
|
10
|
+
# Syslog socket. Required on FreeBSD and OpenBSD.
|
|
11
|
+
#syslogsocket = PH_SYSLOG_SOCKET
|
|
12
|
+
|
|
13
|
+
# Fail2ban socket. Required on FreeBSD.
|
|
14
|
+
#socket = /var/run/fail2ban/fail2ban.sock
|
|
15
|
+
|
|
16
|
+
# Allows IPv6 interface.
|
|
17
|
+
allowipv6 = auto
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
[Definition]
|
|
2
|
+
|
|
3
|
+
# Block clients which cannot pass Postfix postscreen pregreet test.
|
|
4
|
+
# FYI: http://www.postfix.org/POSTSCREEN_README.html#pregreet
|
|
5
|
+
#
|
|
6
|
+
# The SMTP protocol is a classic example of a protocol where the server speaks
|
|
7
|
+
# before the client. postscreen(8) detects zombies that are in a hurry and that
|
|
8
|
+
# speak before their turn.
|
|
9
|
+
failregex = postscreen\[\d+\]: PREGREET .* from \[<HOST>\]:\d+:
|
|
10
|
+
|
|
11
|
+
# while setting up new account, Thunderbird doesn't wait for server connection
|
|
12
|
+
# greeting/banner, this causes Thunderbird cannot pass the Postfix pregreet
|
|
13
|
+
# test and caught by `failregex` rules listed above (the rule contains
|
|
14
|
+
# 'PREGREET' line).
|
|
15
|
+
# FYI: https://bugzilla.mozilla.org/show_bug.cgi?id=538809#c41
|
|
16
|
+
ignoreregex = postscreen\[\d+\]: PREGREET .* from \[<HOST>\]:\d+: (EHLO|HELO) we-guess.mozilla.org
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
[Definition]
|
|
2
|
+
# *) '554 5.7.1' is 'Helo command rejected: ACCESS DENIED'
|
|
3
|
+
#
|
|
4
|
+
# 'ACCESS DENIED' is string defined in postfix restriction rule `check_helo_access`.
|
|
5
|
+
# no all rules contains 'ACCESS DENIED', so we use status code insead.
|
|
6
|
+
|
|
7
|
+
failregex = \[<HOST>\]: SASL (PLAIN|LOGIN) authentication failed
|
|
8
|
+
lost connection after AUTH from (.*)\[<HOST>\]
|
|
9
|
+
reject: RCPT from .*\[<HOST>\]: .*: Relay access denied
|
|
10
|
+
reject: RCPT from .*\[<HOST>\]: .*: Sender address rejected: Domain not found
|
|
11
|
+
reject: RCPT from .*\[<HOST>\]: .*: Helo command rejected: Host not found
|
|
12
|
+
reject: RCPT from .*\[<HOST>\]: .*: Helo command rejected: need fully-qualified hostname
|
|
13
|
+
reject: RCPT from .*\[<HOST>\]: 554 5.7.1
|
|
14
|
+
reject: RCPT from .*\[<HOST>\]:\d+: 550 5.5.1 Protocol error
|
|
15
|
+
warning: Illegal address syntax from (.*)\[<HOST>\] in RCPT command
|
|
16
|
+
postfix\/submission\/smtpd.*: too many errors after AUTH from .*\[<HOST>\]
|
|
17
|
+
|
|
18
|
+
ignoreregex =
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# 'X-Forwarded-For:` appears when Roundcube is running behind HAProxy.
|
|
2
|
+
|
|
3
|
+
[Definition]
|
|
4
|
+
failregex = roundcube.* Failed login .*\(X-Forwarded-For: <HOST>\) in session
|
|
5
|
+
roundcube.* Failed login for (.*) from <HOST>\. AUTHENTICATE LOGIN
|
|
6
|
+
roundcube.* Failed login for (.*) from <HOST> in session
|
|
7
|
+
roundcube.* Error: Login failed for (.*) from <HOST>\. (LOGIN: Authentication failed|AUTHENTICATE LOGIN)
|
|
8
|
+
|
|
9
|
+
ignoreregex =
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
[dovecot]
|
|
2
|
+
backend = polling
|
|
3
|
+
journalmatch=
|
|
4
|
+
enabled = true
|
|
5
|
+
filter = dovecot.iredmail
|
|
6
|
+
logpath = PH_DOVECOT_LOG_FILE tail
|
|
7
|
+
action = PH_FAIL2BAN_ACTION[name=dovecot, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
|
|
8
|
+
banned_db[name=dovecot, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
[nginx-http-auth]
|
|
2
|
+
backend = polling
|
|
3
|
+
journalmatch=
|
|
4
|
+
enabled = false
|
|
5
|
+
filter = nginx-http-auth
|
|
6
|
+
logpath = PH_NGINX_LOG_ERRORLOG tail
|
|
7
|
+
action = PH_FAIL2BAN_ACTION[name=nginx, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
|
|
8
|
+
banned_db[name=nginx, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[pregreet]
|
|
2
|
+
backend = polling
|
|
3
|
+
journalmatch=
|
|
4
|
+
enabled = true
|
|
5
|
+
maxretry = 1
|
|
6
|
+
filter = postfix-pregreet.iredmail
|
|
7
|
+
logpath = PH_MAILLOG tail
|
|
8
|
+
action = PH_FAIL2BAN_ACTION[name=pregreet, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
|
|
9
|
+
banned_db[name=pregreet, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
[postfix]
|
|
2
|
+
backend = polling
|
|
3
|
+
journalmatch=
|
|
4
|
+
enabled = true
|
|
5
|
+
filter = postfix.iredmail
|
|
6
|
+
logpath = PH_MAILLOG tail
|
|
7
|
+
action = PH_FAIL2BAN_ACTION[name=postfix, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
|
|
8
|
+
banned_db[name=postfix, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[roundcube]
|
|
2
|
+
backend = polling
|
|
3
|
+
journalmatch=
|
|
4
|
+
enabled = false
|
|
5
|
+
findtime = 3600
|
|
6
|
+
filter = roundcube.iredmail
|
|
7
|
+
logpath = PH_RCM_LOGFILE tail
|
|
8
|
+
action = PH_FAIL2BAN_ACTION[name=roundcube, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
|
|
9
|
+
banned_db[name=roundcube, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
[sogo]
|
|
2
|
+
backend = polling
|
|
3
|
+
journalmatch=
|
|
4
|
+
enabled = false
|
|
5
|
+
filter = sogo-auth
|
|
6
|
+
logpath = PH_SOGO_LOG_FILE tail
|
|
7
|
+
action = PH_FAIL2BAN_ACTION[name=sogo, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
|
|
8
|
+
banned_db[name=sogo, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/bin/ksh
|
|
2
|
+
|
|
3
|
+
daemon="/usr/local/bin/fail2ban-server"
|
|
4
|
+
|
|
5
|
+
. /etc/rc.d/rc.subr
|
|
6
|
+
|
|
7
|
+
rc_bg=YES
|
|
8
|
+
rc_reload=NO
|
|
9
|
+
|
|
10
|
+
rc_pre() {
|
|
11
|
+
install -d -o root -m 0700 /var/run/fail2ban
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
rc_start() {
|
|
15
|
+
# FYI https://github.com/fail2ban/fail2ban/issues/3923
|
|
16
|
+
nohup ${daemon} -xf start ${daemon_flags} &
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
rc_check() {
|
|
20
|
+
pgrep -q -f "fail2ban-server"
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
rc_stop() {
|
|
24
|
+
${rcexec} ${daemon} -x stop
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
rc_cmd $1
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
--
|
|
2
|
+
-- Used to store both enabled and disabled jails.
|
|
3
|
+
--
|
|
4
|
+
CREATE TABLE IF NOT EXISTS `jails` (
|
|
5
|
+
`id` BIGINT(20) UNSIGNED AUTO_INCREMENT,
|
|
6
|
+
`name` VARCHAR(255) NOT NULL DEFAULT '',
|
|
7
|
+
`enabled` TINYINT(1) DEFAULT 1,
|
|
8
|
+
PRIMARY KEY (`id`),
|
|
9
|
+
UNIQUE INDEX (`name`),
|
|
10
|
+
INDEX (`enabled`)
|
|
11
|
+
) ENGINE=InnoDB;
|
|
12
|
+
|
|
13
|
+
--
|
|
14
|
+
-- Used to store banned/unbanned clients
|
|
15
|
+
--
|
|
16
|
+
CREATE TABLE IF NOT EXISTS `banned` (
|
|
17
|
+
`id` BIGINT(20) UNSIGNED AUTO_INCREMENT,
|
|
18
|
+
-- Banned client IP address
|
|
19
|
+
`ip` VARCHAR(46) NOT NULL DEFAULT '',
|
|
20
|
+
-- A list of banned network ports, separated by comma
|
|
21
|
+
`ports` VARCHAR(255) NOT NULL DEFAULT '',
|
|
22
|
+
-- protocol: tcp, udp, ...
|
|
23
|
+
`protocol` VARCHAR(10) NOT NULL DEFAULT 'tcp',
|
|
24
|
+
-- Fail2ban jail name
|
|
25
|
+
`jail` VARCHAR(50) NOT NULL DEFAULT '',
|
|
26
|
+
-- The server hostname which the ban/unban happens
|
|
27
|
+
`hostname` VARCHAR(255) NOT NULL DEFAULT '',
|
|
28
|
+
`country` VARCHAR(50) NOT NULL DEFAULT '',
|
|
29
|
+
-- reverse DNS name of banned IP address.
|
|
30
|
+
`rdns` VARCHAR(255) NOT NULL DEFAULT '',
|
|
31
|
+
-- number of times the failure occurred in the log file.
|
|
32
|
+
-- we use Fail2ban action tag `ipjailfailures` here.
|
|
33
|
+
`failures` INT(2) NOT NULL DEFAULT 0,
|
|
34
|
+
-- matched log lines.
|
|
35
|
+
-- we use Fail2ban action tag `ipjailmatches` here.
|
|
36
|
+
`loglines` TEXT,
|
|
37
|
+
-- When the ban happens
|
|
38
|
+
`timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
39
|
+
-- if `remove=1`, `ip` will be removed by cron job.
|
|
40
|
+
`remove` TINYINT(1) DEFAULT 0,
|
|
41
|
+
PRIMARY KEY (`id`),
|
|
42
|
+
UNIQUE INDEX (`ip`, `ports`, `protocol`),
|
|
43
|
+
INDEX (`hostname`),
|
|
44
|
+
INDEX (`rdns`),
|
|
45
|
+
INDEX (`jail`),
|
|
46
|
+
INDEX (`country`),
|
|
47
|
+
INDEX (`timestamp`),
|
|
48
|
+
INDEX (`remove`)
|
|
49
|
+
) ENGINE=InnoDB;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
--
|
|
2
|
+
-- Used to store both enabled and disabled jails.
|
|
3
|
+
--
|
|
4
|
+
CREATE TABLE jails (
|
|
5
|
+
id SERIAL PRIMARY KEY,
|
|
6
|
+
name VARCHAR(255) NOT NULL DEFAULT '',
|
|
7
|
+
enabled INT2 DEFAULT 1
|
|
8
|
+
);
|
|
9
|
+
CREATE UNIQUE INDEX idx_jails_name ON jails (name);
|
|
10
|
+
CREATE INDEX idx_jails_enabled ON jails (enabled);
|
|
11
|
+
|
|
12
|
+
--
|
|
13
|
+
-- Used to store banned/unbanned clients
|
|
14
|
+
--
|
|
15
|
+
CREATE TABLE banned (
|
|
16
|
+
id SERIAL PRIMARY KEY,
|
|
17
|
+
-- Banned client IP address
|
|
18
|
+
ip VARCHAR(46) NOT NULL DEFAULT '',
|
|
19
|
+
-- A list of banned network ports, separated by comma
|
|
20
|
+
ports VARCHAR(255) NOT NULL DEFAULT '',
|
|
21
|
+
-- protocol: tcp, udp, ...
|
|
22
|
+
protocol VARCHAR(10) NOT NULL DEFAULT 'tcp',
|
|
23
|
+
-- Fail2ban jail name
|
|
24
|
+
jail VARCHAR(50) NOT NULL DEFAULT '',
|
|
25
|
+
-- The server hostname which the ban/unban happens
|
|
26
|
+
hostname VARCHAR(255) NOT NULL DEFAULT '',
|
|
27
|
+
country VARCHAR(50) NOT NULL DEFAULT '',
|
|
28
|
+
-- reverse DNS name of banned IP address.
|
|
29
|
+
rdns VARCHAR(255) NOT NULL DEFAULT '',
|
|
30
|
+
-- number of times the failure occurred in the log file.
|
|
31
|
+
-- we use Fail2ban action tag `ipjailfailures` here.
|
|
32
|
+
failures SMALLINT NOT NULL DEFAULT 0,
|
|
33
|
+
-- matched log lines.
|
|
34
|
+
-- we use Fail2ban action tag `ipjailmatches` here.
|
|
35
|
+
loglines TEXT,
|
|
36
|
+
-- When the ban happens
|
|
37
|
+
timestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT (CURRENT_TIMESTAMP(0) AT TIME ZONE 'UTC'),
|
|
38
|
+
-- if `remove=1`, `ip` will be removed by cron job.
|
|
39
|
+
remove INT2 DEFAULT 0
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
CREATE UNIQUE INDEX idx_banned_ip_ports_protocol ON banned (ip, ports, protocol);
|
|
43
|
+
CREATE INDEX idx_banned_jail ON banned (jail);
|
|
44
|
+
CREATE INDEX idx_banned_hostname ON banned (hostname);
|
|
45
|
+
CREATE INDEX idx_banned_country ON banned (country);
|
|
46
|
+
CREATE INDEX idx_banned_timestamp ON banned (timestamp);
|
|
47
|
+
CREATE INDEX idx_banned_remove ON banned (remove);
|
|
48
|
+
CREATE INDEX idx_banned_rdns ON banned (rdns);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<service>
|
|
3
|
+
<short>SSH</short>
|
|
4
|
+
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
|
|
5
|
+
<port protocol="tcp" port="22"/>
|
|
6
|
+
</service>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<zone>
|
|
3
|
+
<short>Mail services</short>
|
|
4
|
+
<description>Allow access to mail services from external network.</description>
|
|
5
|
+
<service name="http"/>
|
|
6
|
+
<service name="https"/>
|
|
7
|
+
<service name="smtp"/>
|
|
8
|
+
<service name="smtp-submission"/>
|
|
9
|
+
<port port="465" protocol="tcp"/>
|
|
10
|
+
<service name="pop3"/>
|
|
11
|
+
<service name="pop3s"/>
|
|
12
|
+
<service name="imap"/>
|
|
13
|
+
<service name="imaps"/>
|
|
14
|
+
<service name="ssh"/>
|
|
15
|
+
</zone>
|