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,11 +11,10 @@ msgid ""
11
11
  msgstr ""
12
12
  "Project-Id-Version: Modoboa\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: 2018-11-01 16:31+0000\n"
16
16
  "Last-Translator: marcotrevisan <mrctrevisan@yahoo.it>\n"
17
- "Language-Team: Italian (http://www.transifex.com/tonio/modoboa/language/"
18
- "it/)\n"
17
+ "Language-Team: Italian (http://www.transifex.com/tonio/modoboa/language/it/)\n"
19
18
  "Language: it\n"
20
19
  "MIME-Version: 1.0\n"
21
20
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -36,71 +35,72 @@ msgstr ""
36
35
  "Spazio massimo predefinito in MB applicato alle caselle di posta. Un valore "
37
36
  "0 indica nessun limite."
38
37
 
39
- #: admin/api/v1/serializers.py:88
38
+ #: admin/api/v1/serializers.py:94
40
39
  #, fuzzy
41
40
  msgid "domain alias with this name already exists"
42
41
  msgstr "Un alias con questo nome esiste già"
43
42
 
44
- #: admin/api/v1/serializers.py:98
43
+ #: admin/api/v1/serializers.py:104
45
44
  msgid "No authorized MX record found for this domain"
46
45
  msgstr "Non è stato trovato alcun record MX autorizzato per questo dominio"
47
46
 
48
- #: admin/api/v1/serializers.py:116
47
+ #: admin/api/v1/serializers.py:122
49
48
  msgid "Cannot be greater than domain quota"
50
49
  msgstr ""
51
50
  "Non può essere maggiore dello spazio massimo definito a livello di dominio"
52
51
 
53
- #: admin/api/v1/serializers.py:162 admin/api/v1/serializers.py:357
54
- #: admin/api/v2/serializers.py:548 admin/models/alias.py:44
52
+ #: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
53
+ #: admin/api/v2/serializers.py:564 admin/models/alias.py:44
55
54
  msgid "Permission denied."
56
55
  msgstr "Permesso negato."
57
56
 
58
- #: admin/api/v1/serializers.py:224 admin/api/v2/serializers.py:88
59
- #: admin/api/v2/serializers.py:470 core/api/v2/serializers.py:235
60
- #: core/api/v2/serializers.py:237 core/api/v2/serializers.py:246
57
+ #: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
58
+ #: admin/api/v2/serializers.py:486 core/api/v2/serializers.py:255
59
+ #: core/api/v2/serializers.py:257 core/api/v2/serializers.py:266
61
60
  #: transport/backends.py:40
62
61
  msgid "This field is required"
63
62
  msgstr "Questo campo è obbligatorio"
64
63
 
65
- #: admin/api/v1/serializers.py:236
64
+ #: admin/api/v1/serializers.py:243
66
65
  msgid ""
67
66
  "List of administered domains (resellers and domain administrators only)."
68
67
  msgstr ""
69
68
  "Lista dei domini amministrati (solo per rivenditori e amministratori di "
70
69
  "dominio)."
71
70
 
72
- #: admin/api/v1/serializers.py:330 admin/api/v2/serializers.py:530
71
+ #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:546
73
72
  msgid "Not allowed for this role."
74
73
  msgstr "Non consentito per questo ruolo."
75
74
 
76
- #: admin/api/v1/serializers.py:348
75
+ #: admin/api/v1/serializers.py:355
77
76
  msgid "Must be equal to mailbox full_address"
78
77
  msgstr "Deve essere uguale a full_address della casella di posta"
79
78
 
80
- #: admin/api/v1/serializers.py:390 admin/api/v2/serializers.py:582
79
+ #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:598
81
80
  #: calendars/serializers.py:175 calendars/serializers.py:177
81
+ #: pdfcredentials/api/v2/serializers.py:91
82
82
  msgid "This field is required."
83
83
  msgstr "Questo campo è obbligatorio."
84
84
 
85
- #: admin/api/v1/serializers.py:402 admin/api/v2/serializers.py:599
85
+ #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:615
86
86
  msgid "Local domain {} does not exist"
87
87
  msgstr "Il dominio locale {} non esiste"
88
88
 
89
- #: admin/api/v1/serializers.py:492
89
+ #: admin/api/v1/serializers.py:499
90
90
  msgid "A list of recipient"
91
91
  msgstr "Una lista di destinatari"
92
92
 
93
- #: admin/api/v1/serializers.py:508 admin/api/v2/viewsets.py:286
93
+ #: admin/api/v1/serializers.py:515 admin/api/v2/viewsets.py:286
94
94
  #, fuzzy
95
95
  #| msgid "User '%s' already exists"
96
96
  msgid "This alias already exists"
97
97
  msgstr "L'utente '%s' esiste già"
98
98
 
99
- #: admin/api/v1/serializers.py:544
99
+ #: admin/api/v1/serializers.py:551
100
100
  msgid "You don't have access to this domain."
101
101
  msgstr "Non hai accesso a questo dominio"
102
102
 
103
- #: admin/api/v1/serializers.py:553
103
+ #: admin/api/v1/serializers.py:560
104
104
  msgid "You don't have access to this mailbox."
105
105
  msgstr "Non hai accesso a questa casella di posta."
106
106
 
@@ -108,58 +108,58 @@ msgstr "Non hai accesso a questa casella di posta."
108
108
  msgid "Here is your new Modoboa password: {}"
109
109
  msgstr ""
110
110
 
111
- #: admin/api/v2/serializers.py:80
111
+ #: admin/api/v2/serializers.py:82
112
112
  msgid "DKIM keys storage directory not configured"
113
113
  msgstr "Cartella di salvataggio per le chiavi DKIM non configurata."
114
114
 
115
- #: admin/api/v2/serializers.py:92
115
+ #: admin/api/v2/serializers.py:94
116
116
  msgid "This field is valid when type is relaydomain"
117
117
  msgstr ""
118
118
 
119
- #: admin/api/v2/serializers.py:99
119
+ #: admin/api/v2/serializers.py:101
120
120
  msgid "You can't define an unlimited quota."
121
121
  msgstr "Non puoi definire uno spazio illimitato."
122
122
 
123
- #: admin/api/v2/serializers.py:133
123
+ #: admin/api/v2/serializers.py:135
124
124
  #, python-format
125
125
  msgid "User '%s' already exists"
126
126
  msgstr "L'utente '%s' esiste già"
127
127
 
128
- #: admin/api/v2/serializers.py:248 admin/api/v2/serializers.py:254
128
+ #: admin/api/v2/serializers.py:250 admin/api/v2/serializers.py:256
129
129
  msgid "Must be a positive integer"
130
130
  msgstr "Dev'essere un intero positivo"
131
131
 
132
- #: admin/api/v2/serializers.py:263
132
+ #: admin/api/v2/serializers.py:265
133
133
  msgid "openssl not found, please make sure it is installed."
134
134
  msgstr "openssl non trovato, assicurarsi che sia installato."
135
135
 
136
- #: admin/api/v2/serializers.py:266 pdfcredentials/api/v2/serializers.py:79
136
+ #: admin/api/v2/serializers.py:268 pdfcredentials/api/v2/serializers.py:84
137
137
  msgid "Directory not found."
138
138
  msgstr "Cartella non trovata."
139
139
 
140
- #: admin/api/v2/serializers.py:277
140
+ #: admin/api/v2/serializers.py:279
141
141
  msgid "This field only allows valid IP addresses (or networks)"
142
142
  msgstr ""
143
143
 
144
- #: admin/api/v2/serializers.py:290
144
+ #: admin/api/v2/serializers.py:292
145
145
  msgid "Please disable imap migration before disabling this option."
146
146
  msgstr ""
147
147
 
148
- #: admin/api/v2/serializers.py:303
148
+ #: admin/api/v2/serializers.py:305
149
149
  msgid "Define at least one authorized network / address"
150
150
  msgstr "Definire almeno una rete / indirizzo autorizzato"
151
151
 
152
- #: admin/api/v2/serializers.py:565
152
+ #: admin/api/v2/serializers.py:581
153
153
  msgid "The left part of an email address can't be more than 64 characters."
154
154
  msgstr ""
155
155
 
156
- #: admin/api/v2/serializers.py:587
156
+ #: admin/api/v2/serializers.py:603
157
157
  #, fuzzy
158
158
  #| msgid "A mailbox is required"
159
159
  msgid "A mailbox is required to create aliases."
160
160
  msgstr "É necessaria una casella"
161
161
 
162
- #: admin/api/v2/serializers.py:751
162
+ #: admin/api/v2/serializers.py:772
163
163
  #, fuzzy
164
164
  #| msgid "Unknown"
165
165
  msgid "Unknown status"
@@ -173,14 +173,6 @@ msgstr "Non hai accesso a questo dominio"
173
173
  msgid "You can't delete your own domain"
174
174
  msgstr "Non puoi cancellare il tuo dominio"
175
175
 
176
- #: admin/api/v2/viewsets.py:407
177
- msgid "No alarm ID provided"
178
- msgstr ""
179
-
180
- #: admin/api/v2/viewsets.py:411
181
- msgid "Received invalid alarm id(s)"
182
- msgstr ""
183
-
184
176
  #: admin/app_settings.py:19 limits/app_settings.py:38 limits/constants.py:13
185
177
  msgid "Domains"
186
178
  msgstr "Domini"
@@ -199,8 +191,8 @@ msgstr "MX validi"
199
191
 
200
192
  #: admin/app_settings.py:37
201
193
  msgid ""
202
- "A list of IP or network address every MX record should match. A warning will "
203
- "be sent if a record does not respect it."
194
+ "A list of IP or network address every MX record should match. A warning will"
195
+ " be sent if a record does not respect it."
204
196
  msgstr ""
205
197
  "Una lista di indirizzi IP o host a cui ciascun record MX dovrebbe "
206
198
  "appartenere. Verrà inviato un avviso se un record non la rispetta. "
@@ -302,8 +294,8 @@ msgid ""
302
294
  "world."
303
295
  msgstr ""
304
296
  "Percorso assoluto della cartella dove le chiavi private DKIM verranno "
305
- "salvate. Assicurarsi che questa cartella sia di proprietà dell'utente root e "
306
- "che non sia leggibile da altri."
297
+ "salvate. Assicurarsi che questa cartella sia di proprietà dell'utente root e"
298
+ " che non sia leggibile da altri."
307
299
 
308
300
  #: admin/app_settings.py:137
309
301
  msgid "Default DKIM key length"
@@ -396,7 +388,8 @@ msgid "Automatic domain/mailbox creation"
396
388
  msgstr "Creazione automatica del domini/casella di posta elettronica"
397
389
 
398
390
  #: admin/app_settings.py:221
399
- msgid "Create a domain and a mailbox when an account is automatically created."
391
+ msgid ""
392
+ "Create a domain and a mailbox when an account is automatically created."
400
393
  msgstr ""
401
394
  "Crea un dominio ed una casella di posta elettronica quando si crea un "
402
395
  "account utente"
@@ -410,7 +403,7 @@ msgid "Create an alias using the old address when a mailbox is renamed."
410
403
  msgstr ""
411
404
  "Crea un alias con il vecchio indirizzo quando una mailbox viene rinominata."
412
405
 
413
- #: admin/app_settings.py:287 core/api/v2/viewsets.py:162
406
+ #: admin/app_settings.py:287 core/api/v2/viewsets.py:174
414
407
  msgid "Administration"
415
408
  msgstr "Amministrazione"
416
409
 
@@ -441,7 +434,7 @@ msgstr "alias del dominio"
441
434
  msgid "Account import failed (%s): domain does not exist"
442
435
  msgstr "Importazione dell'account fallito (%s): il dominio non esiste"
443
436
 
444
- #: admin/handlers.py:242 admin/models/mailbox.py:340
437
+ #: admin/handlers.py:242 admin/models/mailbox.py:342
445
438
  msgid "Mailbox {} already exists"
446
439
  msgstr "La La casella di posta {} esiste già"
447
440
 
@@ -479,8 +472,8 @@ msgstr "Nessun DNS server funzionante trovato"
479
472
  #, python-format
480
473
  msgid "DNS resolution timeout, unable to query %s at the moment"
481
474
  msgstr ""
482
- "Timeout nella risoluzione DNS del nome, problema momentaneo nell'interrogare "
483
- "%s "
475
+ "Timeout nella risoluzione DNS del nome, problema momentaneo nell'interrogare"
476
+ " %s "
484
477
 
485
478
  #: admin/lib.py:236
486
479
  msgid "DNS name is too long: {}"
@@ -725,7 +718,7 @@ msgstr "È richiesta una quota"
725
718
  msgid "{}: domain quota exceeded"
726
719
  msgstr "Superato lo spazio massimo per il dominio"
727
720
 
728
- #: admin/models/mailbox.py:308
721
+ #: admin/models/mailbox.py:310
729
722
  msgid "Domain does not exist"
730
723
  msgstr "Il dominio non esiste"
731
724
 
@@ -795,7 +788,8 @@ msgstr "Generale"
795
788
 
796
789
  #: autoreply/app_settings.py:18
797
790
  #, fuzzy
798
- #| msgid "Timeout in seconds between two auto-replies to the same recipient"
791
+ #| msgid ""
792
+ #| "Timeout in seconds between two auto-replies to the same recipient"
799
793
  msgid "Period between two auto-replies"
800
794
  msgstr ""
801
795
  "Tempo massimo in secondi tra due risposte automatiche al medesimo "
@@ -803,7 +797,8 @@ msgstr ""
803
797
 
804
798
  #: autoreply/app_settings.py:20
805
799
  #, fuzzy
806
- #| msgid "Timeout in seconds between two auto-replies to the same recipient"
800
+ #| msgid ""
801
+ #| "Timeout in seconds between two auto-replies to the same recipient"
807
802
  msgid ""
808
803
  "Number of days to wait before sending a new auto-reply to the same recipient"
809
804
  msgstr ""
@@ -913,7 +908,7 @@ msgid ""
913
908
  "Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
914
909
  msgstr ""
915
910
 
916
- #: calendars/app_settings.py:89 core/api/v2/viewsets.py:172
911
+ #: calendars/app_settings.py:89 core/api/v2/viewsets.py:195
917
912
  msgid "Calendars"
918
913
  msgstr ""
919
914
 
@@ -953,7 +948,7 @@ msgstr "Frequenza di sincronizzazione"
953
948
  msgid "Interval in seconds between 2 synchronization requests"
954
949
  msgstr "Intervallo in secondi tra 2 richieste di sincronizzazione"
955
950
 
956
- #: contacts/app_settings.py:51 core/api/v2/viewsets.py:179
951
+ #: contacts/app_settings.py:51 core/api/v2/viewsets.py:185
957
952
  #, fuzzy
958
953
  #| msgid "Domains"
959
954
  msgid "Contacts"
@@ -1007,12 +1002,12 @@ msgstr "Riga non valida"
1007
1002
  msgid "2FA is already enabled"
1008
1003
  msgstr ""
1009
1004
 
1010
- #: core/api/v1/serializers.py:87
1005
+ #: core/api/v1/serializers.py:86
1011
1006
  #, python-format
1012
- msgid "Failed TFA settings editing attempt from '%s' as user '%s'"
1007
+ msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
1013
1008
  msgstr ""
1014
1009
 
1015
- #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:425
1010
+ #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:445
1016
1011
  #, fuzzy
1017
1012
  #| msgid "Old password"
1018
1013
  msgid "Invalid password"
@@ -1026,44 +1021,45 @@ msgstr ""
1026
1021
  msgid "Local"
1027
1022
  msgstr "Locale"
1028
1023
 
1029
- #: core/api/v2/serializers.py:175 core/app_settings.py:17
1024
+ #: core/api/v2/serializers.py:194 core/app_settings.py:17
1030
1025
  msgid "User profile"
1031
1026
  msgstr "Profilo utente"
1032
1027
 
1033
- #: core/api/v2/serializers.py:194 core/api/v2/serializers.py:201
1034
- #: core/api/v2/serializers.py:208
1028
+ #: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
1029
+ #: core/api/v2/serializers.py:228
1035
1030
  msgid "Invalid syntax"
1036
1031
  msgstr "Sintassi errata"
1037
1032
 
1038
- #: core/api/v2/serializers.py:213
1033
+ #: core/api/v2/serializers.py:233
1039
1034
  msgid "Invalid rounds number"
1040
1035
  msgstr "Numero di cicli non valido"
1041
1036
 
1042
- #: core/api/v2/serializers.py:413 core/forms.py:81
1037
+ #: core/api/v2/serializers.py:433 core/forms.py:81
1043
1038
  msgid "This code is invalid"
1044
1039
  msgstr ""
1045
1040
 
1046
- #: core/api/v2/serializers.py:483 core/views/auth.py:194 core/views/auth.py:247
1041
+ #: core/api/v2/serializers.py:503 core/views/auth.py:194
1042
+ #: core/views/auth.py:247
1047
1043
  msgid "Please use the following code to recover your Modoboa password: {}"
1048
1044
  msgstr ""
1049
1045
 
1050
- #: core/api/v2/viewsets.py:164
1046
+ #: core/api/v2/viewsets.py:176
1051
1047
  #, fuzzy
1052
1048
  #| msgid "Administration"
1053
1049
  msgid "Administration console"
1054
1050
  msgstr "Amministrazione"
1055
1051
 
1056
- #: core/api/v2/viewsets.py:174
1057
- msgid "Calendar"
1058
- msgstr ""
1059
-
1060
- #: core/api/v2/viewsets.py:181
1052
+ #: core/api/v2/viewsets.py:187
1061
1053
  #, fuzzy
1062
1054
  #| msgid "Address"
1063
1055
  msgid "Address book"
1064
1056
  msgstr "Rubrica"
1065
1057
 
1066
- #: core/api/v2/viewsets.py:186 core/api/v2/viewsets.py:188
1058
+ #: core/api/v2/viewsets.py:197
1059
+ msgid "Calendar"
1060
+ msgstr ""
1061
+
1062
+ #: core/api/v2/viewsets.py:205 core/api/v2/viewsets.py:207
1067
1063
  #: webmail/app_settings.py:258 webmail/app_settings.py:265
1068
1064
  #, fuzzy
1069
1065
  #| msgid "E-mail"
@@ -1258,8 +1254,8 @@ msgstr "Gruppi degli amministratori"
1258
1254
 
1259
1255
  #: core/app_settings.py:239
1260
1256
  msgid ""
1261
- "Members of those LDAP Posix groups will be created as domain administrators. "
1262
- "Use ';' characters to separate groups."
1257
+ "Members of those LDAP Posix groups will be created as domain administrators."
1258
+ " Use ';' characters to separate groups."
1263
1259
  msgstr ""
1264
1260
  "Gli appartenenti a questi gruppi LDAP Posix avranno i privilegi di "
1265
1261
  "amministratori di dominio. Utilizza il carattere ';' per separare valori "
@@ -1468,13 +1464,15 @@ msgstr "Mostra RSS feed custom a rivenditori e amministratori di dominio"
1468
1464
 
1469
1465
  #: core/app_settings.py:506
1470
1466
  #, fuzzy
1471
- #| msgid "Display custom RSS feed to resellers and domain administrators"
1467
+ #| msgid ""
1468
+ #| "Display custom RSS feed to resellers and domain administrators"
1472
1469
  msgid "Display custom RSS feed to super admins"
1473
1470
  msgstr "Mostra RSS feed custom a rivenditori e amministratori di dominio"
1474
1471
 
1475
1472
  #: core/app_settings.py:509
1476
1473
  #, fuzzy
1477
- #| msgid "Display custom RSS feed to resellers and domain administrators"
1474
+ #| msgid ""
1475
+ #| "Display custom RSS feed to resellers and domain administrators"
1478
1476
  msgid "Display custom RSS feed also to super administrators"
1479
1477
  msgstr "Mostra RSS feed custom a rivenditori e amministratori di dominio"
1480
1478
 
@@ -1594,8 +1592,8 @@ msgstr "Soglia account inattivo"
1594
1592
 
1595
1593
  #: core/app_settings.py:686
1596
1594
  msgid ""
1597
- "Allow the administrator to set a threshold (in days) beyond which an account "
1598
- "is considered inactive if the user hasn't logged in"
1595
+ "Allow the administrator to set a threshold (in days) beyond which an account"
1596
+ " is considered inactive if the user hasn't logged in"
1599
1597
  msgstr ""
1600
1598
 
1601
1599
  #: core/app_settings.py:695
@@ -1604,8 +1602,8 @@ msgstr "Soglia account inattivo"
1604
1602
 
1605
1603
  #: core/app_settings.py:698
1606
1604
  msgid ""
1607
- "An account with a last login date greater than this threshold (in days) will "
1608
- "be considered as inactive"
1605
+ "An account with a last login date greater than this threshold (in days) will"
1606
+ " be considered as inactive"
1609
1607
  msgstr ""
1610
1608
  "Un account con una data di ultimo accesso più vecchia di questa soglia (in "
1611
1609
  "giorni) verrà considerato inattivo"
@@ -1626,19 +1624,27 @@ msgstr "Età massima dei log"
1626
1624
  msgid "The maximum age in days of a log record"
1627
1625
  msgstr "La persistenza massima in giorni dei log"
1628
1626
 
1629
- #: core/app_settings.py:726
1627
+ #: core/app_settings.py:727
1628
+ msgid "Retention time in message history"
1629
+ msgstr ""
1630
+
1631
+ #: core/app_settings.py:730
1632
+ msgid "Retention time (in days) of a message in the message history section"
1633
+ msgstr ""
1634
+
1635
+ #: core/app_settings.py:737
1630
1636
  msgid "Items per page"
1631
1637
  msgstr "Elementi per pagina"
1632
1638
 
1633
- #: core/app_settings.py:728
1639
+ #: core/app_settings.py:739
1634
1640
  msgid "Number of displayed items per page"
1635
1641
  msgstr "Numero degli elementi visualizzati in ciascuna pagina"
1636
1642
 
1637
- #: core/app_settings.py:735
1643
+ #: core/app_settings.py:746
1638
1644
  msgid "Default top redirection"
1639
1645
  msgstr "Reindirizzamento principale predefinito"
1640
1646
 
1641
- #: core/app_settings.py:737
1647
+ #: core/app_settings.py:748
1642
1648
  msgid "The default redirection used when no application is specified"
1643
1649
  msgstr ""
1644
1650
  "Redirezione predefinita utilizzata quando non è specificata alcuna "
@@ -1673,8 +1679,9 @@ msgstr ""
1673
1679
 
1674
1680
  #: core/checks.py:34
1675
1681
  msgid ""
1676
- "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot."
1677
- "html#dovecot-oauth2"
1682
+ "Visit : "
1683
+ "https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot.html#dovecot-"
1684
+ "oauth2"
1678
1685
  msgstr ""
1679
1686
 
1680
1687
  #: core/checks.py:41
@@ -1685,8 +1692,9 @@ msgstr ""
1685
1692
 
1686
1693
  #: core/checks.py:45
1687
1694
  msgid ""
1688
- "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/"
1689
- "radicale.html#radicale-oauth2"
1695
+ "Visit : "
1696
+ "https://modoboa.readthedocs.io/en/latest/manual_installation/radicale.html#radicale-"
1697
+ "oauth2"
1690
1698
  msgstr ""
1691
1699
 
1692
1700
  #: core/constants.py:6
@@ -1876,7 +1884,8 @@ msgstr[1] "La password deve contenere almeno {} caratteri speciali."
1876
1884
  #: core/password_validation.py:70
1877
1885
  msgid "Your password must contain a combination of different character types."
1878
1886
  msgstr ""
1879
- "La tua password deve contenere una combinazione di diversi tipi di carattere."
1887
+ "La tua password deve contenere una combinazione di diversi tipi di "
1888
+ "carattere."
1880
1889
 
1881
1890
  #: core/sms_backends/ovh.py:21 core/sms_backends/ovh.py:102
1882
1891
  msgid "API endpoint"
@@ -1996,7 +2005,7 @@ msgstr "Nessuno"
1996
2005
 
1997
2006
  #: dmarc/models.py:11
1998
2007
  msgid "Quarantine"
1999
- msgstr "Quarantina"
2008
+ msgstr "Quarantena"
2000
2009
 
2001
2010
  #: dmarc/models.py:12
2002
2011
  msgid "Reject"
@@ -2185,8 +2194,8 @@ msgstr ""
2185
2194
  #: imap_migration/app_settings.py:76
2186
2195
  msgid ""
2187
2196
  "A comma seperated list of folders to explicitly include in sync even if "
2188
- "filtered by the Folder Filter Exclusions. Example: debian.user, debian."
2189
- "personal "
2197
+ "filtered by the Folder Filter Exclusions. Example: debian.user, "
2198
+ "debian.personal "
2190
2199
  msgstr ""
2191
2200
 
2192
2201
  #: imap_migration/apps.py:20
@@ -2195,12 +2204,6 @@ msgstr ""
2195
2204
  msgid "IMAP Migration"
2196
2205
  msgstr "Migrazione IMAP"
2197
2206
 
2198
- #: imap_migration/auth_backends.py:49 webmail/lib/imaputils.py:240
2199
- #, fuzzy, python-brace-format
2200
- #| msgid "Connection to IMAP server failed: %s"
2201
- msgid "Connection to IMAP server failed: {error}"
2202
- msgstr "Connessione al server IMAP fallita: %s"
2203
-
2204
2207
  #: imap_migration/checks.py:12
2205
2208
  msgid ""
2206
2209
  "Automatic domain/mailbox creation is disabled which means IMAP "
@@ -2291,8 +2294,8 @@ msgid ""
2291
2294
  "Maximum number of allowed domains for a new administrator. (0 to deny any "
2292
2295
  "creation, -1 to allow unlimited creations)"
2293
2296
  msgstr ""
2294
- "Il numero massimo di domini per nuovi amministratori. (0 per disabilitare la "
2295
- "creazione, -1 per permettere la creazione illimitata)"
2297
+ "Il numero massimo di domini per nuovi amministratori. (0 per disabilitare la"
2298
+ " creazione, -1 per permettere la creazione illimitata)"
2296
2299
 
2297
2300
  #: limits/app_settings.py:49 limits/app_settings.py:123 limits/constants.py:22
2298
2301
  #: limits/constants.py:76
@@ -2301,8 +2304,8 @@ msgstr "Alias del dominio"
2301
2304
 
2302
2305
  #: limits/app_settings.py:52
2303
2306
  msgid ""
2304
- "Maximum number of allowed domain aliases for a new administrator. (0 to deny "
2305
- "any creation, -1 to allow unlimited creations)"
2307
+ "Maximum number of allowed domain aliases for a new administrator. (0 to deny"
2308
+ " any creation, -1 to allow unlimited creations)"
2306
2309
  msgstr ""
2307
2310
  "Il numero massimo di alias per nuovi amministratori. (0 per disabilitare la "
2308
2311
  "creazione, -1 per permettere la creazione illimitata)"
@@ -2354,11 +2357,11 @@ msgstr "Abilita o disabilita i limiti per dominio"
2354
2357
 
2355
2358
  #: limits/app_settings.py:114
2356
2359
  msgid ""
2357
- "Maximum number of allowed domain administrators for a new domain. (0 to deny "
2358
- "any creation, -1 to allow unlimited creations)"
2360
+ "Maximum number of allowed domain administrators for a new domain. (0 to deny"
2361
+ " any creation, -1 to allow unlimited creations)"
2359
2362
  msgstr ""
2360
- "Numero massimo di amministratori di dominio consentiti per un nuovo dominio. "
2361
- "(0 per negare qualunque creazione, -1 per permetterne senza limiti)"
2363
+ "Numero massimo di amministratori di dominio consentiti per un nuovo dominio."
2364
+ " (0 per negare qualunque creazione, -1 per permetterne senza limiti)"
2362
2365
 
2363
2366
  #: limits/app_settings.py:126
2364
2367
  msgid ""
@@ -2378,8 +2381,8 @@ msgstr ""
2378
2381
 
2379
2382
  #: limits/app_settings.py:149
2380
2383
  msgid ""
2381
- "Maximum number of allowed aliases for a new domain. (0 to deny any creation, "
2382
- "-1 to allow unlimited creations)"
2384
+ "Maximum number of allowed aliases for a new domain. (0 to deny any creation,"
2385
+ " -1 to allow unlimited creations)"
2383
2386
  msgstr ""
2384
2387
  "Numero massimo di alias consentiti per un nuovo dominio. (0 per negare "
2385
2388
  "qualunque creazione, -1 per permetterne senza limiti)"
@@ -2559,13 +2562,13 @@ msgstr ""
2559
2562
  msgid "Personal account information"
2560
2563
  msgstr "Informazioni Personali"
2561
2564
 
2562
- #: pdfcredentials/api/v2/serializers.py:81
2565
+ #: pdfcredentials/api/v2/serializers.py:86
2563
2566
  #, fuzzy
2564
2567
  #| msgid "Directory not found."
2565
2568
  msgid "Directory is not writable"
2566
2569
  msgstr "Cartella non trovata."
2567
2570
 
2568
- #: pdfcredentials/api/v2/serializers.py:102
2571
+ #: pdfcredentials/api/v2/serializers.py:114
2569
2572
  msgid "No document available for this user"
2570
2573
  msgstr "Non ci sono documenti disponibili er questo utente"
2571
2574
 
@@ -2619,8 +2622,8 @@ msgid ""
2619
2622
  "new document will be created each time a password is updated."
2620
2623
  msgstr ""
2621
2624
  "Generare un nuovo documento solo quando si crea un nuovo account. Se "
2622
- "impostato su no , un nuovo documento verrà creato ogni volta che la password "
2623
- "viene aggiornata."
2625
+ "impostato su no , un nuovo documento verrà creato ogni volta che la password"
2626
+ " viene aggiornata."
2624
2627
 
2625
2628
  #: pdfcredentials/app_settings.py:84
2626
2629
  msgid "Customization options"
@@ -2659,8 +2662,8 @@ msgid ""
2659
2662
  "Include required SMTP and IMAP connection information to configure a mail "
2660
2663
  "client, a tablet or a phone"
2661
2664
  msgstr ""
2662
- "Includi le informazioni di connessione SMTP e IMAP richieste per configurare "
2663
- "un client di posta, un tablet o telefono"
2665
+ "Includi le informazioni di connessione SMTP e IMAP richieste per configurare"
2666
+ " un client di posta, un tablet o telefono"
2664
2667
 
2665
2668
  #: pdfcredentials/app_settings.py:123 pdfcredentials/documents.py:133
2666
2669
  msgid "SMTP server address"
@@ -2777,7 +2780,8 @@ msgstr "Credenziali PDF"
2777
2780
 
2778
2781
  #: pdfcredentials/lib.py:29
2779
2782
  #, fuzzy
2780
- #| msgid "Failed to create the directory that will contain PDF documents (%s)"
2783
+ #| msgid ""
2784
+ #| "Failed to create the directory that will contain PDF documents (%s)"
2781
2785
  msgid "Can't write to selected directory to store PDF documents"
2782
2786
  msgstr "Impossibile creare la cartella che conterrà i documenti PDF (%s)"
2783
2787
 
@@ -2855,8 +2859,8 @@ msgstr ""
2855
2859
 
2856
2860
  #: rspamd/app_settings.py:21
2857
2861
  msgid ""
2858
- "Absolute path of the file which contains paths to DKIM private keys. Must be "
2859
- "readable by _rspamd group or user."
2862
+ "Absolute path of the file which contains paths to DKIM private keys. Must be"
2863
+ " readable by _rspamd group or user."
2860
2864
  msgstr ""
2861
2865
 
2862
2866
  #: rspamd/app_settings.py:30
@@ -2875,8 +2879,8 @@ msgstr ""
2875
2879
 
2876
2880
  #: rspamd/app_settings.py:53
2877
2881
  msgid ""
2878
- "Location of the rspamd dashboard. Can either be a relative URL (eg. '/"
2879
- "rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
2882
+ "Location of the rspamd dashboard. Can either be a relative URL (eg. "
2883
+ "'/rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
2880
2884
  "guidance on the Super-Admin dashboard."
2881
2885
  msgstr ""
2882
2886
 
@@ -3093,7 +3097,8 @@ msgid ""
3093
3097
  "Your password has been set. You may go ahead and <a href=\"%(url)s\">sign "
3094
3098
  "in</a> now."
3095
3099
  msgstr ""
3096
- "La tua password è stata impostata. Ora puoi <a href=\"%(url)s\">accedere</a>."
3100
+ "La tua password è stata impostata. Ora puoi <a "
3101
+ "href=\"%(url)s\">accedere</a>."
3097
3102
 
3098
3103
  #: templates/registration/password_reset_confirm.html:8
3099
3104
  msgid "Change password"
@@ -3188,8 +3193,8 @@ msgstr "Vecchia password"
3188
3193
 
3189
3194
  #: templates/registration/twofactor_code_verify.html:35
3190
3195
  msgid ""
3191
- "Enter the code from the two-factor app on your mobile device. If you've lost "
3192
- "your device, you may enter one of your recovery codes."
3196
+ "Enter the code from the two-factor app on your mobile device. If you've lost"
3197
+ " your device, you may enter one of your recovery codes."
3193
3198
  msgstr ""
3194
3199
 
3195
3200
  #: templates/registration/twofactor_code_verify.html:42
@@ -3288,7 +3293,8 @@ msgstr "Modalità di visualizzazione del messaggio predefinita"
3288
3293
  #| msgid "The default redirection used when no application is specified"
3289
3294
  msgid "The default mode used when displaying a message"
3290
3295
  msgstr ""
3291
- "La modalità di visualizzazione predefinita quando viene mostrato il messaggio"
3296
+ "La modalità di visualizzazione predefinita quando viene mostrato il "
3297
+ "messaggio"
3292
3298
 
3293
3299
  #: webmail/app_settings.py:133
3294
3300
  msgid "Enable HTML links display"
@@ -3392,16 +3398,32 @@ msgstr "Testo signature"
3392
3398
  msgid "User defined email signature"
3393
3399
  msgstr "Signature delle e-mail personalizzato dall'utente"
3394
3400
 
3401
+ #: webmail/exceptions.py:18
3402
+ #, fuzzy
3403
+ #| msgid "Server address"
3404
+ msgid "Server response"
3405
+ msgstr "Indirizzo del server"
3406
+
3395
3407
  #: webmail/lib/attachments.py:112
3396
3408
  #, fuzzy
3397
3409
  #| msgid "Failed to remove filter"
3398
3410
  msgid "Failed to remove attachment: "
3399
3411
  msgstr "Rimozione allegato fallita: "
3400
3412
 
3413
+ #: webmail/lib/imapemail.py:272
3414
+ msgid "wrote:"
3415
+ msgstr ""
3416
+
3401
3417
  #: webmail/lib/imapemail.py:306
3402
3418
  msgid "Date"
3403
3419
  msgstr "Data"
3404
3420
 
3421
+ #: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
3422
+ #, fuzzy
3423
+ #| msgid "sent messages"
3424
+ msgid "Original message"
3425
+ msgstr "Tutti i messaggi"
3426
+
3405
3427
  #: webmail/lib/imaputils.py:221
3406
3428
  msgid "Failed to retrieve hierarchy delimiter"
3407
3429
  msgstr "Impossibile recuperare il delimitatore delle gerarchie"
@@ -3432,3 +3454,7 @@ msgstr ""
3432
3454
  #, python-format
3433
3455
  msgid "Attachment is too big (limit: %s)"
3434
3456
  msgstr "L'allegato è troppo grande (limite: %s)"
3457
+
3458
+ #, fuzzy, python-brace-format
3459
+ #~ msgid "Connection to IMAP server failed: {error}"
3460
+ #~ msgstr "Connessione al server IMAP fallita: %s"