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,287 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# Author: Zhang Huangbin (zhb _at_ iredmail.org)
|
|
4
|
+
# Purpose: Add new OpenLDAP user for postfix mail server.
|
|
5
|
+
# Project: iRedMail (http://www.iredmail.org/)
|
|
6
|
+
|
|
7
|
+
# --------------------------- WARNING ------------------------------
|
|
8
|
+
# This script only works under iRedMail >= 0.8.4 due to ldap schema
|
|
9
|
+
# changes.
|
|
10
|
+
# ------------------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
# --------------------------- USAGE --------------------------------
|
|
13
|
+
# 1) Please change variables below to fit your env:
|
|
14
|
+
#
|
|
15
|
+
# - In 'Global Setting' section:
|
|
16
|
+
# * STORAGE_BASE_DIRECTORY
|
|
17
|
+
#
|
|
18
|
+
# - In 'LDAP Setting' section:
|
|
19
|
+
# * LDAP_SUFFIX
|
|
20
|
+
# * BINDDN
|
|
21
|
+
# * BINDPW
|
|
22
|
+
# * QUOTA
|
|
23
|
+
#
|
|
24
|
+
# - In 'Virtual Domains & Users' section:
|
|
25
|
+
# * QUOTA
|
|
26
|
+
# * TRANSPORT
|
|
27
|
+
# * PASSWORD_SCHEME # SSHA is recommended.
|
|
28
|
+
# * DEFAULT_PASSWD
|
|
29
|
+
# * USE_DEFAULT_PASSWD
|
|
30
|
+
#
|
|
31
|
+
# - Optional variables:
|
|
32
|
+
# * SEND_WELCOME_MSG
|
|
33
|
+
#
|
|
34
|
+
# 2) Execute this script with domain name and username (without @domain) directly:
|
|
35
|
+
#
|
|
36
|
+
# shell# bash create_mail_user_OpenLDAP.sh example.com new_user
|
|
37
|
+
#
|
|
38
|
+
# It will create a mail user with mail address "new_user@example.com".
|
|
39
|
+
# To add multiple mail users, just list all usernames:
|
|
40
|
+
#
|
|
41
|
+
# shell# bash create_mail_user_OpenLDAP.sh example.com new_user new_user2 new_user3
|
|
42
|
+
#
|
|
43
|
+
# ------------------------------------------------------------------
|
|
44
|
+
|
|
45
|
+
# Source functions.
|
|
46
|
+
. ../conf/global
|
|
47
|
+
. ../conf/core
|
|
48
|
+
|
|
49
|
+
# ----------------------------------------------
|
|
50
|
+
# ------------ Global Setting ------------------
|
|
51
|
+
# ----------------------------------------------
|
|
52
|
+
# Storage base directory used to store users' mail.
|
|
53
|
+
# mailbox of LDAP user will be:
|
|
54
|
+
# ${STORAGE_BASE_DIRECTORY}/${DOMAIN_NAME}/${USERNAME}/
|
|
55
|
+
# Such as:
|
|
56
|
+
# /var/vmail/vmail1/iredmail.org/zhb/
|
|
57
|
+
# -------------------|===========|-----|
|
|
58
|
+
# STORAGE_BASE_DIRECTORY|DOMAIN_NAME|USERNAME
|
|
59
|
+
#
|
|
60
|
+
STORAGE_BASE_DIRECTORY="/var/vmail/vmail1"
|
|
61
|
+
|
|
62
|
+
# ------------------------------------------------------------------
|
|
63
|
+
# -------------------------- LDAP Setting --------------------------
|
|
64
|
+
# ------------------------------------------------------------------
|
|
65
|
+
LDAP_SUFFIX="dc=example,dc=com"
|
|
66
|
+
|
|
67
|
+
# Setting 'BASE_DN'.
|
|
68
|
+
BASE_DN="o=domains,${LDAP_SUFFIX}"
|
|
69
|
+
|
|
70
|
+
# Setting 'DOMAIN_NAME' and DOMAIN_DN':
|
|
71
|
+
# * DOMAIN will be used in mail address: ${USERNAME}@${DOMAIN}
|
|
72
|
+
# * DOMAIN_DN will be used in LDAP dn.
|
|
73
|
+
DOMAIN_NAME="$1"
|
|
74
|
+
DOMAIN_DN="domainName=${DOMAIN_NAME}"
|
|
75
|
+
OU_USER_DN="ou=Users"
|
|
76
|
+
|
|
77
|
+
# ---------- rootdn of LDAP Server ----------
|
|
78
|
+
# Setting rootdn of LDAP.
|
|
79
|
+
BINDDN="cn=Manager,${LDAP_SUFFIX}"
|
|
80
|
+
|
|
81
|
+
# Setting rootpw of LDAP.
|
|
82
|
+
BINDPW='passwd'
|
|
83
|
+
|
|
84
|
+
# ---------- Virtual Domains & Users --------------
|
|
85
|
+
# Set default quota for LDAP users: 104857600 = 100M
|
|
86
|
+
QUOTA='1048576000'
|
|
87
|
+
|
|
88
|
+
# Default MTA Transport (Defined in postfix master.cf).
|
|
89
|
+
TRANSPORT='dovecot'
|
|
90
|
+
|
|
91
|
+
# Password scheme. Support schemes: BCRYPT, SSHA512, SSHA, PLAIN.
|
|
92
|
+
PASSWORD_SCHEME='SSHA'
|
|
93
|
+
DEFAULT_PASSWD='888888'
|
|
94
|
+
USE_DEFAULT_PASSWD='NO'
|
|
95
|
+
|
|
96
|
+
# ------------------------------------------------------------------
|
|
97
|
+
# ------------------------- Welcome Msg ----------------------------
|
|
98
|
+
# ------------------------------------------------------------------
|
|
99
|
+
# Send a welcome mail after user created.
|
|
100
|
+
SEND_WELCOME_MSG='NO'
|
|
101
|
+
|
|
102
|
+
# Set welcome mail info.
|
|
103
|
+
WELCOME_MSG_SUBJECT="Welcome!"
|
|
104
|
+
WELCOME_MSG_BODY="Welcome, new user."
|
|
105
|
+
|
|
106
|
+
# -------------------------------------------
|
|
107
|
+
# ----------- End Global Setting ------------
|
|
108
|
+
# -------------------------------------------
|
|
109
|
+
|
|
110
|
+
# Time stamp, will be appended in maildir.
|
|
111
|
+
DATE="$(date +%Y.%m.%d.%H.%M.%S)"
|
|
112
|
+
|
|
113
|
+
STORAGE_BASE="$(dirname ${STORAGE_BASE_DIRECTORY})"
|
|
114
|
+
STORAGE_NODE="$(basename ${STORAGE_BASE_DIRECTORY})"
|
|
115
|
+
|
|
116
|
+
# Get days since 1970-01-01
|
|
117
|
+
EPOCH_SECONDS="$(date +%s)"
|
|
118
|
+
DAYS_SINCE_EPOCH="$((EPOCH_SECONDS / 24 / 60 / 60))"
|
|
119
|
+
|
|
120
|
+
generate_password_hash()
|
|
121
|
+
{
|
|
122
|
+
# Usage: generate_password_hash <password-scheme> <plain-password>
|
|
123
|
+
_scheme="${1}"
|
|
124
|
+
_password="${2}"
|
|
125
|
+
|
|
126
|
+
if [ X"${_scheme}" == X'BCRYPT' ]; then
|
|
127
|
+
_scheme='BLF-CRYPT'
|
|
128
|
+
fi
|
|
129
|
+
|
|
130
|
+
doveadm pw -s "${_scheme}" -p "${_password}"
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
add_new_domain()
|
|
134
|
+
{
|
|
135
|
+
domain="$(echo ${1} | tr '[A-Z]' '[a-z]')"
|
|
136
|
+
ldapsearch -x -D "${BINDDN}" -w "${BINDPW}" -b "${BASE_DN}" | grep "domainName: ${domain}" >/dev/null
|
|
137
|
+
|
|
138
|
+
if [ X"$?" != X"0" ]; then
|
|
139
|
+
echo "Add new domain: ${domain}."
|
|
140
|
+
|
|
141
|
+
ldapadd -x -D "${BINDDN}" -w "${BINDPW}" <<EOF
|
|
142
|
+
dn: ${DOMAIN_DN},${BASE_DN}
|
|
143
|
+
objectClass: mailDomain
|
|
144
|
+
domainName: ${domain}
|
|
145
|
+
mtaTransport: ${TRANSPORT}
|
|
146
|
+
accountStatus: active
|
|
147
|
+
enabledService: mail
|
|
148
|
+
EOF
|
|
149
|
+
else
|
|
150
|
+
:
|
|
151
|
+
fi
|
|
152
|
+
|
|
153
|
+
ldapadd -x -D "${BINDDN}" -w "${BINDPW}" <<EOF
|
|
154
|
+
dn: ${OU_USER_DN},${DOMAIN_DN},${BASE_DN}
|
|
155
|
+
objectClass: organizationalUnit
|
|
156
|
+
objectClass: top
|
|
157
|
+
ou: Users
|
|
158
|
+
EOF
|
|
159
|
+
|
|
160
|
+
ldapadd -x -D "${BINDDN}" -w "${BINDPW}" <<EOF
|
|
161
|
+
dn: ou=Groups,${DOMAIN_DN},${BASE_DN}
|
|
162
|
+
objectClass: organizationalUnit
|
|
163
|
+
objectClass: top
|
|
164
|
+
ou: Groups
|
|
165
|
+
EOF
|
|
166
|
+
|
|
167
|
+
ldapadd -x -D "${BINDDN}" -w "${BINDPW}" <<EOF
|
|
168
|
+
dn: ou=Aliases,${DOMAIN_DN},${BASE_DN}
|
|
169
|
+
objectClass: organizationalUnit
|
|
170
|
+
objectClass: top
|
|
171
|
+
ou: Aliases
|
|
172
|
+
EOF
|
|
173
|
+
|
|
174
|
+
ldapadd -x -D "${BINDDN}" -w "${BINDPW}" <<EOF
|
|
175
|
+
dn: ou=Externals,${DOMAIN_DN},${BASE_DN}
|
|
176
|
+
objectClass: organizationalUnit
|
|
177
|
+
objectClass: top
|
|
178
|
+
ou: Externals
|
|
179
|
+
EOF
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
add_new_user()
|
|
183
|
+
{
|
|
184
|
+
USERNAME="$(echo $1 | tr [A-Z] [a-z])"
|
|
185
|
+
MAIL="$( echo $2 | tr [A-Z] [a-z])"
|
|
186
|
+
|
|
187
|
+
maildir="${DOMAIN_NAME}/$(hash_maildir ${USERNAME})"
|
|
188
|
+
|
|
189
|
+
# Generate user password.
|
|
190
|
+
if [ X"${USE_DEFAULT_PASSWD}" == X'YES' ]; then
|
|
191
|
+
PASSWD="$(generate_password_hash ${PASSWORD_SCHEME} ${DEFAULT_PASSWD})"
|
|
192
|
+
else
|
|
193
|
+
PASSWD="$(generate_password_hash ${PASSWORD_SCHEME} ${USERNAME})"
|
|
194
|
+
fi
|
|
195
|
+
|
|
196
|
+
ldapadd -x -D "${BINDDN}" -w "${BINDPW}" <<EOF
|
|
197
|
+
dn: mail=${MAIL},${OU_USER_DN},${DOMAIN_DN},${BASE_DN}
|
|
198
|
+
objectClass: inetOrgPerson
|
|
199
|
+
objectClass: shadowAccount
|
|
200
|
+
objectClass: amavisAccount
|
|
201
|
+
objectClass: mailUser
|
|
202
|
+
objectClass: top
|
|
203
|
+
accountStatus: active
|
|
204
|
+
homeDirectory: ${STORAGE_BASE_DIRECTORY}/${maildir}
|
|
205
|
+
mail: ${MAIL}
|
|
206
|
+
mailQuota: ${QUOTA}
|
|
207
|
+
userPassword: ${PASSWD}
|
|
208
|
+
cn: ${USERNAME}
|
|
209
|
+
sn: ${USERNAME}
|
|
210
|
+
givenName: ${USERNAME}
|
|
211
|
+
uid: ${USERNAME}
|
|
212
|
+
shadowLastChange: ${DAYS_SINCE_EPOCH}
|
|
213
|
+
amavisLocal: TRUE
|
|
214
|
+
enabledService: internal
|
|
215
|
+
enabledService: doveadm
|
|
216
|
+
enabledService: lib-storage
|
|
217
|
+
enabledService: quota-status
|
|
218
|
+
enabledService: indexer-worker
|
|
219
|
+
enabledService: dsync
|
|
220
|
+
enabledService: mail
|
|
221
|
+
enabledService: pop3
|
|
222
|
+
enabledService: pop3secured
|
|
223
|
+
enabledService: pop3tls
|
|
224
|
+
enabledService: imap
|
|
225
|
+
enabledService: imapsecured
|
|
226
|
+
enabledService: imaptls
|
|
227
|
+
enabledService: smtp
|
|
228
|
+
enabledService: smtpsecured
|
|
229
|
+
enabledService: smtptls
|
|
230
|
+
enabledService: managesieve
|
|
231
|
+
enabledService: managesievesecured
|
|
232
|
+
enabledService: managesievetls
|
|
233
|
+
enabledService: sieve
|
|
234
|
+
enabledService: sievesecured
|
|
235
|
+
enabledService: sievetls
|
|
236
|
+
enabledService: deliver
|
|
237
|
+
enabledService: lda
|
|
238
|
+
enabledService: lmtp
|
|
239
|
+
enabledService: forward
|
|
240
|
+
enabledService: senderbcc
|
|
241
|
+
enabledService: recipientbcc
|
|
242
|
+
enabledService: shadowaddress
|
|
243
|
+
enabledService: displayedInGlobalAddressBook
|
|
244
|
+
enabledService: sogo
|
|
245
|
+
enabledService: sogowebmail
|
|
246
|
+
enabledService: sogocalendar
|
|
247
|
+
enabledService: sogoactivesync
|
|
248
|
+
EOF
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
send_welcome_mail()
|
|
252
|
+
{
|
|
253
|
+
MAIL="$1"
|
|
254
|
+
echo "Send a welcome mail to new user: ${MAIL}"
|
|
255
|
+
|
|
256
|
+
echo "${WELCOME_MSG_BODY}" | mail -s "${WELCOME_MSG_SUBJECT}" ${MAIL}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
usage()
|
|
260
|
+
{
|
|
261
|
+
echo "Usage:"
|
|
262
|
+
echo -e "\t$0 DOMAIN USERNAME"
|
|
263
|
+
echo -e "\t$0 DOMAIN USER1 USER2 USER3 ..."
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
if [ $# -lt 2 ]; then
|
|
267
|
+
usage
|
|
268
|
+
else
|
|
269
|
+
# Promopt to check settings.
|
|
270
|
+
[ X"${LDAP_SUFFIX}" == X"dc=example,dc=com" ] && echo "You should change 'LDAP_SUFFIX' in $0."
|
|
271
|
+
|
|
272
|
+
# Get domain name.
|
|
273
|
+
DOMAIN_NAME="$(echo $1 | tr '[A-Z]' '[a-z]')"
|
|
274
|
+
shift 1
|
|
275
|
+
|
|
276
|
+
add_new_domain ${DOMAIN_NAME}
|
|
277
|
+
for i in $@; do
|
|
278
|
+
USERNAME="$(echo $i | tr '[A-Z]' '[a-z]')"
|
|
279
|
+
MAIL="${USERNAME}@${DOMAIN_NAME}"
|
|
280
|
+
|
|
281
|
+
# Add new user in LDAP.
|
|
282
|
+
add_new_user ${USERNAME} ${MAIL}
|
|
283
|
+
|
|
284
|
+
# Send welcome msg to new user.
|
|
285
|
+
[ X"${SEND_WELCOME_MSG}" == X'YES' ] && send_welcome_mail ${MAIL}
|
|
286
|
+
done
|
|
287
|
+
fi
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# Author: Zhang Huangbin (zhb _at_ iredmail.org)
|
|
4
|
+
# Purpose: Import users to SQL database from plain text file.
|
|
5
|
+
# Project: iRedMail (http://www.iredmail.org/)
|
|
6
|
+
|
|
7
|
+
# -------------------------------------------------------------------
|
|
8
|
+
# Usage:
|
|
9
|
+
# * Edit these variables:
|
|
10
|
+
# STORAGE_BASE_DIRECTORY
|
|
11
|
+
# DEFAULT_QUOTA='1024' # 1024 is 1GB
|
|
12
|
+
#
|
|
13
|
+
# * Run this script to generate SQL command used to create new user.
|
|
14
|
+
#
|
|
15
|
+
# bash create_mail_user_SQL.sh <new-email> <plain-password>
|
|
16
|
+
#
|
|
17
|
+
# For example:
|
|
18
|
+
#
|
|
19
|
+
# bash create_mail_user_SQL.sh user@domain.ltd plain_password
|
|
20
|
+
#
|
|
21
|
+
# It will print SQL commands on console directly, you can redirect the
|
|
22
|
+
# output to a file for further use like this:
|
|
23
|
+
#
|
|
24
|
+
# bash create_mail_user_SQL.sh user@domain.ltd plain_password > output.sql
|
|
25
|
+
#
|
|
26
|
+
# * Import output.sql into SQL database like below:
|
|
27
|
+
#
|
|
28
|
+
# # mysql -uroot -p
|
|
29
|
+
# mysql> USE vmail;
|
|
30
|
+
# mysql> SOURCE /path/to/output.sql;
|
|
31
|
+
#
|
|
32
|
+
# # psql -d vmail
|
|
33
|
+
# sql> \i /path/to/output.sql;
|
|
34
|
+
|
|
35
|
+
# --------- CHANGE THESE VALUES ----------
|
|
36
|
+
# Storage base directory used to store users' mail.
|
|
37
|
+
STORAGE_BASE_DIRECTORY="/var/vmail/vmail1"
|
|
38
|
+
|
|
39
|
+
###########
|
|
40
|
+
# Password
|
|
41
|
+
#
|
|
42
|
+
# Password scheme. Available schemes: BCRYPT, SSHA512, SSHA, PLAIN.
|
|
43
|
+
# Check file Available
|
|
44
|
+
PASSWORD_SCHEME='SSHA512'
|
|
45
|
+
|
|
46
|
+
# Default mail quota (in MB).
|
|
47
|
+
DEFAULT_QUOTA='1024'
|
|
48
|
+
|
|
49
|
+
#
|
|
50
|
+
# Maildir settings
|
|
51
|
+
#
|
|
52
|
+
# Maildir style: hashed, normal.
|
|
53
|
+
# Hashed maildir style, so that there won't be many large directories
|
|
54
|
+
# in your mail storage file system. Better performance in large scale
|
|
55
|
+
# deployment.
|
|
56
|
+
# Format: e.g. username@domain.td
|
|
57
|
+
# hashed -> domain.ltd/u/us/use/username/
|
|
58
|
+
# normal -> domain.ltd/username/
|
|
59
|
+
# Default hash level is 3.
|
|
60
|
+
MAILDIR_STYLE='hashed' # hashed, normal.
|
|
61
|
+
|
|
62
|
+
if [ X"$#" != X'2' ]; then
|
|
63
|
+
echo "Invalid command arguments. Usage:"
|
|
64
|
+
echo "bash create_mail_user_SQL.sh user@domain.ltd plain_password"
|
|
65
|
+
exit 255
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
# Time stamp, will be appended in maildir.
|
|
69
|
+
DATE="$(date +%Y.%m.%d.%H.%M.%S)"
|
|
70
|
+
WC_L='wc -L'
|
|
71
|
+
if [ X"$(uname -s)" == X'OpenBSD' ]; then
|
|
72
|
+
WC_L='wc -l'
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
STORAGE_BASE="$(dirname ${STORAGE_BASE_DIRECTORY})"
|
|
76
|
+
STORAGE_NODE="$(basename ${STORAGE_BASE_DIRECTORY})"
|
|
77
|
+
|
|
78
|
+
generate_password_hash()
|
|
79
|
+
{
|
|
80
|
+
# Usage: generate_password_hash <password-scheme> <plain-password>
|
|
81
|
+
_scheme="${1}"
|
|
82
|
+
_password="${2}"
|
|
83
|
+
|
|
84
|
+
if [ X"${_scheme}" == X'BCRYPT' ]; then
|
|
85
|
+
_scheme='BLF-CRYPT'
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
doveadm pw -s "${_scheme}" -p "${_password}"
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
# Read input.
|
|
92
|
+
# Convert email address to lower cases.
|
|
93
|
+
mail="$(echo $1 | tr '[:upper:]' '[:lower:]')"
|
|
94
|
+
plain_password="$2"
|
|
95
|
+
|
|
96
|
+
username="$(echo $mail | awk -F'@' '{print $1}')"
|
|
97
|
+
domain="$(echo $mail | awk -F'@' '{print $2}')"
|
|
98
|
+
|
|
99
|
+
# Cyrpt default password.
|
|
100
|
+
export CRYPT_PASSWD="$(generate_password_hash ${PASSWORD_SCHEME} ${plain_password})"
|
|
101
|
+
|
|
102
|
+
# Different maildir style: hashed, normal.
|
|
103
|
+
if [ X"${MAILDIR_STYLE}" == X"hashed" ]; then
|
|
104
|
+
length="$(echo ${username} | ${WC_L} )"
|
|
105
|
+
str1="$(echo ${username} | cut -c1)"
|
|
106
|
+
str2="$(echo ${username} | cut -c2)"
|
|
107
|
+
str3="$(echo ${username} | cut -c3)"
|
|
108
|
+
|
|
109
|
+
test -z "${str2}" && str2="${str1}"
|
|
110
|
+
test -z "${str3}" && str3="${str2}"
|
|
111
|
+
|
|
112
|
+
# Use mbox, will be changed later.
|
|
113
|
+
maildir="${domain}/${str1}/${str2}/${str3}/${username}-${DATE}/"
|
|
114
|
+
else
|
|
115
|
+
maildir="${domain}/${username}-${DATE}/"
|
|
116
|
+
fi
|
|
117
|
+
|
|
118
|
+
cat <<EOF
|
|
119
|
+
INSERT INTO mailbox (username, password, name,
|
|
120
|
+
storagebasedirectory,storagenode, maildir,
|
|
121
|
+
quota, domain, active, passwordlastchange, created)
|
|
122
|
+
VALUES ('${mail}', '${CRYPT_PASSWD}', '${username}',
|
|
123
|
+
'${STORAGE_BASE}','${STORAGE_NODE}', '${maildir}',
|
|
124
|
+
'${DEFAULT_QUOTA}', '${domain}', '1', NOW(), NOW());
|
|
125
|
+
INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_forwarding)
|
|
126
|
+
VALUES ('${mail}', '${mail}','${domain}', '${domain}', 1);
|
|
127
|
+
EOF
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# Author: Zhang Huangbin <zhb@iredmail.org>
|
|
4
|
+
# Purpose: Enable Postfix postscreen.
|
|
5
|
+
# Last update: Dec 1, 2015
|
|
6
|
+
|
|
7
|
+
export KERNEL_NAME="$(uname -s | tr '[a-z]' '[A-Z]')"
|
|
8
|
+
export DATE="$(/bin/date +%Y.%m.%d.%H.%M.%S)"
|
|
9
|
+
export SYS_GROUP_ROOT='root'
|
|
10
|
+
|
|
11
|
+
export SYS_USER_POSTFIX='postfix'
|
|
12
|
+
export SYS_GROUP_POSTFIX='postfix'
|
|
13
|
+
|
|
14
|
+
export POSTFIX_ROOT_DIR='/etc/postfix'
|
|
15
|
+
export POSTFIX_DATA_DIRECTORY='/var/lib/postfix' # postconf data_directory
|
|
16
|
+
|
|
17
|
+
if [ X"${KERNEL_NAME}" == X'FREEBSD' ]; then
|
|
18
|
+
export SYS_GROUP_ROOT='wheel'
|
|
19
|
+
export POSTFIX_ROOT_DIR='/usr/local/etc/postfix'
|
|
20
|
+
export POSTFIX_DATA_DIRECTORY='/var/db/postfix'
|
|
21
|
+
elif [ X"${KERNEL_NAME}" == X'OPENBSD' ]; then
|
|
22
|
+
export SYS_GROUP_ROOT='wheel'
|
|
23
|
+
export SYS_USER_POSTFIX='_postfix'
|
|
24
|
+
export SYS_GROUP_POSTFIX='_postfix'
|
|
25
|
+
export POSTFIX_DATA_DIRECTORY='/var/postfix'
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# path to some config files
|
|
29
|
+
export MAIN_CF="${POSTFIX_ROOT_DIR}/main.cf"
|
|
30
|
+
export MASTER_CF="${POSTFIX_ROOT_DIR}/master.cf"
|
|
31
|
+
export POSTSCREEN_DNSBL_REPLY="${POSTFIX_ROOT_DIR}/postscreen_dnsbl_reply"
|
|
32
|
+
export POSTSCREEN_ACCESS_CIDR="${POSTFIX_ROOT_DIR}/postscreen_access.cidr"
|
|
33
|
+
|
|
34
|
+
# Get Postfix version number.
|
|
35
|
+
export POSTFIX_VERSION="$(postconf mail_version 2>/dev/null | awk '{print $NF}')"
|
|
36
|
+
|
|
37
|
+
# postscreen requires Postfix 2.8 or later.
|
|
38
|
+
if echo ${POSTFIX_VERSION} | grep '^2\.[01234567]\.' &>/dev/null; then
|
|
39
|
+
echo "<WARNING> postscreen requires Postfix 2.8 or later, you're running ${POSTFIX_VERSION}."
|
|
40
|
+
exit 255
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
backup_file()
|
|
44
|
+
{
|
|
45
|
+
# Usage: backup_file file1 [file2 file3 ... fileN]
|
|
46
|
+
if [ X"$#" != X"0" ]; then
|
|
47
|
+
for f in $@; do
|
|
48
|
+
if [ -f ${f} ]; then
|
|
49
|
+
echo -e "* [BACKUP] ${f} -> ${f}.${DATE}."
|
|
50
|
+
cp -f ${f} ${f}.${DATE}
|
|
51
|
+
fi
|
|
52
|
+
done
|
|
53
|
+
fi
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
backup_file ${MAIN_CF} ${MASTER_CF} ${POSTSCREEN_ACCESS_CIDR} ${POSTSCREEN_DNSBL_REPLY}
|
|
57
|
+
|
|
58
|
+
echo "* Comment out 'smtp inet ... smtpd' service in ${MASTER_CF}."
|
|
59
|
+
perl -pi -e 's/^(smtp .*inet.*smtpd)$/#${1}/g' ${MASTER_CF}
|
|
60
|
+
|
|
61
|
+
echo "* Uncomment the new 'smtpd pass ... smtpd' service in ${MASTER_CF}."
|
|
62
|
+
perl -pi -e 's/^#(smtpd.*pass.*smtpd)$/${1}/g' ${MASTER_CF}
|
|
63
|
+
|
|
64
|
+
echo "* Uncomment the new "smtp inet ... postscreen" service in ${MASTER_CF}."
|
|
65
|
+
perl -pi -e 's/^#(smtp *.*inet.*postscreen)$/${1}/g' ${MASTER_CF}
|
|
66
|
+
|
|
67
|
+
echo "* Uncomment the new 'tlsproxy unix ... tlsproxy' service in ${MASTER_CF}."
|
|
68
|
+
perl -pi -e 's/^#(tlsproxy.*unix.*tlsproxy)$/${1}/g' ${MASTER_CF}
|
|
69
|
+
|
|
70
|
+
echo "* Uncomment the new 'dnsblog unix ... dnsblog' service in ${MASTER_CF}."
|
|
71
|
+
perl -pi -e 's/^#(dnsblog.*unix.*dnsblog)$/${1}/g' ${MASTER_CF}
|
|
72
|
+
|
|
73
|
+
echo "* Update ${MAIN_CF} to enable postscreen."
|
|
74
|
+
postconf -e postscreen_dnsbl_threshold=2
|
|
75
|
+
postconf -e postscreen_dnsbl_sites='zen.spamhaus.org=127.0.0.[2..11]*3 b.barracudacentral.org=127.0.0.2*2'
|
|
76
|
+
|
|
77
|
+
postconf -e postscreen_dnsbl_reply_map="texthash:${POSTSCREEN_DNSBL_REPLY}"
|
|
78
|
+
cat > ${POSTSCREEN_DNSBL_REPLY} <<EOF
|
|
79
|
+
# Secret DNSBL name Name in postscreen(8) replies
|
|
80
|
+
EOF
|
|
81
|
+
|
|
82
|
+
postconf -e postscreen_access_list="permit_mynetworks, cidr:${POSTSCREEN_ACCESS_CIDR}"
|
|
83
|
+
cat > ${POSTSCREEN_ACCESS_CIDR} <<EOF
|
|
84
|
+
# Rules are evaluated in the order as specified.
|
|
85
|
+
#1.2.3.4 permit
|
|
86
|
+
#2.3.4.5 reject
|
|
87
|
+
|
|
88
|
+
# Permit local clients
|
|
89
|
+
127.0.0.0/8 permit
|
|
90
|
+
EOF
|
|
91
|
+
|
|
92
|
+
postconf -e postscreen_greet_action='drop'
|
|
93
|
+
postconf -e postscreen_dnsbl_action='drop'
|
|
94
|
+
postconf -e postscreen_blacklist_action='drop'
|
|
95
|
+
|
|
96
|
+
# Require Postfix-2.11.
|
|
97
|
+
if echo ${POSTFIX_VERSION} | grep '^2\.[123456789][123456789]' &>/dev/null; then
|
|
98
|
+
postconf -e postscreen_dnsbl_whitelist_threshold='-2'
|
|
99
|
+
fi
|
|
100
|
+
|
|
101
|
+
# From Postfix author Wietse Venema, posted in Postfix mailing list on Jul 14, 2015:
|
|
102
|
+
# ----
|
|
103
|
+
# I would not enable the "after 220 greeting" protocol tests, because
|
|
104
|
+
# some senders that pass the tests will not retry (mail will never
|
|
105
|
+
# be delivered), and some will retry from a different client IP address
|
|
106
|
+
# (mail will be delayed). Whitelisting Google does not solve the
|
|
107
|
+
# problem because it also affects other senders.
|
|
108
|
+
#
|
|
109
|
+
# The amount of mail stopped by these tests is so small that it is not
|
|
110
|
+
# worth the trouble at this time.
|
|
111
|
+
# ----
|
|
112
|
+
#postscreen_pipelining_enable=yes
|
|
113
|
+
#postscreen_pipelining_action=
|
|
114
|
+
#
|
|
115
|
+
#postscreen_non_smtp_command_enable=yes
|
|
116
|
+
#postscreen_non_smtp_command_action=
|
|
117
|
+
#
|
|
118
|
+
#postscreen_bare_newline_enable=yes
|
|
119
|
+
#postscreen_bare_newline_action=
|
|
120
|
+
|
|
121
|
+
# Create directory inside chroot directory used to store file `postscreen_cache`.
|
|
122
|
+
# queue directory. Postfix will be chrooted to this directory.
|
|
123
|
+
queue_directory="$(postconf queue_directory | awk '{print $3}')"
|
|
124
|
+
# data directory. used to store additional files.
|
|
125
|
+
data_directory="$(postconf data_directory | awk '{print $3}')"
|
|
126
|
+
chrooted_data_directory="${queue_directory}/${data_directory}"
|
|
127
|
+
|
|
128
|
+
echo "* Create ${chrooted_data_directory}/postscreen_cache.db."
|
|
129
|
+
mkdir -p ${chrooted_data_directory}
|
|
130
|
+
chown ${SYS_USER_POSTFIX}:${SYS_GROUP_ROOT} ${chrooted_data_directory}
|
|
131
|
+
chmod 0700 ${chrooted_data_directory}
|
|
132
|
+
|
|
133
|
+
# Create db file.
|
|
134
|
+
cd ${chrooted_data_directory}
|
|
135
|
+
touch postscreen_cache
|
|
136
|
+
postmap btree:postscreen_cache
|
|
137
|
+
rm postscreen_cache
|
|
138
|
+
chown ${SYS_USER_POSTFIX}:${SYS_GROUP_POSTFIX} postscreen_cache.db
|
|
139
|
+
chmod 0700 postscreen_cache.db
|
|
140
|
+
|
|
141
|
+
echo "* Reloading postfix service to read the new configuration."
|
|
142
|
+
postfix reload
|
|
143
|
+
|
|
144
|
+
echo "* postscreen is now enabled."
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# Purpose: Unban specified IP address(es) from all Fail2ban jails.
|
|
4
|
+
# Author: Zhang Huangbin
|
|
5
|
+
|
|
6
|
+
# Usage:
|
|
7
|
+
#
|
|
8
|
+
# bash fail2ban_unban_ip.sh 192.168.1.1 [192.168.2.2 ...]
|
|
9
|
+
|
|
10
|
+
if [ X"$#" == X'0' ]; then
|
|
11
|
+
cat <<EOF
|
|
12
|
+
Usage: specify the IP addresses you want to unban on command line. For example:
|
|
13
|
+
|
|
14
|
+
$ bash fail2ban_unban_ip.sh 173.254.22.21
|
|
15
|
+
|
|
16
|
+
Multiple IP addresses must be spearated by space.
|
|
17
|
+
|
|
18
|
+
$ bash fail2ban_unban_ip.sh 173.254.22.21 8.8.8.8 8.8.4.4
|
|
19
|
+
|
|
20
|
+
EOF
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
# Get all IP addresses from command line.
|
|
24
|
+
IPS="$@"
|
|
25
|
+
|
|
26
|
+
# Path to command 'fail2ban-client'
|
|
27
|
+
F2B='fail2ban-client'
|
|
28
|
+
|
|
29
|
+
# Get all jails.
|
|
30
|
+
JAILS="$(${F2B} status | grep 'Jail list:' | awk -F'Jail list:' '{print $2}' | sed 's/,//g')"
|
|
31
|
+
|
|
32
|
+
for jail in ${JAILS}; do
|
|
33
|
+
for ip in ${IPS}; do
|
|
34
|
+
${F2B} set ${jail} unbanip ${ip} &>/dev/null
|
|
35
|
+
if [ X"$?" == X'0' ]; then
|
|
36
|
+
echo "Removed ${ip} from jail '${jail}'"
|
|
37
|
+
fi
|
|
38
|
+
done
|
|
39
|
+
done
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Purpose: Find login IP address of specified username which is used for smtp
|
|
3
|
+
# authentication.
|
|
4
|
+
|
|
5
|
+
MAIL_LOG="$1"
|
|
6
|
+
USER="$2"
|
|
7
|
+
|
|
8
|
+
if [ -z ${MAIL_LOG} -o -z ${USER} ]; then
|
|
9
|
+
echo "Please run script with a log file and email address: $0 /path/to/maillog mail_address"
|
|
10
|
+
exit 255
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
tmpfile="/tmp/sasl_username_${RANDOM}"
|
|
14
|
+
|
|
15
|
+
# extract 'client=xxx[__IP__]' lines
|
|
16
|
+
grep "sasl_username=${USER}" ${MAIL_LOG} | awk '{print $7}' | sort | uniq -c | sort -n > sort > ${tmpfile}
|
|
17
|
+
|
|
18
|
+
cat ${tmpfile}
|
|
19
|
+
|
|
20
|
+
rm -f ${tmpfile}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Author: Zhang Huangbin <zhb@iredmail.org>
|
|
3
|
+
# Purpose: Find usernames used for smtp authentication in Postfix log file,
|
|
4
|
+
# sorted by login times.
|
|
5
|
+
|
|
6
|
+
MAILLOG_FILE="$1"
|
|
7
|
+
|
|
8
|
+
# Detect mail log file if not specified on command line.
|
|
9
|
+
if [ -z ${MAILLOG_FILE} ]; then
|
|
10
|
+
for f in /var/log/maillog /var/log/mail.log; do
|
|
11
|
+
if [ -f ${f} ]; then
|
|
12
|
+
MAILLOG_FILE="${f}"
|
|
13
|
+
break
|
|
14
|
+
fi
|
|
15
|
+
done
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
if [ -z ${MAILLOG_FILE} ]; then
|
|
19
|
+
echo "Please specify Postfix log file on command line: $0 /path/to/maillog"
|
|
20
|
+
exit 255
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
grep 'sasl_username=' ${MAILLOG_FILE} \
|
|
24
|
+
| awk -F'sasl_username=' '{print $2}' \
|
|
25
|
+
| awk '{print $NF}' \
|
|
26
|
+
| sort \
|
|
27
|
+
| uniq -c \
|
|
28
|
+
| sort -nr
|