modoboa 2.4.11__py3-none-any.whl → 2.5.0__py3-none-any.whl

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 (314) hide show
  1. modoboa/admin/api/v2/serializers.py +14 -0
  2. modoboa/amavis/__init__.py +3 -0
  3. modoboa/amavis/app_settings.py +276 -0
  4. modoboa/amavis/apps.py +18 -0
  5. modoboa/amavis/checks/__init__.py +2 -0
  6. modoboa/amavis/checks/settings_checks.py +59 -0
  7. modoboa/amavis/dbrouter.py +35 -0
  8. modoboa/amavis/factories.py +164 -0
  9. modoboa/amavis/handlers.py +146 -0
  10. modoboa/amavis/lib.py +381 -0
  11. modoboa/amavis/management/__init__.py +0 -0
  12. modoboa/amavis/management/commands/__init__.py +0 -0
  13. modoboa/amavis/management/commands/amnotify.py +99 -0
  14. modoboa/amavis/management/commands/qcleanup.py +84 -0
  15. modoboa/amavis/migrations/0001_initial.py +340 -0
  16. modoboa/amavis/migrations/__init__.py +0 -0
  17. modoboa/amavis/models.py +226 -0
  18. modoboa/amavis/serializers.py +139 -0
  19. modoboa/amavis/sql_connector.py +240 -0
  20. modoboa/amavis/sql_email.py +66 -0
  21. modoboa/amavis/tasks.py +33 -0
  22. modoboa/amavis/templates/amavis/notifications/pending_requests.html +16 -0
  23. modoboa/amavis/tests/__init__.py +0 -0
  24. modoboa/amavis/tests/sa-learn +3 -0
  25. modoboa/amavis/tests/sample_messages/quarantined-input.txt +80 -0
  26. modoboa/amavis/tests/sample_messages/quarantined-output-plain_nolinks.txt +17 -0
  27. modoboa/amavis/tests/spamc +3 -0
  28. modoboa/amavis/tests/test_checks.py +25 -0
  29. modoboa/amavis/tests/test_handlers.py +214 -0
  30. modoboa/amavis/tests/test_lib.py +90 -0
  31. modoboa/amavis/tests/test_management_commands.py +45 -0
  32. modoboa/amavis/tests/test_sql_email.py +67 -0
  33. modoboa/amavis/tests/test_utils.py +19 -0
  34. modoboa/amavis/tests/test_viewsets.py +319 -0
  35. modoboa/amavis/urls.py +11 -0
  36. modoboa/amavis/utils.py +105 -0
  37. modoboa/amavis/viewsets.py +265 -0
  38. modoboa/core/api/v1/serializers.py +7 -5
  39. modoboa/core/api/v2/serializers.py +4 -2
  40. modoboa/core/api/v2/tests.py +16 -4
  41. modoboa/core/api/v2/urls.py +5 -5
  42. modoboa/core/api/v2/views.py +3 -1
  43. modoboa/core/api/v2/viewsets.py +24 -3
  44. modoboa/core/handlers.py +6 -2
  45. modoboa/core/management/commands/add_allowed_hosts.py +33 -0
  46. modoboa/core/management/commands/load_initial_data.py +10 -0
  47. modoboa/core/migrations/0025_rename_user_email_is_active_core_user_email_c0c03f_idx.py +23 -5
  48. modoboa/core/tests/test_core.py +24 -0
  49. modoboa/core/utils.py +3 -0
  50. modoboa/frontend_dist/assets/AccountAliasForm-BuSy_1n9.js +1 -0
  51. modoboa/frontend_dist/assets/AccountEditView-qdJmLM_e.js +1 -0
  52. modoboa/frontend_dist/assets/AccountLayout-DrN7vHsX.js +1 -0
  53. modoboa/frontend_dist/assets/AccountPasswordSubForm-DZGt_Xgq.js +1 -0
  54. modoboa/frontend_dist/assets/AccountView-CO65y0vZ.js +1 -0
  55. modoboa/frontend_dist/assets/AddressBook-BZNUlhek.js +1 -0
  56. modoboa/frontend_dist/assets/AdminLayout-CTNhuwTw.js +1 -0
  57. modoboa/frontend_dist/assets/AlarmsView-9yKGbmkC.css +1 -0
  58. modoboa/frontend_dist/assets/AlarmsView-DN_JIw9g.js +1 -0
  59. modoboa/frontend_dist/assets/AliasEditView-DjpPUTp9.js +1 -0
  60. modoboa/frontend_dist/assets/{AliasRecipientForm-IOae6sjF.js → AliasRecipientForm-B1Y8wFdP.js} +1 -1
  61. modoboa/frontend_dist/assets/AliasView-GOJ5lyQH.js +1 -0
  62. modoboa/frontend_dist/assets/AuditTrailView-fbXmq70e.js +1 -0
  63. modoboa/frontend_dist/assets/CalendarView-LlQQNEPL.js +1 -0
  64. modoboa/frontend_dist/assets/{ChoiceField-DJ_c78Cm.js → ChoiceField-B3ReQHVe.js} +1 -1
  65. modoboa/frontend_dist/assets/ComposeEmailForm-Bs1fZXAL.js +1 -0
  66. modoboa/frontend_dist/assets/ComposeEmailView-s3LMl3pO.js +1 -0
  67. modoboa/frontend_dist/assets/ConfirmDialog-DY_kUHLG.js +1 -0
  68. modoboa/frontend_dist/assets/{ConnectedLayout-Dvwmicnc.css → ConnectedLayout-Bxh21hcH.css} +1 -1
  69. modoboa/frontend_dist/assets/ConnectedLayout-UWjiYBNw.js +1 -0
  70. modoboa/frontend_dist/assets/CreationForm-ORg3fazt.js +1 -0
  71. modoboa/frontend_dist/assets/DashboardView-Dplk9itS.js +1 -0
  72. modoboa/frontend_dist/assets/DomainAdminList-DVn9x0rB.js +1 -0
  73. modoboa/frontend_dist/assets/DomainEditView-nAoL64D_.js +1 -0
  74. modoboa/frontend_dist/assets/{DomainTransportForm-C2xo0Yd7.js → DomainTransportForm-CA-DNUxX.js} +1 -1
  75. modoboa/frontend_dist/assets/{DomainView-BDKoBFYr.css → DomainView-CCLYXPHx.css} +1 -1
  76. modoboa/frontend_dist/assets/DomainView-CdXPpwJG.js +5 -0
  77. modoboa/frontend_dist/assets/DomainsView-B_59gowf.js +1 -0
  78. modoboa/frontend_dist/assets/DomainsView-DZ-ss9bI.css +1 -0
  79. modoboa/frontend_dist/assets/EmailField-CwcwI5xW.js +1 -0
  80. modoboa/frontend_dist/assets/EmailView-BshxcfAK.js +1 -0
  81. modoboa/frontend_dist/assets/EmptyLayout-DFfhnhLi.js +1 -0
  82. modoboa/frontend_dist/assets/FiltersView-Cf20MSTK.js +1 -0
  83. modoboa/frontend_dist/assets/ForwardEmailView-CZG062os.js +1 -0
  84. modoboa/frontend_dist/assets/{HtmlEditor-CJ9umKeO.js → HtmlEditor-Bh4c689R.js} +1 -1
  85. modoboa/frontend_dist/assets/IdentitiesView-BXAuU1YX.js +1 -0
  86. modoboa/frontend_dist/assets/{IdentitiesView-0ziuQ5s-.css → IdentitiesView-DPrrRMS5.css} +1 -1
  87. modoboa/frontend_dist/assets/InformationView-C9vvvQhJ.css +1 -0
  88. modoboa/frontend_dist/assets/InformationView-Cn5FZW7H.js +1 -0
  89. modoboa/frontend_dist/assets/{LoadingData-CYwX3Jpn.js → LoadingData-CdVvm4FI.js} +1 -1
  90. modoboa/frontend_dist/assets/{LoginCallbackView-E01qkKn0.js → LoginCallbackView-B9hAH4MI.js} +1 -1
  91. modoboa/frontend_dist/assets/{LoginView-Cy4uFV9h.js → LoginView-tHIR4Adc.js} +1 -1
  92. modoboa/frontend_dist/assets/MailboxView-Bugu2vhg.js +1 -0
  93. modoboa/frontend_dist/assets/MenuItems-PXjiG-fs.js +1 -0
  94. modoboa/frontend_dist/assets/MessageView-Cy4STShm.js +1 -0
  95. modoboa/frontend_dist/assets/MessagesView-DdkuEgfX.js +1 -0
  96. modoboa/frontend_dist/assets/MigrationsView-CidSEjCF.js +1 -0
  97. modoboa/frontend_dist/assets/{ParametersForm-BZM0QSvg.js → ParametersForm-CAv4SH-E.js} +1 -1
  98. modoboa/frontend_dist/assets/ParametersView-CX7Ffemw.js +1 -0
  99. modoboa/frontend_dist/assets/ParametersView-CrbNcmV3.js +1 -0
  100. modoboa/frontend_dist/assets/ProviderEditView-CrltAQXl.js +1 -0
  101. modoboa/frontend_dist/assets/ProviderGeneralForm-BYAzVnXM.js +1 -0
  102. modoboa/frontend_dist/assets/ProvidersView-osjIY4Ex.js +1 -0
  103. modoboa/frontend_dist/assets/QuarantineLayout-B8EcU9vS.js +1 -0
  104. modoboa/frontend_dist/assets/QuarantineView-D4gOE4EQ.css +1 -0
  105. modoboa/frontend_dist/assets/QuarantineView-D8Qg0MXA.js +1 -0
  106. modoboa/frontend_dist/assets/ReplyEmailView-BABPqWhd.js +1 -0
  107. modoboa/frontend_dist/assets/ResourcesForm-OaqdRYVs.js +1 -0
  108. modoboa/frontend_dist/assets/SelfServiceLayout-d277YTGR.js +1 -0
  109. modoboa/frontend_dist/assets/{SettingsView-BxLJBFY0.js → SettingsView-9iNcDhkI.js} +2 -2
  110. modoboa/frontend_dist/assets/StatisticsView-cHsPyGkL.js +1 -0
  111. modoboa/frontend_dist/assets/TimeSerieChart--V83dcJ9.js +1 -0
  112. modoboa/frontend_dist/assets/UserLayout-B3sBiTcZ.js +1 -0
  113. modoboa/frontend_dist/assets/VAlert-BuaaYN2h.js +1 -0
  114. modoboa/frontend_dist/assets/VApp-CKP-6zGP.js +1 -0
  115. modoboa/frontend_dist/assets/VAutocomplete-Dwv6_Rzq.js +1 -0
  116. modoboa/frontend_dist/assets/VAvatar-Cmga0vj6.js +1 -0
  117. modoboa/frontend_dist/assets/VBadge-BQrRJ9S0.css +1 -0
  118. modoboa/frontend_dist/assets/VBadge-CixeK87a.js +1 -0
  119. modoboa/frontend_dist/assets/VCard-CxH9DWoK.js +1 -0
  120. modoboa/frontend_dist/assets/VCheckbox-62GOpvvP.js +1 -0
  121. modoboa/frontend_dist/assets/{VCheckboxBtn-Dt810gWf.js → VCheckboxBtn-DMoNtKT8.js} +1 -1
  122. modoboa/frontend_dist/assets/VChip-D_styETR.js +1 -0
  123. modoboa/frontend_dist/assets/VColorPicker-BHscBGQV.js +1 -0
  124. modoboa/frontend_dist/assets/{VContainer-DvTbsotR.js → VContainer-B46caNs1.js} +1 -1
  125. modoboa/frontend_dist/assets/VDataTable-Bh8NbVSx.js +1 -0
  126. modoboa/frontend_dist/assets/VDataTableServer-BDR5hOmo.js +1 -0
  127. modoboa/frontend_dist/assets/VDataTableVirtual-BOQlNtIG.js +1 -0
  128. modoboa/frontend_dist/assets/{VDialog-Bk6EWNhz.js → VDialog-BcTg7w6P.js} +1 -1
  129. modoboa/frontend_dist/assets/VExpansionPanels-BmH5Jl2Z.js +1 -0
  130. modoboa/frontend_dist/assets/VFileInput-BC4yAygd.js +1 -0
  131. modoboa/frontend_dist/assets/VForm-D5iPGkde.js +1 -0
  132. modoboa/frontend_dist/assets/VInput-CcxkaOXT.css +1 -0
  133. modoboa/frontend_dist/assets/VInput-CoDJzvaW.js +1 -0
  134. modoboa/frontend_dist/assets/VMenu-gUG70-zD.js +1 -0
  135. modoboa/frontend_dist/assets/VPicker-BXuKT3zB.js +1 -0
  136. modoboa/frontend_dist/assets/VProgressCircular-BtOPiGCg.js +1 -0
  137. modoboa/frontend_dist/assets/VRadioGroup-DIFZKSn-.js +1 -0
  138. modoboa/frontend_dist/assets/{VRow-BF35mT1S.js → VRow-ozg66L7j.js} +1 -1
  139. modoboa/frontend_dist/assets/VSelect-C3RjAa45.js +1 -0
  140. modoboa/frontend_dist/assets/VSelectionControl-zyz-fJvC.js +1 -0
  141. modoboa/frontend_dist/assets/VSheet-BNx2X4Mk.js +1 -0
  142. modoboa/frontend_dist/assets/VSpacer-DinPiXs9.js +1 -0
  143. modoboa/frontend_dist/assets/VSwitch-DwxdeAEq.js +1 -0
  144. modoboa/frontend_dist/assets/VTable-DaLxa4FO.js +1 -0
  145. modoboa/frontend_dist/assets/VTabs-BP0Hgsgm.js +1 -0
  146. modoboa/frontend_dist/assets/VTextField-BzBVKKob.css +1 -0
  147. modoboa/frontend_dist/assets/VTextField-XoGTj1KG.js +1 -0
  148. modoboa/frontend_dist/assets/VTextarea-wBlRMIv_.js +1 -0
  149. modoboa/frontend_dist/assets/VToolbar-CFZfqeOr.js +1 -0
  150. modoboa/frontend_dist/assets/VWindowItem-BB7ETW3b.js +1 -0
  151. modoboa/frontend_dist/assets/WebmailLayout-_Hk1XhVq.js +1 -0
  152. modoboa/frontend_dist/assets/accounts-DUzbx6k8.js +1 -0
  153. modoboa/frontend_dist/assets/{admin-o-HRGnmT.js → admin-DewTk2H8.js} +1 -1
  154. modoboa/frontend_dist/assets/{aliases-DDVeehyg.js → aliases-4sXmjwXp.js} +1 -1
  155. modoboa/frontend_dist/assets/amavis-CC0li7_T.js +1 -0
  156. modoboa/frontend_dist/assets/amavis-DK8SHE6o.js +1 -0
  157. modoboa/frontend_dist/assets/{contacts-C84DY-Q1.js → contacts-BjghrPqZ.js} +1 -1
  158. modoboa/frontend_dist/assets/{domains-Bgn4ixHL.js → domains-BSawReeu.js} +1 -1
  159. modoboa/frontend_dist/assets/{domains.store-DTE-V7Y1.js → domains.store-D-vWCEIK.js} +1 -1
  160. modoboa/frontend_dist/assets/{filter-CnffiQAW.js → filter-C82FUCw_.js} +1 -1
  161. modoboa/frontend_dist/assets/forwardRefs-cvcnlhoK.js +1 -0
  162. modoboa/frontend_dist/assets/global.store-DbkcI5o2.js +1 -0
  163. modoboa/frontend_dist/assets/{importExport-BlQYb0NO.js → importExport-DzoL4Mvc.js} +1 -1
  164. modoboa/frontend_dist/assets/index-BImkz5Jx.js +984 -0
  165. modoboa/frontend_dist/assets/layout-C5FyYCHK.js +1 -0
  166. modoboa/frontend_dist/assets/{layout.store-DkjrAoXt.js → layout.store-NXWtFIwL.js} +1 -1
  167. modoboa/frontend_dist/assets/{logos-q8SEyAa4.js → logos-BswdveCV.js} +1 -1
  168. modoboa/frontend_dist/assets/{logs-B7IJ7LBa.js → logs-6CbtfaZS.js} +1 -1
  169. modoboa/frontend_dist/assets/{parameters-A6iBEYQq.js → parameters-aSQiR7kN.js} +1 -1
  170. modoboa/frontend_dist/assets/{parameters.store-BiXS4_6w.js → parameters.store-CzQqVatx.js} +1 -1
  171. modoboa/frontend_dist/assets/permissions-DNoefz-n.js +1 -0
  172. modoboa/frontend_dist/assets/{ssrBoot-AzTdjPjk.js → ssrBoot-CKUX4kcb.js} +1 -1
  173. modoboa/frontend_dist/assets/{tag-BnSYRTcD.js → tag-B_yWNNJD.js} +1 -1
  174. modoboa/frontend_dist/assets/transports-BDNB9wR5.js +1 -0
  175. modoboa/frontend_dist/assets/{webmail-CSH_3l6R.js → webmail-CdU6CD9b.js} +1 -1
  176. modoboa/frontend_dist/index.html +1 -1
  177. modoboa/lib/email_utils.py +2 -2
  178. modoboa/lib/permissions.py +7 -0
  179. modoboa/lib/test_runners.py +29 -0
  180. modoboa/lib/tests/__init__.py +5 -1
  181. modoboa/locale/br/LC_MESSAGES/django.po +87 -75
  182. modoboa/locale/cs/LC_MESSAGES/django.po +82 -74
  183. modoboa/locale/cs_CZ/LC_MESSAGES/django.po +145 -121
  184. modoboa/locale/de/LC_MESSAGES/django.mo +0 -0
  185. modoboa/locale/de/LC_MESSAGES/django.po +339 -651
  186. modoboa/locale/de_DE/LC_MESSAGES/django.po +87 -75
  187. modoboa/locale/el_GR/LC_MESSAGES/django.po +160 -135
  188. modoboa/locale/en/LC_MESSAGES/django.po +82 -74
  189. modoboa/locale/es/LC_MESSAGES/django.po +158 -131
  190. modoboa/locale/es_MX/LC_MESSAGES/django.po +82 -74
  191. modoboa/locale/fi/LC_MESSAGES/django.po +87 -75
  192. modoboa/locale/fr/LC_MESSAGES/django.mo +0 -0
  193. modoboa/locale/fr/LC_MESSAGES/django.po +469 -201
  194. modoboa/locale/hu/LC_MESSAGES/django.po +82 -74
  195. modoboa/locale/it/LC_MESSAGES/django.mo +0 -0
  196. modoboa/locale/it/LC_MESSAGES/django.po +148 -122
  197. modoboa/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
  198. modoboa/locale/ja_JP/LC_MESSAGES/django.po +80 -72
  199. modoboa/locale/ka/LC_MESSAGES/django.po +82 -74
  200. modoboa/locale/nl_NL/LC_MESSAGES/django.po +160 -132
  201. modoboa/locale/no/LC_MESSAGES/django.po +82 -74
  202. modoboa/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  203. modoboa/locale/pl_PL/LC_MESSAGES/django.po +172 -149
  204. modoboa/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  205. modoboa/locale/pt_BR/LC_MESSAGES/django.po +172 -144
  206. modoboa/locale/pt_PT/LC_MESSAGES/django.po +135 -112
  207. modoboa/locale/ro_RO/LC_MESSAGES/django.po +87 -75
  208. modoboa/locale/ru/LC_MESSAGES/django.po +142 -118
  209. modoboa/locale/si/LC_MESSAGES/django.po +82 -74
  210. modoboa/locale/sk/LC_MESSAGES/django.po +82 -74
  211. modoboa/locale/sk_SK/LC_MESSAGES/django.po +84 -76
  212. modoboa/locale/sl_SI/LC_MESSAGES/django.po +90 -76
  213. modoboa/locale/sv/LC_MESSAGES/django.mo +0 -0
  214. modoboa/locale/sv/LC_MESSAGES/django.po +172 -139
  215. modoboa/locale/tr/LC_MESSAGES/django.po +87 -75
  216. modoboa/locale/tr_TR/LC_MESSAGES/django.po +84 -74
  217. modoboa/locale/uk/LC_MESSAGES/django.po +82 -74
  218. modoboa/locale/zh/LC_MESSAGES/django.po +82 -74
  219. modoboa/locale/zh_CN/LC_MESSAGES/django.po +82 -74
  220. modoboa/locale/zh_TW/LC_MESSAGES/django.po +87 -75
  221. modoboa/parameters/api/v2/tests.py +2 -2
  222. modoboa/parameters/api/v2/viewsets.py +2 -0
  223. modoboa/policyd/tests.py +2 -0
  224. modoboa/urls_api_v2.py +6 -0
  225. {modoboa-2.4.11.dist-info → modoboa-2.5.0.dist-info}/METADATA +6 -4
  226. {modoboa-2.4.11.dist-info → modoboa-2.5.0.dist-info}/RECORD +231 -181
  227. modoboa/frontend_dist/assets/AccountAliasForm-BV6KvTu6.js +0 -1
  228. modoboa/frontend_dist/assets/AccountEditView-DDOFyfBD.js +0 -1
  229. modoboa/frontend_dist/assets/AccountLayout-rX51xgxT.js +0 -1
  230. modoboa/frontend_dist/assets/AccountPasswordSubForm-D9S6LaeH.js +0 -1
  231. modoboa/frontend_dist/assets/AccountView-cmvaZNq3.js +0 -1
  232. modoboa/frontend_dist/assets/AddressBook-DCJxL8SU.js +0 -1
  233. modoboa/frontend_dist/assets/AdminLayout-r0wfG2lO.js +0 -1
  234. modoboa/frontend_dist/assets/AlarmsView-Bheey-gp.css +0 -1
  235. modoboa/frontend_dist/assets/AlarmsView-C0bqC4PA.js +0 -1
  236. modoboa/frontend_dist/assets/AliasEditView-DVoWoCGY.js +0 -1
  237. modoboa/frontend_dist/assets/AliasView-DrONZXOh.js +0 -1
  238. modoboa/frontend_dist/assets/AuditTrailView-OTkoZaMU.js +0 -1
  239. modoboa/frontend_dist/assets/CalendarView-CqF4_Ui9.js +0 -1
  240. modoboa/frontend_dist/assets/ComposeEmailForm-DO5_GB3e.js +0 -1
  241. modoboa/frontend_dist/assets/ComposeEmailView-A91HCBsN.js +0 -1
  242. modoboa/frontend_dist/assets/ConfirmDialog-BBcgdAnO.js +0 -1
  243. modoboa/frontend_dist/assets/ConnectedLayout-1oRW-Rql.js +0 -1
  244. modoboa/frontend_dist/assets/CreationForm-71YJbjsA.js +0 -1
  245. modoboa/frontend_dist/assets/DashboardView-CdLpSfUl.js +0 -1
  246. modoboa/frontend_dist/assets/DomainAdminList-BjC4KsqI.js +0 -1
  247. modoboa/frontend_dist/assets/DomainEditView-CQjKwYxl.js +0 -1
  248. modoboa/frontend_dist/assets/DomainView-BhhuZI_N.js +0 -5
  249. modoboa/frontend_dist/assets/DomainsView-Cft4BP8Z.js +0 -1
  250. modoboa/frontend_dist/assets/DomainsView-DasJ0NdZ.css +0 -1
  251. modoboa/frontend_dist/assets/EmailField-C8umy0EU.js +0 -1
  252. modoboa/frontend_dist/assets/EmailView-ki7uEQPD.js +0 -1
  253. modoboa/frontend_dist/assets/EmptyLayout-DaA1XH9n.js +0 -1
  254. modoboa/frontend_dist/assets/FiltersView-FYFZxG4B.js +0 -1
  255. modoboa/frontend_dist/assets/ForwardEmailView-cUbnSYCF.js +0 -1
  256. modoboa/frontend_dist/assets/IdentitiesView-njNo8N5n.js +0 -1
  257. modoboa/frontend_dist/assets/InformationView-D1h38POt.js +0 -1
  258. modoboa/frontend_dist/assets/InformationView-U5Ww-Sx1.css +0 -1
  259. modoboa/frontend_dist/assets/MailboxView-IlrLWm_H.js +0 -1
  260. modoboa/frontend_dist/assets/MenuItems-BAtHWzAE.js +0 -1
  261. modoboa/frontend_dist/assets/MessagesView-OSpjixFq.js +0 -1
  262. modoboa/frontend_dist/assets/MigrationsView-DKNOsVzF.js +0 -1
  263. modoboa/frontend_dist/assets/ParametersView-C4bXASiq.js +0 -1
  264. modoboa/frontend_dist/assets/ParametersView-CYXgNmc1.js +0 -1
  265. modoboa/frontend_dist/assets/ProviderEditView-CyxCWTST.js +0 -1
  266. modoboa/frontend_dist/assets/ProviderGeneralForm-BYPjNHqB.js +0 -1
  267. modoboa/frontend_dist/assets/ProvidersView-CxrMkRyk.js +0 -1
  268. modoboa/frontend_dist/assets/ReplyEmailView-Dkw9-N26.js +0 -1
  269. modoboa/frontend_dist/assets/ResourcesForm-CuUvrOdY.js +0 -1
  270. modoboa/frontend_dist/assets/StatisticsView-BN7QsZMT.js +0 -1
  271. modoboa/frontend_dist/assets/TimeSerieChart-BMN8BeFZ.js +0 -1
  272. modoboa/frontend_dist/assets/UserLayout-B6-JQg4F.js +0 -1
  273. modoboa/frontend_dist/assets/VAlert-DIQTrRif.js +0 -1
  274. modoboa/frontend_dist/assets/VApp-CpkYA7js.js +0 -1
  275. modoboa/frontend_dist/assets/VAutocomplete-C4IpXyl8.js +0 -1
  276. modoboa/frontend_dist/assets/VAvatar-Lpb-Dion.js +0 -1
  277. modoboa/frontend_dist/assets/VCard-er_isjE_.js +0 -1
  278. modoboa/frontend_dist/assets/VCheckbox-D-u8JXP1.js +0 -1
  279. modoboa/frontend_dist/assets/VChip-B4iSpj8_.js +0 -1
  280. modoboa/frontend_dist/assets/VColorPicker-BAjGDsXv.js +0 -1
  281. modoboa/frontend_dist/assets/VDataTable-4JRjbtgF.js +0 -1
  282. modoboa/frontend_dist/assets/VDataTableServer-tIDT1m3-.js +0 -1
  283. modoboa/frontend_dist/assets/VDataTableVirtual-BlnO18u_.js +0 -1
  284. modoboa/frontend_dist/assets/VExpansionPanels-CwGtXDhr.js +0 -1
  285. modoboa/frontend_dist/assets/VFileInput-D1_7ZkO_.js +0 -1
  286. modoboa/frontend_dist/assets/VForm-DAkW4nfy.js +0 -1
  287. modoboa/frontend_dist/assets/VMenu-BPFJwj2f.js +0 -1
  288. modoboa/frontend_dist/assets/VPicker-CfT82M8N.js +0 -1
  289. modoboa/frontend_dist/assets/VProgressCircular-w75-3ogi.js +0 -1
  290. modoboa/frontend_dist/assets/VRadioGroup-0j6DNC_k.js +0 -1
  291. modoboa/frontend_dist/assets/VSelect-Cs4ARbAS.js +0 -1
  292. modoboa/frontend_dist/assets/VSelectionControl-Dg-XyRRS.js +0 -1
  293. modoboa/frontend_dist/assets/VSheet-Btq_Mu4s.js +0 -1
  294. modoboa/frontend_dist/assets/VSpacer-C7xukQmu.js +0 -1
  295. modoboa/frontend_dist/assets/VSwitch-Cs1NQrmk.js +0 -1
  296. modoboa/frontend_dist/assets/VTable-CNz2SGk4.js +0 -1
  297. modoboa/frontend_dist/assets/VTabs-B1fyVn4M.js +0 -1
  298. modoboa/frontend_dist/assets/VTextField-BdyvgvkG.js +0 -1
  299. modoboa/frontend_dist/assets/VTextField-C-J20yj_.css +0 -1
  300. modoboa/frontend_dist/assets/VTextarea-DnOMpe0Q.js +0 -1
  301. modoboa/frontend_dist/assets/VToolbar-BiCiBxBJ.js +0 -1
  302. modoboa/frontend_dist/assets/VWindowItem-ChWm_kz3.js +0 -1
  303. modoboa/frontend_dist/assets/WebmailLayout-o4uEkp9e.js +0 -1
  304. modoboa/frontend_dist/assets/forwardRefs-Dvjn_Xq4.js +0 -1
  305. modoboa/frontend_dist/assets/global.store-BaiD63EN.js +0 -1
  306. modoboa/frontend_dist/assets/index-I1VDlN4g.js +0 -984
  307. modoboa/frontend_dist/assets/layout-D8ZJPiJ_.js +0 -1
  308. modoboa/frontend_dist/assets/permissions-CITHLHVg.js +0 -1
  309. modoboa/frontend_dist/assets/transports-Dz7c6kIy.js +0 -1
  310. {modoboa-2.4.11.data → modoboa-2.5.0.data}/scripts/modoboa-admin.py +0 -0
  311. {modoboa-2.4.11.dist-info → modoboa-2.5.0.dist-info}/WHEEL +0 -0
  312. {modoboa-2.4.11.dist-info → modoboa-2.5.0.dist-info}/entry_points.txt +0 -0
  313. {modoboa-2.4.11.dist-info → modoboa-2.5.0.dist-info}/licenses/LICENSE +0 -0
  314. {modoboa-2.4.11.dist-info → modoboa-2.5.0.dist-info}/top_level.txt +0 -0
@@ -11,7 +11,7 @@ msgid ""
11
11
  msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
- "POT-Creation-Date: 2025-07-27 10:50+0200\n"
14
+ "POT-Creation-Date: 2025-08-28 09:41+0200\n"
15
15
  "PO-Revision-Date: 2020-05-11 18:45+0000\n"
16
16
  "Last-Translator: Taras Havryliuk <admin@web4u.in.ua>, 2021\n"
17
17
  "Language-Team: Ukrainian (https://www.transifex.com/tonio/teams/13749/uk/)\n"
@@ -34,65 +34,66 @@ msgstr ""
34
34
  msgid "Default quota in MB applied to mailboxes. A value of 0 means no quota."
35
35
  msgstr ""
36
36
 
37
- #: admin/api/v1/serializers.py:88
37
+ #: admin/api/v1/serializers.py:94
38
38
  msgid "domain alias with this name already exists"
39
39
  msgstr ""
40
40
 
41
- #: admin/api/v1/serializers.py:98
41
+ #: admin/api/v1/serializers.py:104
42
42
  msgid "No authorized MX record found for this domain"
43
43
  msgstr ""
44
44
 
45
- #: admin/api/v1/serializers.py:116
45
+ #: admin/api/v1/serializers.py:122
46
46
  msgid "Cannot be greater than domain quota"
47
47
  msgstr ""
48
48
 
49
- #: admin/api/v1/serializers.py:162 admin/api/v1/serializers.py:357
50
- #: admin/api/v2/serializers.py:548 admin/models/alias.py:44
49
+ #: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
50
+ #: admin/api/v2/serializers.py:564 admin/models/alias.py:44
51
51
  msgid "Permission denied."
52
52
  msgstr ""
53
53
 
54
- #: admin/api/v1/serializers.py:224 admin/api/v2/serializers.py:88
55
- #: admin/api/v2/serializers.py:470 core/api/v2/serializers.py:235
56
- #: core/api/v2/serializers.py:237 core/api/v2/serializers.py:246
54
+ #: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
55
+ #: admin/api/v2/serializers.py:486 core/api/v2/serializers.py:255
56
+ #: core/api/v2/serializers.py:257 core/api/v2/serializers.py:266
57
57
  #: transport/backends.py:40
58
58
  msgid "This field is required"
59
59
  msgstr ""
60
60
 
61
- #: admin/api/v1/serializers.py:236
61
+ #: admin/api/v1/serializers.py:243
62
62
  msgid ""
63
63
  "List of administered domains (resellers and domain administrators only)."
64
64
  msgstr ""
65
65
 
66
- #: admin/api/v1/serializers.py:330 admin/api/v2/serializers.py:530
66
+ #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:546
67
67
  msgid "Not allowed for this role."
68
68
  msgstr ""
69
69
 
70
- #: admin/api/v1/serializers.py:348
70
+ #: admin/api/v1/serializers.py:355
71
71
  msgid "Must be equal to mailbox full_address"
72
72
  msgstr ""
73
73
 
74
- #: admin/api/v1/serializers.py:390 admin/api/v2/serializers.py:582
74
+ #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:598
75
75
  #: calendars/serializers.py:175 calendars/serializers.py:177
76
+ #: pdfcredentials/api/v2/serializers.py:91
76
77
  msgid "This field is required."
77
78
  msgstr ""
78
79
 
79
- #: admin/api/v1/serializers.py:402 admin/api/v2/serializers.py:599
80
+ #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:615
80
81
  msgid "Local domain {} does not exist"
81
82
  msgstr ""
82
83
 
83
- #: admin/api/v1/serializers.py:492
84
+ #: admin/api/v1/serializers.py:499
84
85
  msgid "A list of recipient"
85
86
  msgstr ""
86
87
 
87
- #: admin/api/v1/serializers.py:508 admin/api/v2/viewsets.py:286
88
+ #: admin/api/v1/serializers.py:515 admin/api/v2/viewsets.py:286
88
89
  msgid "This alias already exists"
89
90
  msgstr ""
90
91
 
91
- #: admin/api/v1/serializers.py:544
92
+ #: admin/api/v1/serializers.py:551
92
93
  msgid "You don't have access to this domain."
93
94
  msgstr ""
94
95
 
95
- #: admin/api/v1/serializers.py:553
96
+ #: admin/api/v1/serializers.py:560
96
97
  msgid "You don't have access to this mailbox."
97
98
  msgstr ""
98
99
 
@@ -100,56 +101,56 @@ msgstr ""
100
101
  msgid "Here is your new Modoboa password: {}"
101
102
  msgstr ""
102
103
 
103
- #: admin/api/v2/serializers.py:80
104
+ #: admin/api/v2/serializers.py:82
104
105
  msgid "DKIM keys storage directory not configured"
105
106
  msgstr ""
106
107
 
107
- #: admin/api/v2/serializers.py:92
108
+ #: admin/api/v2/serializers.py:94
108
109
  msgid "This field is valid when type is relaydomain"
109
110
  msgstr ""
110
111
 
111
- #: admin/api/v2/serializers.py:99
112
+ #: admin/api/v2/serializers.py:101
112
113
  msgid "You can't define an unlimited quota."
113
114
  msgstr ""
114
115
 
115
- #: admin/api/v2/serializers.py:133
116
+ #: admin/api/v2/serializers.py:135
116
117
  #, python-format
117
118
  msgid "User '%s' already exists"
118
119
  msgstr ""
119
120
 
120
- #: admin/api/v2/serializers.py:248 admin/api/v2/serializers.py:254
121
+ #: admin/api/v2/serializers.py:250 admin/api/v2/serializers.py:256
121
122
  msgid "Must be a positive integer"
122
123
  msgstr ""
123
124
 
124
- #: admin/api/v2/serializers.py:263
125
+ #: admin/api/v2/serializers.py:265
125
126
  msgid "openssl not found, please make sure it is installed."
126
127
  msgstr ""
127
128
 
128
- #: admin/api/v2/serializers.py:266 pdfcredentials/api/v2/serializers.py:79
129
+ #: admin/api/v2/serializers.py:268 pdfcredentials/api/v2/serializers.py:84
129
130
  msgid "Directory not found."
130
131
  msgstr ""
131
132
 
132
- #: admin/api/v2/serializers.py:277
133
+ #: admin/api/v2/serializers.py:279
133
134
  msgid "This field only allows valid IP addresses (or networks)"
134
135
  msgstr ""
135
136
 
136
- #: admin/api/v2/serializers.py:290
137
+ #: admin/api/v2/serializers.py:292
137
138
  msgid "Please disable imap migration before disabling this option."
138
139
  msgstr ""
139
140
 
140
- #: admin/api/v2/serializers.py:303
141
+ #: admin/api/v2/serializers.py:305
141
142
  msgid "Define at least one authorized network / address"
142
143
  msgstr ""
143
144
 
144
- #: admin/api/v2/serializers.py:565
145
+ #: admin/api/v2/serializers.py:581
145
146
  msgid "The left part of an email address can't be more than 64 characters."
146
147
  msgstr ""
147
148
 
148
- #: admin/api/v2/serializers.py:587
149
+ #: admin/api/v2/serializers.py:603
149
150
  msgid "A mailbox is required to create aliases."
150
151
  msgstr ""
151
152
 
152
- #: admin/api/v2/serializers.py:751
153
+ #: admin/api/v2/serializers.py:772
153
154
  msgid "Unknown status"
154
155
  msgstr ""
155
156
 
@@ -161,14 +162,6 @@ msgstr ""
161
162
  msgid "You can't delete your own domain"
162
163
  msgstr ""
163
164
 
164
- #: admin/api/v2/viewsets.py:407
165
- msgid "No alarm ID provided"
166
- msgstr ""
167
-
168
- #: admin/api/v2/viewsets.py:411
169
- msgid "Received invalid alarm id(s)"
170
- msgstr ""
171
-
172
165
  #: admin/app_settings.py:19 limits/app_settings.py:38 limits/constants.py:13
173
166
  msgid "Domains"
174
167
  msgstr ""
@@ -355,7 +348,7 @@ msgstr ""
355
348
  msgid "Create an alias using the old address when a mailbox is renamed."
356
349
  msgstr ""
357
350
 
358
- #: admin/app_settings.py:287 core/api/v2/viewsets.py:162
351
+ #: admin/app_settings.py:287 core/api/v2/viewsets.py:174
359
352
  msgid "Administration"
360
353
  msgstr ""
361
354
 
@@ -384,7 +377,7 @@ msgstr ""
384
377
  msgid "Account import failed (%s): domain does not exist"
385
378
  msgstr ""
386
379
 
387
- #: admin/handlers.py:242 admin/models/mailbox.py:340
380
+ #: admin/handlers.py:242 admin/models/mailbox.py:342
388
381
  msgid "Mailbox {} already exists"
389
382
  msgstr ""
390
383
 
@@ -642,7 +635,7 @@ msgstr ""
642
635
  msgid "{}: domain quota exceeded"
643
636
  msgstr ""
644
637
 
645
- #: admin/models/mailbox.py:308
638
+ #: admin/models/mailbox.py:310
646
639
  msgid "Domain does not exist"
647
640
  msgstr ""
648
641
 
@@ -794,7 +787,7 @@ msgid ""
794
787
  "Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
795
788
  msgstr ""
796
789
 
797
- #: calendars/app_settings.py:89 core/api/v2/viewsets.py:172
790
+ #: calendars/app_settings.py:89 core/api/v2/viewsets.py:195
798
791
  msgid "Calendars"
799
792
  msgstr ""
800
793
 
@@ -828,7 +821,7 @@ msgstr ""
828
821
  msgid "Interval in seconds between 2 synchronization requests"
829
822
  msgstr ""
830
823
 
831
- #: contacts/app_settings.py:51 core/api/v2/viewsets.py:179
824
+ #: contacts/app_settings.py:51 core/api/v2/viewsets.py:185
832
825
  msgid "Contacts"
833
826
  msgstr ""
834
827
 
@@ -876,12 +869,12 @@ msgstr ""
876
869
  msgid "2FA is already enabled"
877
870
  msgstr ""
878
871
 
879
- #: core/api/v1/serializers.py:87
872
+ #: core/api/v1/serializers.py:86
880
873
  #, python-format
881
- msgid "Failed TFA settings editing attempt from '%s' as user '%s'"
874
+ msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
882
875
  msgstr ""
883
876
 
884
- #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:425
877
+ #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:445
885
878
  msgid "Invalid password"
886
879
  msgstr ""
887
880
 
@@ -893,40 +886,40 @@ msgstr ""
893
886
  msgid "Local"
894
887
  msgstr ""
895
888
 
896
- #: core/api/v2/serializers.py:175 core/app_settings.py:17
889
+ #: core/api/v2/serializers.py:194 core/app_settings.py:17
897
890
  msgid "User profile"
898
891
  msgstr ""
899
892
 
900
- #: core/api/v2/serializers.py:194 core/api/v2/serializers.py:201
901
- #: core/api/v2/serializers.py:208
893
+ #: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
894
+ #: core/api/v2/serializers.py:228
902
895
  msgid "Invalid syntax"
903
896
  msgstr ""
904
897
 
905
- #: core/api/v2/serializers.py:213
898
+ #: core/api/v2/serializers.py:233
906
899
  msgid "Invalid rounds number"
907
900
  msgstr ""
908
901
 
909
- #: core/api/v2/serializers.py:413 core/forms.py:81
902
+ #: core/api/v2/serializers.py:433 core/forms.py:81
910
903
  msgid "This code is invalid"
911
904
  msgstr ""
912
905
 
913
- #: core/api/v2/serializers.py:483 core/views/auth.py:194 core/views/auth.py:247
906
+ #: core/api/v2/serializers.py:503 core/views/auth.py:194 core/views/auth.py:247
914
907
  msgid "Please use the following code to recover your Modoboa password: {}"
915
908
  msgstr ""
916
909
 
917
- #: core/api/v2/viewsets.py:164
910
+ #: core/api/v2/viewsets.py:176
918
911
  msgid "Administration console"
919
912
  msgstr ""
920
913
 
921
- #: core/api/v2/viewsets.py:174
922
- msgid "Calendar"
914
+ #: core/api/v2/viewsets.py:187
915
+ msgid "Address book"
923
916
  msgstr ""
924
917
 
925
- #: core/api/v2/viewsets.py:181
926
- msgid "Address book"
918
+ #: core/api/v2/viewsets.py:197
919
+ msgid "Calendar"
927
920
  msgstr ""
928
921
 
929
- #: core/api/v2/viewsets.py:186 core/api/v2/viewsets.py:188
922
+ #: core/api/v2/viewsets.py:205 core/api/v2/viewsets.py:207
930
923
  #: webmail/app_settings.py:258 webmail/app_settings.py:265
931
924
  msgid "Webmail"
932
925
  msgstr ""
@@ -1422,19 +1415,27 @@ msgstr ""
1422
1415
  msgid "The maximum age in days of a log record"
1423
1416
  msgstr ""
1424
1417
 
1425
- #: core/app_settings.py:726
1418
+ #: core/app_settings.py:727
1419
+ msgid "Retention time in message history"
1420
+ msgstr ""
1421
+
1422
+ #: core/app_settings.py:730
1423
+ msgid "Retention time (in days) of a message in the message history section"
1424
+ msgstr ""
1425
+
1426
+ #: core/app_settings.py:737
1426
1427
  msgid "Items per page"
1427
1428
  msgstr ""
1428
1429
 
1429
- #: core/app_settings.py:728
1430
+ #: core/app_settings.py:739
1430
1431
  msgid "Number of displayed items per page"
1431
1432
  msgstr ""
1432
1433
 
1433
- #: core/app_settings.py:735
1434
+ #: core/app_settings.py:746
1434
1435
  msgid "Default top redirection"
1435
1436
  msgstr ""
1436
1437
 
1437
- #: core/app_settings.py:737
1438
+ #: core/app_settings.py:748
1438
1439
  msgid "The default redirection used when no application is specified"
1439
1440
  msgstr ""
1440
1441
 
@@ -1465,8 +1466,8 @@ msgstr ""
1465
1466
 
1466
1467
  #: core/checks.py:34
1467
1468
  msgid ""
1468
- "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot."
1469
- "html#dovecot-oauth2"
1469
+ "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/"
1470
+ "dovecot.html#dovecot-oauth2"
1470
1471
  msgstr ""
1471
1472
 
1472
1473
  #: core/checks.py:41
@@ -1955,19 +1956,14 @@ msgstr ""
1955
1956
  #: imap_migration/app_settings.py:76
1956
1957
  msgid ""
1957
1958
  "A comma seperated list of folders to explicitly include in sync even if "
1958
- "filtered by the Folder Filter Exclusions. Example: debian.user, debian."
1959
- "personal "
1959
+ "filtered by the Folder Filter Exclusions. Example: debian.user, "
1960
+ "debian.personal "
1960
1961
  msgstr ""
1961
1962
 
1962
1963
  #: imap_migration/apps.py:20
1963
1964
  msgid "IMAP Migration"
1964
1965
  msgstr ""
1965
1966
 
1966
- #: imap_migration/auth_backends.py:49 webmail/lib/imaputils.py:240
1967
- #, python-brace-format
1968
- msgid "Connection to IMAP server failed: {error}"
1969
- msgstr ""
1970
-
1971
1967
  #: imap_migration/checks.py:12
1972
1968
  msgid ""
1973
1969
  "Automatic domain/mailbox creation is disabled which means IMAP "
@@ -2291,11 +2287,11 @@ msgstr ""
2291
2287
  msgid "Personal account information"
2292
2288
  msgstr ""
2293
2289
 
2294
- #: pdfcredentials/api/v2/serializers.py:81
2290
+ #: pdfcredentials/api/v2/serializers.py:86
2295
2291
  msgid "Directory is not writable"
2296
2292
  msgstr ""
2297
2293
 
2298
- #: pdfcredentials/api/v2/serializers.py:102
2294
+ #: pdfcredentials/api/v2/serializers.py:114
2299
2295
  msgid "No document available for this user"
2300
2296
  msgstr ""
2301
2297
 
@@ -3005,16 +3001,28 @@ msgstr ""
3005
3001
  msgid "User defined email signature"
3006
3002
  msgstr ""
3007
3003
 
3004
+ #: webmail/exceptions.py:18
3005
+ msgid "Server response"
3006
+ msgstr ""
3007
+
3008
3008
  #: webmail/lib/attachments.py:112
3009
3009
  #, fuzzy
3010
3010
  #| msgid "Failed to create LDAP account: {}"
3011
3011
  msgid "Failed to remove attachment: "
3012
3012
  msgstr "Не вдалося створити обліковий запис LDAP: {}"
3013
3013
 
3014
+ #: webmail/lib/imapemail.py:272
3015
+ msgid "wrote:"
3016
+ msgstr ""
3017
+
3014
3018
  #: webmail/lib/imapemail.py:306
3015
3019
  msgid "Date"
3016
3020
  msgstr ""
3017
3021
 
3022
+ #: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
3023
+ msgid "Original message"
3024
+ msgstr ""
3025
+
3018
3026
  #: webmail/lib/imaputils.py:221
3019
3027
  msgid "Failed to retrieve hierarchy delimiter"
3020
3028
  msgstr ""