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