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