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,26 @@
1
+ -- used_quota
2
+ -- Used to store realtime mailbox quota in Dovecot.
3
+ -- WARNING: Works only with Dovecot 1.2+.
4
+ --
5
+ -- Note: Don't touch this table, it will be updated by Dovecot automatically.
6
+ CREATE TABLE IF NOT EXISTS `used_quota` (
7
+ `username` VARCHAR(255) NOT NULL,
8
+ `bytes` BIGINT NOT NULL DEFAULT 0,
9
+ `messages` BIGINT NOT NULL DEFAULT 0,
10
+ `domain` VARCHAR(255) NOT NULL DEFAULT '',
11
+ PRIMARY KEY (`username`),
12
+ INDEX (domain)
13
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
14
+
15
+ -- Trigger `used_quota_before_insert` is used to set `used_quota.domain`.
16
+ -- NOTE: `used_quota.domain` is not used by Dovecot, but used in iRedAdmin to
17
+ -- get better SQL query performance while calculating per-domain used
18
+ -- quota.
19
+ DELIMITER //
20
+ CREATE TRIGGER `used_quota_before_insert`
21
+ BEFORE INSERT ON `used_quota` FOR EACH ROW
22
+ BEGIN
23
+ SET NEW.domain = SUBSTRING_INDEX(NEW.username, '@', -1);
24
+ END;
25
+ //
26
+ DELIMITER ;
@@ -0,0 +1,3 @@
1
+ [Service]
2
+ ProtectSystem=false
3
+ #ProtectHome=false
@@ -0,0 +1,9 @@
1
+ # - Store banned IP in SQL db while it's banned.
2
+ # - Remove banned IP from SQL db while it's unbanned.
3
+
4
+ [Definition]
5
+ actionstart = /usr/local/bin/fail2ban_banned_db start <name>
6
+ actioncheck =
7
+ actionban = /usr/local/bin/fail2ban_banned_db ban <ip> <port> <protocol> <name> <ipjailfailures> <ipjailmatches>
8
+ actionunban = /usr/local/bin/fail2ban_banned_db unban <ip>
9
+ actionstop = /usr/local/bin/fail2ban_banned_db stop <name>
@@ -0,0 +1,268 @@
1
+ #!/usr/bin/env bash
2
+ # Author: Zhang Huangbin <zhb@iredmail.org>
3
+ # Puprpose:
4
+ # - Store banned IP address in SQL db while it's banned by Fail2ban.
5
+ # - Remove unbanned IP address from SQL db while it's unbanned by Fail2ban.
6
+ # - Unban IP addresses which have column `remove=1`.
7
+
8
+ # Usage:
9
+ #
10
+ # *) Store a banned IP address:
11
+ #
12
+ # banned_db ban <ip> <ports> <protocol> <jail> <failures> [loglines]
13
+ #
14
+ # - <ip>: One IP address each time.
15
+ # - <ports>: Network ports. Multiple ports must be separated by comma.
16
+ # - <protocol>: `tcp` or `udp`.
17
+ # - <jail>: Fail2ban jail name.
18
+ # - <failures>: number of times the failure occurred in the log file.
19
+ # - [loglines]: matched log lines. OPTIONAL.
20
+ #
21
+ # *) Remove an one or multiple unbanned IP addresses. Notes:
22
+ #
23
+ # - it removes IP from all jails.
24
+ # - multiple IP addresses must be separated by space.
25
+ #
26
+ # banned_db unban <ip> [ip] [ip]
27
+ #
28
+ # *) Cleanup a jail. When Fail2ban is stopping or restarting, `cleanup` will
29
+ # be executed. Cleanup manually is supported too:
30
+ #
31
+ # banned_db cleanup <jail>
32
+ #
33
+ # *) Query SQL db and remove IP addresses which have `remove=1`.
34
+ #
35
+ # banned_db unban_db
36
+ #
37
+ # Examples:
38
+ #
39
+ # banned_db start dovecot-iredmail
40
+ # banned_db ban 192.168.0.1 110,143,993,995 tcp dovecot-iredmail 3
41
+ # banned_db unban 192.168.0.1
42
+ # banned_db stop dovecot-iredmail
43
+ # banned_db unban_db
44
+
45
+ #
46
+ # Sample Fail2ban jail config file (/etc/fail2ban/jail.d/xx.local):
47
+ #
48
+ # [jail-name]
49
+ # ...
50
+ # action = ...[your other actions here]...
51
+ # banned_db[name=jail-name, port="80", protocol=tcp]
52
+ #
53
+ # WARNING: the name set in `banned_db[name=]` must be same as the jail name.
54
+
55
+ export PATH="/usr/bin:/usr/local/bin:$PATH"
56
+
57
+ export DB_NAME="fail2ban"
58
+ export DB_TABLE_BANNED="banned"
59
+ export DB_TABLE_JAILS="jails"
60
+ export DB_USER="fail2ban"
61
+
62
+ # GeoIP
63
+ export CMD_GEOIPLOOKUP="$(which geoiplookup 2>/dev/null)"
64
+ export CMD_GEOIPLOOKUP6="$(which geoiplookup6 2>/dev/null)"
65
+
66
+ # `dig`. Used to query reverse hostname.
67
+ export CMD_DIG="/usr/bin/dig"
68
+
69
+ if [ -f /root/.my.cnf-fail2ban ]; then
70
+ export CMD_SQL="mysql --defaults-file=/root/.my.cnf-fail2ban ${DB_NAME}"
71
+ export DB_TYPE="mysql"
72
+ elif [ -f /root/.my.cnf ]; then
73
+ export CMD_SQL="mysql --defaults-file=/root/.my.cnf ${DB_NAME}"
74
+ export DB_TYPE="mysql"
75
+ else
76
+ # Absolute path to ~/.pgpass
77
+ # - RHEL: /var/lib/pgsql/.pgpass
78
+ # - Debian/Ubuntu: /var/lib/postgresql/.pgpass
79
+ # - FreeBSD: /var/db/postgres/.pgpass
80
+ # - OpenBSD: /var/postgresql/.pgpass
81
+ for dir in \
82
+ /var/lib/pgsql \
83
+ /var/lib/postgresql \
84
+ /var/db/postgres \
85
+ /var/postgresql; do
86
+ if [ -f ${dir}/.pgpass ]; then
87
+ export PGPASSFILE="${dir}/.pgpass"
88
+ export CMD_SQL="psql -U ${DB_USER} -d ${DB_NAME}"
89
+ export DB_TYPE="pgsql"
90
+ break
91
+ fi
92
+ done
93
+ fi
94
+
95
+ if [ X"${CMD_SQL}" == X'' ]; then
96
+ echo "No MySQL or PostgreSQL related config file found. Abort."
97
+ echo " - MySQL: /root/.my.cnf-fail2ban (or /root/.my.cnf)"
98
+ echo " - PostgreSQL: ~/.pgpass (under PostgreSQL daemon user's home directory)"
99
+ exit 255
100
+ fi
101
+
102
+ export _action="$1"
103
+
104
+ if [[ X"${_action}" == X'start' ]]; then
105
+ _jail="${2}"
106
+
107
+ if [[ X"${DB_TYPE}" == X'pgsql' ]]; then
108
+ # CentOS 7 ships PostgreSQL-9.2 which doesn't support `ON CONFLICT DO NOTHING`,
109
+ # so we query it first, insert it if not existing.
110
+ (${CMD_SQL} <<EOF
111
+ SELECT id FROM ${DB_TABLE_JAILS} WHERE name='${_jail}' LIMIT 1;
112
+ EOF
113
+ ) | grep '1 row' &>/dev/null
114
+
115
+ if [[ X"$?" != X'0' ]]; then
116
+ ${CMD_SQL} >/dev/null <<EOF
117
+ INSERT INTO ${DB_TABLE_JAILS} (name, enabled) VALUES ('${_jail}', 1);
118
+ EOF
119
+ fi
120
+ else
121
+ ${CMD_SQL} >/dev/null <<EOF
122
+ INSERT IGNORE INTO ${DB_TABLE_JAILS} (name, enabled) VALUES ('${_jail}', 1);
123
+ EOF
124
+ fi
125
+ elif [[ X"${_action}" == X"ban" ]]; then
126
+ _ip="${2}"
127
+ _ports="${3}"
128
+ _protocol="${4}"
129
+ _jail="${5}"
130
+ _failures="${6}"
131
+
132
+ shift 6
133
+
134
+ # (base64) Encode log lines to avoid possible SQL injection.
135
+ if [[ -x /usr/bin/base64 ]]; then
136
+ # Linux
137
+ _loglines="$(echo $@ | base64)"
138
+ elif [[ -x /usr/bin/b64encode ]]; then
139
+ # OpenBSD and FreeBSD.
140
+ _loglines="$(echo $@ | b64encode - |grep -Ev '^(begin-base64 |====$)')"
141
+ else
142
+ _loglines=""
143
+ fi
144
+
145
+ if [[ X"${_ip}" == X'' ]] || \
146
+ [[ X"${_ports}" == X'' ]] || \
147
+ [[ X"${_protocol}" == X'' ]] || \
148
+ [[ X"${_jail}" == X'' ]]; then
149
+ echo "IP, ports, protocol, or jail name is empty. Abort."
150
+ exit 255
151
+ fi
152
+
153
+ _hostname="$(hostname)"
154
+
155
+ # Lookup for country name.
156
+ _country=''
157
+ if echo ${_ip} | grep ':' &>/dev/null; then
158
+ if [[ -x ${CMD_GEOIPLOOKUP6} ]]; then
159
+ _country="$(${CMD_GEOIPLOOKUP6} ${_ip} | grep '^GeoIP Country Edition:' | awk -F': ' '{print $2}' | grep -iv 'not found' | tr -d '"' | tr -d "'")"
160
+ fi
161
+ else
162
+ if [[ -x ${CMD_GEOIPLOOKUP} ]]; then
163
+ _country="$(${CMD_GEOIPLOOKUP} ${_ip} | grep '^GeoIP Country Edition:' | awk -F': ' '{print $2}' | grep -iv 'not found' | tr -d '"' | tr -d "'")"
164
+ fi
165
+ fi
166
+
167
+ # Lookup reverse DNS name.
168
+ _rdns=''
169
+ if [[ -x "${CMD_DIG}" ]]; then
170
+ _rdns_orig="$(${CMD_DIG} +short +timeout=3 -x ${_ip} 2>/dev/null)"
171
+ _rdns_strip="${_rdns_orig%\.}"
172
+ printf -v _rdns "${_rdns_strip}"
173
+ fi
174
+
175
+ if [ X"${DB_TYPE}" == X'mysql' ]; then
176
+ # MySQL stores local time with time zone info, we expect UTC time.
177
+ ${CMD_SQL} >/dev/null <<EOF
178
+ INSERT IGNORE INTO ${DB_TABLE_BANNED} (
179
+ ip, ports, protocol, jail,
180
+ hostname, country, rdns, timestamp,
181
+ failures, loglines)
182
+ VALUES (
183
+ '${_ip}', '${_ports}', '${_protocol}', '${_jail}',
184
+ '${_hostname}', '${_country}', '${_rdns}', UTC_TIMESTAMP(),
185
+ '${_failures}', '${_loglines}');
186
+ EOF
187
+ else
188
+ # CentOS 7 ships PostgreSQL-9.2 which doesn't support `ON CONFLICT DO NOTHING`,
189
+ # so we query it first, insert it if not existing.
190
+ (${CMD_SQL} <<EOF
191
+ SELECT id FROM ${DB_TABLE_BANNED} WHERE ip='${_ip}' AND ports='${_ports}' AND protocol='${_protocol}' AND jail='${_jail}' LIMIT 1;
192
+ EOF
193
+ ) | grep '1 row' &>/dev/null
194
+
195
+ if [[ X"$?" == X'0' ]]; then
196
+ echo "Already banned."
197
+ else
198
+ ${CMD_SQL} >/dev/null <<EOF
199
+ INSERT INTO ${DB_TABLE_BANNED} (
200
+ ip, ports, protocol, jail,
201
+ hostname, country, rdns,
202
+ failures, loglines)
203
+ VALUES (
204
+ '${_ip}', '${_ports}', '${_protocol}', '${_jail}',
205
+ '${_hostname}', '${_country}', '${_rdns}',
206
+ '${_failures}', '${_loglines}');
207
+ EOF
208
+ echo "Stored."
209
+ fi
210
+ fi
211
+
212
+ elif [[ X"${_action}" == X"unban" ]]; then
213
+ shift 1
214
+ _ips="$@"
215
+
216
+ if [[ X"${_ips}" == X'' ]]; then
217
+ echo "No IP address(es) specified."
218
+ else
219
+ for _ip in ${_ips}; do
220
+ ${CMD_SQL} >/dev/null <<EOF
221
+ DELETE FROM ${DB_TABLE_BANNED} WHERE ip='${_ip}';
222
+ EOF
223
+ done
224
+
225
+ [[ X"$?" == X'0' ]] && echo "Removed."
226
+ fi
227
+
228
+ elif [[ X"${_action}" == X'stop' ]] || [[ X"${_action}" == X"cleanup" ]]; then
229
+ _jail="$2"
230
+
231
+ if [[ X"${_jail}" != X'' ]]; then
232
+ ${CMD_SQL} >/dev/null <<EOF
233
+ DELETE FROM ${DB_TABLE_BANNED} WHERE jail='${_jail}';
234
+ DELETE FROM ${DB_TABLE_JAILS} WHERE name='${_jail}';
235
+ EOF
236
+ fi
237
+
238
+ [[ X"$?" == X'0' ]] && echo "All IP addresses have been removed."
239
+ elif [[ X"${_action}" == X"unban_db" ]]; then
240
+ # Call fail2ban-client to unban given IP address(es).
241
+ tmp_file="$(mktemp)"
242
+
243
+ # Exclude extra info on output, just leave jail/ip.
244
+ (${CMD_SQL} <<EOF
245
+ SELECT jail, ip FROM ${DB_TABLE_BANNED} WHERE remove=1;
246
+ EOF
247
+ ) | grep -Ev '(jail.*ip|--|\(|^$)' | tr -d '|' >> ${tmp_file}
248
+
249
+ while read jail ip; do
250
+ # Avoid SQL injection: don't allow whitespace, ';', quotes in
251
+ # jail name and IP address.
252
+ if echo ${jail} | grep "[ ;\"\']" &>/dev/null; then
253
+ echo "[WARNING] Invalid jail name: '${jail}'."
254
+ continue
255
+ fi
256
+
257
+ if echo ${ip} | grep "[ ;\"\']" &>/dev/null; then
258
+ echo "[WARNING] Invalid IP address: '${ip}'."
259
+ continue
260
+ fi
261
+
262
+ # fail2ban-client returns number of processed rows on command line,
263
+ # let's discard it to avoid noise/confusion.
264
+ fail2ban-client set ${jail} unbanip ${ip} >/dev/null
265
+ [[ X"$?" == X'0' ]] && echo "Unbanned ${ip} from jail [${jail}]."
266
+ done < ${tmp_file}
267
+ rm -f ${tmp_file} &>/dev/null
268
+ fi
@@ -0,0 +1,17 @@
1
+ [Definition]
2
+
3
+ # Option: loglevel. Default is ERROR
4
+ # Available options: CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG
5
+ loglevel = INFO
6
+
7
+ # Set the log target
8
+ logtarget = SYSLOG
9
+
10
+ # Syslog socket. Required on FreeBSD and OpenBSD.
11
+ #syslogsocket = PH_SYSLOG_SOCKET
12
+
13
+ # Fail2ban socket. Required on FreeBSD.
14
+ #socket = /var/run/fail2ban/fail2ban.sock
15
+
16
+ # Allows IPv6 interface.
17
+ allowipv6 = auto
@@ -0,0 +1,5 @@
1
+ [Definition]
2
+ failregex = Authentication failure.* rip=<HOST>
3
+ \(auth failed.* rip=<HOST>
4
+
5
+ ignoreregex =
@@ -0,0 +1,16 @@
1
+ [Definition]
2
+
3
+ # Block clients which cannot pass Postfix postscreen pregreet test.
4
+ # FYI: http://www.postfix.org/POSTSCREEN_README.html#pregreet
5
+ #
6
+ # The SMTP protocol is a classic example of a protocol where the server speaks
7
+ # before the client. postscreen(8) detects zombies that are in a hurry and that
8
+ # speak before their turn.
9
+ failregex = postscreen\[\d+\]: PREGREET .* from \[<HOST>\]:\d+:
10
+
11
+ # while setting up new account, Thunderbird doesn't wait for server connection
12
+ # greeting/banner, this causes Thunderbird cannot pass the Postfix pregreet
13
+ # test and caught by `failregex` rules listed above (the rule contains
14
+ # 'PREGREET' line).
15
+ # FYI: https://bugzilla.mozilla.org/show_bug.cgi?id=538809#c41
16
+ ignoreregex = postscreen\[\d+\]: PREGREET .* from \[<HOST>\]:\d+: (EHLO|HELO) we-guess.mozilla.org
@@ -0,0 +1,18 @@
1
+ [Definition]
2
+ # *) '554 5.7.1' is 'Helo command rejected: ACCESS DENIED'
3
+ #
4
+ # 'ACCESS DENIED' is string defined in postfix restriction rule `check_helo_access`.
5
+ # no all rules contains 'ACCESS DENIED', so we use status code insead.
6
+
7
+ failregex = \[<HOST>\]: SASL (PLAIN|LOGIN) authentication failed
8
+ lost connection after AUTH from (.*)\[<HOST>\]
9
+ reject: RCPT from .*\[<HOST>\]: .*: Relay access denied
10
+ reject: RCPT from .*\[<HOST>\]: .*: Sender address rejected: Domain not found
11
+ reject: RCPT from .*\[<HOST>\]: .*: Helo command rejected: Host not found
12
+ reject: RCPT from .*\[<HOST>\]: .*: Helo command rejected: need fully-qualified hostname
13
+ reject: RCPT from .*\[<HOST>\]: 554 5.7.1
14
+ reject: RCPT from .*\[<HOST>\]:\d+: 550 5.5.1 Protocol error
15
+ warning: Illegal address syntax from (.*)\[<HOST>\] in RCPT command
16
+ postfix\/submission\/smtpd.*: too many errors after AUTH from .*\[<HOST>\]
17
+
18
+ ignoreregex =
@@ -0,0 +1,9 @@
1
+ # 'X-Forwarded-For:` appears when Roundcube is running behind HAProxy.
2
+
3
+ [Definition]
4
+ failregex = roundcube.* Failed login .*\(X-Forwarded-For: <HOST>\) in session
5
+ roundcube.* Failed login for (.*) from <HOST>\. AUTHENTICATE LOGIN
6
+ roundcube.* Failed login for (.*) from <HOST> in session
7
+ roundcube.* Error: Login failed for (.*) from <HOST>\. (LOGIN: Authentication failed|AUTHENTICATE LOGIN)
8
+
9
+ ignoreregex =
@@ -0,0 +1,8 @@
1
+ [dovecot]
2
+ backend = polling
3
+ journalmatch=
4
+ enabled = true
5
+ filter = dovecot.iredmail
6
+ logpath = PH_DOVECOT_LOG_FILE tail
7
+ action = PH_FAIL2BAN_ACTION[name=dovecot, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
8
+ banned_db[name=dovecot, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
@@ -0,0 +1,8 @@
1
+ [nginx-http-auth]
2
+ backend = polling
3
+ journalmatch=
4
+ enabled = false
5
+ filter = nginx-http-auth
6
+ logpath = PH_NGINX_LOG_ERRORLOG tail
7
+ action = PH_FAIL2BAN_ACTION[name=nginx, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
8
+ banned_db[name=nginx, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
@@ -0,0 +1,9 @@
1
+ [pregreet]
2
+ backend = polling
3
+ journalmatch=
4
+ enabled = true
5
+ maxretry = 1
6
+ filter = postfix-pregreet.iredmail
7
+ logpath = PH_MAILLOG tail
8
+ action = PH_FAIL2BAN_ACTION[name=pregreet, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
9
+ banned_db[name=pregreet, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
@@ -0,0 +1,8 @@
1
+ [postfix]
2
+ backend = polling
3
+ journalmatch=
4
+ enabled = true
5
+ filter = postfix.iredmail
6
+ logpath = PH_MAILLOG tail
7
+ action = PH_FAIL2BAN_ACTION[name=postfix, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
8
+ banned_db[name=postfix, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
@@ -0,0 +1,9 @@
1
+ [roundcube]
2
+ backend = polling
3
+ journalmatch=
4
+ enabled = false
5
+ findtime = 3600
6
+ filter = roundcube.iredmail
7
+ logpath = PH_RCM_LOGFILE tail
8
+ action = PH_FAIL2BAN_ACTION[name=roundcube, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
9
+ banned_db[name=roundcube, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
@@ -0,0 +1,8 @@
1
+ [sogo]
2
+ backend = polling
3
+ journalmatch=
4
+ enabled = false
5
+ filter = sogo-auth
6
+ logpath = PH_SOGO_LOG_FILE tail
7
+ action = PH_FAIL2BAN_ACTION[name=sogo, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
8
+ banned_db[name=sogo, port="PH_FAIL2BAN_DISABLED_SERVICES", protocol=tcp]
@@ -0,0 +1,8 @@
1
+ [sshd]
2
+ backend = polling
3
+ journalmatch=
4
+ enabled = true
5
+ filter = sshd
6
+ logpath = PH_SSHD_LOGFILE tail
7
+ action = PH_FAIL2BAN_ACTION[name=sshd, port="PH_SSHD_PORT", protocol=tcp]
8
+ banned_db[name=sshd, port="PH_SSHD_PORT", protocol=tcp]
@@ -0,0 +1,6 @@
1
+ [DEFAULT]
2
+ # time is in seconds. 3600 = 1 hour, 86400 = 24 hours (1 day)
3
+ findtime = 3600
4
+ bantime = 3600
5
+ maxretry = 5
6
+ ignoreip = PH_LOCAL_ADDRESS 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
@@ -0,0 +1,27 @@
1
+ #!/bin/ksh
2
+
3
+ daemon="/usr/local/bin/fail2ban-server"
4
+
5
+ . /etc/rc.d/rc.subr
6
+
7
+ rc_bg=YES
8
+ rc_reload=NO
9
+
10
+ rc_pre() {
11
+ install -d -o root -m 0700 /var/run/fail2ban
12
+ }
13
+
14
+ rc_start() {
15
+ # FYI https://github.com/fail2ban/fail2ban/issues/3923
16
+ nohup ${daemon} -xf start ${daemon_flags} &
17
+ }
18
+
19
+ rc_check() {
20
+ pgrep -q -f "fail2ban-server"
21
+ }
22
+
23
+ rc_stop() {
24
+ ${rcexec} ${daemon} -x stop
25
+ }
26
+
27
+ rc_cmd $1
@@ -0,0 +1,49 @@
1
+ --
2
+ -- Used to store both enabled and disabled jails.
3
+ --
4
+ CREATE TABLE IF NOT EXISTS `jails` (
5
+ `id` BIGINT(20) UNSIGNED AUTO_INCREMENT,
6
+ `name` VARCHAR(255) NOT NULL DEFAULT '',
7
+ `enabled` TINYINT(1) DEFAULT 1,
8
+ PRIMARY KEY (`id`),
9
+ UNIQUE INDEX (`name`),
10
+ INDEX (`enabled`)
11
+ ) ENGINE=InnoDB;
12
+
13
+ --
14
+ -- Used to store banned/unbanned clients
15
+ --
16
+ CREATE TABLE IF NOT EXISTS `banned` (
17
+ `id` BIGINT(20) UNSIGNED AUTO_INCREMENT,
18
+ -- Banned client IP address
19
+ `ip` VARCHAR(46) NOT NULL DEFAULT '',
20
+ -- A list of banned network ports, separated by comma
21
+ `ports` VARCHAR(255) NOT NULL DEFAULT '',
22
+ -- protocol: tcp, udp, ...
23
+ `protocol` VARCHAR(10) NOT NULL DEFAULT 'tcp',
24
+ -- Fail2ban jail name
25
+ `jail` VARCHAR(50) NOT NULL DEFAULT '',
26
+ -- The server hostname which the ban/unban happens
27
+ `hostname` VARCHAR(255) NOT NULL DEFAULT '',
28
+ `country` VARCHAR(50) NOT NULL DEFAULT '',
29
+ -- reverse DNS name of banned IP address.
30
+ `rdns` VARCHAR(255) NOT NULL DEFAULT '',
31
+ -- number of times the failure occurred in the log file.
32
+ -- we use Fail2ban action tag `ipjailfailures` here.
33
+ `failures` INT(2) NOT NULL DEFAULT 0,
34
+ -- matched log lines.
35
+ -- we use Fail2ban action tag `ipjailmatches` here.
36
+ `loglines` TEXT,
37
+ -- When the ban happens
38
+ `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
39
+ -- if `remove=1`, `ip` will be removed by cron job.
40
+ `remove` TINYINT(1) DEFAULT 0,
41
+ PRIMARY KEY (`id`),
42
+ UNIQUE INDEX (`ip`, `ports`, `protocol`),
43
+ INDEX (`hostname`),
44
+ INDEX (`rdns`),
45
+ INDEX (`jail`),
46
+ INDEX (`country`),
47
+ INDEX (`timestamp`),
48
+ INDEX (`remove`)
49
+ ) ENGINE=InnoDB;
@@ -0,0 +1,48 @@
1
+ --
2
+ -- Used to store both enabled and disabled jails.
3
+ --
4
+ CREATE TABLE jails (
5
+ id SERIAL PRIMARY KEY,
6
+ name VARCHAR(255) NOT NULL DEFAULT '',
7
+ enabled INT2 DEFAULT 1
8
+ );
9
+ CREATE UNIQUE INDEX idx_jails_name ON jails (name);
10
+ CREATE INDEX idx_jails_enabled ON jails (enabled);
11
+
12
+ --
13
+ -- Used to store banned/unbanned clients
14
+ --
15
+ CREATE TABLE banned (
16
+ id SERIAL PRIMARY KEY,
17
+ -- Banned client IP address
18
+ ip VARCHAR(46) NOT NULL DEFAULT '',
19
+ -- A list of banned network ports, separated by comma
20
+ ports VARCHAR(255) NOT NULL DEFAULT '',
21
+ -- protocol: tcp, udp, ...
22
+ protocol VARCHAR(10) NOT NULL DEFAULT 'tcp',
23
+ -- Fail2ban jail name
24
+ jail VARCHAR(50) NOT NULL DEFAULT '',
25
+ -- The server hostname which the ban/unban happens
26
+ hostname VARCHAR(255) NOT NULL DEFAULT '',
27
+ country VARCHAR(50) NOT NULL DEFAULT '',
28
+ -- reverse DNS name of banned IP address.
29
+ rdns VARCHAR(255) NOT NULL DEFAULT '',
30
+ -- number of times the failure occurred in the log file.
31
+ -- we use Fail2ban action tag `ipjailfailures` here.
32
+ failures SMALLINT NOT NULL DEFAULT 0,
33
+ -- matched log lines.
34
+ -- we use Fail2ban action tag `ipjailmatches` here.
35
+ loglines TEXT,
36
+ -- When the ban happens
37
+ timestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT (CURRENT_TIMESTAMP(0) AT TIME ZONE 'UTC'),
38
+ -- if `remove=1`, `ip` will be removed by cron job.
39
+ remove INT2 DEFAULT 0
40
+ );
41
+
42
+ CREATE UNIQUE INDEX idx_banned_ip_ports_protocol ON banned (ip, ports, protocol);
43
+ CREATE INDEX idx_banned_jail ON banned (jail);
44
+ CREATE INDEX idx_banned_hostname ON banned (hostname);
45
+ CREATE INDEX idx_banned_country ON banned (country);
46
+ CREATE INDEX idx_banned_timestamp ON banned (timestamp);
47
+ CREATE INDEX idx_banned_remove ON banned (remove);
48
+ CREATE INDEX idx_banned_rdns ON banned (rdns);
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <service>
3
+ <short>SSH</short>
4
+ <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
5
+ <port protocol="tcp" port="22"/>
6
+ </service>
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <zone>
3
+ <short>Mail services</short>
4
+ <description>Allow access to mail services from external network.</description>
5
+ <service name="http"/>
6
+ <service name="https"/>
7
+ <service name="smtp"/>
8
+ <service name="smtp-submission"/>
9
+ <port port="465" protocol="tcp"/>
10
+ <service name="pop3"/>
11
+ <service name="pop3s"/>
12
+ <service name="imap"/>
13
+ <service name="imaps"/>
14
+ <service name="ssh"/>
15
+ </zone>