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
@@ -19,11 +19,10 @@ msgid ""
19
19
  msgstr ""
20
20
  "Project-Id-Version: Modoboa\n"
21
21
  "Report-Msgid-Bugs-To: \n"
22
- "POT-Creation-Date: 2025-07-27 10:50+0200\n"
22
+ "POT-Creation-Date: 2025-08-28 09:41+0200\n"
23
23
  "PO-Revision-Date: 2024-07-17 11:46+0200\n"
24
24
  "Last-Translator: J Rosier <vertalen@tagora.nl>\n"
25
- "Language-Team: Dutch (Netherlands) (http://www.transifex.com/tonio/modoboa/"
26
- "language/nl_NL/)\n"
25
+ "Language-Team: Dutch (Netherlands) (http://www.transifex.com/tonio/modoboa/language/nl_NL/)\n"
27
26
  "Language: nl_NL\n"
28
27
  "MIME-Version: 1.0\n"
29
28
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -42,69 +41,70 @@ msgstr ""
42
41
  msgid "Default quota in MB applied to mailboxes. A value of 0 means no quota."
43
42
  msgstr "Standaard quotum in MB per mailbox. 0 betekent geen quotum."
44
43
 
45
- #: admin/api/v1/serializers.py:88
44
+ #: admin/api/v1/serializers.py:94
46
45
  #, fuzzy
47
46
  #| msgid "An alias with this name already exists."
48
47
  msgid "domain alias with this name already exists"
49
48
  msgstr "Een alias met deze naam bestaat al."
50
49
 
51
- #: admin/api/v1/serializers.py:98
50
+ #: admin/api/v1/serializers.py:104
52
51
  msgid "No authorized MX record found for this domain"
53
52
  msgstr "Geen geauthoriseerd MX record gevonden voor dit domein"
54
53
 
55
- #: admin/api/v1/serializers.py:116
54
+ #: admin/api/v1/serializers.py:122
56
55
  msgid "Cannot be greater than domain quota"
57
56
  msgstr "Kan niet groter zijn dan domeinquotum"
58
57
 
59
- #: admin/api/v1/serializers.py:162 admin/api/v1/serializers.py:357
60
- #: admin/api/v2/serializers.py:548 admin/models/alias.py:44
58
+ #: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
59
+ #: admin/api/v2/serializers.py:564 admin/models/alias.py:44
61
60
  msgid "Permission denied."
62
61
  msgstr "Toegang geweigerd."
63
62
 
64
- #: admin/api/v1/serializers.py:224 admin/api/v2/serializers.py:88
65
- #: admin/api/v2/serializers.py:470 core/api/v2/serializers.py:235
66
- #: core/api/v2/serializers.py:237 core/api/v2/serializers.py:246
63
+ #: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
64
+ #: admin/api/v2/serializers.py:486 core/api/v2/serializers.py:255
65
+ #: core/api/v2/serializers.py:257 core/api/v2/serializers.py:266
67
66
  #: transport/backends.py:40
68
67
  msgid "This field is required"
69
68
  msgstr "Dit veld is verplicht"
70
69
 
71
- #: admin/api/v1/serializers.py:236
70
+ #: admin/api/v1/serializers.py:243
72
71
  msgid ""
73
72
  "List of administered domains (resellers and domain administrators only)."
74
73
  msgstr "Lijst van beheerde domeinen (alleen resellers en domeinbeheerders)."
75
74
 
76
- #: admin/api/v1/serializers.py:330 admin/api/v2/serializers.py:530
75
+ #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:546
77
76
  msgid "Not allowed for this role."
78
77
  msgstr "Niet toegestaan voor deze rol."
79
78
 
80
- #: admin/api/v1/serializers.py:348
79
+ #: admin/api/v1/serializers.py:355
81
80
  msgid "Must be equal to mailbox full_address"
82
81
  msgstr "Moet gelijk zijn aan de mailbox full_address"
83
82
 
84
- #: admin/api/v1/serializers.py:390 admin/api/v2/serializers.py:582
83
+ #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:598
85
84
  #: calendars/serializers.py:175 calendars/serializers.py:177
85
+ #: pdfcredentials/api/v2/serializers.py:91
86
86
  msgid "This field is required."
87
87
  msgstr "Dit veld is verplicht."
88
88
 
89
- #: admin/api/v1/serializers.py:402 admin/api/v2/serializers.py:599
89
+ #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:615
90
90
  msgid "Local domain {} does not exist"
91
91
  msgstr "Lokaal domein {} bestaat niet"
92
92
 
93
- #: admin/api/v1/serializers.py:492
93
+ #: admin/api/v1/serializers.py:499
94
94
  msgid "A list of recipient"
95
95
  msgstr "Lijst ontvangers."
96
96
 
97
- #: admin/api/v1/serializers.py:508 admin/api/v2/viewsets.py:286
97
+ #: admin/api/v1/serializers.py:515 admin/api/v2/viewsets.py:286
98
98
  #, fuzzy
99
99
  #| msgid "User '%s' already exists"
100
100
  msgid "This alias already exists"
101
101
  msgstr "Gebruiker '%s' bestaat al"
102
102
 
103
- #: admin/api/v1/serializers.py:544
103
+ #: admin/api/v1/serializers.py:551
104
104
  msgid "You don't have access to this domain."
105
105
  msgstr "Je hebt geen toegang tot dit domein."
106
106
 
107
- #: admin/api/v1/serializers.py:553
107
+ #: admin/api/v1/serializers.py:560
108
108
  msgid "You don't have access to this mailbox."
109
109
  msgstr "Je hebt geen toegang tot deze mailbox."
110
110
 
@@ -112,56 +112,56 @@ msgstr "Je hebt geen toegang tot deze mailbox."
112
112
  msgid "Here is your new Modoboa password: {}"
113
113
  msgstr "Hier is je nieuwe Modoboa wachtwoord:{}"
114
114
 
115
- #: admin/api/v2/serializers.py:80
115
+ #: admin/api/v2/serializers.py:82
116
116
  msgid "DKIM keys storage directory not configured"
117
117
  msgstr "DKIM Key opslagdirectory niet geconfigureerd"
118
118
 
119
- #: admin/api/v2/serializers.py:92
119
+ #: admin/api/v2/serializers.py:94
120
120
  msgid "This field is valid when type is relaydomain"
121
121
  msgstr ""
122
122
 
123
- #: admin/api/v2/serializers.py:99
123
+ #: admin/api/v2/serializers.py:101
124
124
  msgid "You can't define an unlimited quota."
125
125
  msgstr "Je kunt geen onbeperkt quotum definiëren."
126
126
 
127
- #: admin/api/v2/serializers.py:133
127
+ #: admin/api/v2/serializers.py:135
128
128
  #, python-format
129
129
  msgid "User '%s' already exists"
130
130
  msgstr "Gebruiker '%s' bestaat al"
131
131
 
132
- #: admin/api/v2/serializers.py:248 admin/api/v2/serializers.py:254
132
+ #: admin/api/v2/serializers.py:250 admin/api/v2/serializers.py:256
133
133
  msgid "Must be a positive integer"
134
134
  msgstr "Dit moet een positief geheel getal zijn."
135
135
 
136
- #: admin/api/v2/serializers.py:263
136
+ #: admin/api/v2/serializers.py:265
137
137
  msgid "openssl not found, please make sure it is installed."
138
138
  msgstr "Openssl kan niet gevonden worden. Controleer of dit geïnstalleerd is."
139
139
 
140
- #: admin/api/v2/serializers.py:266 pdfcredentials/api/v2/serializers.py:79
140
+ #: admin/api/v2/serializers.py:268 pdfcredentials/api/v2/serializers.py:84
141
141
  msgid "Directory not found."
142
142
  msgstr "Map niet gevonden."
143
143
 
144
- #: admin/api/v2/serializers.py:277
144
+ #: admin/api/v2/serializers.py:279
145
145
  msgid "This field only allows valid IP addresses (or networks)"
146
146
  msgstr "Dit veld laat alleen geldige IP-adressen (of netwerken) toe"
147
147
 
148
- #: admin/api/v2/serializers.py:290
148
+ #: admin/api/v2/serializers.py:292
149
149
  msgid "Please disable imap migration before disabling this option."
150
150
  msgstr ""
151
151
 
152
- #: admin/api/v2/serializers.py:303
152
+ #: admin/api/v2/serializers.py:305
153
153
  msgid "Define at least one authorized network / address"
154
154
  msgstr "Definieer ten minste 1 geautoriseerd netwerk / adres"
155
155
 
156
- #: admin/api/v2/serializers.py:565
156
+ #: admin/api/v2/serializers.py:581
157
157
  msgid "The left part of an email address can't be more than 64 characters."
158
158
  msgstr ""
159
159
 
160
- #: admin/api/v2/serializers.py:587
160
+ #: admin/api/v2/serializers.py:603
161
161
  msgid "A mailbox is required to create aliases."
162
162
  msgstr "Er is een mailbox vereist om een alias te creëren"
163
163
 
164
- #: admin/api/v2/serializers.py:751
164
+ #: admin/api/v2/serializers.py:772
165
165
  #, fuzzy
166
166
  #| msgid "Unknown tag {}"
167
167
  msgid "Unknown status"
@@ -175,14 +175,6 @@ msgstr "Je hebt geen toegang tot dit domein"
175
175
  msgid "You can't delete your own domain"
176
176
  msgstr "Je kunt je eigen domein niet verwijderen"
177
177
 
178
- #: admin/api/v2/viewsets.py:407
179
- msgid "No alarm ID provided"
180
- msgstr ""
181
-
182
- #: admin/api/v2/viewsets.py:411
183
- msgid "Received invalid alarm id(s)"
184
- msgstr ""
185
-
186
178
  #: admin/app_settings.py:19 limits/app_settings.py:38 limits/constants.py:13
187
179
  msgid "Domains"
188
180
  msgstr "Domeinen"
@@ -201,11 +193,11 @@ msgstr "Geldige MX'en"
201
193
 
202
194
  #: admin/app_settings.py:37
203
195
  msgid ""
204
- "A list of IP or network address every MX record should match. A warning will "
205
- "be sent if a record does not respect it."
196
+ "A list of IP or network address every MX record should match. A warning will"
197
+ " be sent if a record does not respect it."
206
198
  msgstr ""
207
- "Een lijst van IP-adressen waaraan alle MX-records moeten voldoen. Er zal een "
208
- "waarschuwing getoond worden voor records die niet overeenkomen."
199
+ "Een lijst van IP-adressen waaraan alle MX-records moeten voldoen. Er zal een"
200
+ " waarschuwing getoond worden voor records die niet overeenkomen."
209
201
 
210
202
  #: admin/app_settings.py:47
211
203
  msgid "New domains must use authorized MX(s)"
@@ -379,9 +371,11 @@ msgid "Automatic domain/mailbox creation"
379
371
  msgstr "Domein en mailbox automatisch aanmaken"
380
372
 
381
373
  #: admin/app_settings.py:221
382
- msgid "Create a domain and a mailbox when an account is automatically created."
374
+ msgid ""
375
+ "Create a domain and a mailbox when an account is automatically created."
383
376
  msgstr ""
384
- "Maak een domein en mailbox aan wanneer een account automatisch is aangemaakt."
377
+ "Maak een domein en mailbox aan wanneer een account automatisch is "
378
+ "aangemaakt."
385
379
 
386
380
  #: admin/app_settings.py:230
387
381
  msgid "Create an alias when a mailbox is renamed"
@@ -389,9 +383,10 @@ msgstr "Maak een alias aan als een mailbox hernoemd wordt."
389
383
 
390
384
  #: admin/app_settings.py:233
391
385
  msgid "Create an alias using the old address when a mailbox is renamed."
392
- msgstr "Maak een alias aan voor het oude adres als een mailbox hernoemd wordt."
386
+ msgstr ""
387
+ "Maak een alias aan voor het oude adres als een mailbox hernoemd wordt."
393
388
 
394
- #: admin/app_settings.py:287 core/api/v2/viewsets.py:162
389
+ #: admin/app_settings.py:287 core/api/v2/viewsets.py:174
395
390
  msgid "Administration"
396
391
  msgstr "Beheer"
397
392
 
@@ -420,7 +415,7 @@ msgstr "domeinalias"
420
415
  msgid "Account import failed (%s): domain does not exist"
421
416
  msgstr "Accounts importeren mislukt (%s): domein bestaat niet"
422
417
 
423
- #: admin/handlers.py:242 admin/models/mailbox.py:340
418
+ #: admin/handlers.py:242 admin/models/mailbox.py:342
424
419
  msgid "Mailbox {} already exists"
425
420
  msgstr "Mailbox {} bestaat al"
426
421
 
@@ -686,7 +681,7 @@ msgstr "Een quotum is vereist"
686
681
  msgid "{}: domain quota exceeded"
687
682
  msgstr "{}: domeinquotum overschreden"
688
683
 
689
- #: admin/models/mailbox.py:308
684
+ #: admin/models/mailbox.py:310
690
685
  msgid "Domain does not exist"
691
686
  msgstr "Domein bestaat niet"
692
687
 
@@ -705,8 +700,8 @@ msgid ""
705
700
  "coming from it are considered as spam. You should contact those providers "
706
701
  "and ask them to unlist detected IP address(es)."
707
702
  msgstr ""
708
- "De reputatie van dit domein wordt hierdoor aangetast er bestaat een kans dat "
709
- "e-mail van dit domein als spam wordt gezien. Je zou contact moeten opnemen "
703
+ "De reputatie van dit domein wordt hierdoor aangetast er bestaat een kans dat"
704
+ " e-mail van dit domein als spam wordt gezien. Je zou contact moeten opnemen "
710
705
  "met deze providers en hun vragen om deze IP adressen van de lijst te halen."
711
706
 
712
707
  #: admin/templates/admin/notifications/domain_invalid_mx.html:3
@@ -756,14 +751,16 @@ msgstr "Algemeen"
756
751
 
757
752
  #: autoreply/app_settings.py:18
758
753
  #, fuzzy
759
- #| msgid "Timeout in seconds between two auto-replies to the same recipient"
754
+ #| msgid ""
755
+ #| "Timeout in seconds between two auto-replies to the same recipient"
760
756
  msgid "Period between two auto-replies"
761
757
  msgstr ""
762
758
  "Minimale tijd in seconden tussen twee auto-antwoorden naar dezelfde afzender"
763
759
 
764
760
  #: autoreply/app_settings.py:20
765
761
  #, fuzzy
766
- #| msgid "Timeout in seconds between two auto-replies to the same recipient"
762
+ #| msgid ""
763
+ #| "Timeout in seconds between two auto-replies to the same recipient"
767
764
  msgid ""
768
765
  "Number of days to wait before sending a new auto-reply to the same recipient"
769
766
  msgstr ""
@@ -777,8 +774,8 @@ msgstr "Standaard onderwerp"
777
774
  msgid ""
778
775
  "Default subject used when an auto-reply message is created automatically"
779
776
  msgstr ""
780
- "Standaard onderwerp gebruikt wanneer een automatisch antwoord automatisch is "
781
- "aangemaakt"
777
+ "Standaard onderwerp gebruikt wanneer een automatisch antwoord automatisch is"
778
+ " aangemaakt"
782
779
 
783
780
  #: autoreply/app_settings.py:38
784
781
  #, python-format
@@ -873,7 +870,7 @@ msgid ""
873
870
  "Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
874
871
  msgstr ""
875
872
 
876
- #: calendars/app_settings.py:89 core/api/v2/viewsets.py:172
873
+ #: calendars/app_settings.py:89 core/api/v2/viewsets.py:195
877
874
  msgid "Calendars"
878
875
  msgstr ""
879
876
 
@@ -911,7 +908,7 @@ msgstr "LDAP synchronisatie-instellingen"
911
908
  msgid "Interval in seconds between 2 synchronization requests"
912
909
  msgstr ""
913
910
 
914
- #: contacts/app_settings.py:51 core/api/v2/viewsets.py:179
911
+ #: contacts/app_settings.py:51 core/api/v2/viewsets.py:185
915
912
  #, fuzzy
916
913
  #| msgid "Domains"
917
914
  msgid "Contacts"
@@ -965,12 +962,12 @@ msgstr "Ongeldige code"
965
962
  msgid "2FA is already enabled"
966
963
  msgstr ""
967
964
 
968
- #: core/api/v1/serializers.py:87
965
+ #: core/api/v1/serializers.py:86
969
966
  #, python-format
970
- msgid "Failed TFA settings editing attempt from '%s' as user '%s'"
967
+ msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
971
968
  msgstr ""
972
969
 
973
- #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:425
970
+ #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:445
974
971
  #, fuzzy
975
972
  #| msgid "Old password"
976
973
  msgid "Invalid password"
@@ -984,44 +981,45 @@ msgstr ""
984
981
  msgid "Local"
985
982
  msgstr "Lokaal"
986
983
 
987
- #: core/api/v2/serializers.py:175 core/app_settings.py:17
984
+ #: core/api/v2/serializers.py:194 core/app_settings.py:17
988
985
  msgid "User profile"
989
986
  msgstr "Gebruikersprofiel"
990
987
 
991
- #: core/api/v2/serializers.py:194 core/api/v2/serializers.py:201
992
- #: core/api/v2/serializers.py:208
988
+ #: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
989
+ #: core/api/v2/serializers.py:228
993
990
  msgid "Invalid syntax"
994
991
  msgstr "Ongeldige zinsbouw"
995
992
 
996
- #: core/api/v2/serializers.py:213
993
+ #: core/api/v2/serializers.py:233
997
994
  msgid "Invalid rounds number"
998
995
  msgstr "Ongeldig nummer van rondes"
999
996
 
1000
- #: core/api/v2/serializers.py:413 core/forms.py:81
997
+ #: core/api/v2/serializers.py:433 core/forms.py:81
1001
998
  msgid "This code is invalid"
1002
999
  msgstr ""
1003
1000
 
1004
- #: core/api/v2/serializers.py:483 core/views/auth.py:194 core/views/auth.py:247
1001
+ #: core/api/v2/serializers.py:503 core/views/auth.py:194
1002
+ #: core/views/auth.py:247
1005
1003
  msgid "Please use the following code to recover your Modoboa password: {}"
1006
1004
  msgstr "Gebruik de volgende code om het Modoboa wachtwoord te herstellen: {}"
1007
1005
 
1008
- #: core/api/v2/viewsets.py:164
1006
+ #: core/api/v2/viewsets.py:176
1009
1007
  #, fuzzy
1010
1008
  #| msgid "Administration"
1011
1009
  msgid "Administration console"
1012
1010
  msgstr "Beheer"
1013
1011
 
1014
- #: core/api/v2/viewsets.py:174
1015
- msgid "Calendar"
1016
- msgstr ""
1017
-
1018
- #: core/api/v2/viewsets.py:181
1012
+ #: core/api/v2/viewsets.py:187
1019
1013
  #, fuzzy
1020
1014
  #| msgid "Address"
1021
1015
  msgid "Address book"
1022
1016
  msgstr "Adres"
1023
1017
 
1024
- #: core/api/v2/viewsets.py:186 core/api/v2/viewsets.py:188
1018
+ #: core/api/v2/viewsets.py:197
1019
+ msgid "Calendar"
1020
+ msgstr ""
1021
+
1022
+ #: core/api/v2/viewsets.py:205 core/api/v2/viewsets.py:207
1025
1023
  #: webmail/app_settings.py:258 webmail/app_settings.py:265
1026
1024
  #, fuzzy
1027
1025
  #| msgid "E-mail"
@@ -1209,8 +1207,8 @@ msgstr "Beheerdergroepen"
1209
1207
 
1210
1208
  #: core/app_settings.py:239
1211
1209
  msgid ""
1212
- "Members of those LDAP Posix groups will be created as domain administrators. "
1213
- "Use ';' characters to separate groups."
1210
+ "Members of those LDAP Posix groups will be created as domain administrators."
1211
+ " Use ';' characters to separate groups."
1214
1212
  msgstr ""
1215
1213
  "Leden van deze LDAP POSIX-groepen zullen aangemaakt worden als "
1216
1214
  "domeinbeheerders. Gebruik ';' karakters om groepen te scheiden."
@@ -1318,7 +1316,8 @@ msgstr "Activeer export naar LDAP"
1318
1316
  msgid ""
1319
1317
  "Enable automatic synchronization between local database and LDAP directory"
1320
1318
  msgstr ""
1321
- "Activeer automatische synchronisatie tussen lokale database en LDAP directory"
1319
+ "Activeer automatische synchronisatie tussen lokale database en LDAP "
1320
+ "directory"
1322
1321
 
1323
1322
  #: core/app_settings.py:389
1324
1323
  msgid "Delete remote LDAP account when local account is deleted"
@@ -1351,7 +1350,8 @@ msgstr "Activeer import van LDAP"
1351
1350
 
1352
1351
  #: core/app_settings.py:414
1353
1352
  msgid "Enable account synchronization from LDAP directory to local database"
1354
- msgstr "Activeer accountsynchronisatie van LDAP directory naar lokale database"
1353
+ msgstr ""
1354
+ "Activeer accountsynchronisatie van LDAP directory naar lokale database"
1355
1355
 
1356
1356
  #: core/app_settings.py:444
1357
1357
  msgid "Username attribute"
@@ -1406,13 +1406,15 @@ msgstr "Toon aangepaste RSS feed aan resellers en domein beheerders. "
1406
1406
 
1407
1407
  #: core/app_settings.py:506
1408
1408
  #, fuzzy
1409
- #| msgid "Display custom RSS feed to resellers and domain administrators"
1409
+ #| msgid ""
1410
+ #| "Display custom RSS feed to resellers and domain administrators"
1410
1411
  msgid "Display custom RSS feed to super admins"
1411
1412
  msgstr "Toon aangepaste RSS feed aan resellers en domein beheerders. "
1412
1413
 
1413
1414
  #: core/app_settings.py:509
1414
1415
  #, fuzzy
1415
- #| msgid "Display custom RSS feed to resellers and domain administrators"
1416
+ #| msgid ""
1417
+ #| "Display custom RSS feed to resellers and domain administrators"
1416
1418
  msgid "Display custom RSS feed also to super administrators"
1417
1419
  msgstr "Toon aangepaste RSS feed aan resellers en domein beheerders. "
1418
1420
 
@@ -1532,8 +1534,8 @@ msgstr "Drempelwaarde inactieve gebruikers"
1532
1534
 
1533
1535
  #: core/app_settings.py:686
1534
1536
  msgid ""
1535
- "Allow the administrator to set a threshold (in days) beyond which an account "
1536
- "is considered inactive if the user hasn't logged in"
1537
+ "Allow the administrator to set a threshold (in days) beyond which an account"
1538
+ " is considered inactive if the user hasn't logged in"
1537
1539
  msgstr ""
1538
1540
 
1539
1541
  #: core/app_settings.py:695
@@ -1542,8 +1544,8 @@ msgstr "Drempelwaarde inactieve gebruikers"
1542
1544
 
1543
1545
  #: core/app_settings.py:698
1544
1546
  msgid ""
1545
- "An account with a last login date greater than this threshold (in days) will "
1546
- "be considered as inactive"
1547
+ "An account with a last login date greater than this threshold (in days) will"
1548
+ " be considered as inactive"
1547
1549
  msgstr ""
1548
1550
  "Een gebruiker die langer dan dit aantal dagen niet ingelogd is, wordt op "
1549
1551
  "inactief gezet."
@@ -1564,19 +1566,27 @@ msgstr "Maximum bewaartijd van logs"
1564
1566
  msgid "The maximum age in days of a log record"
1565
1567
  msgstr "De maximum bewaartijd in dagen van een log record"
1566
1568
 
1567
- #: core/app_settings.py:726
1569
+ #: core/app_settings.py:727
1570
+ msgid "Retention time in message history"
1571
+ msgstr ""
1572
+
1573
+ #: core/app_settings.py:730
1574
+ msgid "Retention time (in days) of a message in the message history section"
1575
+ msgstr ""
1576
+
1577
+ #: core/app_settings.py:737
1568
1578
  msgid "Items per page"
1569
1579
  msgstr "Items per pagina"
1570
1580
 
1571
- #: core/app_settings.py:728
1581
+ #: core/app_settings.py:739
1572
1582
  msgid "Number of displayed items per page"
1573
1583
  msgstr "Aantal getoonde items per pagina"
1574
1584
 
1575
- #: core/app_settings.py:735
1585
+ #: core/app_settings.py:746
1576
1586
  msgid "Default top redirection"
1577
1587
  msgstr "Standaard top omleiding"
1578
1588
 
1579
- #: core/app_settings.py:737
1589
+ #: core/app_settings.py:748
1580
1590
  msgid "The default redirection used when no application is specified"
1581
1591
  msgstr ""
1582
1592
  "De standaard omleiding die gebruikt wordt als er geen andere applicatie is "
@@ -1614,8 +1624,9 @@ msgstr ""
1614
1624
 
1615
1625
  #: core/checks.py:34
1616
1626
  msgid ""
1617
- "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot."
1618
- "html#dovecot-oauth2"
1627
+ "Visit : "
1628
+ "https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot.html#dovecot-"
1629
+ "oauth2"
1619
1630
  msgstr ""
1620
1631
 
1621
1632
  #: core/checks.py:41
@@ -1626,8 +1637,9 @@ msgstr ""
1626
1637
 
1627
1638
  #: core/checks.py:45
1628
1639
  msgid ""
1629
- "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/"
1630
- "radicale.html#radicale-oauth2"
1640
+ "Visit : "
1641
+ "https://modoboa.readthedocs.io/en/latest/manual_installation/radicale.html#radicale-"
1642
+ "oauth2"
1631
1643
  msgstr ""
1632
1644
 
1633
1645
  #: core/constants.py:6
@@ -2116,8 +2128,8 @@ msgstr ""
2116
2128
  #: imap_migration/app_settings.py:76
2117
2129
  msgid ""
2118
2130
  "A comma seperated list of folders to explicitly include in sync even if "
2119
- "filtered by the Folder Filter Exclusions. Example: debian.user, debian."
2120
- "personal "
2131
+ "filtered by the Folder Filter Exclusions. Example: debian.user, "
2132
+ "debian.personal "
2121
2133
  msgstr ""
2122
2134
 
2123
2135
  #: imap_migration/apps.py:20
@@ -2126,12 +2138,6 @@ msgstr ""
2126
2138
  msgid "IMAP Migration"
2127
2139
  msgstr "IMAP migratie"
2128
2140
 
2129
- #: imap_migration/auth_backends.py:49 webmail/lib/imaputils.py:240
2130
- #, fuzzy, python-brace-format
2131
- #| msgid "Connection to IMAP server failed: %s"
2132
- msgid "Connection to IMAP server failed: {error}"
2133
- msgstr "Verbinding naar IMAP server mislukt: %s"
2134
-
2135
2141
  #: imap_migration/checks.py:12
2136
2142
  msgid ""
2137
2143
  "Automatic domain/mailbox creation is disabled which means IMAP "
@@ -2219,7 +2225,8 @@ msgid ""
2219
2225
  "Maximum number of allowed domain administrators for a new administrator. (0 "
2220
2226
  "to deny any creation, -1 to allow unlimited creations)"
2221
2227
  msgstr ""
2222
- "Maximum aantal toegestane domein administrators voor een nieuwe administrator"
2228
+ "Maximum aantal toegestane domein administrators voor een nieuwe "
2229
+ "administrator"
2223
2230
 
2224
2231
  #: limits/app_settings.py:41
2225
2232
  #, fuzzy
@@ -2236,10 +2243,11 @@ msgstr "Domeinaliassen"
2236
2243
 
2237
2244
  #: limits/app_settings.py:52
2238
2245
  #, fuzzy
2239
- #| msgid "Maximum number of allowed domain aliases for a new administrator"
2246
+ #| msgid ""
2247
+ #| "Maximum number of allowed domain aliases for a new administrator"
2240
2248
  msgid ""
2241
- "Maximum number of allowed domain aliases for a new administrator. (0 to deny "
2242
- "any creation, -1 to allow unlimited creations)"
2249
+ "Maximum number of allowed domain aliases for a new administrator. (0 to deny"
2250
+ " any creation, -1 to allow unlimited creations)"
2243
2251
  msgstr "Maximum aantal domein aliassen voor een nieuwe administrator"
2244
2252
 
2245
2253
  #: limits/app_settings.py:64
@@ -2292,14 +2300,16 @@ msgstr ""
2292
2300
  #| msgid ""
2293
2301
  #| "Maximum number of allowed domain administrators for a new administrator"
2294
2302
  msgid ""
2295
- "Maximum number of allowed domain administrators for a new domain. (0 to deny "
2296
- "any creation, -1 to allow unlimited creations)"
2303
+ "Maximum number of allowed domain administrators for a new domain. (0 to deny"
2304
+ " any creation, -1 to allow unlimited creations)"
2297
2305
  msgstr ""
2298
- "Maximum aantal toegestane domein administrators voor een nieuwe administrator"
2306
+ "Maximum aantal toegestane domein administrators voor een nieuwe "
2307
+ "administrator"
2299
2308
 
2300
2309
  #: limits/app_settings.py:126
2301
2310
  #, fuzzy
2302
- #| msgid "Maximum number of allowed domain aliases for a new administrator"
2311
+ #| msgid ""
2312
+ #| "Maximum number of allowed domain aliases for a new administrator"
2303
2313
  msgid ""
2304
2314
  "Maximum number of allowed domain aliases for a new domain. (0 to deny any "
2305
2315
  "creation, -1 to allow unlimited creations)"
@@ -2317,8 +2327,8 @@ msgstr "Maximum aantal toegestane mailboxen voor een nieuwe administrator"
2317
2327
  #, fuzzy
2318
2328
  #| msgid "Maximum number of allowed aliases for a new administrator"
2319
2329
  msgid ""
2320
- "Maximum number of allowed aliases for a new domain. (0 to deny any creation, "
2321
- "-1 to allow unlimited creations)"
2330
+ "Maximum number of allowed aliases for a new domain. (0 to deny any creation,"
2331
+ " -1 to allow unlimited creations)"
2322
2332
  msgstr "Maximum aantal aliassen voor een nieuwe administrator"
2323
2333
 
2324
2334
  #: limits/apps.py:16
@@ -2498,13 +2508,13 @@ msgstr ""
2498
2508
  msgid "Personal account information"
2499
2509
  msgstr "Persoonlijke account informatie"
2500
2510
 
2501
- #: pdfcredentials/api/v2/serializers.py:81
2511
+ #: pdfcredentials/api/v2/serializers.py:86
2502
2512
  #, fuzzy
2503
2513
  #| msgid "Directory not found."
2504
2514
  msgid "Directory is not writable"
2505
2515
  msgstr "Map niet gevonden."
2506
2516
 
2507
- #: pdfcredentials/api/v2/serializers.py:102
2517
+ #: pdfcredentials/api/v2/serializers.py:114
2508
2518
  msgid "No document available for this user"
2509
2519
  msgstr "Geen document beschikbaar voor deze gebruiker"
2510
2520
 
@@ -2558,8 +2568,8 @@ msgid ""
2558
2568
  "new document will be created each time a password is updated."
2559
2569
  msgstr ""
2560
2570
  "Genereer een document enkel wanneer een account is nieuw aangemaakt. Indien "
2561
- "'nee' is geselecteerd zal bij iedere wachtwoord wijziging een nieuw document "
2562
- "worden gemaakt. "
2571
+ "'nee' is geselecteerd zal bij iedere wachtwoord wijziging een nieuw document"
2572
+ " worden gemaakt. "
2563
2573
 
2564
2574
  #: pdfcredentials/app_settings.py:84
2565
2575
  msgid "Customization options"
@@ -2686,8 +2696,7 @@ msgid ""
2686
2696
  "your contacts.\n"
2687
2697
  msgstr ""
2688
2698
  "\n"
2689
- "Hier kunt u uw e-mails online bekijken, filters aanmaken, of contactpersonen "
2690
- "beheren.\n"
2699
+ "Hier kunt u uw e-mails online bekijken, filters aanmaken, of contactpersonen beheren.\n"
2691
2700
 
2692
2701
  #: pdfcredentials/documents.py:126
2693
2702
  msgid "Please change your password!"
@@ -2715,7 +2724,8 @@ msgstr "PDF gegevens"
2715
2724
 
2716
2725
  #: pdfcredentials/lib.py:29
2717
2726
  #, fuzzy
2718
- #| msgid "Failed to create the directory that will contain PDF documents (%s)"
2727
+ #| msgid ""
2728
+ #| "Failed to create the directory that will contain PDF documents (%s)"
2719
2729
  msgid "Can't write to selected directory to store PDF documents"
2720
2730
  msgstr "Het aanmaken van de map voor de PDF documenten is mislukt (%s)"
2721
2731
 
@@ -2797,8 +2807,8 @@ msgstr ""
2797
2807
 
2798
2808
  #: rspamd/app_settings.py:21
2799
2809
  msgid ""
2800
- "Absolute path of the file which contains paths to DKIM private keys. Must be "
2801
- "readable by _rspamd group or user."
2810
+ "Absolute path of the file which contains paths to DKIM private keys. Must be"
2811
+ " readable by _rspamd group or user."
2802
2812
  msgstr ""
2803
2813
 
2804
2814
  #: rspamd/app_settings.py:30
@@ -2817,8 +2827,8 @@ msgstr ""
2817
2827
 
2818
2828
  #: rspamd/app_settings.py:53
2819
2829
  msgid ""
2820
- "Location of the rspamd dashboard. Can either be a relative URL (eg. '/"
2821
- "rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
2830
+ "Location of the rspamd dashboard. Can either be a relative URL (eg. "
2831
+ "'/rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
2822
2832
  "guidance on the Super-Admin dashboard."
2823
2833
  msgstr ""
2824
2834
 
@@ -2974,7 +2984,8 @@ msgstr ""
2974
2984
  #, fuzzy
2975
2985
  #| msgid "Connection to IMAP server failed: %s"
2976
2986
  msgid "Connection to MANAGESIEVE server failed, check your configuration"
2977
- msgstr "Verbinding naar MANAGESIEVE server mislukt, controleer uw configuratie"
2987
+ msgstr ""
2988
+ "Verbinding naar MANAGESIEVE server mislukt, controleer uw configuratie"
2978
2989
 
2979
2990
  #: sievefilters/lib.py:76
2980
2991
  #, fuzzy
@@ -3033,8 +3044,7 @@ msgstr "Wachtwoord vergeten?"
3033
3044
  msgid ""
3034
3045
  "Your password has been set. You may go ahead and <a href=\"%(url)s\">sign "
3035
3046
  "in</a> now."
3036
- msgstr ""
3037
- "Je wachtwoord is ingesteld. Je kunt nu <a href=\"%(url)s\">inloggen</a>"
3047
+ msgstr "Je wachtwoord is ingesteld. Je kunt nu <a href=\"%(url)s\">inloggen</a>"
3038
3048
 
3039
3049
  #: templates/registration/password_reset_confirm.html:8
3040
3050
  msgid "Change password"
@@ -3073,10 +3083,8 @@ msgid ""
3073
3083
  "<p>If you don't receive an email, please make sure you've entered your "
3074
3084
  "primary address, and check your spam folder.</p>"
3075
3085
  msgstr ""
3076
- "<p>We hebben je instructies gemailt om je wachtwoord in te stellen. Als het "
3077
- "door jou ingevulde email adres bestaat, zal je hem binnenkort ontvangen</p>\n"
3078
- "<p>Als je geen email ontvangt, controleer dan of je het juiste email adres "
3079
- "hebt ingevuld, en controleer je spam folder. </p>"
3086
+ "<p>We hebben je instructies gemailt om je wachtwoord in te stellen. Als het door jou ingevulde email adres bestaat, zal je hem binnenkort ontvangen</p>\n"
3087
+ "<p>Als je geen email ontvangt, controleer dan of je het juiste email adres hebt ingevuld, en controleer je spam folder. </p>"
3080
3088
 
3081
3089
  #: templates/registration/password_reset_email.html:4
3082
3090
  #: templates/registration/password_reset_email_v2.html:4
@@ -3128,8 +3136,8 @@ msgstr "Oud wachtwoord"
3128
3136
 
3129
3137
  #: templates/registration/twofactor_code_verify.html:35
3130
3138
  msgid ""
3131
- "Enter the code from the two-factor app on your mobile device. If you've lost "
3132
- "your device, you may enter one of your recovery codes."
3139
+ "Enter the code from the two-factor app on your mobile device. If you've lost"
3140
+ " your device, you may enter one of your recovery codes."
3133
3141
  msgstr ""
3134
3142
 
3135
3143
  #: templates/registration/twofactor_code_verify.html:42
@@ -3241,7 +3249,7 @@ msgstr "(De)activeer weergave van HTML-koppelingen"
3241
3249
  #, fuzzy
3242
3250
  #| msgid "Number of displayed items per page"
3243
3251
  msgid "Number of displayed emails per page"
3244
- msgstr "Aantal weergegeven e-mails per pagina"
3252
+ msgstr "Aantal weergegeven emails per pagina"
3245
3253
 
3246
3254
  #: webmail/app_settings.py:147
3247
3255
  msgid "Sets the maximum number of messages displayed in a page"
@@ -3325,16 +3333,32 @@ msgstr "Handtekeningtekst"
3325
3333
  msgid "User defined email signature"
3326
3334
  msgstr "Door gebruiker opgegeven e-mailhandtekening"
3327
3335
 
3336
+ #: webmail/exceptions.py:18
3337
+ #, fuzzy
3338
+ #| msgid "Server address"
3339
+ msgid "Server response"
3340
+ msgstr "Serveradres"
3341
+
3328
3342
  #: webmail/lib/attachments.py:112
3329
3343
  #, fuzzy
3330
3344
  #| msgid "Failed to remove filter"
3331
3345
  msgid "Failed to remove attachment: "
3332
3346
  msgstr "Bijlage verwijderen is mislukt:"
3333
3347
 
3348
+ #: webmail/lib/imapemail.py:272
3349
+ msgid "wrote:"
3350
+ msgstr ""
3351
+
3334
3352
  #: webmail/lib/imapemail.py:306
3335
3353
  msgid "Date"
3336
3354
  msgstr "Datum"
3337
3355
 
3356
+ #: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
3357
+ #, fuzzy
3358
+ #| msgid "sent messages"
3359
+ msgid "Original message"
3360
+ msgstr "Alle berichten"
3361
+
3338
3362
  #: webmail/lib/imaputils.py:221
3339
3363
  msgid "Failed to retrieve hierarchy delimiter"
3340
3364
  msgstr "Mislukt om het hiërarchische scheidingsteken te verkrijgen"
@@ -3363,3 +3387,7 @@ msgstr "Prullenbak"
3363
3387
  #, python-format
3364
3388
  msgid "Attachment is too big (limit: %s)"
3365
3389
  msgstr "Bijlage is te groot (maximaal toegestane grootte: %s)"
3390
+
3391
+ #, fuzzy, python-brace-format
3392
+ #~ msgid "Connection to IMAP server failed: {error}"
3393
+ #~ msgstr "Verbinding naar IMAP server mislukt: %s"