modoboa 2.4.10__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 (331) hide show
  1. modoboa/admin/api/v1/serializers.py +1 -0
  2. modoboa/admin/api/v2/serializers.py +15 -1
  3. modoboa/admin/api/v2/tests.py +11 -1
  4. modoboa/admin/lib.py +1 -1
  5. modoboa/admin/models/mailbox.py +15 -13
  6. modoboa/admin/models/mxrecord.py +4 -0
  7. modoboa/admin/tests/test_import_.py +11 -11
  8. modoboa/amavis/__init__.py +3 -0
  9. modoboa/amavis/app_settings.py +276 -0
  10. modoboa/amavis/apps.py +18 -0
  11. modoboa/amavis/checks/__init__.py +2 -0
  12. modoboa/amavis/checks/settings_checks.py +59 -0
  13. modoboa/amavis/dbrouter.py +35 -0
  14. modoboa/amavis/factories.py +164 -0
  15. modoboa/amavis/handlers.py +146 -0
  16. modoboa/amavis/lib.py +381 -0
  17. modoboa/amavis/management/__init__.py +0 -0
  18. modoboa/amavis/management/commands/__init__.py +0 -0
  19. modoboa/amavis/management/commands/amnotify.py +99 -0
  20. modoboa/amavis/management/commands/qcleanup.py +84 -0
  21. modoboa/amavis/migrations/0001_initial.py +340 -0
  22. modoboa/amavis/migrations/__init__.py +0 -0
  23. modoboa/amavis/models.py +226 -0
  24. modoboa/amavis/serializers.py +139 -0
  25. modoboa/amavis/sql_connector.py +240 -0
  26. modoboa/amavis/sql_email.py +66 -0
  27. modoboa/amavis/tasks.py +33 -0
  28. modoboa/amavis/templates/amavis/notifications/pending_requests.html +16 -0
  29. modoboa/amavis/tests/__init__.py +0 -0
  30. modoboa/amavis/tests/sa-learn +3 -0
  31. modoboa/amavis/tests/sample_messages/quarantined-input.txt +80 -0
  32. modoboa/amavis/tests/sample_messages/quarantined-output-plain_nolinks.txt +17 -0
  33. modoboa/amavis/tests/spamc +3 -0
  34. modoboa/amavis/tests/test_checks.py +25 -0
  35. modoboa/amavis/tests/test_handlers.py +214 -0
  36. modoboa/amavis/tests/test_lib.py +90 -0
  37. modoboa/amavis/tests/test_management_commands.py +45 -0
  38. modoboa/amavis/tests/test_sql_email.py +67 -0
  39. modoboa/amavis/tests/test_utils.py +19 -0
  40. modoboa/amavis/tests/test_viewsets.py +319 -0
  41. modoboa/amavis/urls.py +11 -0
  42. modoboa/amavis/utils.py +105 -0
  43. modoboa/amavis/viewsets.py +265 -0
  44. modoboa/core/api/v1/serializers.py +7 -5
  45. modoboa/core/api/v2/serializers.py +13 -2
  46. modoboa/core/api/v2/tests.py +34 -4
  47. modoboa/core/api/v2/urls.py +10 -5
  48. modoboa/core/api/v2/views.py +23 -2
  49. modoboa/core/api/v2/viewsets.py +24 -3
  50. modoboa/core/app_settings.py +11 -0
  51. modoboa/core/fido2_auth.py +1 -2
  52. modoboa/core/handlers.py +6 -2
  53. modoboa/core/management/commands/add_allowed_hosts.py +33 -0
  54. modoboa/core/management/commands/cleanlogs.py +9 -0
  55. modoboa/core/management/commands/load_initial_data.py +10 -0
  56. modoboa/core/migrations/0025_rename_user_email_is_active_core_user_email_c0c03f_idx.py +23 -5
  57. modoboa/core/tests/test_core.py +29 -0
  58. modoboa/core/utils.py +6 -0
  59. modoboa/dnstools/api/v2/serializers.py +9 -11
  60. modoboa/frontend_dist/assets/AccountAliasForm-BuSy_1n9.js +1 -0
  61. modoboa/frontend_dist/assets/AccountEditView-qdJmLM_e.js +1 -0
  62. modoboa/frontend_dist/assets/AccountLayout-DrN7vHsX.js +1 -0
  63. modoboa/frontend_dist/assets/AccountPasswordSubForm-DZGt_Xgq.js +1 -0
  64. modoboa/frontend_dist/assets/AccountView-CO65y0vZ.js +1 -0
  65. modoboa/frontend_dist/assets/AddressBook-BZNUlhek.js +1 -0
  66. modoboa/frontend_dist/assets/AdminLayout-CTNhuwTw.js +1 -0
  67. modoboa/frontend_dist/assets/AlarmsView-9yKGbmkC.css +1 -0
  68. modoboa/frontend_dist/assets/AlarmsView-DN_JIw9g.js +1 -0
  69. modoboa/frontend_dist/assets/AliasEditView-DjpPUTp9.js +1 -0
  70. modoboa/frontend_dist/assets/{AliasRecipientForm-DVZXWaUX.js → AliasRecipientForm-B1Y8wFdP.js} +1 -1
  71. modoboa/frontend_dist/assets/AliasView-GOJ5lyQH.js +1 -0
  72. modoboa/frontend_dist/assets/AuditTrailView-fbXmq70e.js +1 -0
  73. modoboa/frontend_dist/assets/CalendarView-LlQQNEPL.js +1 -0
  74. modoboa/frontend_dist/assets/{ChoiceField-7eU7c_rI.js → ChoiceField-B3ReQHVe.js} +1 -1
  75. modoboa/frontend_dist/assets/ComposeEmailForm-Bs1fZXAL.js +1 -0
  76. modoboa/frontend_dist/assets/ComposeEmailView-s3LMl3pO.js +1 -0
  77. modoboa/frontend_dist/assets/ConfirmDialog-DY_kUHLG.js +1 -0
  78. modoboa/frontend_dist/assets/{ConnectedLayout-BaJZ3BeR.css → ConnectedLayout-Bxh21hcH.css} +1 -1
  79. modoboa/frontend_dist/assets/ConnectedLayout-UWjiYBNw.js +1 -0
  80. modoboa/frontend_dist/assets/CreationForm-ORg3fazt.js +1 -0
  81. modoboa/frontend_dist/assets/DashboardView-Dplk9itS.js +1 -0
  82. modoboa/frontend_dist/assets/{DashboardView-BLlMi6Qb.css → DashboardView-gwwVAPvt.css} +1 -1
  83. modoboa/frontend_dist/assets/DomainAdminList-DVn9x0rB.js +1 -0
  84. modoboa/frontend_dist/assets/DomainEditView-nAoL64D_.js +1 -0
  85. modoboa/frontend_dist/assets/{DomainTransportForm-DPnPGBOp.js → DomainTransportForm-CA-DNUxX.js} +1 -1
  86. modoboa/frontend_dist/assets/{DomainView-BDKoBFYr.css → DomainView-CCLYXPHx.css} +1 -1
  87. modoboa/frontend_dist/assets/DomainView-CdXPpwJG.js +5 -0
  88. modoboa/frontend_dist/assets/DomainsView-B_59gowf.js +1 -0
  89. modoboa/frontend_dist/assets/DomainsView-DZ-ss9bI.css +1 -0
  90. modoboa/frontend_dist/assets/EmailField-CwcwI5xW.js +1 -0
  91. modoboa/frontend_dist/assets/EmailView-BshxcfAK.js +1 -0
  92. modoboa/frontend_dist/assets/EmptyLayout-DFfhnhLi.js +1 -0
  93. modoboa/frontend_dist/assets/FiltersView-Cf20MSTK.js +1 -0
  94. modoboa/frontend_dist/assets/ForwardEmailView-CZG062os.js +1 -0
  95. modoboa/frontend_dist/assets/{HtmlEditor-uM4AtIGi.js → HtmlEditor-Bh4c689R.js} +1 -1
  96. modoboa/frontend_dist/assets/IdentitiesView-BXAuU1YX.js +1 -0
  97. modoboa/frontend_dist/assets/{IdentitiesView-jmuItyMZ.css → IdentitiesView-DPrrRMS5.css} +1 -1
  98. modoboa/frontend_dist/assets/InformationView-C9vvvQhJ.css +1 -0
  99. modoboa/frontend_dist/assets/InformationView-Cn5FZW7H.js +1 -0
  100. modoboa/frontend_dist/assets/{LoadingData-CVD2Aen8.js → LoadingData-CdVvm4FI.js} +1 -1
  101. modoboa/frontend_dist/assets/{LoginCallbackView-sWzBke1g.js → LoginCallbackView-B9hAH4MI.js} +1 -1
  102. modoboa/frontend_dist/assets/{LoginView-wmN73W0f.js → LoginView-tHIR4Adc.js} +1 -1
  103. modoboa/frontend_dist/assets/MailboxView-Bugu2vhg.js +1 -0
  104. modoboa/frontend_dist/assets/MenuItems-PXjiG-fs.js +1 -0
  105. modoboa/frontend_dist/assets/MessageView-Cy4STShm.js +1 -0
  106. modoboa/frontend_dist/assets/MessagesView-DdkuEgfX.js +1 -0
  107. modoboa/frontend_dist/assets/MigrationsView-CidSEjCF.js +1 -0
  108. modoboa/frontend_dist/assets/{ParametersForm-BCeQljir.js → ParametersForm-CAv4SH-E.js} +1 -1
  109. modoboa/frontend_dist/assets/ParametersView-CX7Ffemw.js +1 -0
  110. modoboa/frontend_dist/assets/ParametersView-CrbNcmV3.js +1 -0
  111. modoboa/frontend_dist/assets/ProviderEditView-CrltAQXl.js +1 -0
  112. modoboa/frontend_dist/assets/ProviderGeneralForm-BYAzVnXM.js +1 -0
  113. modoboa/frontend_dist/assets/ProvidersView-osjIY4Ex.js +1 -0
  114. modoboa/frontend_dist/assets/QuarantineLayout-B8EcU9vS.js +1 -0
  115. modoboa/frontend_dist/assets/QuarantineView-D4gOE4EQ.css +1 -0
  116. modoboa/frontend_dist/assets/QuarantineView-D8Qg0MXA.js +1 -0
  117. modoboa/frontend_dist/assets/ReplyEmailView-BABPqWhd.js +1 -0
  118. modoboa/frontend_dist/assets/ResourcesForm-OaqdRYVs.js +1 -0
  119. modoboa/frontend_dist/assets/SelfServiceLayout-d277YTGR.js +1 -0
  120. modoboa/frontend_dist/assets/SettingsView-9iNcDhkI.js +6 -0
  121. modoboa/frontend_dist/assets/StatisticsView-cHsPyGkL.js +1 -0
  122. modoboa/frontend_dist/assets/TimeSerieChart--V83dcJ9.js +1 -0
  123. modoboa/frontend_dist/assets/UserLayout-B3sBiTcZ.js +1 -0
  124. modoboa/frontend_dist/assets/VAlert-BuaaYN2h.js +1 -0
  125. modoboa/frontend_dist/assets/VApp-CKP-6zGP.js +1 -0
  126. modoboa/frontend_dist/assets/VAutocomplete-Dwv6_Rzq.js +1 -0
  127. modoboa/frontend_dist/assets/VAvatar-Cmga0vj6.js +1 -0
  128. modoboa/frontend_dist/assets/VBadge-BQrRJ9S0.css +1 -0
  129. modoboa/frontend_dist/assets/VBadge-CixeK87a.js +1 -0
  130. modoboa/frontend_dist/assets/VCard-CxH9DWoK.js +1 -0
  131. modoboa/frontend_dist/assets/VCheckbox-62GOpvvP.js +1 -0
  132. modoboa/frontend_dist/assets/{VCheckboxBtn-j7di4leN.js → VCheckboxBtn-DMoNtKT8.js} +1 -1
  133. modoboa/frontend_dist/assets/VChip-D_styETR.js +1 -0
  134. modoboa/frontend_dist/assets/VColorPicker-BHscBGQV.js +1 -0
  135. modoboa/frontend_dist/assets/VContainer-B46caNs1.js +1 -0
  136. modoboa/frontend_dist/assets/VDataTable-Bh8NbVSx.js +1 -0
  137. modoboa/frontend_dist/assets/VDataTableServer-BDR5hOmo.js +1 -0
  138. modoboa/frontend_dist/assets/VDataTableVirtual-BOQlNtIG.js +1 -0
  139. modoboa/frontend_dist/assets/{VDialog-CZqM2Ofu.js → VDialog-BcTg7w6P.js} +1 -1
  140. modoboa/frontend_dist/assets/VExpansionPanels-BmH5Jl2Z.js +1 -0
  141. modoboa/frontend_dist/assets/VFileInput-BC4yAygd.js +1 -0
  142. modoboa/frontend_dist/assets/VForm-D5iPGkde.js +1 -0
  143. modoboa/frontend_dist/assets/VInput-CcxkaOXT.css +1 -0
  144. modoboa/frontend_dist/assets/VInput-CoDJzvaW.js +1 -0
  145. modoboa/frontend_dist/assets/VMenu-gUG70-zD.js +1 -0
  146. modoboa/frontend_dist/assets/VPicker-BXuKT3zB.js +1 -0
  147. modoboa/frontend_dist/assets/VProgressCircular-BtOPiGCg.js +1 -0
  148. modoboa/frontend_dist/assets/VRadioGroup-DIFZKSn-.js +1 -0
  149. modoboa/frontend_dist/assets/{VRow-C_Ydf6yr.js → VRow-ozg66L7j.js} +1 -1
  150. modoboa/frontend_dist/assets/VSelect-C3RjAa45.js +1 -0
  151. modoboa/frontend_dist/assets/VSelectionControl-zyz-fJvC.js +1 -0
  152. modoboa/frontend_dist/assets/VSheet-BNx2X4Mk.js +1 -0
  153. modoboa/frontend_dist/assets/VSpacer-DinPiXs9.js +1 -0
  154. modoboa/frontend_dist/assets/VSwitch-DwxdeAEq.js +1 -0
  155. modoboa/frontend_dist/assets/VTable-DaLxa4FO.js +1 -0
  156. modoboa/frontend_dist/assets/VTabs-BP0Hgsgm.js +1 -0
  157. modoboa/frontend_dist/assets/VTextField-BzBVKKob.css +1 -0
  158. modoboa/frontend_dist/assets/VTextField-XoGTj1KG.js +1 -0
  159. modoboa/frontend_dist/assets/VTextarea-wBlRMIv_.js +1 -0
  160. modoboa/frontend_dist/assets/VToolbar-CFZfqeOr.js +1 -0
  161. modoboa/frontend_dist/assets/VWindowItem-BB7ETW3b.js +1 -0
  162. modoboa/frontend_dist/assets/WebmailLayout-_Hk1XhVq.js +1 -0
  163. modoboa/frontend_dist/assets/accounts-DUzbx6k8.js +1 -0
  164. modoboa/frontend_dist/assets/admin-DewTk2H8.js +1 -0
  165. modoboa/frontend_dist/assets/{aliases-c3n-dCV_.js → aliases-4sXmjwXp.js} +1 -1
  166. modoboa/frontend_dist/assets/amavis-CC0li7_T.js +1 -0
  167. modoboa/frontend_dist/assets/amavis-DK8SHE6o.js +1 -0
  168. modoboa/frontend_dist/assets/{contacts-Bqckz8sr.js → contacts-BjghrPqZ.js} +1 -1
  169. modoboa/frontend_dist/assets/{domains-nBMR-fRf.js → domains-BSawReeu.js} +1 -1
  170. modoboa/frontend_dist/assets/{domains.store-ChZgLcqP.js → domains.store-D-vWCEIK.js} +1 -1
  171. modoboa/frontend_dist/assets/{filter-D7NrAf6a.js → filter-C82FUCw_.js} +1 -1
  172. modoboa/frontend_dist/assets/forwardRefs-cvcnlhoK.js +1 -0
  173. modoboa/frontend_dist/assets/global.store-DbkcI5o2.js +1 -0
  174. modoboa/frontend_dist/assets/{importExport-Dn9vYw7T.js → importExport-DzoL4Mvc.js} +1 -1
  175. modoboa/frontend_dist/assets/index-BImkz5Jx.js +984 -0
  176. modoboa/frontend_dist/assets/index-DuzUMVLM.js +1 -0
  177. modoboa/frontend_dist/assets/layout-C5FyYCHK.js +1 -0
  178. modoboa/frontend_dist/assets/{layout.store-BxBoBlgf.js → layout.store-NXWtFIwL.js} +1 -1
  179. modoboa/frontend_dist/assets/logos-BswdveCV.js +1 -0
  180. modoboa/frontend_dist/assets/{logs-DrTzylW7.js → logs-6CbtfaZS.js} +1 -1
  181. modoboa/frontend_dist/assets/{parameters-Lgiqp7aw.js → parameters-aSQiR7kN.js} +1 -1
  182. modoboa/frontend_dist/assets/{parameters.store-C9k9DuTj.js → parameters.store-CzQqVatx.js} +1 -1
  183. modoboa/frontend_dist/assets/permissions-DNoefz-n.js +1 -0
  184. modoboa/frontend_dist/assets/{ssrBoot-BsxW6uW4.js → ssrBoot-CKUX4kcb.js} +1 -1
  185. modoboa/frontend_dist/assets/{tag-CFK9dzMJ.js → tag-B_yWNNJD.js} +1 -1
  186. modoboa/frontend_dist/assets/transports-BDNB9wR5.js +1 -0
  187. modoboa/frontend_dist/assets/{webmail-KrD8ZhNM.js → webmail-CdU6CD9b.js} +1 -1
  188. modoboa/frontend_dist/index.html +1 -1
  189. modoboa/lib/email_utils.py +2 -2
  190. modoboa/lib/permissions.py +7 -0
  191. modoboa/lib/redis.py +1 -5
  192. modoboa/lib/test_runners.py +29 -0
  193. modoboa/lib/tests/__init__.py +5 -1
  194. modoboa/locale/br/LC_MESSAGES/django.po +87 -75
  195. modoboa/locale/cs/LC_MESSAGES/django.po +82 -74
  196. modoboa/locale/cs_CZ/LC_MESSAGES/django.po +145 -121
  197. modoboa/locale/de/LC_MESSAGES/django.mo +0 -0
  198. modoboa/locale/de/LC_MESSAGES/django.po +339 -651
  199. modoboa/locale/de_DE/LC_MESSAGES/django.po +87 -75
  200. modoboa/locale/el_GR/LC_MESSAGES/django.po +160 -135
  201. modoboa/locale/en/LC_MESSAGES/django.po +82 -74
  202. modoboa/locale/es/LC_MESSAGES/django.po +158 -131
  203. modoboa/locale/es_MX/LC_MESSAGES/django.po +82 -74
  204. modoboa/locale/fi/LC_MESSAGES/django.po +87 -75
  205. modoboa/locale/fr/LC_MESSAGES/django.mo +0 -0
  206. modoboa/locale/fr/LC_MESSAGES/django.po +469 -201
  207. modoboa/locale/hu/LC_MESSAGES/django.po +82 -74
  208. modoboa/locale/it/LC_MESSAGES/django.mo +0 -0
  209. modoboa/locale/it/LC_MESSAGES/django.po +148 -122
  210. modoboa/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
  211. modoboa/locale/ja_JP/LC_MESSAGES/django.po +201 -334
  212. modoboa/locale/ka/LC_MESSAGES/django.po +82 -74
  213. modoboa/locale/nl_NL/LC_MESSAGES/django.po +160 -132
  214. modoboa/locale/no/LC_MESSAGES/django.po +82 -74
  215. modoboa/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  216. modoboa/locale/pl_PL/LC_MESSAGES/django.po +172 -149
  217. modoboa/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  218. modoboa/locale/pt_BR/LC_MESSAGES/django.po +172 -144
  219. modoboa/locale/pt_PT/LC_MESSAGES/django.po +135 -112
  220. modoboa/locale/ro_RO/LC_MESSAGES/django.po +87 -75
  221. modoboa/locale/ru/LC_MESSAGES/django.po +142 -118
  222. modoboa/locale/si/LC_MESSAGES/django.po +82 -74
  223. modoboa/locale/sk/LC_MESSAGES/django.po +82 -74
  224. modoboa/locale/sk_SK/LC_MESSAGES/django.po +84 -76
  225. modoboa/locale/sl_SI/LC_MESSAGES/django.po +90 -76
  226. modoboa/locale/sv/LC_MESSAGES/django.mo +0 -0
  227. modoboa/locale/sv/LC_MESSAGES/django.po +172 -139
  228. modoboa/locale/tr/LC_MESSAGES/django.po +87 -75
  229. modoboa/locale/tr_TR/LC_MESSAGES/django.po +84 -74
  230. modoboa/locale/uk/LC_MESSAGES/django.po +82 -74
  231. modoboa/locale/zh/LC_MESSAGES/django.po +82 -74
  232. modoboa/locale/zh_CN/LC_MESSAGES/django.po +82 -74
  233. modoboa/locale/zh_TW/LC_MESSAGES/django.po +87 -75
  234. modoboa/parameters/api/v2/tests.py +2 -2
  235. modoboa/parameters/api/v2/viewsets.py +2 -0
  236. modoboa/policyd/tests.py +2 -0
  237. modoboa/urls_api_v2.py +6 -0
  238. {modoboa-2.4.10.dist-info → modoboa-2.5.0.dist-info}/METADATA +6 -4
  239. {modoboa-2.4.10.dist-info → modoboa-2.5.0.dist-info}/RECORD +244 -193
  240. modoboa/frontend_dist/assets/AccountAliasForm-DVXatAhB.js +0 -1
  241. modoboa/frontend_dist/assets/AccountEditView-DmvQjxpx.js +0 -1
  242. modoboa/frontend_dist/assets/AccountLayout-OGtZvlHR.js +0 -1
  243. modoboa/frontend_dist/assets/AccountPasswordSubForm-g3IEGrgM.js +0 -1
  244. modoboa/frontend_dist/assets/AccountView-DsxYqr3k.js +0 -1
  245. modoboa/frontend_dist/assets/AddressBook-3RoKiKon.js +0 -1
  246. modoboa/frontend_dist/assets/AdminLayout-CWfn8zaQ.js +0 -1
  247. modoboa/frontend_dist/assets/AlarmsView-Bheey-gp.css +0 -1
  248. modoboa/frontend_dist/assets/AlarmsView-D3Mh8ntf.js +0 -1
  249. modoboa/frontend_dist/assets/AliasEditView-C15eUZ11.js +0 -1
  250. modoboa/frontend_dist/assets/AliasView-Cyvc5vMb.js +0 -1
  251. modoboa/frontend_dist/assets/AuditTrailView-LI2XuLLn.js +0 -1
  252. modoboa/frontend_dist/assets/CalendarView-BpOlPh3f.js +0 -1
  253. modoboa/frontend_dist/assets/ComposeEmailForm-CNfI7ept.js +0 -1
  254. modoboa/frontend_dist/assets/ComposeEmailView-B866Xsrc.js +0 -1
  255. modoboa/frontend_dist/assets/ConfirmDialog-BvqxQsD1.js +0 -1
  256. modoboa/frontend_dist/assets/ConnectedLayout-BQ3ug6Jh.js +0 -1
  257. modoboa/frontend_dist/assets/CreationForm-C9Kh05ax.js +0 -1
  258. modoboa/frontend_dist/assets/DashboardView-Cw-gIcuB.js +0 -1
  259. modoboa/frontend_dist/assets/DomainAdminList-CsWUNKVk.js +0 -1
  260. modoboa/frontend_dist/assets/DomainEditView-DocxeOeW.js +0 -1
  261. modoboa/frontend_dist/assets/DomainView-Djc_0PsF.js +0 -5
  262. modoboa/frontend_dist/assets/DomainsView-B-Lxru7P.js +0 -1
  263. modoboa/frontend_dist/assets/DomainsView-DasJ0NdZ.css +0 -1
  264. modoboa/frontend_dist/assets/EmailField-BEKxuYni.js +0 -1
  265. modoboa/frontend_dist/assets/EmailView-BsR1Wes5.js +0 -1
  266. modoboa/frontend_dist/assets/EmptyLayout-BzPFOeLU.js +0 -1
  267. modoboa/frontend_dist/assets/FiltersView-5rmpC5cC.js +0 -1
  268. modoboa/frontend_dist/assets/ForwardEmailView-D7MbetcT.js +0 -1
  269. modoboa/frontend_dist/assets/IdentitiesView-BqjD9Lue.js +0 -1
  270. modoboa/frontend_dist/assets/InformationView-CghcvPn2.js +0 -1
  271. modoboa/frontend_dist/assets/InformationView-U5Ww-Sx1.css +0 -1
  272. modoboa/frontend_dist/assets/MailboxView-T_p-_ZtJ.js +0 -1
  273. modoboa/frontend_dist/assets/MenuItems-kHCMzR5E.js +0 -1
  274. modoboa/frontend_dist/assets/MessagesView-Cerv3xsy.js +0 -1
  275. modoboa/frontend_dist/assets/MigrationsView-7kjqPyYU.js +0 -1
  276. modoboa/frontend_dist/assets/ParametersView-DspBxVMV.js +0 -1
  277. modoboa/frontend_dist/assets/ParametersView-Dy0H5ep1.js +0 -1
  278. modoboa/frontend_dist/assets/ProviderEditView-DDLMOylC.js +0 -1
  279. modoboa/frontend_dist/assets/ProviderGeneralForm-BwOSKNHK.js +0 -1
  280. modoboa/frontend_dist/assets/ProvidersView-C99UD0WB.js +0 -1
  281. modoboa/frontend_dist/assets/ReplyEmailView-DAPBHldd.js +0 -1
  282. modoboa/frontend_dist/assets/ResourcesForm-D87PHeH0.js +0 -1
  283. modoboa/frontend_dist/assets/SettingsView-OxDo9wNd.js +0 -6
  284. modoboa/frontend_dist/assets/StatisticsView-CM__Eqku.js +0 -1
  285. modoboa/frontend_dist/assets/TimeSerieChart-C6j0uYR_.js +0 -1
  286. modoboa/frontend_dist/assets/UserLayout-CckCGnPS.js +0 -1
  287. modoboa/frontend_dist/assets/VAlert-B7mzOJIO.js +0 -1
  288. modoboa/frontend_dist/assets/VApp-BKxnjOoi.js +0 -1
  289. modoboa/frontend_dist/assets/VAutocomplete-Cc4_tcl1.js +0 -1
  290. modoboa/frontend_dist/assets/VAvatar-BAgTUIvX.js +0 -1
  291. modoboa/frontend_dist/assets/VCard-DFWiFORP.js +0 -1
  292. modoboa/frontend_dist/assets/VCheckbox-CKsH_vq3.js +0 -1
  293. modoboa/frontend_dist/assets/VChip-nZ0uhY7t.js +0 -1
  294. modoboa/frontend_dist/assets/VColorPicker-Os2aeP6J.js +0 -1
  295. modoboa/frontend_dist/assets/VContainer-Btam4lk2.js +0 -1
  296. modoboa/frontend_dist/assets/VDataTable-D_0_xJTl.js +0 -1
  297. modoboa/frontend_dist/assets/VDataTableServer-BWTt4Mzi.js +0 -1
  298. modoboa/frontend_dist/assets/VDataTableVirtual-BwVmkt4u.js +0 -1
  299. modoboa/frontend_dist/assets/VExpansionPanels-B5D6GOa3.js +0 -1
  300. modoboa/frontend_dist/assets/VFileInput-Cv9DIPki.js +0 -1
  301. modoboa/frontend_dist/assets/VForm-CpoZf60D.js +0 -1
  302. modoboa/frontend_dist/assets/VMenu-B_dVqOmo.js +0 -1
  303. modoboa/frontend_dist/assets/VPicker-CXkIGEze.js +0 -1
  304. modoboa/frontend_dist/assets/VProgressCircular-CrEXxs7k.js +0 -1
  305. modoboa/frontend_dist/assets/VRadioGroup-D8ypjYOO.js +0 -1
  306. modoboa/frontend_dist/assets/VSelect-CS51PDEt.js +0 -1
  307. modoboa/frontend_dist/assets/VSelectionControl-DiOqtY38.js +0 -1
  308. modoboa/frontend_dist/assets/VSheet-5VVWtHvs.js +0 -1
  309. modoboa/frontend_dist/assets/VSpacer-C6PZ3X24.js +0 -1
  310. modoboa/frontend_dist/assets/VSwitch-Chg5o-Cp.js +0 -1
  311. modoboa/frontend_dist/assets/VTable-KsiZ3cBz.js +0 -1
  312. modoboa/frontend_dist/assets/VTabs-tNrJIYO0.js +0 -1
  313. modoboa/frontend_dist/assets/VTextField-C-J20yj_.css +0 -1
  314. modoboa/frontend_dist/assets/VTextField-CLwRV0Cb.js +0 -1
  315. modoboa/frontend_dist/assets/VTextarea-Di8jbl8m.js +0 -1
  316. modoboa/frontend_dist/assets/VToolbar-CGwhgdmI.js +0 -1
  317. modoboa/frontend_dist/assets/VWindowItem-wWSFAGI-.js +0 -1
  318. modoboa/frontend_dist/assets/WebmailLayout-DsYThBrz.js +0 -1
  319. modoboa/frontend_dist/assets/admin-CJVLMHh9.js +0 -1
  320. modoboa/frontend_dist/assets/forwardRefs-Cpc3YYl6.js +0 -1
  321. modoboa/frontend_dist/assets/global.store-DUP26-A5.js +0 -1
  322. modoboa/frontend_dist/assets/index-DV9Li2cg.js +0 -852
  323. modoboa/frontend_dist/assets/index-DzL89N4E.js +0 -1
  324. modoboa/frontend_dist/assets/layout-CHO37cA6.js +0 -1
  325. modoboa/frontend_dist/assets/permissions-mL5hLHcW.js +0 -1
  326. modoboa/frontend_dist/assets/transports-TO08iTXJ.js +0 -1
  327. {modoboa-2.4.10.data → modoboa-2.5.0.data}/scripts/modoboa-admin.py +0 -0
  328. {modoboa-2.4.10.dist-info → modoboa-2.5.0.dist-info}/WHEEL +0 -0
  329. {modoboa-2.4.10.dist-info → modoboa-2.5.0.dist-info}/entry_points.txt +0 -0
  330. {modoboa-2.4.10.dist-info → modoboa-2.5.0.dist-info}/licenses/LICENSE +0 -0
  331. {modoboa-2.4.10.dist-info → modoboa-2.5.0.dist-info}/top_level.txt +0 -0
@@ -8,7 +8,7 @@ msgid ""
8
8
  msgstr ""
9
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2025-07-27 10:50+0200\n"
11
+ "POT-Creation-Date: 2025-08-28 09:41+0200\n"
12
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -28,65 +28,66 @@ msgstr ""
28
28
  msgid "Default quota in MB applied to mailboxes. A value of 0 means no quota."
29
29
  msgstr ""
30
30
 
31
- #: admin/api/v1/serializers.py:88
31
+ #: admin/api/v1/serializers.py:94
32
32
  msgid "domain alias with this name already exists"
33
33
  msgstr ""
34
34
 
35
- #: admin/api/v1/serializers.py:98
35
+ #: admin/api/v1/serializers.py:104
36
36
  msgid "No authorized MX record found for this domain"
37
37
  msgstr ""
38
38
 
39
- #: admin/api/v1/serializers.py:116
39
+ #: admin/api/v1/serializers.py:122
40
40
  msgid "Cannot be greater than domain quota"
41
41
  msgstr ""
42
42
 
43
- #: admin/api/v1/serializers.py:162 admin/api/v1/serializers.py:357
44
- #: admin/api/v2/serializers.py:548 admin/models/alias.py:44
43
+ #: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
44
+ #: admin/api/v2/serializers.py:564 admin/models/alias.py:44
45
45
  msgid "Permission denied."
46
46
  msgstr ""
47
47
 
48
- #: admin/api/v1/serializers.py:224 admin/api/v2/serializers.py:88
49
- #: admin/api/v2/serializers.py:470 core/api/v2/serializers.py:235
50
- #: core/api/v2/serializers.py:237 core/api/v2/serializers.py:246
48
+ #: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
49
+ #: admin/api/v2/serializers.py:486 core/api/v2/serializers.py:255
50
+ #: core/api/v2/serializers.py:257 core/api/v2/serializers.py:266
51
51
  #: transport/backends.py:40
52
52
  msgid "This field is required"
53
53
  msgstr ""
54
54
 
55
- #: admin/api/v1/serializers.py:236
55
+ #: admin/api/v1/serializers.py:243
56
56
  msgid ""
57
57
  "List of administered domains (resellers and domain administrators only)."
58
58
  msgstr ""
59
59
 
60
- #: admin/api/v1/serializers.py:330 admin/api/v2/serializers.py:530
60
+ #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:546
61
61
  msgid "Not allowed for this role."
62
62
  msgstr ""
63
63
 
64
- #: admin/api/v1/serializers.py:348
64
+ #: admin/api/v1/serializers.py:355
65
65
  msgid "Must be equal to mailbox full_address"
66
66
  msgstr ""
67
67
 
68
- #: admin/api/v1/serializers.py:390 admin/api/v2/serializers.py:582
68
+ #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:598
69
69
  #: calendars/serializers.py:175 calendars/serializers.py:177
70
+ #: pdfcredentials/api/v2/serializers.py:91
70
71
  msgid "This field is required."
71
72
  msgstr ""
72
73
 
73
- #: admin/api/v1/serializers.py:402 admin/api/v2/serializers.py:599
74
+ #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:615
74
75
  msgid "Local domain {} does not exist"
75
76
  msgstr ""
76
77
 
77
- #: admin/api/v1/serializers.py:492
78
+ #: admin/api/v1/serializers.py:499
78
79
  msgid "A list of recipient"
79
80
  msgstr ""
80
81
 
81
- #: admin/api/v1/serializers.py:508 admin/api/v2/viewsets.py:286
82
+ #: admin/api/v1/serializers.py:515 admin/api/v2/viewsets.py:286
82
83
  msgid "This alias already exists"
83
84
  msgstr ""
84
85
 
85
- #: admin/api/v1/serializers.py:544
86
+ #: admin/api/v1/serializers.py:551
86
87
  msgid "You don't have access to this domain."
87
88
  msgstr ""
88
89
 
89
- #: admin/api/v1/serializers.py:553
90
+ #: admin/api/v1/serializers.py:560
90
91
  msgid "You don't have access to this mailbox."
91
92
  msgstr ""
92
93
 
@@ -94,56 +95,56 @@ msgstr ""
94
95
  msgid "Here is your new Modoboa password: {}"
95
96
  msgstr ""
96
97
 
97
- #: admin/api/v2/serializers.py:80
98
+ #: admin/api/v2/serializers.py:82
98
99
  msgid "DKIM keys storage directory not configured"
99
100
  msgstr ""
100
101
 
101
- #: admin/api/v2/serializers.py:92
102
+ #: admin/api/v2/serializers.py:94
102
103
  msgid "This field is valid when type is relaydomain"
103
104
  msgstr ""
104
105
 
105
- #: admin/api/v2/serializers.py:99
106
+ #: admin/api/v2/serializers.py:101
106
107
  msgid "You can't define an unlimited quota."
107
108
  msgstr ""
108
109
 
109
- #: admin/api/v2/serializers.py:133
110
+ #: admin/api/v2/serializers.py:135
110
111
  #, python-format
111
112
  msgid "User '%s' already exists"
112
113
  msgstr ""
113
114
 
114
- #: admin/api/v2/serializers.py:248 admin/api/v2/serializers.py:254
115
+ #: admin/api/v2/serializers.py:250 admin/api/v2/serializers.py:256
115
116
  msgid "Must be a positive integer"
116
117
  msgstr ""
117
118
 
118
- #: admin/api/v2/serializers.py:263
119
+ #: admin/api/v2/serializers.py:265
119
120
  msgid "openssl not found, please make sure it is installed."
120
121
  msgstr ""
121
122
 
122
- #: admin/api/v2/serializers.py:266 pdfcredentials/api/v2/serializers.py:79
123
+ #: admin/api/v2/serializers.py:268 pdfcredentials/api/v2/serializers.py:84
123
124
  msgid "Directory not found."
124
125
  msgstr ""
125
126
 
126
- #: admin/api/v2/serializers.py:277
127
+ #: admin/api/v2/serializers.py:279
127
128
  msgid "This field only allows valid IP addresses (or networks)"
128
129
  msgstr ""
129
130
 
130
- #: admin/api/v2/serializers.py:290
131
+ #: admin/api/v2/serializers.py:292
131
132
  msgid "Please disable imap migration before disabling this option."
132
133
  msgstr ""
133
134
 
134
- #: admin/api/v2/serializers.py:303
135
+ #: admin/api/v2/serializers.py:305
135
136
  msgid "Define at least one authorized network / address"
136
137
  msgstr ""
137
138
 
138
- #: admin/api/v2/serializers.py:565
139
+ #: admin/api/v2/serializers.py:581
139
140
  msgid "The left part of an email address can't be more than 64 characters."
140
141
  msgstr ""
141
142
 
142
- #: admin/api/v2/serializers.py:587
143
+ #: admin/api/v2/serializers.py:603
143
144
  msgid "A mailbox is required to create aliases."
144
145
  msgstr ""
145
146
 
146
- #: admin/api/v2/serializers.py:751
147
+ #: admin/api/v2/serializers.py:772
147
148
  msgid "Unknown status"
148
149
  msgstr ""
149
150
 
@@ -155,14 +156,6 @@ msgstr ""
155
156
  msgid "You can't delete your own domain"
156
157
  msgstr ""
157
158
 
158
- #: admin/api/v2/viewsets.py:407
159
- msgid "No alarm ID provided"
160
- msgstr ""
161
-
162
- #: admin/api/v2/viewsets.py:411
163
- msgid "Received invalid alarm id(s)"
164
- msgstr ""
165
-
166
159
  #: admin/app_settings.py:19 limits/app_settings.py:38 limits/constants.py:13
167
160
  msgid "Domains"
168
161
  msgstr ""
@@ -349,7 +342,7 @@ msgstr ""
349
342
  msgid "Create an alias using the old address when a mailbox is renamed."
350
343
  msgstr ""
351
344
 
352
- #: admin/app_settings.py:287 core/api/v2/viewsets.py:162
345
+ #: admin/app_settings.py:287 core/api/v2/viewsets.py:174
353
346
  msgid "Administration"
354
347
  msgstr ""
355
348
 
@@ -378,7 +371,7 @@ msgstr ""
378
371
  msgid "Account import failed (%s): domain does not exist"
379
372
  msgstr ""
380
373
 
381
- #: admin/handlers.py:242 admin/models/mailbox.py:340
374
+ #: admin/handlers.py:242 admin/models/mailbox.py:342
382
375
  msgid "Mailbox {} already exists"
383
376
  msgstr ""
384
377
 
@@ -636,7 +629,7 @@ msgstr ""
636
629
  msgid "{}: domain quota exceeded"
637
630
  msgstr ""
638
631
 
639
- #: admin/models/mailbox.py:308
632
+ #: admin/models/mailbox.py:310
640
633
  msgid "Domain does not exist"
641
634
  msgstr ""
642
635
 
@@ -788,7 +781,7 @@ msgid ""
788
781
  "Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
789
782
  msgstr ""
790
783
 
791
- #: calendars/app_settings.py:89 core/api/v2/viewsets.py:172
784
+ #: calendars/app_settings.py:89 core/api/v2/viewsets.py:195
792
785
  msgid "Calendars"
793
786
  msgstr ""
794
787
 
@@ -822,7 +815,7 @@ msgstr ""
822
815
  msgid "Interval in seconds between 2 synchronization requests"
823
816
  msgstr ""
824
817
 
825
- #: contacts/app_settings.py:51 core/api/v2/viewsets.py:179
818
+ #: contacts/app_settings.py:51 core/api/v2/viewsets.py:185
826
819
  msgid "Contacts"
827
820
  msgstr ""
828
821
 
@@ -870,12 +863,12 @@ msgstr ""
870
863
  msgid "2FA is already enabled"
871
864
  msgstr ""
872
865
 
873
- #: core/api/v1/serializers.py:87
866
+ #: core/api/v1/serializers.py:86
874
867
  #, python-format
875
- msgid "Failed TFA settings editing attempt from '%s' as user '%s'"
868
+ msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
876
869
  msgstr ""
877
870
 
878
- #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:425
871
+ #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:445
879
872
  msgid "Invalid password"
880
873
  msgstr ""
881
874
 
@@ -887,40 +880,40 @@ msgstr ""
887
880
  msgid "Local"
888
881
  msgstr ""
889
882
 
890
- #: core/api/v2/serializers.py:175 core/app_settings.py:17
883
+ #: core/api/v2/serializers.py:194 core/app_settings.py:17
891
884
  msgid "User profile"
892
885
  msgstr ""
893
886
 
894
- #: core/api/v2/serializers.py:194 core/api/v2/serializers.py:201
895
- #: core/api/v2/serializers.py:208
887
+ #: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
888
+ #: core/api/v2/serializers.py:228
896
889
  msgid "Invalid syntax"
897
890
  msgstr ""
898
891
 
899
- #: core/api/v2/serializers.py:213
892
+ #: core/api/v2/serializers.py:233
900
893
  msgid "Invalid rounds number"
901
894
  msgstr ""
902
895
 
903
- #: core/api/v2/serializers.py:413 core/forms.py:81
896
+ #: core/api/v2/serializers.py:433 core/forms.py:81
904
897
  msgid "This code is invalid"
905
898
  msgstr ""
906
899
 
907
- #: core/api/v2/serializers.py:483 core/views/auth.py:194 core/views/auth.py:247
900
+ #: core/api/v2/serializers.py:503 core/views/auth.py:194 core/views/auth.py:247
908
901
  msgid "Please use the following code to recover your Modoboa password: {}"
909
902
  msgstr ""
910
903
 
911
- #: core/api/v2/viewsets.py:164
904
+ #: core/api/v2/viewsets.py:176
912
905
  msgid "Administration console"
913
906
  msgstr ""
914
907
 
915
- #: core/api/v2/viewsets.py:174
916
- msgid "Calendar"
908
+ #: core/api/v2/viewsets.py:187
909
+ msgid "Address book"
917
910
  msgstr ""
918
911
 
919
- #: core/api/v2/viewsets.py:181
920
- msgid "Address book"
912
+ #: core/api/v2/viewsets.py:197
913
+ msgid "Calendar"
921
914
  msgstr ""
922
915
 
923
- #: core/api/v2/viewsets.py:186 core/api/v2/viewsets.py:188
916
+ #: core/api/v2/viewsets.py:205 core/api/v2/viewsets.py:207
924
917
  #: webmail/app_settings.py:258 webmail/app_settings.py:265
925
918
  msgid "Webmail"
926
919
  msgstr ""
@@ -1416,19 +1409,27 @@ msgstr ""
1416
1409
  msgid "The maximum age in days of a log record"
1417
1410
  msgstr ""
1418
1411
 
1419
- #: core/app_settings.py:726
1412
+ #: core/app_settings.py:727
1413
+ msgid "Retention time in message history"
1414
+ msgstr ""
1415
+
1416
+ #: core/app_settings.py:730
1417
+ msgid "Retention time (in days) of a message in the message history section"
1418
+ msgstr ""
1419
+
1420
+ #: core/app_settings.py:737
1420
1421
  msgid "Items per page"
1421
1422
  msgstr ""
1422
1423
 
1423
- #: core/app_settings.py:728
1424
+ #: core/app_settings.py:739
1424
1425
  msgid "Number of displayed items per page"
1425
1426
  msgstr ""
1426
1427
 
1427
- #: core/app_settings.py:735
1428
+ #: core/app_settings.py:746
1428
1429
  msgid "Default top redirection"
1429
1430
  msgstr ""
1430
1431
 
1431
- #: core/app_settings.py:737
1432
+ #: core/app_settings.py:748
1432
1433
  msgid "The default redirection used when no application is specified"
1433
1434
  msgstr ""
1434
1435
 
@@ -1459,8 +1460,8 @@ msgstr ""
1459
1460
 
1460
1461
  #: core/checks.py:34
1461
1462
  msgid ""
1462
- "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot."
1463
- "html#dovecot-oauth2"
1463
+ "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/"
1464
+ "dovecot.html#dovecot-oauth2"
1464
1465
  msgstr ""
1465
1466
 
1466
1467
  #: core/checks.py:41
@@ -1937,19 +1938,14 @@ msgstr ""
1937
1938
  #: imap_migration/app_settings.py:76
1938
1939
  msgid ""
1939
1940
  "A comma seperated list of folders to explicitly include in sync even if "
1940
- "filtered by the Folder Filter Exclusions. Example: debian.user, debian."
1941
- "personal "
1941
+ "filtered by the Folder Filter Exclusions. Example: debian.user, "
1942
+ "debian.personal "
1942
1943
  msgstr ""
1943
1944
 
1944
1945
  #: imap_migration/apps.py:20
1945
1946
  msgid "IMAP Migration"
1946
1947
  msgstr ""
1947
1948
 
1948
- #: imap_migration/auth_backends.py:49 webmail/lib/imaputils.py:240
1949
- #, python-brace-format
1950
- msgid "Connection to IMAP server failed: {error}"
1951
- msgstr ""
1952
-
1953
1949
  #: imap_migration/checks.py:12
1954
1950
  msgid ""
1955
1951
  "Automatic domain/mailbox creation is disabled which means IMAP "
@@ -2271,11 +2267,11 @@ msgstr ""
2271
2267
  msgid "Personal account information"
2272
2268
  msgstr ""
2273
2269
 
2274
- #: pdfcredentials/api/v2/serializers.py:81
2270
+ #: pdfcredentials/api/v2/serializers.py:86
2275
2271
  msgid "Directory is not writable"
2276
2272
  msgstr ""
2277
2273
 
2278
- #: pdfcredentials/api/v2/serializers.py:102
2274
+ #: pdfcredentials/api/v2/serializers.py:114
2279
2275
  msgid "No document available for this user"
2280
2276
  msgstr ""
2281
2277
 
@@ -2985,14 +2981,26 @@ msgstr ""
2985
2981
  msgid "User defined email signature"
2986
2982
  msgstr ""
2987
2983
 
2984
+ #: webmail/exceptions.py:18
2985
+ msgid "Server response"
2986
+ msgstr ""
2987
+
2988
2988
  #: webmail/lib/attachments.py:112
2989
2989
  msgid "Failed to remove attachment: "
2990
2990
  msgstr ""
2991
2991
 
2992
+ #: webmail/lib/imapemail.py:272
2993
+ msgid "wrote:"
2994
+ msgstr ""
2995
+
2992
2996
  #: webmail/lib/imapemail.py:306
2993
2997
  msgid "Date"
2994
2998
  msgstr ""
2995
2999
 
3000
+ #: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
3001
+ msgid "Original message"
3002
+ msgstr ""
3003
+
2996
3004
  #: webmail/lib/imaputils.py:221
2997
3005
  msgid "Failed to retrieve hierarchy delimiter"
2998
3006
  msgstr ""