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
@@ -7,7 +7,7 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: \n"
9
9
  "Report-Msgid-Bugs-To: \n"
10
- "POT-Creation-Date: 2025-07-27 10:50+0200\n"
10
+ "POT-Creation-Date: 2025-08-28 09:41+0200\n"
11
11
  "PO-Revision-Date: 2023-02-17 22:03+0200\n"
12
12
  "Last-Translator: Ossi Mäntylahti <ossiman@gmail.com>\n"
13
13
  "Language-Team: \n"
@@ -33,70 +33,71 @@ msgstr ""
33
33
  "Postilaatikoihin sovellettava oletuskiintiö megatavuina. Arvo 0 tarkoittaa, "
34
34
  "ettei kiintiötä ole."
35
35
 
36
- #: admin/api/v1/serializers.py:88
36
+ #: admin/api/v1/serializers.py:94
37
37
  #, fuzzy
38
38
  msgid "domain alias with this name already exists"
39
39
  msgstr "Alias tällä nimellä on jo olemassa"
40
40
 
41
- #: admin/api/v1/serializers.py:98
41
+ #: admin/api/v1/serializers.py:104
42
42
  msgid "No authorized MX record found for this domain"
43
43
  msgstr "Tälle verkkotunnukselle ei löytynyt valtuutettua MX-tietuetta"
44
44
 
45
- #: admin/api/v1/serializers.py:116
45
+ #: admin/api/v1/serializers.py:122
46
46
  msgid "Cannot be greater than domain quota"
47
47
  msgstr "Ei voi olla suurempi kuin verkkotunnuksen kiintiö"
48
48
 
49
- #: admin/api/v1/serializers.py:162 admin/api/v1/serializers.py:357
50
- #: admin/api/v2/serializers.py:548 admin/models/alias.py:44
49
+ #: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
50
+ #: admin/api/v2/serializers.py:564 admin/models/alias.py:44
51
51
  msgid "Permission denied."
52
52
  msgstr "Lupa evätty."
53
53
 
54
- #: admin/api/v1/serializers.py:224 admin/api/v2/serializers.py:88
55
- #: admin/api/v2/serializers.py:470 core/api/v2/serializers.py:235
56
- #: core/api/v2/serializers.py:237 core/api/v2/serializers.py:246
54
+ #: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
55
+ #: admin/api/v2/serializers.py:486 core/api/v2/serializers.py:255
56
+ #: core/api/v2/serializers.py:257 core/api/v2/serializers.py:266
57
57
  #: transport/backends.py:40
58
58
  msgid "This field is required"
59
59
  msgstr "Tämä kenttä on pakollinen"
60
60
 
61
- #: admin/api/v1/serializers.py:236
61
+ #: admin/api/v1/serializers.py:243
62
62
  msgid ""
63
63
  "List of administered domains (resellers and domain administrators only)."
64
64
  msgstr ""
65
65
  "Luettelo hallinnoiduista verkkotunnuksista (vain jälleenmyyjät ja "
66
66
  "verkkotunnusten ylläpitäjät)."
67
67
 
68
- #: admin/api/v1/serializers.py:330 admin/api/v2/serializers.py:530
68
+ #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:546
69
69
  msgid "Not allowed for this role."
70
70
  msgstr "Ei sallittu tässä roolissa."
71
71
 
72
- #: admin/api/v1/serializers.py:348
72
+ #: admin/api/v1/serializers.py:355
73
73
  msgid "Must be equal to mailbox full_address"
74
74
  msgstr "Täytyy olla yhtä suuri kuin postilaatikon koko osoite"
75
75
 
76
- #: admin/api/v1/serializers.py:390 admin/api/v2/serializers.py:582
76
+ #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:598
77
77
  #: calendars/serializers.py:175 calendars/serializers.py:177
78
+ #: pdfcredentials/api/v2/serializers.py:91
78
79
  msgid "This field is required."
79
80
  msgstr "Tämä kenttä on pakollinen."
80
81
 
81
- #: admin/api/v1/serializers.py:402 admin/api/v2/serializers.py:599
82
+ #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:615
82
83
  msgid "Local domain {} does not exist"
83
84
  msgstr "Paikallista verkkotunnusta {} ei ole olemassa"
84
85
 
85
- #: admin/api/v1/serializers.py:492
86
+ #: admin/api/v1/serializers.py:499
86
87
  msgid "A list of recipient"
87
88
  msgstr "Luettelo vastaanottajista"
88
89
 
89
- #: admin/api/v1/serializers.py:508 admin/api/v2/viewsets.py:286
90
+ #: admin/api/v1/serializers.py:515 admin/api/v2/viewsets.py:286
90
91
  #, fuzzy
91
92
  #| msgid "User '%s' already exists"
92
93
  msgid "This alias already exists"
93
94
  msgstr "Käyttäjä '%s' on jo olemassa"
94
95
 
95
- #: admin/api/v1/serializers.py:544
96
+ #: admin/api/v1/serializers.py:551
96
97
  msgid "You don't have access to this domain."
97
98
  msgstr "Sinulla ei ole pääsyä tähän verkkotunnukseen."
98
99
 
99
- #: admin/api/v1/serializers.py:553
100
+ #: admin/api/v1/serializers.py:560
100
101
  msgid "You don't have access to this mailbox."
101
102
  msgstr "Sinulla ei ole pääsyä tähän postilaatikkoon."
102
103
 
@@ -104,58 +105,58 @@ msgstr "Sinulla ei ole pääsyä tähän postilaatikkoon."
104
105
  msgid "Here is your new Modoboa password: {}"
105
106
  msgstr "Tässä on uusi Modoboa-salasanasi: {}"
106
107
 
107
- #: admin/api/v2/serializers.py:80
108
+ #: admin/api/v2/serializers.py:82
108
109
  msgid "DKIM keys storage directory not configured"
109
110
  msgstr "DKIM-avainten tallennushakemistoa ei ole määritetty"
110
111
 
111
- #: admin/api/v2/serializers.py:92
112
+ #: admin/api/v2/serializers.py:94
112
113
  msgid "This field is valid when type is relaydomain"
113
114
  msgstr ""
114
115
 
115
- #: admin/api/v2/serializers.py:99
116
+ #: admin/api/v2/serializers.py:101
116
117
  msgid "You can't define an unlimited quota."
117
118
  msgstr "Et voi määritellä rajoittamatonta kiintiötä."
118
119
 
119
- #: admin/api/v2/serializers.py:133
120
+ #: admin/api/v2/serializers.py:135
120
121
  #, python-format
121
122
  msgid "User '%s' already exists"
122
123
  msgstr "Käyttäjä '%s' on jo olemassa"
123
124
 
124
- #: admin/api/v2/serializers.py:248 admin/api/v2/serializers.py:254
125
+ #: admin/api/v2/serializers.py:250 admin/api/v2/serializers.py:256
125
126
  msgid "Must be a positive integer"
126
127
  msgstr "Täytyy olla positiivinen kokonaisluku"
127
128
 
128
- #: admin/api/v2/serializers.py:263
129
+ #: admin/api/v2/serializers.py:265
129
130
  msgid "openssl not found, please make sure it is installed."
130
131
  msgstr "openssl ei löydy, varmista, että se on asennettu."
131
132
 
132
- #: admin/api/v2/serializers.py:266 pdfcredentials/api/v2/serializers.py:79
133
+ #: admin/api/v2/serializers.py:268 pdfcredentials/api/v2/serializers.py:84
133
134
  msgid "Directory not found."
134
135
  msgstr "Hakemistoa ei löydy."
135
136
 
136
- #: admin/api/v2/serializers.py:277
137
+ #: admin/api/v2/serializers.py:279
137
138
  msgid "This field only allows valid IP addresses (or networks)"
138
139
  msgstr ""
139
140
 
140
- #: admin/api/v2/serializers.py:290
141
+ #: admin/api/v2/serializers.py:292
141
142
  msgid "Please disable imap migration before disabling this option."
142
143
  msgstr ""
143
144
 
144
- #: admin/api/v2/serializers.py:303
145
+ #: admin/api/v2/serializers.py:305
145
146
  msgid "Define at least one authorized network / address"
146
147
  msgstr "Määritä vähintään yksi valtuutettu verkko/osoite"
147
148
 
148
- #: admin/api/v2/serializers.py:565
149
+ #: admin/api/v2/serializers.py:581
149
150
  msgid "The left part of an email address can't be more than 64 characters."
150
151
  msgstr ""
151
152
 
152
- #: admin/api/v2/serializers.py:587
153
+ #: admin/api/v2/serializers.py:603
153
154
  #, fuzzy
154
155
  #| msgid "A mailbox is required"
155
156
  msgid "A mailbox is required to create aliases."
156
157
  msgstr "Tarvitaan postilaatikko"
157
158
 
158
- #: admin/api/v2/serializers.py:751
159
+ #: admin/api/v2/serializers.py:772
159
160
  #, fuzzy
160
161
  #| msgid "Unknown tag {}"
161
162
  msgid "Unknown status"
@@ -169,14 +170,6 @@ msgstr "Sinulla ei ole pääsyä tähän verkkotunnukseen"
169
170
  msgid "You can't delete your own domain"
170
171
  msgstr "Et voi poistaa omaa verkkotunnustasi"
171
172
 
172
- #: admin/api/v2/viewsets.py:407
173
- msgid "No alarm ID provided"
174
- msgstr ""
175
-
176
- #: admin/api/v2/viewsets.py:411
177
- msgid "Received invalid alarm id(s)"
178
- msgstr ""
179
-
180
173
  #: admin/app_settings.py:19 limits/app_settings.py:38 limits/constants.py:13
181
174
  msgid "Domains"
182
175
  msgstr "Verkkotunnukset"
@@ -397,7 +390,7 @@ msgstr ""
397
390
  "Luo alias, joka käyttää vanhaa osoitetta, kun postilaatikko nimetään "
398
391
  "uudelleen."
399
392
 
400
- #: admin/app_settings.py:287 core/api/v2/viewsets.py:162
393
+ #: admin/app_settings.py:287 core/api/v2/viewsets.py:174
401
394
  msgid "Administration"
402
395
  msgstr "Hallinnointinäkymä"
403
396
 
@@ -426,7 +419,7 @@ msgstr "verkkotunnuksen alias"
426
419
  msgid "Account import failed (%s): domain does not exist"
427
420
  msgstr "Tilin tuonti epäonnistui (%s): verkkotunnusta ei ole olemassa"
428
421
 
429
- #: admin/handlers.py:242 admin/models/mailbox.py:340
422
+ #: admin/handlers.py:242 admin/models/mailbox.py:342
430
423
  msgid "Mailbox {} already exists"
431
424
  msgstr "Postilaatikko {} on jo olemassa"
432
425
 
@@ -700,7 +693,7 @@ msgstr "Kiintiö on määritettävä"
700
693
  msgid "{}: domain quota exceeded"
701
694
  msgstr "Verkkotunnuksen kiintiö ylitetty"
702
695
 
703
- #: admin/models/mailbox.py:308
696
+ #: admin/models/mailbox.py:310
704
697
  msgid "Domain does not exist"
705
698
  msgstr "Verkkotunnusta ei ole olemassa"
706
699
 
@@ -876,7 +869,7 @@ msgid ""
876
869
  "Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
877
870
  msgstr ""
878
871
 
879
- #: calendars/app_settings.py:89 core/api/v2/viewsets.py:172
872
+ #: calendars/app_settings.py:89 core/api/v2/viewsets.py:195
880
873
  msgid "Calendars"
881
874
  msgstr ""
882
875
 
@@ -914,7 +907,7 @@ msgstr "LDAP-synkronointiasetukset"
914
907
  msgid "Interval in seconds between 2 synchronization requests"
915
908
  msgstr ""
916
909
 
917
- #: contacts/app_settings.py:51 core/api/v2/viewsets.py:179
910
+ #: contacts/app_settings.py:51 core/api/v2/viewsets.py:185
918
911
  #, fuzzy
919
912
  #| msgid "Domains"
920
913
  msgid "Contacts"
@@ -966,12 +959,12 @@ msgstr "Virheellinen PIN-koodi"
966
959
  msgid "2FA is already enabled"
967
960
  msgstr "Kaksivaiheinen tunnistus (2FA) on jo käytössä"
968
961
 
969
- #: core/api/v1/serializers.py:87
962
+ #: core/api/v1/serializers.py:86
970
963
  #, python-format
971
- msgid "Failed TFA settings editing attempt from '%s' as user '%s'"
964
+ msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
972
965
  msgstr ""
973
966
 
974
- #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:425
967
+ #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:445
975
968
  #, fuzzy
976
969
  #| msgid "Old password"
977
970
  msgid "Invalid password"
@@ -985,44 +978,44 @@ msgstr "Kaksivaiheinen tunnistautuminen (2FA) ei ole käytössä"
985
978
  msgid "Local"
986
979
  msgstr "Paikallinen"
987
980
 
988
- #: core/api/v2/serializers.py:175 core/app_settings.py:17
981
+ #: core/api/v2/serializers.py:194 core/app_settings.py:17
989
982
  msgid "User profile"
990
983
  msgstr "Käyttäjäprofiili"
991
984
 
992
- #: core/api/v2/serializers.py:194 core/api/v2/serializers.py:201
993
- #: core/api/v2/serializers.py:208
985
+ #: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
986
+ #: core/api/v2/serializers.py:228
994
987
  msgid "Invalid syntax"
995
988
  msgstr "Virheellinen syntaksi"
996
989
 
997
- #: core/api/v2/serializers.py:213
990
+ #: core/api/v2/serializers.py:233
998
991
  msgid "Invalid rounds number"
999
992
  msgstr "Virheellinen kierrosluku"
1000
993
 
1001
- #: core/api/v2/serializers.py:413 core/forms.py:81
994
+ #: core/api/v2/serializers.py:433 core/forms.py:81
1002
995
  msgid "This code is invalid"
1003
996
  msgstr "Tämä koodi on virheellinen"
1004
997
 
1005
- #: core/api/v2/serializers.py:483 core/views/auth.py:194 core/views/auth.py:247
998
+ #: core/api/v2/serializers.py:503 core/views/auth.py:194 core/views/auth.py:247
1006
999
  msgid "Please use the following code to recover your Modoboa password: {}"
1007
1000
  msgstr "Käytä seuraavaa koodia saadaksesi takaisin Modoboa-salasanasi: {}"
1008
1001
 
1009
- #: core/api/v2/viewsets.py:164
1002
+ #: core/api/v2/viewsets.py:176
1010
1003
  #, fuzzy
1011
1004
  #| msgid "Administration"
1012
1005
  msgid "Administration console"
1013
1006
  msgstr "Hallinnointinäkymä"
1014
1007
 
1015
- #: core/api/v2/viewsets.py:174
1016
- msgid "Calendar"
1017
- msgstr ""
1018
-
1019
- #: core/api/v2/viewsets.py:181
1008
+ #: core/api/v2/viewsets.py:187
1020
1009
  #, fuzzy
1021
1010
  #| msgid "Address"
1022
1011
  msgid "Address book"
1023
1012
  msgstr "Osoite"
1024
1013
 
1025
- #: core/api/v2/viewsets.py:186 core/api/v2/viewsets.py:188
1014
+ #: core/api/v2/viewsets.py:197
1015
+ msgid "Calendar"
1016
+ msgstr ""
1017
+
1018
+ #: core/api/v2/viewsets.py:205 core/api/v2/viewsets.py:207
1026
1019
  #: webmail/app_settings.py:258 webmail/app_settings.py:265
1027
1020
  #, fuzzy
1028
1021
  #| msgid "E-mail"
@@ -1573,19 +1566,27 @@ msgstr "Lokitiedoston enimmäisikä"
1573
1566
  msgid "The maximum age in days of a log record"
1574
1567
  msgstr "Lokitietueen enimmäisikä päivinä"
1575
1568
 
1576
- #: 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
1577
1578
  msgid "Items per page"
1578
1579
  msgstr "Kohteita per sivu"
1579
1580
 
1580
- #: core/app_settings.py:728
1581
+ #: core/app_settings.py:739
1581
1582
  msgid "Number of displayed items per page"
1582
1583
  msgstr "Näytettävien kohteiden määrä sivua kohti"
1583
1584
 
1584
- #: core/app_settings.py:735
1585
+ #: core/app_settings.py:746
1585
1586
  msgid "Default top redirection"
1586
1587
  msgstr "Oletusarvoinen ylhäältä uudelleenohjaus"
1587
1588
 
1588
- #: core/app_settings.py:737
1589
+ #: core/app_settings.py:748
1589
1590
  msgid "The default redirection used when no application is specified"
1590
1591
  msgstr ""
1591
1592
  "Oletusarvoinen uudelleenohjaus, jota käytetään, kun sovellusta ei ole "
@@ -1623,8 +1624,8 @@ msgstr ""
1623
1624
 
1624
1625
  #: core/checks.py:34
1625
1626
  msgid ""
1626
- "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot."
1627
- "html#dovecot-oauth2"
1627
+ "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/"
1628
+ "dovecot.html#dovecot-oauth2"
1628
1629
  msgstr ""
1629
1630
 
1630
1631
  #: core/checks.py:41
@@ -2133,8 +2134,8 @@ msgstr ""
2133
2134
  #: imap_migration/app_settings.py:76
2134
2135
  msgid ""
2135
2136
  "A comma seperated list of folders to explicitly include in sync even if "
2136
- "filtered by the Folder Filter Exclusions. Example: debian.user, debian."
2137
- "personal "
2137
+ "filtered by the Folder Filter Exclusions. Example: debian.user, "
2138
+ "debian.personal "
2138
2139
  msgstr ""
2139
2140
 
2140
2141
  #: imap_migration/apps.py:20
@@ -2143,11 +2144,6 @@ msgstr ""
2143
2144
  msgid "IMAP Migration"
2144
2145
  msgstr "Automaattinen asetusten määrittäminen"
2145
2146
 
2146
- #: imap_migration/auth_backends.py:49 webmail/lib/imaputils.py:240
2147
- #, python-brace-format
2148
- msgid "Connection to IMAP server failed: {error}"
2149
- msgstr ""
2150
-
2151
2147
  #: imap_migration/checks.py:12
2152
2148
  msgid ""
2153
2149
  "Automatic domain/mailbox creation is disabled which means IMAP "
@@ -2497,13 +2493,13 @@ msgstr "Tilit"
2497
2493
  msgid "Personal account information"
2498
2494
  msgstr "Päivitä henkilökohtaiset tietosi"
2499
2495
 
2500
- #: pdfcredentials/api/v2/serializers.py:81
2496
+ #: pdfcredentials/api/v2/serializers.py:86
2501
2497
  #, fuzzy
2502
2498
  #| msgid "Directory not found."
2503
2499
  msgid "Directory is not writable"
2504
2500
  msgstr "Hakemistoa ei löydy."
2505
2501
 
2506
- #: pdfcredentials/api/v2/serializers.py:102
2502
+ #: pdfcredentials/api/v2/serializers.py:114
2507
2503
  #, fuzzy
2508
2504
  #| msgid "No information available for this domain."
2509
2505
  msgid "No document available for this user"
@@ -3333,16 +3329,32 @@ msgstr ""
3333
3329
  msgid "User defined email signature"
3334
3330
  msgstr ""
3335
3331
 
3332
+ #: webmail/exceptions.py:18
3333
+ #, fuzzy
3334
+ #| msgid "Server address"
3335
+ msgid "Server response"
3336
+ msgstr "Palvelimen osoite"
3337
+
3336
3338
  #: webmail/lib/attachments.py:112
3337
3339
  #, fuzzy
3338
3340
  #| msgid "Failed to create LDAP account: {}"
3339
3341
  msgid "Failed to remove attachment: "
3340
3342
  msgstr "LDAP-tilin luominen epäonnistui: {}"
3341
3343
 
3344
+ #: webmail/lib/imapemail.py:272
3345
+ msgid "wrote:"
3346
+ msgstr ""
3347
+
3342
3348
  #: webmail/lib/imapemail.py:306
3343
3349
  msgid "Date"
3344
3350
  msgstr "Päivämäärä"
3345
3351
 
3352
+ #: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
3353
+ #, fuzzy
3354
+ #| msgid "sent messages"
3355
+ msgid "Original message"
3356
+ msgstr "lähetetyt viestit"
3357
+
3346
3358
  #: webmail/lib/imaputils.py:221
3347
3359
  msgid "Failed to retrieve hierarchy delimiter"
3348
3360
  msgstr ""
Binary file