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

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