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.
Files changed (318) hide show
  1. package/README.md +2 -24
  2. package/dist/bare-2HYDXQEH.js +23 -0
  3. package/dist/{bowser-MFQA6OS4.js → bowser-O3AEA6AN.js} +5 -1
  4. package/dist/{chunk-KD7VO4LG.js → chunk-2ZLR7ULL.js} +255 -65
  5. package/dist/{chunk-YHXCHW7Q.js → chunk-3JQTL4R4.js} +236 -99
  6. package/dist/{chunk-E77LJWJK.js → chunk-4TJC4JZQ.js} +20 -9
  7. package/dist/{chunk-YL67EWYZ.js → chunk-4Z5QO7N6.js} +6 -2
  8. package/dist/{chunk-WJPCBU7Z.js → chunk-5FNIWBFI.js} +10 -6
  9. package/dist/{chunk-Y37KHU7L.js → chunk-5MZ624VX.js} +5 -0
  10. package/dist/{chunk-QKFRZNKN.js → chunk-6APIPIJY.js} +8 -4
  11. package/dist/{chunk-JZLNHGLW.js → chunk-6APULWSU.js} +153 -133
  12. package/dist/{chunk-F4DFVG6Q.js → chunk-6B5YCFFV.js} +8 -4
  13. package/dist/{chunk-XVSAUO2I.js → chunk-AVIB7CT7.js} +5 -1
  14. package/dist/{chunk-TEYJYSMT.js → chunk-C5OHTYEF.js} +12 -6
  15. package/dist/{chunk-7UOB5GGQ.js → chunk-DYPH4HCI.js} +5 -0
  16. package/dist/{chunk-XIFRMKYT.js → chunk-EI575GHN.js} +6 -2
  17. package/dist/{chunk-4CQWT2WL.js → chunk-FPRHYBY2.js} +5 -0
  18. package/dist/chunk-FQGJZ2HS.js +248 -0
  19. package/dist/{chunk-JR2OCMJA.js → chunk-FRNAR33O.js} +6 -2
  20. package/dist/{chunk-JUJBBF5U.js → chunk-FXTBHTWY.js} +362 -42
  21. package/dist/chunk-ILFETZOM.js +131 -0
  22. package/dist/{chunk-5ZCKQ2MI.js → chunk-IXCHURVK.js} +7 -3
  23. package/dist/{chunk-6ERIMTBC.js → chunk-JYGD5WSN.js} +5 -0
  24. package/dist/{chunk-4VNS5WPM.js → chunk-KI2EY3WB.js} +4 -0
  25. package/dist/{chunk-3U4SPZD5.js → chunk-L2VOGB2X.js} +7 -104
  26. package/dist/{chunk-NB2VEIWG.js → chunk-MZ2WEHHY.js} +7 -3
  27. package/dist/{chunk-BUBSSKO6.js → chunk-O6ZZF52V.js} +5 -1
  28. package/dist/{chunk-LBFH7THC.js → chunk-OWED2GRM.js} +5 -1
  29. package/dist/{chunk-4MG3BVHE.js → chunk-OXWDY22G.js} +6 -2
  30. package/dist/{chunk-4FABQGQP.js → chunk-Q2CIRAOK.js} +5 -0
  31. package/dist/{chunk-4LEL3H2Z.js → chunk-RPHRPFEH.js} +5 -0
  32. package/dist/{chunk-46YJFP4S.js → chunk-SQ77DZOI.js} +1728 -1484
  33. package/dist/{chunk-S6DSRLNE.js → chunk-TGIINPVM.js} +15 -2
  34. package/dist/{chunk-U2DPZSXA.js → chunk-TYVME3XD.js} +9 -1
  35. package/dist/{chunk-HFYDYK4D.js → chunk-V6AN6XLZ.js} +18 -6
  36. package/dist/{chunk-ZKJOFWBJ.js → chunk-VDMQJHPI.js} +38 -15
  37. package/dist/{chunk-E6W2JMMU.js → chunk-VFINNTUL.js} +22 -1
  38. package/dist/{chunk-OJE6YWPQ.js → chunk-VWPEKOH6.js} +6 -2
  39. package/dist/{chunk-5N7VUGL6.js → chunk-W73X43R7.js} +6 -2
  40. package/dist/cloud-7QYOGF7F.js +11 -0
  41. package/dist/cloud-ZSKOS4GY.js +30 -0
  42. package/dist/detect-SH4FHFBI.js +36 -0
  43. package/dist/{dist-L3MPOWCA.js → dist-IQJ6H6UZ.js} +6 -2
  44. package/dist/{dist-es-KE56MWYO.js → dist-es-5DY7K32L.js} +9 -5
  45. package/dist/dist-es-JSTDUS7Q.js +26 -0
  46. package/dist/{dist-es-GTAMF674.js → dist-es-OSNJBLXB.js} +8 -4
  47. package/dist/{dist-es-NRZIQY5B.js → dist-es-RYHIPOTN.js} +17 -13
  48. package/dist/{dist-es-XQCOTGC7.js → dist-es-VNKHQVIB.js} +7 -3
  49. package/dist/{dist-es-WZCR7DHQ.js → dist-es-WV4AMOII.js} +11 -7
  50. package/dist/{dist-es-ZW3HFQUM.js → dist-es-X3B5QYKB.js} +9 -5
  51. package/dist/docker-U7AF5PTA.js +16 -0
  52. package/dist/docker-edge-executor-VHW3JPJS.js +13 -0
  53. package/dist/edge-import-V5CBA47C.js +45 -0
  54. package/dist/ensure-container-edge-CMYROUSI.js +33 -0
  55. package/dist/{event-streams-7LGDL56D.js → event-streams-EHRAKL75.js} +7 -3
  56. package/dist/executor-YPT6RH6O.js +30 -0
  57. package/dist/index.d.ts +2 -1
  58. package/dist/index.js +258 -245
  59. package/dist/{loadSso-N273C5I7.js → loadSso-46FQRIZS.js} +13 -9
  60. package/dist/local-executor-V7U5VOZW.js +12 -0
  61. package/dist/nginx-2GTRUIDE.js +24 -0
  62. package/dist/noop-FMMFG2EZ.js +11 -0
  63. package/dist/{openresty-lua-HAO4EUDY.js → openresty-lua-4WLGDSER.js} +13 -3
  64. package/dist/server/engine/ChangeLog +2289 -0
  65. package/dist/server/engine/Documentations +5 -0
  66. package/dist/server/engine/LICENSE +674 -0
  67. package/dist/server/engine/README.md +34 -0
  68. package/dist/server/engine/conf/amavisd +150 -0
  69. package/dist/server/engine/conf/clamav +71 -0
  70. package/dist/server/engine/conf/core +632 -0
  71. package/dist/server/engine/conf/dovecot +151 -0
  72. package/dist/server/engine/conf/fail2ban +72 -0
  73. package/dist/server/engine/conf/global +698 -0
  74. package/dist/server/engine/conf/iredapd +52 -0
  75. package/dist/server/engine/conf/logwatch +28 -0
  76. package/dist/server/engine/conf/postfix +97 -0
  77. package/dist/server/engine/conf/postgresql +93 -0
  78. package/dist/server/engine/conf/spamassassin +39 -0
  79. package/dist/server/engine/dialog/config_via_dialog.sh +258 -0
  80. package/dist/server/engine/dialog/optional_components.sh +122 -0
  81. package/dist/server/engine/dialog/pgsql_config.sh +52 -0
  82. package/dist/server/engine/dialog/virtual_domain_config.sh +94 -0
  83. package/dist/server/engine/functions/amavisd.sh +267 -0
  84. package/dist/server/engine/functions/backend.sh +85 -0
  85. package/dist/server/engine/functions/clamav.sh +100 -0
  86. package/dist/server/engine/functions/cleanup.sh +393 -0
  87. package/dist/server/engine/functions/dovecot.sh +583 -0
  88. package/dist/server/engine/functions/fail2ban.sh +209 -0
  89. package/dist/server/engine/functions/iredapd.sh +356 -0
  90. package/dist/server/engine/functions/optional_components.sh +24 -0
  91. package/dist/server/engine/functions/packages.sh +522 -0
  92. package/dist/server/engine/functions/packages_freebsd.sh +179 -0
  93. package/dist/server/engine/functions/postfix.sh +457 -0
  94. package/dist/server/engine/functions/postgresql.sh +239 -0
  95. package/dist/server/engine/functions/spamassassin.sh +49 -0
  96. package/dist/server/engine/functions/system_accounts.sh +128 -0
  97. package/dist/server/engine/iRedMail.sh +144 -0
  98. package/dist/server/engine/pkgs/get_all.sh +338 -0
  99. package/dist/server/engine/pkgs/pkgs.freebsd.sha256 +3 -0
  100. package/dist/server/engine/pkgs/pkgs.openbsd.sha256 +6 -0
  101. package/dist/server/engine/pkgs/pkgs.sha256 +1 -0
  102. package/dist/server/engine/samples/amavisd/amavisd.conf +677 -0
  103. package/dist/server/engine/samples/amavisd/amavisd.mysql +278 -0
  104. package/dist/server/engine/samples/amavisd/amavisd.pgsql +253 -0
  105. package/dist/server/engine/samples/amavisd/amavisd.schema +942 -0
  106. package/dist/server/engine/samples/amavisd/default_spam_policy.sql +46 -0
  107. package/dist/server/engine/samples/dovecot/dovecot-2.4-mariadb.conf +758 -0
  108. package/dist/server/engine/samples/dovecot/dovecot-2.4-openldap.conf +767 -0
  109. package/dist/server/engine/samples/dovecot/dovecot-2.4-pgsql.conf +762 -0
  110. package/dist/server/engine/samples/dovecot/dovecot-last-login.conf +50 -0
  111. package/dist/server/engine/samples/dovecot/dovecot-ldap.conf +21 -0
  112. package/dist/server/engine/samples/dovecot/dovecot-share-folder.conf +22 -0
  113. package/dist/server/engine/samples/dovecot/dovecot-sql.conf +28 -0
  114. package/dist/server/engine/samples/dovecot/dovecot-used-quota.conf +13 -0
  115. package/dist/server/engine/samples/dovecot/dovecot.conf +484 -0
  116. package/dist/server/engine/samples/dovecot/dovecot.sieve +7 -0
  117. package/dist/server/engine/samples/dovecot/dovecot2-quota-warning.sh +38 -0
  118. package/dist/server/engine/samples/dovecot/sql/imap_share_folder.mysql +16 -0
  119. package/dist/server/engine/samples/dovecot/sql/last_login.mysql +12 -0
  120. package/dist/server/engine/samples/dovecot/sql/used_quota.mysql +26 -0
  121. package/dist/server/engine/samples/dovecot/systemd/override.conf +3 -0
  122. package/dist/server/engine/samples/fail2ban/action.d/banned_db.conf +9 -0
  123. package/dist/server/engine/samples/fail2ban/bin/fail2ban_banned_db +268 -0
  124. package/dist/server/engine/samples/fail2ban/fail2ban.local +17 -0
  125. package/dist/server/engine/samples/fail2ban/filter.d/dovecot.iredmail.conf +5 -0
  126. package/dist/server/engine/samples/fail2ban/filter.d/postfix-pregreet.iredmail.conf +16 -0
  127. package/dist/server/engine/samples/fail2ban/filter.d/postfix.iredmail.conf +18 -0
  128. package/dist/server/engine/samples/fail2ban/filter.d/roundcube.iredmail.conf +9 -0
  129. package/dist/server/engine/samples/fail2ban/jail.d/dovecot.local +8 -0
  130. package/dist/server/engine/samples/fail2ban/jail.d/nginx-http-auth.local +8 -0
  131. package/dist/server/engine/samples/fail2ban/jail.d/postfix-pregreet.local +9 -0
  132. package/dist/server/engine/samples/fail2ban/jail.d/postfix.local +8 -0
  133. package/dist/server/engine/samples/fail2ban/jail.d/roundcube.local +9 -0
  134. package/dist/server/engine/samples/fail2ban/jail.d/sogo.local +8 -0
  135. package/dist/server/engine/samples/fail2ban/jail.d/sshd.local +8 -0
  136. package/dist/server/engine/samples/fail2ban/jail.local +6 -0
  137. package/dist/server/engine/samples/fail2ban/openbsd/rc +27 -0
  138. package/dist/server/engine/samples/fail2ban/sql/fail2ban.mysql +49 -0
  139. package/dist/server/engine/samples/fail2ban/sql/fail2ban.pgsql +48 -0
  140. package/dist/server/engine/samples/firewall/firewalld/services/ssh.xml +6 -0
  141. package/dist/server/engine/samples/firewall/firewalld/zones/iredmail.xml +15 -0
  142. package/dist/server/engine/samples/firewall/iptables/ip6tables.init.debian +362 -0
  143. package/dist/server/engine/samples/firewall/iptables/ip6tables.rules +53 -0
  144. package/dist/server/engine/samples/firewall/iptables/iptables.init.debian +363 -0
  145. package/dist/server/engine/samples/firewall/iptables/iptables.rules +54 -0
  146. package/dist/server/engine/samples/firewall/nftables.conf +58 -0
  147. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/dovecot.conf +3 -0
  148. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/iredapd.conf +1 -0
  149. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/mlmmjadmin.conf +1 -0
  150. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/php-fpm.conf +2 -0
  151. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/slapd.conf +1 -0
  152. package/dist/server/engine/samples/freebsd/syslog.d/dovecot.conf +2 -0
  153. package/dist/server/engine/samples/freebsd/syslog.d/fail2ban.conf +2 -0
  154. package/dist/server/engine/samples/freebsd/syslog.d/iredapd.conf +2 -0
  155. package/dist/server/engine/samples/freebsd/syslog.d/mlmmjadmin.conf +2 -0
  156. package/dist/server/engine/samples/freebsd/syslog.d/php-fpm.conf +2 -0
  157. package/dist/server/engine/samples/freebsd/syslog.d/slapd.conf +2 -0
  158. package/dist/server/engine/samples/iredmail/iredmail.mysql +491 -0
  159. package/dist/server/engine/samples/iredmail/iredmail.pgsql +465 -0
  160. package/dist/server/engine/samples/iredmail/iredmail.schema +456 -0
  161. package/dist/server/engine/samples/iredmail/used_quota_triggers_dovecot_2.3.pgsql +40 -0
  162. package/dist/server/engine/samples/iredmail/used_quota_triggers_dovecot_2.4.pgsql +18 -0
  163. package/dist/server/engine/samples/logrotate/dovecot +13 -0
  164. package/dist/server/engine/samples/logrotate/iredapd +13 -0
  165. package/dist/server/engine/samples/logrotate/mlmmjadmin +13 -0
  166. package/dist/server/engine/samples/logrotate/openldap +19 -0
  167. package/dist/server/engine/samples/logrotate/php-fpm +13 -0
  168. package/dist/server/engine/samples/openbsd/ldapd.conf +58 -0
  169. package/dist/server/engine/samples/openbsd/pf.conf +28 -0
  170. package/dist/server/engine/samples/postfix/command_filter.pcre +3 -0
  171. package/dist/server/engine/samples/postfix/freebsd/mailer.conf +9 -0
  172. package/dist/server/engine/samples/postfix/helo_access.pcre +180 -0
  173. package/dist/server/engine/samples/postfix/ldap/catchall_maps.cf +11 -0
  174. package/dist/server/engine/samples/postfix/ldap/recipient_bcc_maps_domain.cf +11 -0
  175. package/dist/server/engine/samples/postfix/ldap/recipient_bcc_maps_user.cf +11 -0
  176. package/dist/server/engine/samples/postfix/ldap/relay_domains.cf +11 -0
  177. package/dist/server/engine/samples/postfix/ldap/sender_bcc_maps_domain.cf +11 -0
  178. package/dist/server/engine/samples/postfix/ldap/sender_bcc_maps_user.cf +11 -0
  179. package/dist/server/engine/samples/postfix/ldap/sender_dependent_relayhost_maps_domain.cf +11 -0
  180. package/dist/server/engine/samples/postfix/ldap/sender_dependent_relayhost_maps_user.cf +11 -0
  181. package/dist/server/engine/samples/postfix/ldap/sender_login_maps.cf +11 -0
  182. package/dist/server/engine/samples/postfix/ldap/transport_maps_domain.cf +11 -0
  183. package/dist/server/engine/samples/postfix/ldap/transport_maps_user.cf +11 -0
  184. package/dist/server/engine/samples/postfix/ldap/virtual_alias_maps.cf +11 -0
  185. package/dist/server/engine/samples/postfix/ldap/virtual_group_maps.cf +11 -0
  186. package/dist/server/engine/samples/postfix/ldap/virtual_group_members_maps.cf +11 -0
  187. package/dist/server/engine/samples/postfix/ldap/virtual_mailbox_domains.cf +11 -0
  188. package/dist/server/engine/samples/postfix/ldap/virtual_mailbox_maps.cf +12 -0
  189. package/dist/server/engine/samples/postfix/main.cf +282 -0
  190. package/dist/server/engine/samples/postfix/main.cf.amavisd +7 -0
  191. package/dist/server/engine/samples/postfix/main.cf.dovecot +8 -0
  192. package/dist/server/engine/samples/postfix/main.cf.ldap +39 -0
  193. package/dist/server/engine/samples/postfix/main.cf.mlmmj +5 -0
  194. package/dist/server/engine/samples/postfix/main.cf.mysql +39 -0
  195. package/dist/server/engine/samples/postfix/main.cf.pgsql +39 -0
  196. package/dist/server/engine/samples/postfix/main.cf.postscreen +30 -0
  197. package/dist/server/engine/samples/postfix/master.cf +87 -0
  198. package/dist/server/engine/samples/postfix/mysql/catchall_maps.cf +5 -0
  199. package/dist/server/engine/samples/postfix/mysql/domain_alias_catchall_maps.cf +5 -0
  200. package/dist/server/engine/samples/postfix/mysql/domain_alias_maps.cf +5 -0
  201. package/dist/server/engine/samples/postfix/mysql/recipient_bcc_maps_domain.cf +5 -0
  202. package/dist/server/engine/samples/postfix/mysql/recipient_bcc_maps_user.cf +5 -0
  203. package/dist/server/engine/samples/postfix/mysql/relay_domains.cf +5 -0
  204. package/dist/server/engine/samples/postfix/mysql/sender_bcc_maps_domain.cf +5 -0
  205. package/dist/server/engine/samples/postfix/mysql/sender_bcc_maps_user.cf +5 -0
  206. package/dist/server/engine/samples/postfix/mysql/sender_dependent_relayhost_maps.cf +6 -0
  207. package/dist/server/engine/samples/postfix/mysql/sender_login_maps.cf +5 -0
  208. package/dist/server/engine/samples/postfix/mysql/transport_maps_domain.cf +5 -0
  209. package/dist/server/engine/samples/postfix/mysql/transport_maps_maillist.cf +5 -0
  210. package/dist/server/engine/samples/postfix/mysql/transport_maps_user.cf +5 -0
  211. package/dist/server/engine/samples/postfix/mysql/virtual_alias_maps.cf +5 -0
  212. package/dist/server/engine/samples/postfix/mysql/virtual_mailbox_domains.cf +5 -0
  213. package/dist/server/engine/samples/postfix/mysql/virtual_mailbox_maps.cf +5 -0
  214. package/dist/server/engine/samples/postfix/pgsql/catchall_maps.cf +5 -0
  215. package/dist/server/engine/samples/postfix/pgsql/domain_alias_catchall_maps.cf +5 -0
  216. package/dist/server/engine/samples/postfix/pgsql/domain_alias_maps.cf +5 -0
  217. package/dist/server/engine/samples/postfix/pgsql/recipient_bcc_maps_domain.cf +5 -0
  218. package/dist/server/engine/samples/postfix/pgsql/recipient_bcc_maps_user.cf +5 -0
  219. package/dist/server/engine/samples/postfix/pgsql/relay_domains.cf +5 -0
  220. package/dist/server/engine/samples/postfix/pgsql/sender_bcc_maps_domain.cf +5 -0
  221. package/dist/server/engine/samples/postfix/pgsql/sender_bcc_maps_user.cf +5 -0
  222. package/dist/server/engine/samples/postfix/pgsql/sender_dependent_relayhost_maps.cf +6 -0
  223. package/dist/server/engine/samples/postfix/pgsql/sender_login_maps.cf +5 -0
  224. package/dist/server/engine/samples/postfix/pgsql/transport_maps_domain.cf +5 -0
  225. package/dist/server/engine/samples/postfix/pgsql/transport_maps_maillist.cf +5 -0
  226. package/dist/server/engine/samples/postfix/pgsql/transport_maps_user.cf +5 -0
  227. package/dist/server/engine/samples/postfix/pgsql/virtual_alias_maps.cf +5 -0
  228. package/dist/server/engine/samples/postfix/pgsql/virtual_mailbox_domains.cf +5 -0
  229. package/dist/server/engine/samples/postfix/pgsql/virtual_mailbox_maps.cf +5 -0
  230. package/dist/server/engine/samples/postfix/postscreen_access.cidr +6 -0
  231. package/dist/server/engine/samples/postgresql/sql/add_first_domain_and_user.sql +34 -0
  232. package/dist/server/engine/samples/postgresql/sql/grant_permissions.sql +14 -0
  233. package/dist/server/engine/samples/postgresql/sql/init_vmail_db.sql +15 -0
  234. package/dist/server/engine/samples/rsyslog.d/1-iredmail-dovecot.conf +23 -0
  235. package/dist/server/engine/samples/rsyslog.d/1-iredmail-fail2ban.conf +2 -0
  236. package/dist/server/engine/samples/rsyslog.d/1-iredmail-iredapd.conf +12 -0
  237. package/dist/server/engine/samples/rsyslog.d/1-iredmail-mlmmjadmin.conf +12 -0
  238. package/dist/server/engine/samples/rsyslog.d/1-iredmail-openldap.conf +2 -0
  239. package/dist/server/engine/samples/rsyslog.d/1-iredmail-phpfpm.conf +3 -0
  240. package/dist/server/engine/samples/spamassassin/local.cf +186 -0
  241. package/dist/server/engine/samples/spamassassin/razor.conf +1 -0
  242. package/dist/server/engine/samples/systemd/clamd.service.d/override.conf +2 -0
  243. package/dist/server/engine/samples/systemd/mariadb.service.d/override.conf +3 -0
  244. package/dist/server/engine/samples/systemd/slapd.service.d/override.conf +6 -0
  245. package/dist/server/engine/samples/yum/CentOS-Linux-AppStream.repo +6 -0
  246. package/dist/server/engine/samples/yum/CentOS-Linux-PowerTools.repo +6 -0
  247. package/dist/server/engine/samples/yum/CentOS-Stream-AppStream.repo +7 -0
  248. package/dist/server/engine/samples/yum/CentOS-Stream-PowerTools.repo +7 -0
  249. package/dist/server/engine/samples/yum/symas-openldap.repo +6 -0
  250. package/dist/server/engine/tools/add_enabled_service.py +60 -0
  251. package/dist/server/engine/tools/backup_mysql.sh +238 -0
  252. package/dist/server/engine/tools/backup_openldap.sh +230 -0
  253. package/dist/server/engine/tools/backup_pgsql.sh +217 -0
  254. package/dist/server/engine/tools/backup_sogo.sh +156 -0
  255. package/dist/server/engine/tools/create_mail_user_OpenLDAP.py +335 -0
  256. package/dist/server/engine/tools/create_mail_user_OpenLDAP.sh +287 -0
  257. package/dist/server/engine/tools/create_mail_user_SQL.sh +127 -0
  258. package/dist/server/engine/tools/enable_postscreen.sh +144 -0
  259. package/dist/server/engine/tools/fail2ban_unban_ip.sh +39 -0
  260. package/dist/server/engine/tools/find_sasl_login_ip.sh +20 -0
  261. package/dist/server/engine/tools/find_top_sasl_usernames.sh +28 -0
  262. package/dist/server/engine/tools/generate_ssl_keys.sh +85 -0
  263. package/dist/server/engine/tools/kill_high_cpu_sogo_process.sh +32 -0
  264. package/dist/server/engine/tools/ldap_assign_user_to_groups.py +151 -0
  265. package/dist/server/engine/tools/ldap_move_members_to_another_group.py +129 -0
  266. package/dist/server/engine/tools/migrate_sql_alias_table.py +177 -0
  267. package/dist/server/engine/update/0.9.8/amavisd.mysql +29 -0
  268. package/dist/server/engine/update/0.9.8/amavisd.pgsql +39 -0
  269. package/dist/server/engine/update/0.9.8/iredmail.mysql +53 -0
  270. package/dist/server/engine/update/0.9.8/iredmail.pgsql +61 -0
  271. package/dist/server/engine/update/0.9.9/iredmail.mysql +2 -0
  272. package/dist/server/engine/update/0.9.9/iredmail.pgsql +2 -0
  273. package/dist/server/engine/update/1.0/iredmail.mysql +2 -0
  274. package/dist/server/engine/update/1.0/iredmail.pgsql +2 -0
  275. package/dist/server/engine/update/1.2/last_login.mysql +16 -0
  276. package/dist/server/engine/update/1.4.0/iredmail.mysql +22 -0
  277. package/dist/server/engine/update/1.4.0/iredmail.pgsql +20 -0
  278. package/dist/server/engine/update/1.4.1/iredmail.mysql +3 -0
  279. package/dist/server/engine/update/1.4.1/iredmail.pgsql +3 -0
  280. package/dist/server/engine/update/1.4.1/sogo.mysql +11 -0
  281. package/dist/server/engine/update/1.4.1/sogo.pgsql +30 -0
  282. package/dist/server/engine/update/1.4.1/update-ldap.py +66 -0
  283. package/dist/server/engine/update/1.4.2/iredmail.mysql +9 -0
  284. package/dist/server/engine/update/1.4.2/iredmail.pgsql +9 -0
  285. package/dist/server/engine/update/1.4.2/sogo.pgsql +30 -0
  286. package/dist/server/engine/update/1.6.0/sogo_view.pgsql +27 -0
  287. package/dist/server/engine/update/1.6.3/iredmail.mysql +1 -0
  288. package/dist/server/engine/update/1.7.0/fail2ban.mysql +11 -0
  289. package/dist/server/engine/update/1.7.0/fail2ban.pgsql +12 -0
  290. package/dist/server/engine/update/1.7.1/amavisd.mysql +1 -0
  291. package/dist/server/engine/update/1.7.2/vmail.mysql +30 -0
  292. package/dist/server/engine/update/1.7.3/deleted_mailboxes.mysql +43 -0
  293. package/dist/server/engine/update/1.7.3/iredadmin.mysql +26 -0
  294. package/dist/server/engine/update/1.7.3/vmail.mysql +79 -0
  295. package/dist/server/engine/update/1.7.3/vmail.pgsql +9 -0
  296. package/dist/server/engine/update/README.md +1 -0
  297. package/dist/server/engine/update/ldap/README.md +40 -0
  298. package/dist/server/engine/update/ldap/update-ldap-dovecot-2.3.py +69 -0
  299. package/dist/server/index.js +55574 -53675
  300. package/dist/server/migrations/0071_gh_device_token.sql +3 -0
  301. package/dist/server/migrations/0072_gh_device_token_method.sql +1 -0
  302. package/dist/server/migrations/meta/_journal.json +14 -0
  303. package/dist/setup-HQIZLUOJ.js +20 -0
  304. package/dist/{signin-DR462ERO.js → signin-ITOPKKUB.js} +13 -9
  305. package/dist/{sso-oidc-VBZLJUK5.js → sso-oidc-NON2PD7Y.js} +13 -9
  306. package/dist/{sts-EJLZ4Z77.js → sts-HHFFSAY2.js} +12 -8
  307. package/package.json +1 -1
  308. package/dist/bare-ITM45QBX.js +0 -18
  309. package/dist/cloud-JMPHO3CW.js +0 -7
  310. package/dist/cloud-W5G6YXAY.js +0 -24
  311. package/dist/dist-es-4C322O5D.js +0 -22
  312. package/dist/docker-3FVJMFC3.js +0 -12
  313. package/dist/docker-edge-executor-ZIWAZWPL.js +0 -9
  314. package/dist/edge-import-Y34YL6JK.js +0 -39
  315. package/dist/executor-J7BHW5HF.js +0 -26
  316. package/dist/nginx-YZWKYKQU.js +0 -16
  317. package/dist/noop-RRNCIUI5.js +0 -7
  318. package/dist/setup-5X3WEEHA.js +0 -14
@@ -0,0 +1,209 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # Author: Zhang Huangbin (zhb _at_ iredmail.org)
4
+
5
+ #---------------------------------------------------------------------
6
+ # This file is part of iRedMail, which is an open source mail server
7
+ # solution for Red Hat(R) Enterprise Linux, CentOS, Debian and Ubuntu.
8
+ #
9
+ # iRedMail is free software: you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation, either version 3 of the License, or
12
+ # (at your option) any later version.
13
+ #
14
+ # iRedMail is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ # GNU General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU General Public License
20
+ # along with iRedMail. If not, see <http://www.gnu.org/licenses/>.
21
+ #---------------------------------------------------------------------
22
+ _enable_jail() {
23
+ _jail_conf="${FAIL2BAN_JAIL_CONF_DIR}/${1}"
24
+
25
+ if [ -e ${_jail_conf} ]; then
26
+ perl -pi -e 's#(enabled.*=.*)false#${1}true#' ${_jail_conf}
27
+ fi
28
+ }
29
+
30
+ fail2ban_initialize_db() {
31
+ ECHO_DEBUG "Import Fail2ban database and grant privileges."
32
+
33
+ if [ X"${BACKEND}" == X'OPENLDAP' -o X"${BACKEND}" == X'MYSQL' ]; then
34
+ ${MYSQL_CLIENT_ROOT} <<EOF
35
+ -- Create database
36
+ CREATE DATABASE ${FAIL2BAN_DB_NAME} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
37
+
38
+ -- Create user and grant privileges
39
+ CREATE USER '${FAIL2BAN_DB_USER}'@'${MYSQL_GRANT_HOST}' IDENTIFIED BY '${FAIL2BAN_DB_PASSWD}';
40
+ GRANT ALL ON ${FAIL2BAN_DB_NAME}.* TO '${FAIL2BAN_DB_USER}'@'${MYSQL_GRANT_HOST}';
41
+
42
+ -- Import Amavisd SQL template
43
+ USE ${FAIL2BAN_DB_NAME};
44
+ SOURCE ${SAMPLE_DIR}/fail2ban/sql/fail2ban.mysql;
45
+ FLUSH PRIVILEGES;
46
+ EOF
47
+
48
+ cat > /root/.my.cnf-${FAIL2BAN_DB_USER} <<EOF
49
+ [client]
50
+ host=${MYSQL_SERVER_ADDRESS}
51
+ port=${MYSQL_SERVER_PORT}
52
+ user=${FAIL2BAN_DB_USER}
53
+ password="${FAIL2BAN_DB_PASSWD}"
54
+ EOF
55
+
56
+ elif [ X"${BACKEND}" == X'PGSQL' ]; then
57
+ cp -f ${SAMPLE_DIR}/fail2ban/sql/fail2ban.pgsql /tmp/fail2ban.pgsql
58
+ chmod 0755 /tmp/fail2ban.pgsql
59
+
60
+ su - ${SYS_USER_PGSQL} -c "psql -d template1" >> ${INSTALL_LOG} <<EOF
61
+ -- Create database
62
+ CREATE DATABASE ${FAIL2BAN_DB_NAME} WITH TEMPLATE template0 ENCODING 'UTF8';
63
+
64
+ -- Create user
65
+ CREATE USER ${FAIL2BAN_DB_USER} WITH ENCRYPTED PASSWORD '${FAIL2BAN_DB_PASSWD}' NOSUPERUSER NOCREATEDB NOCREATEROLE;
66
+
67
+ ALTER DATABASE ${FAIL2BAN_DB_NAME} OWNER TO ${FAIL2BAN_DB_USER};
68
+ EOF
69
+
70
+ su - ${SYS_USER_PGSQL} -c "psql -U ${FAIL2BAN_DB_USER} -d ${FAIL2BAN_DB_NAME}" >> ${INSTALL_LOG} <<EOF
71
+ \i /tmp/fail2ban.pgsql;
72
+ EOF
73
+ rm -f /tmp/fail2ban.pgsql
74
+
75
+ su - ${SYS_USER_PGSQL} -c "psql -U ${FAIL2BAN_DB_USER} -d ${FAIL2BAN_DB_NAME}" >> ${INSTALL_LOG} 2>&1 <<EOF
76
+ ALTER DATABASE ${FAIL2BAN_DB_NAME} SET bytea_output TO 'escape';
77
+ EOF
78
+ fi
79
+
80
+ write_iredmail_kv "sql_user_${FAIL2BAN_DB_USER}" "${FAIL2BAN_DB_PASSWD}"
81
+
82
+ # Copy action config file.
83
+ cp -f ${SAMPLE_DIR}/fail2ban/action.d/banned_db.conf ${FAIL2BAN_ACTION_DIR}/
84
+ chmod 0755 ${FAIL2BAN_ACTION_DIR}/banned_db.conf
85
+
86
+ # Copy script used to handle sql data.
87
+ cp -f ${SAMPLE_DIR}/fail2ban/bin/fail2ban_banned_db /usr/local/bin/
88
+ chmod 0550 /usr/local/bin/fail2ban_banned_db
89
+
90
+ if [ X"${DISTRO}" == X'FREEBSD' -o X"${DISTRO}" == X'OPENBSD' ]; then
91
+ perl -pi -e 's#/usr/bin/env bash#/usr/local/bin/bash#g' /usr/local/bin/fail2ban_banned_db
92
+ fi
93
+
94
+ cat >> ${CRON_FILE_ROOT} <<EOF
95
+ # Fail2ban: Unban IP addresses pending for removal (stored in SQL db).
96
+ * * * * * ${SHELL_BASH} /usr/local/bin/fail2ban_banned_db unban_db >/dev/null 2>&1
97
+ EOF
98
+
99
+ echo 'export status_fail2ban_initialize_db="DONE"' >> ${STATUS_FILE}
100
+ }
101
+
102
+ fail2ban_config() {
103
+ ECHO_DEBUG "Disable all default filters in ${FAIL2BAN_JAIL_CONF}."
104
+ perl -pi -e 's#^(enabled).*=.*#${1} = false#' ${FAIL2BAN_JAIL_CONF}
105
+
106
+ ECHO_DEBUG "Create main Fail2ban config file: ${FAIL2BAN_MAIN_CONF}."
107
+ backup_file ${FAIL2BAN_MAIN_CONF}
108
+ cp -f ${SAMPLE_DIR}/fail2ban/fail2ban.local ${FAIL2BAN_MAIN_CONF}
109
+ perl -pi -e 's#PH_SYSLOG_SOCKET#$ENV{SYSLOG_SOCKET}#' ${FAIL2BAN_MAIN_CONF}
110
+
111
+ if [ X"${DISTRO}" == X'FREEBSD' ]; then
112
+ perl -pi -e 's#^(socket).*#${1} = $ENV{FAIL2BAN_SOCKET}#' ${FAIL2BAN_MAIN_CONF}
113
+ elif [ X"${DISTRO}" == X'OPENBSD' ]; then
114
+ perl -pi -e 's/^#(syslogsocket.*)/${1}/' ${FAIL2BAN_MAIN_CONF}
115
+ fi
116
+
117
+ ECHO_DEBUG "Create Fail2ban config file: ${FAIL2BAN_JAIL_LOCAL_CONF}."
118
+ backup_file ${FAIL2BAN_JAIL_LOCAL_CONF}
119
+ cp -f ${SAMPLE_DIR}/fail2ban/jail.local ${FAIL2BAN_JAIL_LOCAL_CONF} >> ${INSTALL_LOG} 2>&1
120
+
121
+ ECHO_DEBUG "Create Fail2ban directory: ${FAIL2BAN_JAIL_CONF_DIR}."
122
+ mkdir -p ${FAIL2BAN_JAIL_CONF_DIR} >> ${INSTALL_LOG} 2>&1
123
+
124
+ perl -pi -e 's#PH_LOCAL_ADDRESS#$ENV{LOCAL_ADDRESS}#' ${FAIL2BAN_JAIL_LOCAL_CONF}
125
+
126
+ ECHO_DEBUG "Copy modular Fail2ban jail config files to ${FAIL2BAN_JAIL_CONF_DIR}."
127
+ cp -f ${SAMPLE_DIR}/fail2ban/jail.d/*.local ${FAIL2BAN_JAIL_CONF_DIR} >> ${INSTALL_LOG} 2>&1
128
+
129
+ # Firewall command
130
+ perl -pi -e 's#PH_FAIL2BAN_ACTION#$ENV{FAIL2BAN_ACTION}#' ${FAIL2BAN_JAIL_CONF_DIR}/*.local
131
+
132
+ perl -pi -e 's#PH_SSHD_LOGFILE#$ENV{SSHD_LOGFILE}#' ${FAIL2BAN_JAIL_CONF_DIR}/*.local
133
+ perl -pi -e 's#PH_NGINX_LOG_ERRORLOG#$ENV{NGINX_LOG_ERRORLOG}#' ${FAIL2BAN_JAIL_CONF_DIR}/*.local
134
+ perl -pi -e 's#PH_RCM_LOGFILE#$ENV{RCM_LOGFILE}#' ${FAIL2BAN_JAIL_CONF_DIR}/*.local
135
+ perl -pi -e 's#PH_MAILLOG#$ENV{MAILLOG}#' ${FAIL2BAN_JAIL_CONF_DIR}/*.local
136
+ perl -pi -e 's#PH_SOGO_LOG_FILE#$ENV{SOGO_LOG_FILE}#' ${FAIL2BAN_JAIL_CONF_DIR}/*.local
137
+ perl -pi -e 's#PH_DOVECOT_LOG_FILE#$ENV{DOVECOT_LOG_DIR}/*.log#' ${FAIL2BAN_JAIL_CONF_DIR}/*.local
138
+ perl -pi -e 's#PH_FAIL2BAN_DISABLED_SERVICES#$ENV{FAIL2BAN_DISABLED_SERVICES}#' ${FAIL2BAN_JAIL_CONF_DIR}/*.local
139
+
140
+ perl -pi -e 's#PH_SSHD_PORT#$ENV{SSHD_PORTS_WITH_COMMA}#' ${FAIL2BAN_JAIL_CONF_DIR}/*.local
141
+
142
+ ECHO_DEBUG "Copy sample Fail2ban filter config files."
143
+ cp -f ${SAMPLE_DIR}/fail2ban/filter.d/*.conf ${FAIL2BAN_FILTER_DIR}
144
+
145
+ # Enable jail for optional components.
146
+ [ X"${WEB_SERVER}" == X'NGINX' ] && _enable_jail nginx-http-auth.local
147
+ [ X"${USE_ROUNDCUBE}" == X'YES' ] && _enable_jail roundcube.local
148
+ [ X"${USE_SOGO}" == X'YES' ] && _enable_jail sogo.local
149
+
150
+ if [ X"${DISTRO}" == X'OPENBSD' ]; then
151
+ # Copy rc script and enable service.
152
+ cp ${SAMPLE_DIR}/fail2ban/openbsd/rc /etc/rc.d/fail2ban
153
+ chmod 0755 /etc/rc.d/fail2ban
154
+ service_control enable fail2ban
155
+ fi
156
+
157
+ echo 'export status_fail2ban_config="DONE"' >> ${STATUS_FILE}
158
+ }
159
+
160
+ fail2ban_syslog_setup() {
161
+ ECHO_DEBUG "Generate modular syslog and log rotate config files for Fail2ban."
162
+ if [ X"${KERNEL_NAME}" == X'LINUX' ]; then
163
+ cp ${SAMPLE_DIR}/rsyslog.d/1-iredmail-fail2ban.conf ${SYSLOG_CONF_DIR}
164
+ perl -pi -e 's#PH_FAIL2BAN_LOG_FILE#$ENV{FAIL2BAN_LOG_FILE}#g' ${SYSLOG_CONF_DIR}/1-iredmail-fail2ban.conf
165
+
166
+ touch ${FAIL2BAN_LOG_FILE}
167
+ chown ${SYS_USER_SYSLOG}:${SYS_GROUP_SYSLOG} ${FAIL2BAN_LOG_FILE}
168
+ chmod 0755 ${FAIL2BAN_LOG_FILE}
169
+
170
+ if [ X"${DISTRO}" == X'UBUNTU' ]; then
171
+ if [ -f /etc/logrotate.d/fail2ban ]; then
172
+ perl -pi -e 's#create 640 root adm#create 640 $ENV{SYS_USER_SYSLOG} adm#g' /etc/logrotate.d/fail2ban
173
+ fi
174
+ fi
175
+ elif [ X"${KERNEL_NAME}" == X'FREEBSD' ]; then
176
+ cp -f ${SAMPLE_DIR}/freebsd/syslog.d/fail2ban.conf ${SYSLOG_CONF_DIR} >> ${INSTALL_LOG} 2>&1
177
+ perl -pi -e 's#PH_FAIL2BAN_SYSLOG_FACILITY#$ENV{FAIL2BAN_SYSLOG_FACILITY}#g' ${SYSLOG_CONF_DIR}/fail2ban.conf
178
+ perl -pi -e 's#PH_FAIL2BAN_LOG_FILE#$ENV{FAIL2BAN_LOG_FILE}#g' ${SYSLOG_CONF_DIR}/fail2ban.conf
179
+ elif [ X"${KERNEL_NAME}" == X'OPENBSD' ]; then
180
+ touch ${FAIL2BAN_LOG_FILE}
181
+ chown ${SYS_USER_SYSLOG}:${SYS_GROUP_SYSLOG} ${FAIL2BAN_LOG_FILE}
182
+ chmod 0755 ${FAIL2BAN_LOG_FILE}
183
+
184
+ if ! grep "${FAIL2BAN_LOG_FILE}" ${SYSLOG_CONF} &>/dev/null; then
185
+ # '!!' means abort further evaluation after first match
186
+ echo '' >> ${SYSLOG_CONF}
187
+ echo '!!fail2ban*' >> ${SYSLOG_CONF}
188
+ echo "${FAIL2BAN_SYSLOG_FACILITY}.* ${FAIL2BAN_LOG_FILE}" >> ${SYSLOG_CONF}
189
+ fi
190
+
191
+ if ! grep "${FAIL2BAN_LOG_FILE}" /etc/newsyslog.conf &>/dev/null; then
192
+ cat >> /etc/newsyslog.conf <<EOF
193
+ ${FAIL2BAN_LOG_FILE} ${SYS_USER_SYSLOG}:${SYS_GROUP_SYSLOG} 640 7 * 24 Z
194
+ EOF
195
+ fi
196
+ fi
197
+
198
+ echo 'export status_fail2ban_syslog_setup="DONE"' >> ${STATUS_FILE}
199
+ }
200
+
201
+ fail2ban_setup() {
202
+ ECHO_INFO "Configure Fail2ban (authentication failure monitor)."
203
+
204
+ check_status_before_run fail2ban_initialize_db
205
+ check_status_before_run fail2ban_config
206
+ check_status_before_run fail2ban_syslog_setup
207
+
208
+ echo 'export status_fail2ban_setup="DONE"' >> ${STATUS_FILE}
209
+ }
@@ -0,0 +1,356 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # Author: Zhang Huangbin (zhb _at_ iredmail.org)
4
+ # Purpose: Install & config necessary packages for iRedAPD.
5
+
6
+ #---------------------------------------------------------------------
7
+ # This file is part of iRedMail, which is an open source mail server
8
+ # solution for Red Hat(R) Enterprise Linux, CentOS, Debian and Ubuntu.
9
+ #
10
+ # iRedMail is free software: you can redistribute it and/or modify
11
+ # it under the terms of the GNU General Public License as published by
12
+ # the Free Software Foundation, either version 3 of the License, or
13
+ # (at your option) any later version.
14
+ #
15
+ # iRedMail is distributed in the hope that it will be useful,
16
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
+ # GNU General Public License for more details.
19
+ #
20
+ # You should have received a copy of the GNU General Public License
21
+ # along with iRedMail. If not, see <http://www.gnu.org/licenses/>.
22
+ #---------------------------------------------------------------------
23
+
24
+
25
+ iredapd_install()
26
+ {
27
+ ECHO_INFO "Configure iRedAPD (postfix policy daemon)."
28
+
29
+ # Extract source tarball.
30
+ cd ${PKG_MISC_DIR}
31
+ [ -d ${IREDAPD_PARENT_DIR} ] || mkdir -p ${IREDAPD_PARENT_DIR}
32
+ extract_pkg ${IREDAPD_TARBALL} ${IREDAPD_PARENT_DIR}
33
+
34
+ ECHO_DEBUG "Configure iRedAPD."
35
+ # Create symbol link.
36
+ ln -s ${IREDAPD_ROOT_DIR} ${IREDAPD_ROOT_DIR_SYMBOL_LINK} >> ${INSTALL_LOG} 2>&1
37
+
38
+ # Set file permission.
39
+ chown -R ${SYS_USER_ROOT}:${SYS_GROUP_ROOT} ${IREDAPD_ROOT_DIR}
40
+ chmod -R 0500 ${IREDAPD_ROOT_DIR}
41
+
42
+ # Copy init rc script.
43
+ if [ X"${USE_SYSTEMD}" == X'YES' ]; then
44
+ ECHO_DEBUG "Create symbol link: ${IREDAPD_ROOT_DIR_SYMBOL_LINK}/rc_scripts/iredapd.service -> ${SYSTEMD_SERVICE_DIR}/iredapd.service."
45
+ cp -f ${IREDAPD_ROOT_DIR_SYMBOL_LINK}/rc_scripts/iredapd.service ${SYSTEMD_SERVICE_DIR}/iredapd.service >> ${INSTALL_LOG} 2>&1
46
+
47
+ # To supress systemd warning.
48
+ chmod 0644 ${IREDAPD_ROOT_DIR_SYMBOL_LINK}/rc_scripts/iredapd.service ${SYSTEMD_SERVICE_DIR}/iredapd.service
49
+
50
+ systemctl daemon-reload >> ${INSTALL_LOG} 2>&1
51
+ else
52
+ if [ X"${DISTRO}" == X'RHEL' ]; then
53
+ cp ${IREDAPD_ROOT_DIR_SYMBOL_LINK}/rc_scripts/iredapd.rhel ${DIR_RC_SCRIPTS}/iredapd >> ${INSTALL_LOG} 2>&1
54
+ elif [ X"${DISTRO}" == X'DEBIAN' -o X"${DISTRO}" == X'UBUNTU' ]; then
55
+ cp ${IREDAPD_ROOT_DIR_SYMBOL_LINK}/rc_scripts/iredapd.debian ${DIR_RC_SCRIPTS}/iredapd >> ${INSTALL_LOG} 2>&1
56
+ elif [ X"${DISTRO}" == X'FREEBSD' ]; then
57
+ cp ${IREDAPD_ROOT_DIR_SYMBOL_LINK}/rc_scripts/iredapd.freebsd ${DIR_RC_SCRIPTS}/iredapd >> ${INSTALL_LOG} 2>&1
58
+ service_control enable 'iredapd_enable' 'YES'
59
+ elif [ X"${DISTRO}" == X'OPENBSD' ]; then
60
+ cp ${IREDAPD_ROOT_DIR_SYMBOL_LINK}/rc_scripts/iredapd.openbsd ${DIR_RC_SCRIPTS}/iredapd >> ${INSTALL_LOG} 2>&1
61
+ else
62
+ cp ${IREDAPD_ROOT_DIR_SYMBOL_LINK}/rc_scripts/iredapd.rhel ${DIR_RC_SCRIPTS}/iredapd >> ${INSTALL_LOG} 2>&1
63
+ fi
64
+
65
+ chmod 0755 ${DIR_RC_SCRIPTS}/iredapd >> ${INSTALL_LOG} 2>&1
66
+ fi
67
+
68
+ ECHO_DEBUG "Make iredapd starting after system startup."
69
+ service_control enable iredapd
70
+ export ENABLED_SERVICES="${ENABLED_SERVICES} iredapd"
71
+
72
+ # Copy sample config file.
73
+ cd ${IREDAPD_ROOT_DIR_SYMBOL_LINK}
74
+ cp settings.py.sample settings.py
75
+ chown ${SYS_USER_ROOT}:${SYS_GROUP_ROOT} settings.py
76
+ chmod -R 0400 settings.py
77
+
78
+ echo 'export status_iredapd_install="DONE"' >> ${STATUS_FILE}
79
+ }
80
+
81
+ iredapd_initialize_db()
82
+ {
83
+ ECHO_DEBUG "Import iRedAPD database template."
84
+
85
+ if [ X"${BACKEND}" == X'OPENLDAP' -o X"${BACKEND}" == X'MYSQL' ]; then
86
+ ${MYSQL_CLIENT_ROOT} <<EOF
87
+ -- Create databases and user.
88
+ CREATE DATABASE IF NOT EXISTS ${IREDAPD_DB_NAME} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
89
+
90
+ -- Import SQL template.
91
+ USE ${IREDAPD_DB_NAME};
92
+ SOURCE ${IREDAPD_ROOT_DIR_SYMBOL_LINK}/SQL/iredapd.mysql;
93
+ CREATE USER '${IREDAPD_DB_USER}'@'${MYSQL_GRANT_HOST}' IDENTIFIED BY '${IREDAPD_DB_PASSWD}';
94
+ GRANT ALL ON ${IREDAPD_DB_NAME}.* TO '${IREDAPD_DB_USER}'@'${MYSQL_GRANT_HOST}';
95
+ FLUSH PRIVILEGES;
96
+
97
+ -- Enable greylisting by default.
98
+ SOURCE ${IREDAPD_ROOT_DIR_SYMBOL_LINK}/SQL/enable_global_greylisting.sql;
99
+
100
+ -- Import greylisting whitelist domains.
101
+ SOURCE ${IREDAPD_ROOT_DIR_SYMBOL_LINK}/SQL/greylisting_whitelist_domains.sql;
102
+
103
+ -- Blacklist some rDNS names
104
+ SOURCE ${IREDAPD_ROOT_DIR_SYMBOL_LINK}/SQL/wblist_rdns.sql;
105
+ EOF
106
+
107
+ # Generate .my.cnf file
108
+ cat > /root/.my.cnf-${IREDAPD_DB_USER} <<EOF
109
+ [client]
110
+ host=${MYSQL_SERVER_ADDRESS}
111
+ port=${MYSQL_SERVER_PORT}
112
+ user=${IREDAPD_DB_USER}
113
+ password="${IREDAPD_DB_PASSWD}"
114
+ EOF
115
+
116
+ elif [ X"${BACKEND}" == X'PGSQL' ]; then
117
+ mkdir ${PGSQL_DATA_DIR}/tmp 2>/dev/null
118
+ cp ${IREDAPD_ROOT_DIR_SYMBOL_LINK}/SQL/*sql ${PGSQL_DATA_DIR}/tmp/ >> ${INSTALL_LOG} 2>&1
119
+ chmod 0555 ${PGSQL_DATA_DIR}/tmp/*sql
120
+
121
+ su - ${SYS_USER_PGSQL} -c "psql -d template1" >> ${INSTALL_LOG} 2>&1 <<EOF
122
+ -- Create user
123
+ CREATE USER ${IREDAPD_DB_USER} WITH ENCRYPTED PASSWORD '${IREDAPD_DB_PASSWD}' NOSUPERUSER NOCREATEDB NOCREATEROLE;
124
+
125
+ -- Create database
126
+ CREATE DATABASE ${IREDAPD_DB_NAME} WITH TEMPLATE template0 ENCODING 'UTF8';
127
+
128
+ ALTER DATABASE ${IREDAPD_DB_NAME} OWNER TO ${IREDAPD_DB_USER};
129
+ EOF
130
+
131
+ su - ${SYS_USER_PGSQL} -c "psql -U ${IREDAPD_DB_USER} -d ${IREDAPD_DB_NAME}" >> ${INSTALL_LOG} 2>&1 <<EOF
132
+ -- Import SQL template
133
+ \i ${PGSQL_DATA_DIR}/tmp/iredapd.pgsql;
134
+
135
+ -- Enable greylisting by default.
136
+ \i ${PGSQL_DATA_DIR}/tmp/enable_global_greylisting.sql;
137
+
138
+ -- Import greylisting whitelist domains.
139
+ \i ${PGSQL_DATA_DIR}/tmp/greylisting_whitelist_domains.sql;
140
+
141
+ -- Blacklist some rDNS names
142
+ \i ${PGSQL_DATA_DIR}/tmp/wblist_rdns.sql;
143
+
144
+ EOF
145
+
146
+ rm -rf ${PGSQL_DATA_DIR}/tmp >> ${INSTALL_LOG} 2>&1
147
+ fi
148
+
149
+ echo 'export status_iredapd_initialize_db="DONE"' >> ${STATUS_FILE}
150
+ }
151
+
152
+ iredapd_config()
153
+ {
154
+ perl -pi -e 's#^(listen_address).*#${1} = "$ENV{IREDAPD_BIND_HOST}"#' ${IREDAPD_CONF}
155
+ perl -pi -e 's#^(listen_port).*#${1} = "$ENV{IREDAPD_LISTEN_PORT}"#' ${IREDAPD_CONF}
156
+ perl -pi -e 's#^(run_as_user).*#${1} = "$ENV{SYS_USER_IREDAPD}"#' ${IREDAPD_CONF}
157
+
158
+ # SRS
159
+ perl -pi -e 's#^(srs_forward_port).*#${1} = "$ENV{IREDAPD_SRS_FORWARD_PORT}"#' ${IREDAPD_CONF}
160
+ perl -pi -e 's#^(srs_reverse_port).*#${1} = "$ENV{IREDAPD_SRS_REVERSE_PORT}"#' ${IREDAPD_CONF}
161
+ perl -pi -e 's#^(srs_domain).*#${1} = "$ENV{HOSTNAME}"#' ${IREDAPD_CONF}
162
+
163
+ export _srs_secret="$(${RANDOM_STRING})"
164
+ perl -pi -e 's#^(srs_secrets).*#${1} = ["$ENV{_srs_secret}"]#' ${IREDAPD_CONF}
165
+
166
+ # Log
167
+ perl -pi -e 's#^(log_level).*#${1} = "info"#' ${IREDAPD_CONF}
168
+
169
+ # Create log directory and log file
170
+ [ -d ${IREDAPD_LOG_DIR} ] || mkdir -p ${IREDAPD_LOG_DIR} >> ${INSTALL_LOG} 2>&1
171
+ touch ${IREDAPD_LOG_FILE} >> ${INSTALL_LOG} 2>&1
172
+ chown -R ${SYS_USER_SYSLOG}:${SYS_GROUP_SYSLOG} ${IREDAPD_LOG_DIR} ${IREDAPD_LOG_FILE} >> ${INSTALL_LOG} 2>&1
173
+ chmod 0750 ${IREDAPD_LOG_DIR} >> ${INSTALL_LOG} 2>&1
174
+ chmod 0640 ${IREDAPD_LOG_FILE} >> ${INSTALL_LOG} 2>&1
175
+
176
+ # Backend.
177
+ [ X"${BACKEND}" == X'OPENLDAP' ] && perl -pi -e 's#^(backend).*#${1} = "ldap"#' ${IREDAPD_CONF}
178
+ [ X"${BACKEND}" == X'MYSQL' ] && perl -pi -e 's#^(backend).*#${1} = "mysql"#' ${IREDAPD_CONF}
179
+ [ X"${BACKEND}" == X'PGSQL' ] && perl -pi -e 's#^(backend).*#${1} = "pgsql"#' ${IREDAPD_CONF}
180
+
181
+ # Backend related parameters.
182
+ if [ X"${BACKEND}" == X'OPENLDAP' ]; then
183
+ perl -pi -e 's#^(ldap_uri).*#${1} = "ldap://$ENV{LDAP_SERVER_HOST}:$ENV{LDAP_SERVER_PORT}"#' ${IREDAPD_CONF}
184
+ perl -pi -e 's#^(ldap_binddn).*#${1} = "$ENV{LDAP_BINDDN}"#' ${IREDAPD_CONF}
185
+ perl -pi -e 's#^(ldap_bindpw).*#${1} = "$ENV{LDAP_BINDPW}"#' ${IREDAPD_CONF}
186
+ perl -pi -e 's#^(ldap_basedn).*#${1} = "$ENV{LDAP_BASEDN}"#' ${IREDAPD_CONF}
187
+
188
+ perl -pi -e 's#^(plugins).*#${1} = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "ldap_maillist_access_policy"]#' ${IREDAPD_CONF}
189
+
190
+ elif [ X"${BACKEND}" == X'MYSQL' -o X"${BACKEND}" == X'PGSQL' ]; then
191
+ perl -pi -e 's#^(vmail_db_server).*#${1} = "$ENV{SQL_SERVER_ADDRESS}"#' ${IREDAPD_CONF}
192
+ perl -pi -e 's#^(vmail_db_port).*#${1} = "$ENV{SQL_SERVER_PORT}"#' ${IREDAPD_CONF}
193
+ perl -pi -e 's#^(vmail_db_name).*#${1} = "$ENV{VMAIL_DB_NAME}"#' ${IREDAPD_CONF}
194
+ perl -pi -e 's#^(vmail_db_user).*#${1} = "$ENV{VMAIL_DB_BIND_USER}"#' ${IREDAPD_CONF}
195
+ perl -pi -e 's#^(vmail_db_password).*#${1} = "$ENV{VMAIL_DB_BIND_PASSWD}"#' ${IREDAPD_CONF}
196
+
197
+ perl -pi -e 's#^(plugins).*#${1} = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy", "sql_ml_access_policy"]#' ${IREDAPD_CONF}
198
+ fi
199
+
200
+ # Amavisd database
201
+ perl -pi -e 's#^(amavisd_db_server).*#${1} = "$ENV{SQL_SERVER_ADDRESS}"#' ${IREDAPD_CONF}
202
+ perl -pi -e 's#^(amavisd_db_port).*#${1} = "$ENV{SQL_SERVER_PORT}"#' ${IREDAPD_CONF}
203
+ perl -pi -e 's#^(amavisd_db_name).*#${1} = "$ENV{AMAVISD_DB_NAME}"#' ${IREDAPD_CONF}
204
+ perl -pi -e 's#^(amavisd_db_user).*#${1} = "$ENV{AMAVISD_DB_USER}"#' ${IREDAPD_CONF}
205
+ perl -pi -e 's#^(amavisd_db_password).*#${1} = "$ENV{AMAVISD_DB_PASSWD}"#' ${IREDAPD_CONF}
206
+
207
+ # iRedAdmin database
208
+ perl -pi -e 's#^(iredadmin_db_server).*#${1} = "$ENV{SQL_SERVER_ADDRESS}"#' ${IREDAPD_CONF}
209
+ perl -pi -e 's#^(iredadmin_db_port).*#${1} = "$ENV{SQL_SERVER_PORT}"#' ${IREDAPD_CONF}
210
+ perl -pi -e 's#^(iredadmin_db_name).*#${1} = "$ENV{IREDADMIN_DB_NAME}"#' ${IREDAPD_CONF}
211
+ perl -pi -e 's#^(iredadmin_db_user).*#${1} = "$ENV{IREDADMIN_DB_USER}"#' ${IREDAPD_CONF}
212
+ perl -pi -e 's#^(iredadmin_db_password).*#${1} = "$ENV{IREDADMIN_DB_PASSWD}"#' ${IREDAPD_CONF}
213
+
214
+ # iRedAPD database
215
+ perl -pi -e 's#^(iredapd_db_server).*#${1} = "$ENV{SQL_SERVER_ADDRESS}"#' ${IREDAPD_CONF}
216
+ perl -pi -e 's#^(iredapd_db_port).*#${1} = "$ENV{SQL_SERVER_PORT}"#' ${IREDAPD_CONF}
217
+ perl -pi -e 's#^(iredapd_db_name).*#${1} = "$ENV{IREDAPD_DB_NAME}"#' ${IREDAPD_CONF}
218
+ perl -pi -e 's#^(iredapd_db_user).*#${1} = "$ENV{IREDAPD_DB_USER}"#' ${IREDAPD_CONF}
219
+ perl -pi -e 's#^(iredapd_db_password).*#${1} = "$ENV{IREDAPD_DB_PASSWD}"#' ${IREDAPD_CONF}
220
+
221
+ # mlmmjadmin integration.
222
+ perl -pi -e 's#^(mlmmjadmin_api_auth_token).*#${1} = "$ENV{MLMMJADMIN_API_AUTH_TOKEN}"#' ${IREDAPD_CONF}
223
+
224
+ if [ X"${BACKEND}" == X"OPENLDAP" -o X"${BACKEND}" == X'MYSQL' ]; then
225
+ # Set correct SQL driver for SQLAlchemy. Defaults to `pymysql`.
226
+ export SQL_DB_DRIVER='pymysql'
227
+
228
+ if [ X"${SQL_DB_DRIVER}" != X'' ]; then
229
+ echo "SQL_DB_DRIVER = '${SQL_DB_DRIVER}'" >> ${IREDAPD_CONF}
230
+ fi
231
+ fi
232
+
233
+ if [ X"${LOCAL_ADDRESS}" != X'127.0.0.1' ]; then
234
+ echo "MYNETWORKS = ['${LOCAL_ADDRESS}']" >> ${IREDAPD_CONF}
235
+ fi
236
+
237
+ # FreeBSD uses different path for syslog socket.
238
+ if [ X"${KERNEL_NAME}" == X'FREEBSD' ]; then
239
+ echo "SYSLOG_SERVER = '${SYSLOG_SOCKET}'" >> ${IREDAPD_CONF}
240
+ fi
241
+
242
+ echo 'export status_iredapd_config="DONE"' >> ${STATUS_FILE}
243
+ }
244
+
245
+ iredapd_syslog_setup()
246
+ {
247
+ ECHO_DEBUG "Generate modular syslog and log rotate config files for iRedAPD."
248
+ if [ X"${KERNEL_NAME}" == X'LINUX' ]; then
249
+ #
250
+ # modular syslog config file
251
+ #
252
+ cp ${SAMPLE_DIR}/rsyslog.d/1-iredmail-iredapd.conf ${SYSLOG_CONF_DIR}
253
+
254
+ perl -pi -e 's#PH_IREDMAIL_SYSLOG_FACILITY#$ENV{IREDMAIL_SYSLOG_FACILITY}#g' ${SYSLOG_CONF_DIR}/1-iredmail-iredapd.conf
255
+ perl -pi -e 's#PH_IREDAPD_LOG_FILE#$ENV{IREDAPD_LOG_FILE}#g' ${SYSLOG_CONF_DIR}/1-iredmail-iredapd.conf
256
+
257
+ #
258
+ # modular logrotate config file
259
+ #
260
+ cp -f ${SAMPLE_DIR}/logrotate/iredapd ${IREDAPD_LOGROTATE_FILE}
261
+ chmod 0644 ${IREDAPD_LOGROTATE_FILE}
262
+
263
+ perl -pi -e 's#PH_IREDAPD_LOG_DIR#$ENV{IREDAPD_LOG_DIR}#g' ${IREDAPD_LOGROTATE_FILE}
264
+ perl -pi -e 's#PH_SYSLOG_POSTROTATE_CMD#$ENV{SYSLOG_POSTROTATE_CMD}#g' ${IREDAPD_LOGROTATE_FILE}
265
+ elif [ X"${KERNEL_NAME}" == X'FREEBSD' ]; then
266
+ #
267
+ # modular syslog config file
268
+ #
269
+ cp -f ${SAMPLE_DIR}/freebsd/syslog.d/iredapd.conf ${SYSLOG_CONF_DIR} >> ${INSTALL_LOG} 2>&1
270
+ perl -pi -e 's#PH_IREDMAIL_SYSLOG_FACILITY#$ENV{IREDMAIL_SYSLOG_FACILITY}#g' ${SYSLOG_CONF_DIR}/iredapd.conf
271
+ perl -pi -e 's#PH_IREDAPD_LOG_FILE#$ENV{IREDAPD_LOG_FILE}#g' ${SYSLOG_CONF_DIR}/iredapd.conf
272
+
273
+ #
274
+ # modular newsyslog (log rotate) config file
275
+ #
276
+ cp -f ${SAMPLE_DIR}/freebsd/newsyslog.conf.d/iredapd.conf ${IREDAPD_LOGROTATE_FILE}
277
+
278
+ perl -pi -e 's#PH_IREDAPD_LOG_FILE#$ENV{IREDAPD_LOG_FILE}#g' ${IREDAPD_LOGROTATE_FILE}
279
+ perl -pi -e 's#PH_IREDAPD_PID_FILE#$ENV{IREDAPD_PID_FILE}#g' ${IREDAPD_LOGROTATE_FILE}
280
+ perl -pi -e 's#PH_SYS_USER_SYSLOG#$ENV{SYS_USER_SYSLOG}#g' ${IREDAPD_LOGROTATE_FILE}
281
+ perl -pi -e 's#PH_SYS_GROUP_SYSLOG#$ENV{SYS_GROUP_SYSLOG}#g' ${IREDAPD_LOGROTATE_FILE}
282
+
283
+ elif [ X"${KERNEL_NAME}" == X'OPENBSD' ]; then
284
+ if ! grep "${IREDAPD_LOG_FILE}" ${SYSLOG_CONF} &>/dev/null; then
285
+ # '!!' means abort further evaluation after first match
286
+ echo '' >> ${SYSLOG_CONF}
287
+ echo '!!iredapd' >> ${SYSLOG_CONF}
288
+ echo "${IREDMAIL_SYSLOG_FACILITY}.* ${IREDAPD_LOG_FILE}" >> ${SYSLOG_CONF}
289
+ fi
290
+
291
+ if ! grep "${IREDAPD_LOG_FILE}" /etc/newsyslog.conf &>/dev/null; then
292
+ cat >> /etc/newsyslog.conf <<EOF
293
+ ${IREDAPD_LOG_FILE} ${SYS_USER_IREDAPD}:${SYS_GROUP_IREDAPD} 600 7 * 24 Z
294
+ EOF
295
+ fi
296
+ fi
297
+ echo 'export status_iredapd_syslog_setup="DONE"' >> ${STATUS_FILE}
298
+ }
299
+
300
+
301
+ iredapd_cron_setup()
302
+ {
303
+ # Setup cron job to clean up expired throttle tracking records.
304
+ # Note: use ${IREDAPD_ROOT_DIR_SYMBOL_LINK} instead of ${IREDAPD_ROOT_DIR}
305
+ # here, so that we don't need to change cron job after upgrading iRedAPD.
306
+ cat >> ${CRON_FILE_ROOT} <<EOF
307
+ # iRedAPD: Clean up expired tracking records hourly.
308
+ 1 * * * * ${CMD_PYTHON3} ${IREDAPD_ROOT_DIR_SYMBOL_LINK}/tools/cleanup_db.py >/dev/null
309
+
310
+ # iRedAPD: Convert SPF DNS record of specified domain names to IP
311
+ # addresses/networks hourly.
312
+ 2 * * * * ${CMD_PYTHON3} ${IREDAPD_ROOT_DIR_SYMBOL_LINK}/tools/spf_to_greylist_whitelists.py >/dev/null
313
+
314
+ EOF
315
+
316
+ # Disable cron jobs if we don't need to initialize database on this server.
317
+ if [ X"${INITIALIZE_SQL_DATA}" != X'YES' ]; then
318
+ perl -pi -e 's/(.*iredapd.*tools.*cleanup_db.py.*)/#${1}/g' ${CRON_FILE_ROOT}
319
+ perl -pi -e 's/(.*iredapd.*tools.*spf_to_greylist_whitelists.py.*)/#${1}/g' ${CRON_FILE_ROOT}
320
+ fi
321
+
322
+ echo 'export status_iredapd_cron_setup="DONE"' >> ${STATUS_FILE}
323
+ }
324
+
325
+ iredapd_setup()
326
+ {
327
+ check_status_before_run iredapd_install
328
+
329
+ if [ X"${INITIALIZE_SQL_DATA}" == X'YES' ]; then
330
+ check_status_before_run iredapd_initialize_db
331
+ fi
332
+
333
+ check_status_before_run iredapd_cron_setup
334
+ check_status_before_run iredapd_config
335
+ check_status_before_run iredapd_syslog_setup
336
+
337
+ cat >> ${TIP_FILE} <<EOF
338
+ iRedAPD - Postfix Policy Server:
339
+ * Version: ${IREDAPD_VERSION}
340
+ * Listen address: ${IREDAPD_BIND_HOST}, port: ${IREDAPD_LISTEN_PORT}
341
+ * SQL database account:
342
+ - Database name: ${IREDAPD_DB_NAME}
343
+ - Username: ${IREDAPD_DB_USER}
344
+ - Password: ${IREDAPD_DB_PASSWD}
345
+ * Configuration file:
346
+ - ${IREDAPD_CONF}
347
+ * Related files:
348
+ - ${IREDAPD_ROOT_DIR}
349
+ - ${IREDAPD_ROOT_DIR_SYMBOL_LINK} (symbol link to ${IREDAPD_ROOT_DIR}
350
+
351
+ EOF
352
+
353
+ write_iredmail_kv "sql_user_${IREDAPD_DB_USER}" "${IREDAPD_DB_PASSWD}"
354
+ write_iredmail_kv iredapd_srs_secret "${IREDAPD_SRS_SECRET}"
355
+ echo 'export status_iredapd_setup="DONE"' >> ${STATUS_FILE}
356
+ }
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # Author: Zhang Huangbin <zhb _at_ iredmail.org>
4
+
5
+ # -------------------------------------------
6
+ # Install all optional components.
7
+ # -------------------------------------------
8
+ optional_components()
9
+ {
10
+ # iRedAPD.
11
+ check_status_before_run iredapd_setup
12
+
13
+ # iRedAdmin.
14
+
15
+ # Roundcubemail.
16
+
17
+ # SOGo
18
+
19
+ # Fail2ban.
20
+ [ X"${USE_FAIL2BAN}" == X'YES' -a X"${DISTRO}" != X'FREEBSD' ] && \
21
+ check_status_before_run fail2ban_setup
22
+
23
+ # netdata.
24
+ }