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"
@@ -29,65 +29,66 @@ msgstr ""
29
29
  msgid "Default quota in MB applied to mailboxes. A value of 0 means no quota."
30
30
  msgstr ""
31
31
 
32
- #: admin/api/v1/serializers.py:88
32
+ #: admin/api/v1/serializers.py:94
33
33
  msgid "domain alias with this name already exists"
34
34
  msgstr ""
35
35
 
36
- #: admin/api/v1/serializers.py:98
36
+ #: admin/api/v1/serializers.py:104
37
37
  msgid "No authorized MX record found for this domain"
38
38
  msgstr ""
39
39
 
40
- #: admin/api/v1/serializers.py:116
40
+ #: admin/api/v1/serializers.py:122
41
41
  msgid "Cannot be greater than domain quota"
42
42
  msgstr ""
43
43
 
44
- #: admin/api/v1/serializers.py:162 admin/api/v1/serializers.py:357
45
- #: admin/api/v2/serializers.py:548 admin/models/alias.py:44
44
+ #: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
45
+ #: admin/api/v2/serializers.py:564 admin/models/alias.py:44
46
46
  msgid "Permission denied."
47
47
  msgstr ""
48
48
 
49
- #: admin/api/v1/serializers.py:224 admin/api/v2/serializers.py:88
50
- #: admin/api/v2/serializers.py:470 core/api/v2/serializers.py:235
51
- #: core/api/v2/serializers.py:237 core/api/v2/serializers.py:246
49
+ #: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
50
+ #: admin/api/v2/serializers.py:486 core/api/v2/serializers.py:255
51
+ #: core/api/v2/serializers.py:257 core/api/v2/serializers.py:266
52
52
  #: transport/backends.py:40
53
53
  msgid "This field is required"
54
54
  msgstr ""
55
55
 
56
- #: admin/api/v1/serializers.py:236
56
+ #: admin/api/v1/serializers.py:243
57
57
  msgid ""
58
58
  "List of administered domains (resellers and domain administrators only)."
59
59
  msgstr ""
60
60
 
61
- #: admin/api/v1/serializers.py:330 admin/api/v2/serializers.py:530
61
+ #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:546
62
62
  msgid "Not allowed for this role."
63
63
  msgstr ""
64
64
 
65
- #: admin/api/v1/serializers.py:348
65
+ #: admin/api/v1/serializers.py:355
66
66
  msgid "Must be equal to mailbox full_address"
67
67
  msgstr ""
68
68
 
69
- #: admin/api/v1/serializers.py:390 admin/api/v2/serializers.py:582
69
+ #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:598
70
70
  #: calendars/serializers.py:175 calendars/serializers.py:177
71
+ #: pdfcredentials/api/v2/serializers.py:91
71
72
  msgid "This field is required."
72
73
  msgstr ""
73
74
 
74
- #: admin/api/v1/serializers.py:402 admin/api/v2/serializers.py:599
75
+ #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:615
75
76
  msgid "Local domain {} does not exist"
76
77
  msgstr ""
77
78
 
78
- #: admin/api/v1/serializers.py:492
79
+ #: admin/api/v1/serializers.py:499
79
80
  msgid "A list of recipient"
80
81
  msgstr ""
81
82
 
82
- #: admin/api/v1/serializers.py:508 admin/api/v2/viewsets.py:286
83
+ #: admin/api/v1/serializers.py:515 admin/api/v2/viewsets.py:286
83
84
  msgid "This alias already exists"
84
85
  msgstr ""
85
86
 
86
- #: admin/api/v1/serializers.py:544
87
+ #: admin/api/v1/serializers.py:551
87
88
  msgid "You don't have access to this domain."
88
89
  msgstr ""
89
90
 
90
- #: admin/api/v1/serializers.py:553
91
+ #: admin/api/v1/serializers.py:560
91
92
  msgid "You don't have access to this mailbox."
92
93
  msgstr ""
93
94
 
@@ -95,56 +96,56 @@ msgstr ""
95
96
  msgid "Here is your new Modoboa password: {}"
96
97
  msgstr ""
97
98
 
98
- #: admin/api/v2/serializers.py:80
99
+ #: admin/api/v2/serializers.py:82
99
100
  msgid "DKIM keys storage directory not configured"
100
101
  msgstr ""
101
102
 
102
- #: admin/api/v2/serializers.py:92
103
+ #: admin/api/v2/serializers.py:94
103
104
  msgid "This field is valid when type is relaydomain"
104
105
  msgstr ""
105
106
 
106
- #: admin/api/v2/serializers.py:99
107
+ #: admin/api/v2/serializers.py:101
107
108
  msgid "You can't define an unlimited quota."
108
109
  msgstr ""
109
110
 
110
- #: admin/api/v2/serializers.py:133
111
+ #: admin/api/v2/serializers.py:135
111
112
  #, python-format
112
113
  msgid "User '%s' already exists"
113
114
  msgstr ""
114
115
 
115
- #: admin/api/v2/serializers.py:248 admin/api/v2/serializers.py:254
116
+ #: admin/api/v2/serializers.py:250 admin/api/v2/serializers.py:256
116
117
  msgid "Must be a positive integer"
117
118
  msgstr ""
118
119
 
119
- #: admin/api/v2/serializers.py:263
120
+ #: admin/api/v2/serializers.py:265
120
121
  msgid "openssl not found, please make sure it is installed."
121
122
  msgstr ""
122
123
 
123
- #: admin/api/v2/serializers.py:266 pdfcredentials/api/v2/serializers.py:79
124
+ #: admin/api/v2/serializers.py:268 pdfcredentials/api/v2/serializers.py:84
124
125
  msgid "Directory not found."
125
126
  msgstr ""
126
127
 
127
- #: admin/api/v2/serializers.py:277
128
+ #: admin/api/v2/serializers.py:279
128
129
  msgid "This field only allows valid IP addresses (or networks)"
129
130
  msgstr ""
130
131
 
131
- #: admin/api/v2/serializers.py:290
132
+ #: admin/api/v2/serializers.py:292
132
133
  msgid "Please disable imap migration before disabling this option."
133
134
  msgstr ""
134
135
 
135
- #: admin/api/v2/serializers.py:303
136
+ #: admin/api/v2/serializers.py:305
136
137
  msgid "Define at least one authorized network / address"
137
138
  msgstr ""
138
139
 
139
- #: admin/api/v2/serializers.py:565
140
+ #: admin/api/v2/serializers.py:581
140
141
  msgid "The left part of an email address can't be more than 64 characters."
141
142
  msgstr ""
142
143
 
143
- #: admin/api/v2/serializers.py:587
144
+ #: admin/api/v2/serializers.py:603
144
145
  msgid "A mailbox is required to create aliases."
145
146
  msgstr ""
146
147
 
147
- #: admin/api/v2/serializers.py:751
148
+ #: admin/api/v2/serializers.py:772
148
149
  msgid "Unknown status"
149
150
  msgstr ""
150
151
 
@@ -156,14 +157,6 @@ msgstr ""
156
157
  msgid "You can't delete your own domain"
157
158
  msgstr ""
158
159
 
159
- #: admin/api/v2/viewsets.py:407
160
- msgid "No alarm ID provided"
161
- msgstr ""
162
-
163
- #: admin/api/v2/viewsets.py:411
164
- msgid "Received invalid alarm id(s)"
165
- msgstr ""
166
-
167
160
  #: admin/app_settings.py:19 limits/app_settings.py:38 limits/constants.py:13
168
161
  msgid "Domains"
169
162
  msgstr ""
@@ -350,7 +343,7 @@ msgstr ""
350
343
  msgid "Create an alias using the old address when a mailbox is renamed."
351
344
  msgstr ""
352
345
 
353
- #: admin/app_settings.py:287 core/api/v2/viewsets.py:162
346
+ #: admin/app_settings.py:287 core/api/v2/viewsets.py:174
354
347
  msgid "Administration"
355
348
  msgstr ""
356
349
 
@@ -379,7 +372,7 @@ msgstr ""
379
372
  msgid "Account import failed (%s): domain does not exist"
380
373
  msgstr ""
381
374
 
382
- #: admin/handlers.py:242 admin/models/mailbox.py:340
375
+ #: admin/handlers.py:242 admin/models/mailbox.py:342
383
376
  msgid "Mailbox {} already exists"
384
377
  msgstr ""
385
378
 
@@ -637,7 +630,7 @@ msgstr ""
637
630
  msgid "{}: domain quota exceeded"
638
631
  msgstr ""
639
632
 
640
- #: admin/models/mailbox.py:308
633
+ #: admin/models/mailbox.py:310
641
634
  msgid "Domain does not exist"
642
635
  msgstr ""
643
636
 
@@ -789,7 +782,7 @@ msgid ""
789
782
  "Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
790
783
  msgstr ""
791
784
 
792
- #: calendars/app_settings.py:89 core/api/v2/viewsets.py:172
785
+ #: calendars/app_settings.py:89 core/api/v2/viewsets.py:195
793
786
  msgid "Calendars"
794
787
  msgstr ""
795
788
 
@@ -823,7 +816,7 @@ msgstr ""
823
816
  msgid "Interval in seconds between 2 synchronization requests"
824
817
  msgstr ""
825
818
 
826
- #: contacts/app_settings.py:51 core/api/v2/viewsets.py:179
819
+ #: contacts/app_settings.py:51 core/api/v2/viewsets.py:185
827
820
  msgid "Contacts"
828
821
  msgstr ""
829
822
 
@@ -871,12 +864,12 @@ msgstr ""
871
864
  msgid "2FA is already enabled"
872
865
  msgstr ""
873
866
 
874
- #: core/api/v1/serializers.py:87
867
+ #: core/api/v1/serializers.py:86
875
868
  #, python-format
876
- msgid "Failed TFA settings editing attempt from '%s' as user '%s'"
869
+ msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
877
870
  msgstr ""
878
871
 
879
- #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:425
872
+ #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:445
880
873
  msgid "Invalid password"
881
874
  msgstr ""
882
875
 
@@ -888,40 +881,40 @@ msgstr ""
888
881
  msgid "Local"
889
882
  msgstr ""
890
883
 
891
- #: core/api/v2/serializers.py:175 core/app_settings.py:17
884
+ #: core/api/v2/serializers.py:194 core/app_settings.py:17
892
885
  msgid "User profile"
893
886
  msgstr ""
894
887
 
895
- #: core/api/v2/serializers.py:194 core/api/v2/serializers.py:201
896
- #: core/api/v2/serializers.py:208
888
+ #: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
889
+ #: core/api/v2/serializers.py:228
897
890
  msgid "Invalid syntax"
898
891
  msgstr ""
899
892
 
900
- #: core/api/v2/serializers.py:213
893
+ #: core/api/v2/serializers.py:233
901
894
  msgid "Invalid rounds number"
902
895
  msgstr ""
903
896
 
904
- #: core/api/v2/serializers.py:413 core/forms.py:81
897
+ #: core/api/v2/serializers.py:433 core/forms.py:81
905
898
  msgid "This code is invalid"
906
899
  msgstr ""
907
900
 
908
- #: core/api/v2/serializers.py:483 core/views/auth.py:194 core/views/auth.py:247
901
+ #: core/api/v2/serializers.py:503 core/views/auth.py:194 core/views/auth.py:247
909
902
  msgid "Please use the following code to recover your Modoboa password: {}"
910
903
  msgstr ""
911
904
 
912
- #: core/api/v2/viewsets.py:164
905
+ #: core/api/v2/viewsets.py:176
913
906
  msgid "Administration console"
914
907
  msgstr ""
915
908
 
916
- #: core/api/v2/viewsets.py:174
917
- msgid "Calendar"
909
+ #: core/api/v2/viewsets.py:187
910
+ msgid "Address book"
918
911
  msgstr ""
919
912
 
920
- #: core/api/v2/viewsets.py:181
921
- msgid "Address book"
913
+ #: core/api/v2/viewsets.py:197
914
+ msgid "Calendar"
922
915
  msgstr ""
923
916
 
924
- #: core/api/v2/viewsets.py:186 core/api/v2/viewsets.py:188
917
+ #: core/api/v2/viewsets.py:205 core/api/v2/viewsets.py:207
925
918
  #: webmail/app_settings.py:258 webmail/app_settings.py:265
926
919
  msgid "Webmail"
927
920
  msgstr ""
@@ -1417,19 +1410,27 @@ msgstr ""
1417
1410
  msgid "The maximum age in days of a log record"
1418
1411
  msgstr ""
1419
1412
 
1420
- #: core/app_settings.py:726
1413
+ #: core/app_settings.py:727
1414
+ msgid "Retention time in message history"
1415
+ msgstr ""
1416
+
1417
+ #: core/app_settings.py:730
1418
+ msgid "Retention time (in days) of a message in the message history section"
1419
+ msgstr ""
1420
+
1421
+ #: core/app_settings.py:737
1421
1422
  msgid "Items per page"
1422
1423
  msgstr ""
1423
1424
 
1424
- #: core/app_settings.py:728
1425
+ #: core/app_settings.py:739
1425
1426
  msgid "Number of displayed items per page"
1426
1427
  msgstr ""
1427
1428
 
1428
- #: core/app_settings.py:735
1429
+ #: core/app_settings.py:746
1429
1430
  msgid "Default top redirection"
1430
1431
  msgstr ""
1431
1432
 
1432
- #: core/app_settings.py:737
1433
+ #: core/app_settings.py:748
1433
1434
  msgid "The default redirection used when no application is specified"
1434
1435
  msgstr ""
1435
1436
 
@@ -1460,8 +1461,8 @@ msgstr ""
1460
1461
 
1461
1462
  #: core/checks.py:34
1462
1463
  msgid ""
1463
- "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot."
1464
- "html#dovecot-oauth2"
1464
+ "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/"
1465
+ "dovecot.html#dovecot-oauth2"
1465
1466
  msgstr ""
1466
1467
 
1467
1468
  #: core/checks.py:41
@@ -1938,19 +1939,14 @@ msgstr ""
1938
1939
  #: imap_migration/app_settings.py:76
1939
1940
  msgid ""
1940
1941
  "A comma seperated list of folders to explicitly include in sync even if "
1941
- "filtered by the Folder Filter Exclusions. Example: debian.user, debian."
1942
- "personal "
1942
+ "filtered by the Folder Filter Exclusions. Example: debian.user, "
1943
+ "debian.personal "
1943
1944
  msgstr ""
1944
1945
 
1945
1946
  #: imap_migration/apps.py:20
1946
1947
  msgid "IMAP Migration"
1947
1948
  msgstr ""
1948
1949
 
1949
- #: imap_migration/auth_backends.py:49 webmail/lib/imaputils.py:240
1950
- #, python-brace-format
1951
- msgid "Connection to IMAP server failed: {error}"
1952
- msgstr ""
1953
-
1954
1950
  #: imap_migration/checks.py:12
1955
1951
  msgid ""
1956
1952
  "Automatic domain/mailbox creation is disabled which means IMAP "
@@ -2272,11 +2268,11 @@ msgstr ""
2272
2268
  msgid "Personal account information"
2273
2269
  msgstr ""
2274
2270
 
2275
- #: pdfcredentials/api/v2/serializers.py:81
2271
+ #: pdfcredentials/api/v2/serializers.py:86
2276
2272
  msgid "Directory is not writable"
2277
2273
  msgstr ""
2278
2274
 
2279
- #: pdfcredentials/api/v2/serializers.py:102
2275
+ #: pdfcredentials/api/v2/serializers.py:114
2280
2276
  msgid "No document available for this user"
2281
2277
  msgstr ""
2282
2278
 
@@ -2986,14 +2982,26 @@ msgstr ""
2986
2982
  msgid "User defined email signature"
2987
2983
  msgstr ""
2988
2984
 
2985
+ #: webmail/exceptions.py:18
2986
+ msgid "Server response"
2987
+ msgstr ""
2988
+
2989
2989
  #: webmail/lib/attachments.py:112
2990
2990
  msgid "Failed to remove attachment: "
2991
2991
  msgstr ""
2992
2992
 
2993
+ #: webmail/lib/imapemail.py:272
2994
+ msgid "wrote:"
2995
+ msgstr ""
2996
+
2993
2997
  #: webmail/lib/imapemail.py:306
2994
2998
  msgid "Date"
2995
2999
  msgstr ""
2996
3000
 
3001
+ #: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
3002
+ msgid "Original message"
3003
+ msgstr ""
3004
+
2997
3005
  #: webmail/lib/imaputils.py:221
2998
3006
  msgid "Failed to retrieve hierarchy delimiter"
2999
3007
  msgstr ""