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,179 @@
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
+
23
+ install_all()
24
+ {
25
+ export OPENLDAP_VER='26'
26
+ export MYSQL_VER='84'
27
+ export PHP_VER='83'
28
+ export PY3_VER='3.11'
29
+ export PY_FLAVOR='py311'
30
+
31
+ if [ X"${WEB_SERVER}" == X'NGINX' ]; then
32
+ export IREDMAIL_USE_PHP='YES'
33
+ fi
34
+
35
+ ALL_PKGS="${PY_FLAVOR}-sqlalchemy14"
36
+
37
+ if [ X"${BACKEND}" == X'OPENLDAP' ]; then
38
+ ALL_PKGS="${ALL_PKGS} openldap${OPENLDAP_VER}-server"
39
+ ALL_PKGS="${ALL_PKGS} mysql${MYSQL_VER}-server"
40
+
41
+ # Python modules.
42
+ ALL_PKGS="${ALL_PKGS} ${PY_FLAVOR}-python-ldap ${PY_FLAVOR}-pymysql"
43
+
44
+ # Perl modules.
45
+ ALL_PKGS="${ALL_PKGS} p5-DBD-LDAP p5-DBD-mysql"
46
+
47
+ elif [ X"${BACKEND}" == X'MYSQL' ]; then
48
+ ALL_PKGS="${ALL_PKGS} mysql${MYSQL_VER}-client"
49
+
50
+ if [ X"${USE_EXISTING_MYSQL}" != X'YES' ]; then
51
+ ALL_PKGS="${ALL_PKGS} mysql${MYSQL_VER}-server"
52
+ fi
53
+
54
+ # Python modules.
55
+ ALL_PKGS="${ALL_PKGS} ${PY_FLAVOR}-pymysql"
56
+
57
+ # Perl modules.
58
+ ALL_PKGS="${ALL_PKGS} p5-DBD-mysql"
59
+
60
+ elif [ X"${BACKEND}" == X'PGSQL' ]; then
61
+ ALL_PKGS="${ALL_PKGS} postgresql${PGSQL_VERSION}-server postgresql${PGSQL_VERSION}-contrib"
62
+
63
+ # Python modules.
64
+ ALL_PKGS="${ALL_PKGS} ${PY_FLAVOR}-psycopg2"
65
+
66
+ # Perl modules.
67
+ ALL_PKGS="${ALL_PKGS} p5-DBD-Pg"
68
+ fi
69
+
70
+ # Dovecot
71
+ if [[ "${BACKEND}" == "OPENLDAP" ]]; then
72
+ # We need both LDAP and MySQL support.
73
+ ALL_PKGS="${ALL_PKGS} dovecot-mysql dovecot-pigeonhole-mysql"
74
+ elif [[ "${BACKEND}" == "MYSQL" ]]; then
75
+ ALL_PKGS="${ALL_PKGS} dovecot-mysql dovecot-pigeonhole-mysql"
76
+ elif [[ "${BACKEND}" == "PGSQL" ]]; then
77
+ ALL_PKGS="${ALL_PKGS} dovecot-pgsql dovecot-pigeonhole-pgsql"
78
+ fi
79
+
80
+ # SpamAssassin
81
+ ALL_PKGS="${ALL_PKGS} spamassassin"
82
+
83
+ # Amavisd-new.
84
+ ALL_PKGS="${ALL_PKGS} amavisd-new"
85
+
86
+ # Postfix.
87
+ if [[ "${BACKEND}" == 'OPENLDAP' ]]; then
88
+ ALL_PKGS="${ALL_PKGS} postfix-ldap"
89
+ elif [[ "${BACKEND}" == 'MYSQL' ]]; then
90
+ ALL_PKGS="${ALL_PKGS} postfix-mysql"
91
+ elif [[ "${BACKEND}" == 'PGSQL' ]]; then
92
+ ALL_PKGS="${ALL_PKGS} postfix-pgsql p5-Class-DBI-Pg"
93
+ fi
94
+
95
+ if [ X"${WEB_SERVER}" == X'NGINX' ]; then
96
+ ALL_PKGS="${ALL_PKGS} nginx uwsgi-${PY_FLAVOR}"
97
+ fi
98
+
99
+ # PHP and extensions
100
+ if [ X"${IREDMAIL_USE_PHP}" == X'YES' ]; then
101
+ ALL_PKGS="${ALL_PKGS} php${PHP_VER} php${PHP_VER}-extensions"
102
+
103
+ if [ X"${BACKEND}" == X'OPENLDAP' ]; then
104
+ ALL_PKGS="${ALL_PKGS} php${PHP_VER}-ldap php${PHP_VER}-mysqli"
105
+ elif [ X"${BACKEND}" == X'MYSQL' ]; then
106
+ ALL_PKGS="${ALL_PKGS} php${PHP_VER}-mysqli"
107
+ elif [ X"${BACKEND}" == X'PGSQL' ]; then
108
+ ALL_PKGS="${ALL_PKGS} php${PHP_VER}-pdo_pgsql"
109
+ fi
110
+ fi
111
+
112
+ ALL_PKGS="${ALL_PKGS} p5-Exporter-Tiny ca_root_nss clamav"
113
+
114
+ # mlmmj: mailing list manager
115
+ ALL_PKGS="${ALL_PKGS} mlmmj"
116
+
117
+ # Roundcube webmail.
118
+ if [ X"${USE_ROUNDCUBE}" == X'YES' ]; then
119
+ [ X"${BACKEND}" == X'OPENLDAP' ] && ALL_PKGS="${ALL_PKGS} php${PHP_VER}-pear-Net_LDAP2"
120
+ ALL_PKGS="${ALL_PKGS} roundcube-php${PHP_VER} mod_php${PHP_VER}"
121
+ fi
122
+
123
+ # SOGo groupware.
124
+ if [ X"${USE_SOGO}" == X'YES' ]; then
125
+ if [ X"${BACKEND}" == X'OPENLDAP' -o X"${BACKEND}" == X'MYSQL' ]; then
126
+ ALL_PKGS="${ALL_PKGS} sope-mysql sogo-mysqlactivesync"
127
+ elif [ X"${BACKEND}" == X'PGSQL' ]; then
128
+ ALL_PKGS="${ALL_PKGS} sope-pgsql sogo-pgsqlactivesync"
129
+ fi
130
+ fi
131
+
132
+ # iRedAPD
133
+ ALL_PKGS="${ALL_PKGS} ${PY_FLAVOR}-dnspython ${PY_FLAVOR}-multipart"
134
+
135
+ # iRedAdmin dependencies.
136
+ ALL_PKGS="${ALL_PKGS} ${PY_FLAVOR}-Jinja2 ${PY_FLAVOR}-bcrypt ${PY_FLAVOR}-simplejson ${PY_FLAVOR}-requests ${PY_FLAVOR}-netifaces ${PY_FLAVOR}-more-itertools ${PY_FLAVOR}-passlib"
137
+
138
+ # Fail2ban.
139
+ if [ X"${USE_FAIL2BAN}" == X'YES' ]; then
140
+ ALL_PKGS="${ALL_PKGS} ${PY_FLAVOR}-fail2ban"
141
+ fi
142
+
143
+ # netdata
144
+ if [ X"${USE_NETDATA}" == X'YES' ]; then
145
+ ALL_PKGS="${ALL_PKGS} netdata"
146
+ fi
147
+
148
+ # Misc
149
+ ALL_PKGS="${ALL_PKGS} logwatch"
150
+
151
+ # ECHO_INFO "Set pkg repo to: ${FREEBSD_PKG_MIRROR_URL}."
152
+ # [[ -d /usr/local/etc/pkg/repos ]] || mkdir -p /usr/local/etc/pkg/repos
153
+ # cat > /usr/local/etc/pkg/repos/FreeBSD.conf <<EOF
154
+ #FreeBSD: {
155
+ # url: "${FREEBSD_PKG_MIRROR_URL}",
156
+ #EOF
157
+ #
158
+ # if [[ ${FREEBSD_PKG_MIRROR_TYPE} != "" ]]; then
159
+ # cat >> /usr/local/etc/pkg/repos/FreeBSD.conf <<EOF
160
+ # mirror_type: "${FREEBSD_PKG_MIRROR_TYPE}",
161
+ #EOF
162
+ # fi
163
+ #
164
+ #echo "}" >> /usr/local/etc/pkg/repos/FreeBSD.conf
165
+
166
+ ECHO_INFO "Run: pkg update -f"
167
+ pkg update -f || exit 255
168
+
169
+ # Install all packages.
170
+ ECHO_INFO "Install packages: pkg install -y ${ALL_PKGS}"
171
+ pkg install -y ${ALL_PKGS} || exit 255
172
+
173
+ ECHO_DEBUG "Create symbol links for python3."
174
+ ln -sf /usr/local/bin/python${PY3_VER} /usr/local/bin/python3
175
+
176
+ # Create syslog.d and logrotate.d
177
+ mkdir -p ${SYSLOG_CONF_DIR} >> ${INSTALL_LOG} 2>&1
178
+ mkdir -p ${LOGROTATE_DIR} >> ${INSTALL_LOG} 2>&1
179
+ }
@@ -0,0 +1,457 @@
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
+
23
+ # -------------------------------------------------------
24
+ # ---------------------- Postfix ------------------------
25
+ # -------------------------------------------------------
26
+
27
+ postfix_config_basic()
28
+ {
29
+ ECHO_INFO "Configure Postfix (MTA)."
30
+
31
+ if [ X"${DISTRO}" == "DEBIAN" -o X"${DISTRO}" == X"UBUNTU" ]; then
32
+ # Store FQDN in /etc/mailname.
33
+ # FYI: https://wiki.debian.org/EtcMailName
34
+ echo "${HOSTNAME}" > /etc/mailname
35
+ fi
36
+
37
+ #
38
+ # main.cf
39
+ #
40
+ export queue_directory="$(postconf -d queue_directory | awk '{print $NF}')"
41
+ export command_directory="$(postconf -d command_directory | awk '{print $NF}')"
42
+ export daemon_directory="$(postconf -d daemon_directory | awk '{print $NF}')"
43
+ export data_directory="$(postconf -d data_directory | awk '{print $NF}')"
44
+
45
+ export sendmail_path="$(postconf -d sendmail_path | awk '{print $NF}')"
46
+ export newaliases_path="$(postconf -d newaliases_path | awk '{print $NF}')"
47
+ export mailq_path="$(postconf -d mailq_path | awk '{print $NF}')"
48
+ export mail_owner="$(postconf -d mail_owner | awk '{print $NF}')"
49
+ export setgid_group="$(postconf -d setgid_group | awk '{print $NF}')"
50
+
51
+ if [ X"${DISTRO}" == X'FREEBSD' ]; then
52
+ export setgid_group='maildrop'
53
+ elif [ X"${DISTRO}" == X'OPENBSD' ]; then
54
+ export command_directory='/usr/local/sbin'
55
+ export daemon_directory='/usr/local/libexec/postfix'
56
+ export mail_owner='_postfix'
57
+ export setgid_group='_postdrop'
58
+ fi
59
+
60
+ # Copy sample main.cf and update values.
61
+ backup_file ${POSTFIX_FILE_MAIN_CF} ${POSTFIX_FILE_MASTER_CF}
62
+ cp ${SAMPLE_DIR}/postfix/main.cf ${POSTFIX_FILE_MAIN_CF}
63
+
64
+ ECHO_DEBUG "Enable submission and additional transports required by Amavisd and Dovecot."
65
+ cat ${SAMPLE_DIR}/postfix/master.cf >> ${POSTFIX_FILE_MASTER_CF}
66
+
67
+ perl -pi -e 's#PH_POSTFIX_DEFAULT_DB_TYPE#$ENV{POSTFIX_DEFAULT_DB_TYPE}#g' ${POSTFIX_FILE_MAIN_CF}
68
+ perl -pi -e 's#PH_QUEUE_DIRECTORY#$ENV{queue_directory}#g' ${POSTFIX_FILE_MAIN_CF}
69
+ perl -pi -e 's#PH_COMMAND_DIRECTORY#$ENV{command_directory}#g' ${POSTFIX_FILE_MAIN_CF}
70
+ perl -pi -e 's#PH_DAEMON_DIRECTORY#$ENV{daemon_directory}#g' ${POSTFIX_FILE_MAIN_CF}
71
+ perl -pi -e 's#PH_DATA_DIRECTORY#$ENV{data_directory}#g' ${POSTFIX_FILE_MAIN_CF}
72
+
73
+ perl -pi -e 's#PH_SENDMAIL_PATH#$ENV{sendmail_path}#g' ${POSTFIX_FILE_MAIN_CF}
74
+ perl -pi -e 's#PH_NEWALIASES_PATH#$ENV{newaliases_path}#g' ${POSTFIX_FILE_MAIN_CF}
75
+ perl -pi -e 's#PH_MAILQ_PATH#$ENV{mailq_path}#g' ${POSTFIX_FILE_MAIN_CF}
76
+ perl -pi -e 's#PH_MAIL_OWNER#$ENV{mail_owner}#g' ${POSTFIX_FILE_MAIN_CF}
77
+ perl -pi -e 's#PH_SETGID_GROUP#$ENV{setgid_group}#g' ${POSTFIX_FILE_MAIN_CF}
78
+
79
+ unset queue_directory command_directory daemon_directory data_directory
80
+ unset mail_owner sendmail_path newaliases_path mailq_path setgid_group
81
+
82
+ # Append LOCAL_ADDRESS in `mynetworks`
83
+ if [ X"${LOCAL_ADDRESS}" != X'127.0.0.1' ]; then
84
+ perl -pi -e 's#^(mynetworks.*)#${1} $ENV{LOCAL_ADDRESS}#g' ${POSTFIX_FILE_MAIN_CF}
85
+ fi
86
+
87
+ if [ X"${IREDMAIL_HAS_IPV6}" == X'YES' ]; then
88
+ # Append local IPv6 address in `mynetworks`
89
+ perl -pi -e 's#^(mynetworks.*)#${1} [::1]#g' ${POSTFIX_FILE_MAIN_CF}
90
+ else
91
+ # Disable ipv6 protocol
92
+ perl -pi -e 's#^(inet_protocols.*=).*#${1} ipv4#g' ${POSTFIX_FILE_MAIN_CF}
93
+ fi
94
+
95
+ # Update normal settings.
96
+ perl -pi -e 's#PH_HOSTNAME#$ENV{HOSTNAME}#g' ${POSTFIX_FILE_MAIN_CF}
97
+ perl -pi -e 's#PH_MESSAGE_SIZE_LIMIT_BYTES#$ENV{MESSAGE_SIZE_LIMIT_BYTES}#g' ${POSTFIX_FILE_MAIN_CF}
98
+ perl -pi -e 's#PH_STORAGE_BASE_DIR#$ENV{STORAGE_BASE_DIR}#g' ${POSTFIX_FILE_MAIN_CF}
99
+ perl -pi -e 's#PH_SYS_USER_VMAIL_UID#$ENV{SYS_USER_VMAIL_UID}#g' ${POSTFIX_FILE_MAIN_CF}
100
+
101
+ perl -pi -e 's#PH_SYS_GROUP_VMAIL_GID#$ENV{SYS_GROUP_VMAIL_GID}#g' ${POSTFIX_FILE_MAIN_CF}
102
+ perl -pi -e 's#PH_SYS_USER_VMAIL_UID#$ENV{SYS_USER_VMAIL_UID}#g' ${POSTFIX_FILE_MAIN_CF}
103
+
104
+ perl -pi -e 's#PH_SSL_DH512_PARAM_FILE#$ENV{SSL_DH512_PARAM_FILE}#g' ${POSTFIX_FILE_MAIN_CF}
105
+ perl -pi -e 's#PH_SSL_DH1024_PARAM_FILE#$ENV{SSL_DH1024_PARAM_FILE}#g' ${POSTFIX_FILE_MAIN_CF}
106
+ perl -pi -e 's#PH_SSL_CERT_FILE#$ENV{SSL_CERT_FILE}#g' ${POSTFIX_FILE_MAIN_CF}
107
+ perl -pi -e 's#PH_SSL_KEY_FILE#$ENV{SSL_KEY_FILE}#g' ${POSTFIX_FILE_MAIN_CF}
108
+ perl -pi -e 's#PH_SSL_CERT_DIR#$ENV{SSL_CERT_DIR}#g' ${POSTFIX_FILE_MAIN_CF}
109
+ perl -pi -e 's#PH_SSL_CA_FILE#$ENV{SSL_CA_FILE}#g' ${POSTFIX_FILE_MAIN_CF}
110
+
111
+ if [ X"${DISTRO}" == X'FREEBSD' -o X"${DISTRO}" == X'OPENBSD' ]; then
112
+ perl -pi -e 's#^(smtpd_tls_CApath=).*#${1}#g' ${POSTFIX_FILE_MAIN_CF}
113
+ perl -pi -e 's#^(smtpd_tls_dh1024_param_file.*)##g' ${POSTFIX_FILE_MAIN_CF}
114
+ fi
115
+
116
+ # Replace deprecated parameters on Postfix >= 3.7.
117
+ if [ X"${DISTRO_CODENAME}" == X'trixie' -o X"${DISTRO_CODENAME}" == X'resolute' ]; then
118
+ # main.cf
119
+ perl -pi -e 's#^(smtpd_tls_dh1024_param_file.*)##g' ${POSTFIX_FILE_MAIN_CF}
120
+ elif [[ X"${DISTRO}" == X'FREEBSD' ]]; then
121
+ # main.cf
122
+ perl -pi -e 's#^(smtpd_tls_dh1024_param_file.*)##g' ${POSTFIX_FILE_MAIN_CF}
123
+
124
+ # master.cf
125
+ perl -pi -e 's#disable_dns_lookups=yes#smtp_dns_support_level=disabled#g' ${POSTFIX_FILE_MASTER_CF}
126
+ fi
127
+
128
+ perl -pi -e 's#PH_POSTFIX_FILE_ALIASES#$ENV{POSTFIX_FILE_ALIASES}#g' ${POSTFIX_FILE_MAIN_CF}
129
+ perl -pi -e 's#PH_POSTFIX_FILE_HELO_ACCESS#$ENV{POSTFIX_FILE_HELO_ACCESS}#g' ${POSTFIX_FILE_MAIN_CF}
130
+ perl -pi -e 's#PH_POSTFIX_FILE_HEADER_CHECKS#$ENV{POSTFIX_FILE_HEADER_CHECKS}#g' ${POSTFIX_FILE_MAIN_CF}
131
+ perl -pi -e 's#PH_POSTFIX_FILE_BODY_CHECKS#$ENV{POSTFIX_FILE_BODY_CHECKS}#g' ${POSTFIX_FILE_MAIN_CF}
132
+ perl -pi -e 's#PH_POSTFIX_FILE_SENDER_ACCESS#$ENV{POSTFIX_FILE_SENDER_ACCESS}#g' ${POSTFIX_FILE_MAIN_CF}
133
+ perl -pi -e 's#PH_POSTFIX_FILE_SMTPD_COMMAND_FILTER#$ENV{POSTFIX_FILE_SMTPD_COMMAND_FILTER}#g' ${POSTFIX_FILE_MAIN_CF}
134
+
135
+ # Create required files and set correct owner + permission
136
+ _files="${POSTFIX_FILE_HELO_ACCESS} ${POSTFIX_FILE_HEADER_CHECKS} ${POSTFIX_FILE_BODY_CHECKS} ${POSTFIX_FILE_SENDER_ACCESS}"
137
+ touch ${_files}
138
+ chown ${SYS_USER_ROOT}:${SYS_GROUP_POSTFIX} ${_files}
139
+ chmod 0640 ${_files}
140
+ unset _files
141
+
142
+ # iRedAPD
143
+ perl -pi -e 's#PH_IREDAPD_SERVER_ADDRESS#$ENV{IREDAPD_SERVER_ADDRESS}#g' ${POSTFIX_FILE_MAIN_CF}
144
+ perl -pi -e 's#PH_IREDAPD_LISTEN_PORT#$ENV{IREDAPD_LISTEN_PORT}#g' ${POSTFIX_FILE_MAIN_CF}
145
+ perl -pi -e 's#PH_IREDAPD_SRS_FORWARD_PORT#$ENV{IREDAPD_SRS_FORWARD_PORT}#g' ${POSTFIX_FILE_MAIN_CF}
146
+ perl -pi -e 's#PH_IREDAPD_SRS_REVERSE_PORT#$ENV{IREDAPD_SRS_REVERSE_PORT}#g' ${POSTFIX_FILE_MAIN_CF}
147
+
148
+ # Dovecot quota-status service
149
+ perl -pi -e 's#PH_DOVECOT_SERVICE_QUOTA_STATUS_PORT#$ENV{DOVECOT_SERVICE_QUOTA_STATUS_PORT}#g' ${POSTFIX_FILE_MAIN_CF}
150
+
151
+ # Distro releases ship Postfix 3.6+.
152
+ # - Ubuntu 22.04
153
+ # - Debian 12
154
+ # - OpenBSD
155
+ # - FreeBSD
156
+ if [[ X"${DISTRO}" == X'RHEL' ]]; then
157
+ if [[ X"${DISTRO_VERSION}" == X'10' ]]; then
158
+ # Postfix 3.8.5
159
+ postconf -e compatibility_level=3.6
160
+ postconf -e default_database_type=${POSTFIX_DEFAULT_DB_TYPE}
161
+ else
162
+ # Postfix 3.5.x
163
+ postconf -e compatibility_level=2
164
+ fi
165
+ elif [[ X"${DISTRO}" == X'FREEBSD' ]]; then
166
+ postconf -e compatibility_level=3.11
167
+ else
168
+ postconf -e compatibility_level=3.6
169
+ fi
170
+
171
+ perl -pi -e 's/^(smtp.*inet)(.*)(n)(.*)(n)(.*smtpd)$/${1}${2}${3}${4}-${6}/' ${POSTFIX_FILE_MASTER_CF}
172
+
173
+ # set smtp server
174
+ perl -pi -e 's#PH_SMTP_SERVER#$ENV{SMTP_SERVER}#g' ${POSTFIX_FILE_MASTER_CF}
175
+ perl -pi -e 's#PH_AMAVISD_CONTENT_FILTER_ORIGINATING#$ENV{AMAVISD_CONTENT_FILTER_ORIGINATING}#g' ${POSTFIX_FILE_MASTER_CF}
176
+
177
+ # set mailbox owner: user/group
178
+ perl -pi -e 's#PH_SYS_USER_VMAIL#$ENV{SYS_USER_VMAIL}#g' ${POSTFIX_FILE_MASTER_CF}
179
+ perl -pi -e 's#PH_SYS_GROUP_VMAIL#$ENV{SYS_GROUP_VMAIL}#g' ${POSTFIX_FILE_MASTER_CF}
180
+
181
+ # Amavisd integration.
182
+ perl -pi -e 's#PH_LOCAL_ADDRESS#$ENV{LOCAL_ADDRESS}#g' ${POSTFIX_FILE_MASTER_CF}
183
+ perl -pi -e 's#PH_AMAVISD_MAX_SERVERS#$ENV{AMAVISD_MAX_SERVERS}#g' ${POSTFIX_FILE_MASTER_CF}
184
+ perl -pi -e 's#PH_AMAVISD_MYNETWORKS#$ENV{AMAVISD_MYNETWORKS}#g' ${POSTFIX_FILE_MASTER_CF}
185
+ perl -pi -e 's#PH_POSTFIX_MAIL_REINJECT_PORT#$ENV{POSTFIX_MAIL_REINJECT_PORT}#g' ${POSTFIX_FILE_MASTER_CF}
186
+ perl -pi -e 's#PH_AMAVISD_ORIGINATING_PORT#$ENV{AMAVISD_ORIGINATING_PORT}#g' ${POSTFIX_FILE_MASTER_CF}
187
+
188
+ # Enable `content_filter` for `pickup` transport:
189
+ # - Treat all emails generated locally as outbound
190
+ # - sign DKIM signature
191
+ # - do spam/virus scanning
192
+ _pickup_orig="$(postconf -M |grep '^pickup')"
193
+ echo ${_pickup_orig} | grep 'content_filter=' &>/dev/null
194
+ if [ X"$?" != X'0' ]; then
195
+ postconf -M "pickup/unix=${_pickup_orig}"
196
+ postconf -P "pickup/unix/content_filter=${AMAVISD_CONTENT_FILTER_ORIGINATING}"
197
+ fi
198
+
199
+ _postfix_version="$(postconf -d mail_version | awk '{print $NF}')"
200
+ if echo ${_postfix_version} | grep '^3' &>/dev/null; then
201
+ # The master.cf chroot default value has changed from "y" (yes) to "n" (no).
202
+ for i in $(postconf -Mf | grep '^[0-9a-zA-Z]' | awk '{print $1"/"$2"/chroot=n"}'); do
203
+ postconf -F $i
204
+ done
205
+
206
+ # Disable smtputf8 if EAI support is not compiled in.
207
+ if postconf -m 2>&1 |grep 'warning: smtputf8_enable' &>/dev/null; then
208
+ postconf -e smtputf8_enable=no
209
+ fi
210
+ fi
211
+
212
+ ECHO_DEBUG "Enable chroot."
213
+ # mlmmj integration.
214
+ perl -pi -e 's#PH_POSTFIX_MLMMJ_REINJECT_PORT#$ENV{POSTFIX_MLMMJ_REINJECT_PORT}#g' ${POSTFIX_FILE_MASTER_CF}
215
+
216
+ # Dovecot LDA
217
+ perl -pi -e 's#PH_DOVECOT_DELIVER_BIN#$ENV{DOVECOT_DELIVER_BIN}#g' ${POSTFIX_FILE_MASTER_CF}
218
+
219
+ # mlmmj
220
+ perl -pi -e 's#PH_SYS_USER_MLMMJ#$ENV{SYS_USER_MLMMJ}#g' ${POSTFIX_FILE_MASTER_CF}
221
+ perl -pi -e 's#PH_SYS_GROUP_MLMMJ#$ENV{SYS_GROUP_MLMMJ}#g' ${POSTFIX_FILE_MASTER_CF}
222
+ perl -pi -e 's#PH_CMD_MLMMJ_AMIME_RECEIVE#$ENV{CMD_MLMMJ_AMIME_RECEIVE}#g' ${POSTFIX_FILE_MASTER_CF}
223
+ perl -pi -e 's#PH_MLMMJ_SPOOL_DIR#$ENV{MLMMJ_SPOOL_DIR}#g' ${POSTFIX_FILE_MASTER_CF}
224
+
225
+ ECHO_DEBUG "Copy: /etc/{hosts,resolv.conf,localtime,services} -> ${POSTFIX_CHROOT_DIR}/etc/"
226
+ mkdir -p ${POSTFIX_CHROOT_DIR}/etc/ >> ${INSTALL_LOG} 2>&1
227
+ for i in /etc/hosts /etc/resolv.conf /etc/localtime /etc/services; do
228
+ [[ -f $i ]] && cp ${i} ${POSTFIX_CHROOT_DIR}/etc/
229
+ done
230
+
231
+ backup_file ${POSTFIX_FILE_HELO_ACCESS}
232
+ cp -f ${SAMPLE_DIR}/postfix/helo_access.pcre ${POSTFIX_FILE_HELO_ACCESS}
233
+
234
+ backup_file ${POSTFIX_FILE_SMTPD_COMMAND_FILTER}
235
+ cp -f ${SAMPLE_DIR}/postfix/command_filter.pcre ${POSTFIX_FILE_SMTPD_COMMAND_FILTER}
236
+
237
+ # Update Postfix aliases file.
238
+ add_postfix_alias nobody ${SYS_USER_ROOT}
239
+ add_postfix_alias ${SYS_USER_VMAIL} ${SYS_USER_ROOT}
240
+ add_postfix_alias ${SYS_USER_ROOT} ${DOMAIN_ADMIN_EMAIL}
241
+
242
+ if [ X"${DISTRO}" == X'DEBIAN' -o X"${DISTRO}" == X'UBUNTU' ]; then
243
+ # Since `mail.*` is logged to /var/log/mail.log, no need to log
244
+ # `mail.err` to /var/log/mail.err separately.
245
+ ECHO_DEBUG "Disable duplicate log entries (mail.{info,warn,err}) in syslog config file."
246
+
247
+ for f in ${SYSLOG_CONF} ${SYSLOG_CONF_DIR}/50-default.conf; do
248
+ if [ -f ${f} ]; then
249
+ perl -pi -e 's/^(mail.info.*mail.info)$/#${1}/' ${f}
250
+ perl -pi -e 's/^(mail.warn.*mail.warn)$/#${1}/' ${f}
251
+ perl -pi -e 's/^(mail.err.*mail.err)$/#${1}/' ${f}
252
+ fi
253
+ done
254
+ elif [ X"${DISTRO}" == X'FREEBSD' ]; then
255
+ # FreeBSD: Start postfix when system start up.
256
+ backup_file /etc/mail/mailer.conf
257
+ cp -f ${SAMPLE_DIR}/postfix/freebsd/mailer.conf /etc/mail/mailer.conf
258
+ chmod +r /etc/mail/mailer.conf
259
+
260
+ # Start service when system start up.
261
+ service_control enable 'postfix_enable' 'YES'
262
+ service_control enable 'sendmail_enable' 'NO'
263
+ service_control enable 'sendmail_submit_enable' 'NO'
264
+ service_control enable 'sendmail_outbound_enable' 'NO'
265
+ service_control enable 'sendmail_msp_queue_enable' 'NO'
266
+ service_control enable 'daily_clean_hoststat_enable' 'NO'
267
+ service_control enable 'daily_status_mail_rejects_enable' 'NO'
268
+ service_control enable 'daily_status_include_submit_mailq' 'NO'
269
+ service_control enable 'daily_submit_queuerun' 'NO'
270
+
271
+ elif [ X"${DISTRO}" == X'OPENBSD' ]; then
272
+ # Replace sendmail, opensmtpd by Postfix
273
+ echo 'sendmail_flags=NO' >> ${RC_CONF_LOCAL}
274
+ echo 'smtpd_flags=NO' >> ${RC_CONF_LOCAL}
275
+ /usr/local/sbin/postfix-enable >> ${INSTALL_LOG} 2>&1
276
+ perl -pi -e 's/(.*sendmail -L sm-msp-queue.*)/#${1}/' ${CRON_FILE_ROOT}
277
+ fi
278
+
279
+ # Update /etc/host.conf to solve warning message in Postfix like this:
280
+ # "warning: hostname xxx does not resolve to address 127.0.0.1"
281
+ if [ -f /etc/host.conf ]; then
282
+ if ! grep '^multi on$' /etc/host.conf &>/dev/null; then
283
+ echo 'multi on' >> /etc/host.conf
284
+ fi
285
+ fi
286
+
287
+ # Create symbol link: /var/log/mail.log -> maillog
288
+ # So that all linux/bsd distributions have the same maillog file.
289
+ if [ X"${DISTRO}" == X'DEBIAN' -o X"${DISTRO}" == X'UBUNTU' ]; then
290
+ if [ -f ${MAILLOG} -a ! -f /var/log/maillog ]; then
291
+ ln -s ${MAILLOG} /var/log/maillog
292
+ fi
293
+ fi
294
+
295
+ echo 'export status_postfix_config_basic="DONE"' >> ${STATUS_FILE}
296
+ }
297
+
298
+ postfix_config_vhost()
299
+ {
300
+ ECHO_DEBUG "Configure Postfix for SQL/LDAP lookup."
301
+
302
+ # Create directory which used to store sql/ldap lookup files.
303
+ [[ -d ${POSTFIX_LOOKUP_DIR} ]] || mkdir -p ${POSTFIX_LOOKUP_DIR}
304
+
305
+ cat ${SAMPLE_DIR}/postfix/main.cf.${POSTFIX_LOOKUP_DB} >> ${POSTFIX_FILE_MAIN_CF}
306
+ perl -pi -e 's#PH_POSTFIX_LOOKUP_DIR#$ENV{POSTFIX_LOOKUP_DIR}#g' ${POSTFIX_FILE_MAIN_CF}
307
+
308
+ cp -f ${SAMPLE_DIR}/postfix/${POSTFIX_LOOKUP_DB}/*.cf ${POSTFIX_LOOKUP_DIR}
309
+
310
+ chown ${SYS_USER_ROOT}:${SYS_GROUP_POSTFIX} ${POSTFIX_LOOKUP_DIR}/*.cf
311
+ chmod 0640 ${POSTFIX_LOOKUP_DIR}/*.cf
312
+
313
+ if [ X"${BACKEND}" == X'OPENLDAP' ]; then
314
+ # LDAP server and bind dn/password
315
+ perl -pi -e 's#PH_LDAP_SERVER_HOST#$ENV{LDAP_SERVER_HOST}#g' ${POSTFIX_LOOKUP_DIR}/*.cf
316
+ perl -pi -e 's#PH_LDAP_SERVER_PORT#$ENV{LDAP_SERVER_PORT}#g' ${POSTFIX_LOOKUP_DIR}/*.cf
317
+ perl -pi -e 's#PH_LDAP_BIND_VERSION#$ENV{LDAP_BIND_VERSION}#g' ${POSTFIX_LOOKUP_DIR}/*.cf
318
+ perl -pi -e 's#PH_LDAP_BASEDN#$ENV{LDAP_BASEDN}#g' ${POSTFIX_LOOKUP_DIR}/*.cf
319
+ perl -pi -e 's#PH_LDAP_BINDDN#$ENV{LDAP_BINDDN}#g' ${POSTFIX_LOOKUP_DIR}/*.cf
320
+ perl -pi -e 's#PH_LDAP_BINDPW#$ENV{LDAP_BINDPW}#g' ${POSTFIX_LOOKUP_DIR}/*.cf
321
+
322
+ perl -pi -e 's#PH_LDAP_ATTR_GROUP_USERS#$ENV{LDAP_ATTR_GROUP_USERS}#g' ${POSTFIX_LOOKUP_DIR}/*.cf
323
+ perl -pi -e 's#PH_LDAP_ATTR_GROUP_GROUPS#$ENV{LDAP_ATTR_GROUP_GROUPS}#g' ${POSTFIX_LOOKUP_DIR}/*.cf
324
+ elif [ X"${BACKEND}" == X'MYSQL' -o X"${BACKEND}" == X'PGSQL' ]; then
325
+ # SQL server, port, bind username, password
326
+ perl -pi -e 's#PH_SQL_SERVER_ADDRESS#$ENV{SQL_SERVER_ADDRESS}#g' ${POSTFIX_LOOKUP_DIR}/*.cf
327
+ perl -pi -e 's#PH_SQL_SERVER_PORT#$ENV{SQL_SERVER_PORT}#g' ${POSTFIX_LOOKUP_DIR}/*.cf
328
+ perl -pi -e 's#PH_VMAIL_DB_BIND_USER#$ENV{VMAIL_DB_BIND_USER}#g' ${POSTFIX_LOOKUP_DIR}/*.cf
329
+ perl -pi -e 's#PH_VMAIL_DB_BIND_PASSWD#$ENV{VMAIL_DB_BIND_PASSWD}#g' ${POSTFIX_LOOKUP_DIR}/*.cf
330
+ perl -pi -e 's#PH_VMAIL_DB_NAME#$ENV{VMAIL_DB_NAME}#g' ${POSTFIX_LOOKUP_DIR}/*.cf
331
+ fi
332
+
333
+ echo 'export status_postfix_config_vhost="DONE"' >> ${STATUS_FILE}
334
+ }
335
+
336
+ postfix_config_postscreen()
337
+ {
338
+ ECHO_DEBUG "Enable postscreen service."
339
+
340
+ backup_file ${POSTSCREEN_FILE_ACCESS_CIDR} ${POSTSCREEN_FILE_DNSBL_REPLY}
341
+
342
+ export POSTFIX_VERSION="$(postconf mail_version 2>/dev/null | awk '{print $NF}')"
343
+ if echo ${POSTFIX_VERSION} | grep '^2\.[01234567]\.' &>/dev/null; then
344
+ ECHO_ERROR "postscreen requires Postfix 2.8 or later, you're running ${POSTFIX_VERSION}."
345
+ ECHO_ERROR "postscreen service not enabled."
346
+ else
347
+ ECHO_DEBUG "Comment out 'smtp inet ... smtpd' service in ${POSTFIX_FILE_MASTER_CF}."
348
+ perl -pi -e 's/^(smtp .*inet.*smtpd)$/#${1}/g' ${POSTFIX_FILE_MASTER_CF}
349
+
350
+ ECHO_DEBUG "Uncomment the new 'smtpd pass ... smtpd' service in ${POSTFIX_FILE_MASTER_CF}."
351
+ perl -pi -e 's/^#(smtpd.*pass.*smtpd)$/${1}/g' ${POSTFIX_FILE_MASTER_CF}
352
+
353
+ ECHO_DEBUG "Uncomment the new "smtp inet ... postscreen" service in ${POSTFIX_FILE_MASTER_CF}."
354
+ perl -pi -e 's/^#(smtp *.*inet.*postscreen)$/${1}/g' ${POSTFIX_FILE_MASTER_CF}
355
+
356
+ ECHO_DEBUG "Uncomment the new 'tlsproxy unix ... tlsproxy' service in ${POSTFIX_FILE_MASTER_CF}."
357
+ perl -pi -e 's/^#(tlsproxy.*unix.*tlsproxy)$/${1}/g' ${POSTFIX_FILE_MASTER_CF}
358
+
359
+ ECHO_DEBUG "Uncomment the new 'dnsblog unix ... dnsblog' service in ${POSTFIX_FILE_MASTER_CF}."
360
+ perl -pi -e 's/^#(dnsblog.*unix.*dnsblog)$/${1}/g' ${POSTFIX_FILE_MASTER_CF}
361
+
362
+ #
363
+ # main.cf
364
+ #
365
+ if [[ X"${DISTRO}" == X'FREEBSD' ]]; then
366
+ perl -pi -e 's#postscreen_blacklist_action#postscreen_denylist_action#g' ${SAMPLE_DIR}/postfix/main.cf.postscreen
367
+ perl -pi -e 's#postscreen_dnsbl_whitelist_threshold#postscreen_dnsbl_allowlist_threshold#g' ${SAMPLE_DIR}/postfix/main.cf.postscreen
368
+ fi
369
+
370
+ ECHO_DEBUG "Update ${POSTFIX_FILE_MAIN_CF} to enable postscreen."
371
+ cat ${SAMPLE_DIR}/postfix/main.cf.postscreen >> ${POSTFIX_FILE_MAIN_CF}
372
+
373
+ perl -pi -e 's#PH_POSTSCREEN_FILE_DNSBL_REPLY#$ENV{POSTSCREEN_FILE_DNSBL_REPLY}#g' ${POSTFIX_FILE_MAIN_CF}
374
+ touch ${POSTSCREEN_FILE_DNSBL_REPLY}
375
+
376
+ perl -pi -e 's#PH_POSTSCREEN_FILE_ACCESS_CIDR#$ENV{POSTSCREEN_FILE_ACCESS_CIDR}#g' ${POSTFIX_FILE_MAIN_CF}
377
+ cp -f ${SAMPLE_DIR}/postfix/postscreen_access.cidr ${POSTSCREEN_FILE_ACCESS_CIDR}
378
+
379
+ # Require Postfix-2.11+
380
+ if echo ${POSTFIX_VERSION} | egrep '(^3|^2\.[123456789][123456789])' &>/dev/null; then
381
+ perl -pi -e 's/^#(postscreen_dnsbl_whitelist_threshold.*)/${1}/g' ${POSTFIX_FILE_MAIN_CF}
382
+ fi
383
+
384
+ # Set a not existing directory as default value, if we cannot get
385
+ # ${queue_directory} for some reason, it won't mistakenly reset owner
386
+ # and permission on '/'
387
+ export queue_directory="$(postconf queue_directory | awk '{print $NF}')"
388
+ export data_directory="$(postconf data_directory | awk '{print $NF}')"
389
+ _chrooted_data_directory="${queue_directory:=/tmp/not-exist}/${data_directory}"
390
+
391
+ unset queue_directory data_directory
392
+
393
+ ECHO_DEBUG "Create ${_chrooted_data_directory}/postscreen_cache.db."
394
+ if [ ! -d ${_chrooted_data_directory} ]; then
395
+ mkdir -p ${_chrooted_data_directory}
396
+ chown ${SYS_USER_POSTFIX}:${SYS_GROUP_ROOT} ${_chrooted_data_directory}
397
+ chmod 0700 ${_chrooted_data_directory}
398
+ fi
399
+
400
+ # Create db file.
401
+ cd ${_chrooted_data_directory}
402
+ touch postscreen_cache
403
+ postmap ${POSTFIX_DEFAULT_DB_TYPE}:postscreen_cache
404
+ rm postscreen_cache
405
+ chown ${SYS_USER_POSTFIX}:${SYS_GROUP_POSTFIX} postscreen_cache.*
406
+ chmod 0700 postscreen_cache.*
407
+ fi
408
+
409
+ echo 'export status_postfix_config_postscreen="DONE"' >> ${STATUS_FILE}
410
+ }
411
+
412
+ postfix_config_logwatch()
413
+ {
414
+ # Enable long queue ID.
415
+ if [[ -n ${LOGWATCH_SERVICES_DIR} ]]; then
416
+ # Create the directory if not present.
417
+ #
418
+ # logwatch package may be missing on the server, continue adding the
419
+ # modular config file to avoid the issue if sysadmin installs logwatch
420
+ # someday in the future.
421
+ [[ -d ${LOGWATCH_SERVICES_DIR} ]] || mkdir -p ${LOGWATCH_SERVICES_DIR}
422
+
423
+ f="${LOGWATCH_SERVICES_DIR}/postfix.conf"
424
+
425
+ if ! grep '\$postfix_Enable_Long_Queue_Ids' ${f} &>/dev/null; then
426
+ cat >> ${f} <<EOF
427
+ \$postfix_Enable_Long_Queue_Ids = Yes
428
+ EOF
429
+ fi
430
+ fi
431
+
432
+ echo 'export status_postfix_config_logwatch="DONE"' >> ${STATUS_FILE}
433
+ }
434
+
435
+ postfix_setup()
436
+ {
437
+ # Include all sub-steps
438
+ check_status_before_run postfix_config_basic && \
439
+ check_status_before_run postfix_config_vhost && \
440
+ check_status_before_run postfix_config_postscreen && \
441
+ check_status_before_run postfix_config_logwatch
442
+
443
+ cat >> ${TIP_FILE} <<EOF
444
+ Postfix:
445
+ * Configuration files:
446
+ - ${POSTFIX_ROOTDIR}
447
+ - ${POSTFIX_ROOTDIR}/aliases
448
+ - ${POSTFIX_FILE_MAIN_CF}
449
+ - ${POSTFIX_FILE_MASTER_CF}
450
+
451
+ * SQL/LDAP lookup config files:
452
+ - ${POSTFIX_LOOKUP_DIR}
453
+
454
+ EOF
455
+
456
+ echo 'export status_postfix_setup="DONE"' >> ${STATUS_FILE}
457
+ }