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
@@ -9,11 +9,10 @@ msgid ""
9
9
  msgstr ""
10
10
  "Project-Id-Version: Modoboa\n"
11
11
  "Report-Msgid-Bugs-To: \n"
12
- "POT-Creation-Date: 2025-07-27 10:50+0200\n"
12
+ "POT-Creation-Date: 2025-08-28 09:41+0200\n"
13
13
  "PO-Revision-Date: 2017-10-12 19:37+0000\n"
14
14
  "Last-Translator: Kostas Moumouris <moumouriskostas@gmail.com>\n"
15
- "Language-Team: Greek (Greece) (http://www.transifex.com/tonio/modoboa/"
16
- "language/el_GR/)\n"
15
+ "Language-Team: Greek (Greece) (http://www.transifex.com/tonio/modoboa/language/el_GR/)\n"
17
16
  "Language: el_GR\n"
18
17
  "MIME-Version: 1.0\n"
19
18
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -37,72 +36,73 @@ msgstr ""
37
36
  "Προκαθορισμένο quota σε MB που εφαρμόζεται στα γραμματοκιβώτια. Μια τιμή 0 "
38
37
  "σημαίνει ότι δεν υπάρχει quota. "
39
38
 
40
- #: admin/api/v1/serializers.py:88
39
+ #: admin/api/v1/serializers.py:94
41
40
  #, fuzzy
42
41
  msgid "domain alias with this name already exists"
43
42
  msgstr "Υπάρχει είδη αυτό το ψευδώνυμο"
44
43
 
45
- #: admin/api/v1/serializers.py:98
44
+ #: admin/api/v1/serializers.py:104
46
45
  msgid "No authorized MX record found for this domain"
47
46
  msgstr "Δεν υπάρχουν ΜΧ έγραφες για αυτό το domain "
48
47
 
49
- #: admin/api/v1/serializers.py:116
48
+ #: admin/api/v1/serializers.py:122
50
49
  msgid "Cannot be greater than domain quota"
51
50
  msgstr "Δεν μπορεί να είναι μεγαλύτερο από το domain quota."
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 "Η άδεια απορρίφθηκε."
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 "Αυτό το πεδίο είναι υποχρεωτικό"
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
  "Λίστα διαχειριζόμενων domains (αφορά μόνο μεταπωλητές και διαχειριστές "
70
69
  "domain)"
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 "Δεν επιτρέπεται για αυτόν τον ρόλο."
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 "Πρέπει να είναι ίσο με την full_address του γραμματοκιβωτίου"
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 "Αυτό το πεδίο απαιτείτε."
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 "Το τοπικός domain {} δεν υπάρχει"
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 "Λίστα παραληπτών"
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 "Ο χρήστης '%s' υπάρχει ήδη"
98
98
 
99
- #: admin/api/v1/serializers.py:544
99
+ #: admin/api/v1/serializers.py:551
100
100
  #, fuzzy
101
101
  #| msgid "You don't have access to this domain"
102
102
  msgid "You don't have access to this domain."
103
103
  msgstr "Δεν έχετε πρόσβαση σε αυτό το domain"
104
104
 
105
- #: admin/api/v1/serializers.py:553
105
+ #: admin/api/v1/serializers.py:560
106
106
  #, fuzzy
107
107
  #| msgid "You don't have access to this domain"
108
108
  msgid "You don't have access to this mailbox."
@@ -112,60 +112,60 @@ msgstr "Δεν έχετε πρόσβαση σε αυτό το domain"
112
112
  msgid "Here is your new Modoboa password: {}"
113
113
  msgstr ""
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 ""
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 "Δεν μπορείτε να ορίσετε ένα απεριόριστο quota."
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 "Ο χρήστης '%s' υπάρχει ήδη"
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 "Πρέπει να είναι θετικός ακέραιος"
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 ""
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
  #, fuzzy
142
142
  #| msgid "Domain not found."
143
143
  msgid "Directory not found."
144
144
  msgstr "To domain δεν βρέθηκε."
145
145
 
146
- #: admin/api/v2/serializers.py:277
146
+ #: admin/api/v2/serializers.py:279
147
147
  msgid "This field only allows valid IP addresses (or networks)"
148
148
  msgstr ""
149
149
 
150
- #: admin/api/v2/serializers.py:290
150
+ #: admin/api/v2/serializers.py:292
151
151
  msgid "Please disable imap migration before disabling this option."
152
152
  msgstr ""
153
153
 
154
- #: admin/api/v2/serializers.py:303
154
+ #: admin/api/v2/serializers.py:305
155
155
  msgid "Define at least one authorized network / address"
156
156
  msgstr "Ορίστε τουλάχιστον μια εξουσιοδοτημένη διεύθυνση / δίκτυο"
157
157
 
158
- #: admin/api/v2/serializers.py:565
158
+ #: admin/api/v2/serializers.py:581
159
159
  msgid "The left part of an email address can't be more than 64 characters."
160
160
  msgstr ""
161
161
 
162
- #: admin/api/v2/serializers.py:587
162
+ #: admin/api/v2/serializers.py:603
163
163
  #, fuzzy
164
164
  #| msgid "A mailbox is required"
165
165
  msgid "A mailbox is required to create aliases."
166
166
  msgstr "Απαιτείται γραμματοκιβώτιο"
167
167
 
168
- #: admin/api/v2/serializers.py:751
168
+ #: admin/api/v2/serializers.py:772
169
169
  #, fuzzy
170
170
  #| msgid "Unknown"
171
171
  msgid "Unknown status"
@@ -179,14 +179,6 @@ msgstr "Δεν έχετε πρόσβαση σε αυτό το domain"
179
179
  msgid "You can't delete your own domain"
180
180
  msgstr "Δεν μπορείτε να σβήσετε το δικό σας domain"
181
181
 
182
- #: admin/api/v2/viewsets.py:407
183
- msgid "No alarm ID provided"
184
- msgstr ""
185
-
186
- #: admin/api/v2/viewsets.py:411
187
- msgid "Received invalid alarm id(s)"
188
- msgstr ""
189
-
190
182
  #: admin/app_settings.py:19 limits/app_settings.py:38 limits/constants.py:13
191
183
  msgid "Domains"
192
184
  msgstr "Domains"
@@ -205,8 +197,8 @@ msgstr "Έγκυρα MXς"
205
197
 
206
198
  #: admin/app_settings.py:37
207
199
  msgid ""
208
- "A list of IP or network address every MX record should match. A warning will "
209
- "be sent if a record does not respect it."
200
+ "A list of IP or network address every MX record should match. A warning will"
201
+ " be sent if a record does not respect it."
210
202
  msgstr ""
211
203
  "Μια λίστα από IP ή δικτυακές διευθύνσεις που κάθε εγράφη MX πρέπει να "
212
204
  "ταιριάζει. "
@@ -220,8 +212,8 @@ msgid ""
220
212
  "Prevent the creation of a new domain if its MX record does not use one of "
221
213
  "the defined addresses."
222
214
  msgstr ""
223
- "Αποτροπή δημιουργίας νέου domain, εάν η εγράφη MX χρησιμοποιεί μια από τις "
224
- "είδη ορισμένες διευθύνσεις."
215
+ "Αποτροπή δημιουργίας νέου domain, εάν η εγράφη MX χρησιμοποιεί μια από τις"
216
+ " είδη ορισμένες διευθύνσεις."
225
217
 
226
218
  #: admin/app_settings.py:59
227
219
  #, fuzzy
@@ -371,7 +363,8 @@ msgid ""
371
363
  "value specified. A value of 0 means no quota."
372
364
  msgstr ""
373
365
  "Προκαθορισμένο quota γραμματοκιβωτίου (σε MB) που εφαρμόζεται στα νέα "
374
- "domains χωρίς προκαθορισμένες τιμές. Μια τιμή 0 σημαίνει ότι δεν έχει quota. "
366
+ "domains χωρίς προκαθορισμένες τιμές. Μια τιμή 0 σημαίνει ότι δεν έχει quota."
367
+ " "
375
368
 
376
369
  #: admin/app_settings.py:197
377
370
  #, fuzzy
@@ -392,14 +385,16 @@ msgstr "Αυτόματη αφαίρεση λογαριασμών"
392
385
  #: admin/app_settings.py:209
393
386
  msgid "When a mailbox is removed, also remove the associated account"
394
387
  msgstr ""
395
- "Όταν αφαιρείται ένα γραμματοκιβώτιο, να αφαιρείται και ο σχετικός λογαριασμός"
388
+ "Όταν αφαιρείται ένα γραμματοκιβώτιο, να αφαιρείται και ο σχετικός "
389
+ "λογαριασμός"
396
390
 
397
391
  #: admin/app_settings.py:218
398
392
  msgid "Automatic domain/mailbox creation"
399
393
  msgstr "Αυτόματη δημιουργία domain/γραμματοκιβωτίων"
400
394
 
401
395
  #: admin/app_settings.py:221
402
- msgid "Create a domain and a mailbox when an account is automatically created."
396
+ msgid ""
397
+ "Create a domain and a mailbox when an account is automatically created."
403
398
  msgstr ""
404
399
  "Δημιουργία domain και γραμματοκιβωτίου κατά την αυτόματη δημιουργία "
405
400
  "λογαριασμού"
@@ -414,7 +409,7 @@ msgstr ""
414
409
  "Δημιουργήστε ένα ψευδώνυμο χρησιμοποιώντας την παλιά διεύθυνση όταν "
415
410
  "μετονομάζεται ένα γραμματοκιβώτιο."
416
411
 
417
- #: admin/app_settings.py:287 core/api/v2/viewsets.py:162
412
+ #: admin/app_settings.py:287 core/api/v2/viewsets.py:174
418
413
  msgid "Administration"
419
414
  msgstr "Διαχείριση"
420
415
 
@@ -443,7 +438,7 @@ msgstr "Ψευδώνυμα (alias) domain "
443
438
  msgid "Account import failed (%s): domain does not exist"
444
439
  msgstr "Η εισαγωγή λογαριασμού απέτυχε (%s): το domain δεν υπάρχει"
445
440
 
446
- #: admin/handlers.py:242 admin/models/mailbox.py:340
441
+ #: admin/handlers.py:242 admin/models/mailbox.py:342
447
442
  msgid "Mailbox {} already exists"
448
443
  msgstr "Το γραμματοκιβώτιο {} είδη υπάρχει "
449
444
 
@@ -682,8 +677,8 @@ msgstr ""
682
677
  #| msgid "Default mailbox quota cannot be greater than domain quota"
683
678
  msgid "{}: default mailbox quota cannot be greater than domain quota"
684
679
  msgstr ""
685
- "Το προεπιλεγμένο quota για το γραμματοκιβώτιο δεν πρέπει να είναι μεγαλύτερο "
686
- "από το domain quota. "
680
+ "Το προεπιλεγμένο quota για το γραμματοκιβώτιο δεν πρέπει να είναι μεγαλύτερο"
681
+ " από το domain quota. "
687
682
 
688
683
  #: admin/models/domain_alias.py:36
689
684
  msgid "The alias name"
@@ -725,7 +720,7 @@ msgstr "Ένα quota απαιτείται "
725
720
  msgid "{}: domain quota exceeded"
726
721
  msgstr "Υπέρβαση του domain quota"
727
722
 
728
- #: admin/models/mailbox.py:308
723
+ #: admin/models/mailbox.py:310
729
724
  msgid "Domain does not exist"
730
725
  msgstr "Το domain δεν υπάρχει"
731
726
 
@@ -746,8 +741,8 @@ msgid ""
746
741
  msgstr ""
747
742
  "Η φήμη (reputation) του domain θα επηρεαστεί και υπάρχει πιθανότητα τα "
748
743
  "μηνύματα ηλεκτρονικού ταχυδρομείου που προέρχονται από αυτό να θεωρούνται "
749
- "ανεπιθύμητα. Θα πρέπει να επικοινωνήσετε με αυτούς τους παροχους και να τους "
750
- "ζητήσετε να σας βγάλουν από τη λίστα ανεπιθύμητων διευθύνσεων IP."
744
+ "ανεπιθύμητα. Θα πρέπει να επικοινωνήσετε με αυτούς τους παροχους και να τους"
745
+ " ζητήσετε να σας βγάλουν από τη λίστα ανεπιθύμητων διευθύνσεων IP."
751
746
 
752
747
  #: admin/templates/admin/notifications/domain_invalid_mx.html:3
753
748
  #, python-format
@@ -796,7 +791,8 @@ msgstr "Γενικά"
796
791
 
797
792
  #: autoreply/app_settings.py:18
798
793
  #, fuzzy
799
- #| msgid "Timeout in seconds between two auto-replies to the same recipient"
794
+ #| msgid ""
795
+ #| "Timeout in seconds between two auto-replies to the same recipient"
800
796
  msgid "Period between two auto-replies"
801
797
  msgstr ""
802
798
  "Χρονικό όριο λήξης σε δευτερόλεπτα μεταξύ δύο αυτόματων απαντήσεων προς τον "
@@ -804,7 +800,8 @@ msgstr ""
804
800
 
805
801
  #: autoreply/app_settings.py:20
806
802
  #, fuzzy
807
- #| msgid "Timeout in seconds between two auto-replies to the same recipient"
803
+ #| msgid ""
804
+ #| "Timeout in seconds between two auto-replies to the same recipient"
808
805
  msgid ""
809
806
  "Number of days to wait before sending a new auto-reply to the same recipient"
810
807
  msgstr ""
@@ -916,7 +913,7 @@ msgid ""
916
913
  "Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
917
914
  msgstr ""
918
915
 
919
- #: calendars/app_settings.py:89 core/api/v2/viewsets.py:172
916
+ #: calendars/app_settings.py:89 core/api/v2/viewsets.py:195
920
917
  msgid "Calendars"
921
918
  msgstr ""
922
919
 
@@ -954,7 +951,7 @@ msgstr "Ρυθμίσεις LDAP"
954
951
  msgid "Interval in seconds between 2 synchronization requests"
955
952
  msgstr ""
956
953
 
957
- #: contacts/app_settings.py:51 core/api/v2/viewsets.py:179
954
+ #: contacts/app_settings.py:51 core/api/v2/viewsets.py:185
958
955
  #, fuzzy
959
956
  #| msgid "Domains"
960
957
  msgid "Contacts"
@@ -1008,12 +1005,12 @@ msgstr "Λάθος γραμμή"
1008
1005
  msgid "2FA is already enabled"
1009
1006
  msgstr ""
1010
1007
 
1011
- #: core/api/v1/serializers.py:87
1008
+ #: core/api/v1/serializers.py:86
1012
1009
  #, python-format
1013
- msgid "Failed TFA settings editing attempt from '%s' as user '%s'"
1010
+ msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
1014
1011
  msgstr ""
1015
1012
 
1016
- #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:425
1013
+ #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:445
1017
1014
  #, fuzzy
1018
1015
  #| msgid "Old password"
1019
1016
  msgid "Invalid password"
@@ -1027,44 +1024,45 @@ msgstr ""
1027
1024
  msgid "Local"
1028
1025
  msgstr "Τοπικός"
1029
1026
 
1030
- #: core/api/v2/serializers.py:175 core/app_settings.py:17
1027
+ #: core/api/v2/serializers.py:194 core/app_settings.py:17
1031
1028
  msgid "User profile"
1032
1029
  msgstr "Προφίλ Χρήστη"
1033
1030
 
1034
- #: core/api/v2/serializers.py:194 core/api/v2/serializers.py:201
1035
- #: core/api/v2/serializers.py:208
1031
+ #: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
1032
+ #: core/api/v2/serializers.py:228
1036
1033
  msgid "Invalid syntax"
1037
1034
  msgstr "Μη έγκυρη σύνταξη"
1038
1035
 
1039
- #: core/api/v2/serializers.py:213
1036
+ #: core/api/v2/serializers.py:233
1040
1037
  msgid "Invalid rounds number"
1041
1038
  msgstr "Λάθος αριθμός επαναλήψεων "
1042
1039
 
1043
- #: core/api/v2/serializers.py:413 core/forms.py:81
1040
+ #: core/api/v2/serializers.py:433 core/forms.py:81
1044
1041
  msgid "This code is invalid"
1045
1042
  msgstr ""
1046
1043
 
1047
- #: core/api/v2/serializers.py:483 core/views/auth.py:194 core/views/auth.py:247
1044
+ #: core/api/v2/serializers.py:503 core/views/auth.py:194
1045
+ #: core/views/auth.py:247
1048
1046
  msgid "Please use the following code to recover your Modoboa password: {}"
1049
1047
  msgstr ""
1050
1048
 
1051
- #: core/api/v2/viewsets.py:164
1049
+ #: core/api/v2/viewsets.py:176
1052
1050
  #, fuzzy
1053
1051
  #| msgid "Administration"
1054
1052
  msgid "Administration console"
1055
1053
  msgstr "Διαχείριση"
1056
1054
 
1057
- #: core/api/v2/viewsets.py:174
1058
- msgid "Calendar"
1059
- msgstr ""
1060
-
1061
- #: core/api/v2/viewsets.py:181
1055
+ #: core/api/v2/viewsets.py:187
1062
1056
  #, fuzzy
1063
1057
  #| msgid "Address"
1064
1058
  msgid "Address book"
1065
1059
  msgstr "Διεύθυνση"
1066
1060
 
1067
- #: core/api/v2/viewsets.py:186 core/api/v2/viewsets.py:188
1061
+ #: core/api/v2/viewsets.py:197
1062
+ msgid "Calendar"
1063
+ msgstr ""
1064
+
1065
+ #: core/api/v2/viewsets.py:205 core/api/v2/viewsets.py:207
1068
1066
  #: webmail/app_settings.py:258 webmail/app_settings.py:265
1069
1067
  #, fuzzy
1070
1068
  #| msgid "E-mail"
@@ -1243,8 +1241,8 @@ msgstr "Χρήση ασφαλής σύνδεσης"
1243
1241
  #: core/app_settings.py:221
1244
1242
  msgid "Use an SSL/STARTTLS connection to access the LDAP server"
1245
1243
  msgstr ""
1246
- "Χρησιμοποιήστε μια σύνδεση SSL / STARTTLS για να συνδεθήκατε στον διακομιστή "
1247
- "LDAP"
1244
+ "Χρησιμοποιήστε μια σύνδεση SSL / STARTTLS για να συνδεθήκατε στον διακομιστή"
1245
+ " LDAP"
1248
1246
 
1249
1247
  #: core/app_settings.py:228
1250
1248
  msgid "Active Directory"
@@ -1260,11 +1258,11 @@ msgstr "Groups Διαχειριστών"
1260
1258
 
1261
1259
  #: core/app_settings.py:239
1262
1260
  msgid ""
1263
- "Members of those LDAP Posix groups will be created as domain administrators. "
1264
- "Use ';' characters to separate groups."
1261
+ "Members of those LDAP Posix groups will be created as domain administrators."
1262
+ " Use ';' characters to separate groups."
1265
1263
  msgstr ""
1266
- "Τα μέλη αυτών των LDAP Posix ομάδων χρηστών θα δημιουργηθούν ως διαχειριστές "
1267
- "domain. Χρησιμοποιείστε τον χαραχτήρα ';' για να ξεχωρίσετε τις ομάδες."
1264
+ "Τα μέλη αυτών των LDAP Posix ομάδων χρηστών θα δημιουργηθούν ως διαχειριστές"
1265
+ " domain. Χρησιμοποιείστε τον χαραχτήρα ';' για να ξεχωρίσετε τις ομάδες."
1268
1266
 
1269
1267
  #: core/app_settings.py:248
1270
1268
  msgid "Group type"
@@ -1342,8 +1340,8 @@ msgid ""
1342
1340
  "An optional filter string (e.g. '(objectClass=person)'). In order to be "
1343
1341
  "valid, it must be enclosed in parentheses."
1344
1342
  msgstr ""
1345
- "Προαιρετικό φίλτρο (π.χ. '(objectClass=person)'). Για να είναι έγκυρο πρέπει "
1346
- "να περικλείεται σε παρενθέσεις."
1343
+ "Προαιρετικό φίλτρο (π.χ. '(objectClass=person)'). Για να είναι έγκυρο πρέπει"
1344
+ " να περικλείεται σε παρενθέσεις."
1347
1345
 
1348
1346
  #: core/app_settings.py:339
1349
1347
  msgid "User DN template"
@@ -1465,14 +1463,16 @@ msgstr ""
1465
1463
 
1466
1464
  #: core/app_settings.py:506
1467
1465
  #, fuzzy
1468
- #| msgid "Display custom RSS feed to resellers and domain administrators"
1466
+ #| msgid ""
1467
+ #| "Display custom RSS feed to resellers and domain administrators"
1469
1468
  msgid "Display custom RSS feed to super admins"
1470
1469
  msgstr ""
1471
1470
  "Προβολή κατά παραγγελία RSS feed για μεταπωλητές και διαχειριστές τομέα"
1472
1471
 
1473
1472
  #: core/app_settings.py:509
1474
1473
  #, fuzzy
1475
- #| msgid "Display custom RSS feed to resellers and domain administrators"
1474
+ #| msgid ""
1475
+ #| "Display custom RSS feed to resellers and domain administrators"
1476
1476
  msgid "Display custom RSS feed also to super administrators"
1477
1477
  msgstr ""
1478
1478
  "Προβολή κατά παραγγελία RSS feed για μεταπωλητές και διαχειριστές τομέα"
@@ -1595,8 +1595,8 @@ msgstr "Όριο απενεργοποιημένων λογαριασμών "
1595
1595
 
1596
1596
  #: core/app_settings.py:686
1597
1597
  msgid ""
1598
- "Allow the administrator to set a threshold (in days) beyond which an account "
1599
- "is considered inactive if the user hasn't logged in"
1598
+ "Allow the administrator to set a threshold (in days) beyond which an account"
1599
+ " is considered inactive if the user hasn't logged in"
1600
1600
  msgstr ""
1601
1601
 
1602
1602
  #: core/app_settings.py:695
@@ -1605,8 +1605,8 @@ msgstr "Όριο απενεργοποιημένων λογαριασμών "
1605
1605
 
1606
1606
  #: core/app_settings.py:698
1607
1607
  msgid ""
1608
- "An account with a last login date greater than this threshold (in days) will "
1609
- "be considered as inactive"
1608
+ "An account with a last login date greater than this threshold (in days) will"
1609
+ " be considered as inactive"
1610
1610
  msgstr "Όριο (σε ημέρες) για να απενεργοποιηθεί ένας Λογαριασμός."
1611
1611
 
1612
1612
  #: core/app_settings.py:707
@@ -1625,19 +1625,27 @@ msgstr "Μέγιστος χρόνος καταγραφής των log"
1625
1625
  msgid "The maximum age in days of a log record"
1626
1626
  msgstr "Μέγιστη διάρκεια σε ημέρες καταγραφής των log"
1627
1627
 
1628
- #: core/app_settings.py:726
1628
+ #: core/app_settings.py:727
1629
+ msgid "Retention time in message history"
1630
+ msgstr ""
1631
+
1632
+ #: core/app_settings.py:730
1633
+ msgid "Retention time (in days) of a message in the message history section"
1634
+ msgstr ""
1635
+
1636
+ #: core/app_settings.py:737
1629
1637
  msgid "Items per page"
1630
1638
  msgstr "Εμφανίσεις ανά σελίδα"
1631
1639
 
1632
- #: core/app_settings.py:728
1640
+ #: core/app_settings.py:739
1633
1641
  msgid "Number of displayed items per page"
1634
1642
  msgstr "Αριθμός εμφανίσεων ανά σελίδα"
1635
1643
 
1636
- #: core/app_settings.py:735
1644
+ #: core/app_settings.py:746
1637
1645
  msgid "Default top redirection"
1638
1646
  msgstr "Κύριες προκαθορισμένες αναδρομολογήσεις"
1639
1647
 
1640
- #: core/app_settings.py:737
1648
+ #: core/app_settings.py:748
1641
1649
  msgid "The default redirection used when no application is specified"
1642
1650
  msgstr ""
1643
1651
  "Προκαθορισμένες αναδρομολογήσεις που χρησιμοποιούνται όταν δεν υπάρχουν "
@@ -1672,8 +1680,9 @@ msgstr ""
1672
1680
 
1673
1681
  #: core/checks.py:34
1674
1682
  msgid ""
1675
- "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot."
1676
- "html#dovecot-oauth2"
1683
+ "Visit : "
1684
+ "https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot.html#dovecot-"
1685
+ "oauth2"
1677
1686
  msgstr ""
1678
1687
 
1679
1688
  #: core/checks.py:41
@@ -1684,8 +1693,9 @@ msgstr ""
1684
1693
 
1685
1694
  #: core/checks.py:45
1686
1695
  msgid ""
1687
- "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/"
1688
- "radicale.html#radicale-oauth2"
1696
+ "Visit : "
1697
+ "https://modoboa.readthedocs.io/en/latest/manual_installation/radicale.html#radicale-"
1698
+ "oauth2"
1689
1699
  msgstr ""
1690
1700
 
1691
1701
  #: core/constants.py:6
@@ -1824,7 +1834,8 @@ msgstr ""
1824
1834
  #: core/models.py:150
1825
1835
  msgid "Failed to update password: LDAP module not installed"
1826
1836
  msgstr ""
1827
- "Σφάλμα κατά την ενημέρωση του κωδικού: το LDAP module δεν είναι εγκατεστημένο"
1837
+ "Σφάλμα κατά την ενημέρωση του κωδικού: το LDAP module δεν είναι "
1838
+ "εγκατεστημένο"
1828
1839
 
1829
1840
  #: core/models.py:185 policyd/core.py:117
1830
1841
  msgid "account"
@@ -2189,8 +2200,8 @@ msgstr ""
2189
2200
  #: imap_migration/app_settings.py:76
2190
2201
  msgid ""
2191
2202
  "A comma seperated list of folders to explicitly include in sync even if "
2192
- "filtered by the Folder Filter Exclusions. Example: debian.user, debian."
2193
- "personal "
2203
+ "filtered by the Folder Filter Exclusions. Example: debian.user, "
2204
+ "debian.personal "
2194
2205
  msgstr ""
2195
2206
 
2196
2207
  #: imap_migration/apps.py:20
@@ -2199,12 +2210,6 @@ msgstr ""
2199
2210
  msgid "IMAP Migration"
2200
2211
  msgstr "Μετάβαση IMAP"
2201
2212
 
2202
- #: imap_migration/auth_backends.py:49 webmail/lib/imaputils.py:240
2203
- #, fuzzy, python-brace-format
2204
- #| msgid "Connection to IMAP server failed: %s"
2205
- msgid "Connection to IMAP server failed: {error}"
2206
- msgstr "Η σύνδεση στο διακομιστή IMAP απέτυχε:%s"
2207
-
2208
2213
  #: imap_migration/checks.py:12
2209
2214
  msgid ""
2210
2215
  "Automatic domain/mailbox creation is disabled which means IMAP "
@@ -2305,8 +2310,8 @@ msgstr "Ψευδώνυμα domain"
2305
2310
 
2306
2311
  #: limits/app_settings.py:52
2307
2312
  msgid ""
2308
- "Maximum number of allowed domain aliases for a new administrator. (0 to deny "
2309
- "any creation, -1 to allow unlimited creations)"
2313
+ "Maximum number of allowed domain aliases for a new administrator. (0 to deny"
2314
+ " any creation, -1 to allow unlimited creations)"
2310
2315
  msgstr ""
2311
2316
  "Μέγιστος αριθμός από επιτρεπόμενα ψευδώνυμα για domain, για νέους "
2312
2317
  "διαχειριστές. (Το 0 δεν επιτρέπει κανένα, το -1 επιτρέπει απεριόριστα) "
@@ -2341,8 +2346,8 @@ msgid ""
2341
2346
  "The quota a reseller will be allowed to share between the domains he "
2342
2347
  "creates. (0 means no quota)"
2343
2348
  msgstr ""
2344
- "To quota που ένας μεταπωλητής επιτρέπεται να μοιράζει μεταξύ των domains που "
2345
- "δημιουργεί. (0 σημαίνει χωρίς quota)"
2349
+ "To quota που ένας μεταπωλητής επιτρέπεται να μοιράζει μεταξύ των domains που"
2350
+ " δημιουργεί. (0 σημαίνει χωρίς quota)"
2346
2351
 
2347
2352
  #: limits/app_settings.py:98
2348
2353
  msgid "Default per-domain limits"
@@ -2358,8 +2363,8 @@ msgstr "Ενεργοποίηση ή απενεργοποίηση ορίων αν
2358
2363
 
2359
2364
  #: limits/app_settings.py:114
2360
2365
  msgid ""
2361
- "Maximum number of allowed domain administrators for a new domain. (0 to deny "
2362
- "any creation, -1 to allow unlimited creations)"
2366
+ "Maximum number of allowed domain administrators for a new domain. (0 to deny"
2367
+ " any creation, -1 to allow unlimited creations)"
2363
2368
  msgstr ""
2364
2369
  "Μέγιστος αριθμός από επιτρεπόμενους διαχειριστές domain για ένα νέο domain. "
2365
2370
  "(0 απαγορεύει την δημιουργία, -1 επιτρέπει άπειρες δημιουργίες)"
@@ -2382,8 +2387,8 @@ msgstr ""
2382
2387
 
2383
2388
  #: limits/app_settings.py:149
2384
2389
  msgid ""
2385
- "Maximum number of allowed aliases for a new domain. (0 to deny any creation, "
2386
- "-1 to allow unlimited creations)"
2390
+ "Maximum number of allowed aliases for a new domain. (0 to deny any creation,"
2391
+ " -1 to allow unlimited creations)"
2387
2392
  msgstr ""
2388
2393
  "Μέγιστος αριθμός από επιτρεπόμενα ψευδώνυμα για ένα νέο domain. (0 "
2389
2394
  "απαγορεύει την δημιουργία, -1 επιτρέπει άπειρες δημιουργίες)"
@@ -2438,8 +2443,8 @@ msgstr ""
2438
2443
  #: limits/constants.py:93
2439
2444
  msgid "Maximum number of mailbox aliases allowed for this domain."
2440
2445
  msgstr ""
2441
- "Μέγιστος αριθμός από ψευδώνυμα γραμματοκιβωτίων που επιτρέπονται για αυτό το "
2442
- "domain. "
2446
+ "Μέγιστος αριθμός από ψευδώνυμα γραμματοκιβωτίων που επιτρέπονται για αυτό το"
2447
+ " domain. "
2443
2448
 
2444
2449
  #: limits/constants.py:102
2445
2450
  msgid "Maximum number of domain admins allowed for this domain."
@@ -2568,13 +2573,13 @@ msgstr "Λογαριασμοί"
2568
2573
  msgid "Personal account information"
2569
2574
  msgstr "Προσωπικές πληροφορίες λογαριασμού"
2570
2575
 
2571
- #: pdfcredentials/api/v2/serializers.py:81
2576
+ #: pdfcredentials/api/v2/serializers.py:86
2572
2577
  #, fuzzy
2573
2578
  #| msgid "Domain not found."
2574
2579
  msgid "Directory is not writable"
2575
2580
  msgstr "To domain δεν βρέθηκε."
2576
2581
 
2577
- #: pdfcredentials/api/v2/serializers.py:102
2582
+ #: pdfcredentials/api/v2/serializers.py:114
2578
2583
  msgid "No document available for this user"
2579
2584
  msgstr "Δεν υπάρχουν διαθέσιμα έγγραφα για αυτόν τον χρήστη"
2580
2585
 
@@ -2756,8 +2761,7 @@ msgid ""
2756
2761
  "your contacts.\n"
2757
2762
  msgstr ""
2758
2763
  "\n"
2759
- "Εδώ μπορείτε να προβάλετε τα ηλεκτρονικά σας μηνύματα σε πραγματικό χρόνο, "
2760
- "να δημιουργήσετε φίλτρα ή να διαχειριστείτε\n"
2764
+ "Εδώ μπορείτε να προβάλετε τα ηλεκτρονικά σας μηνύματα σε πραγματικό χρόνο, να δημιουργήσετε φίλτρα ή να διαχειριστείτε\n"
2761
2765
  " τις επαφές σας.\n"
2762
2766
 
2763
2767
  #: pdfcredentials/documents.py:126
@@ -2788,18 +2792,19 @@ msgstr "Διαπιστευτήρια PDF"
2788
2792
 
2789
2793
  #: pdfcredentials/lib.py:29
2790
2794
  #, fuzzy
2791
- #| msgid "Failed to create the directory that will contain PDF documents (%s)"
2795
+ #| msgid ""
2796
+ #| "Failed to create the directory that will contain PDF documents (%s)"
2792
2797
  msgid "Can't write to selected directory to store PDF documents"
2793
2798
  msgstr ""
2794
- "Σφάλμα στην δημιουργία του καταλόγου αρχείων για την αποθήκευση PDF εγγράφων "
2795
- "(%s)"
2799
+ "Σφάλμα στην δημιουργία του καταλόγου αρχείων για την αποθήκευση PDF εγγράφων"
2800
+ " (%s)"
2796
2801
 
2797
2802
  #: pdfcredentials/lib.py:35
2798
2803
  #, python-format
2799
2804
  msgid "Failed to create the directory that will contain PDF documents (%s)"
2800
2805
  msgstr ""
2801
- "Σφάλμα στην δημιουργία του καταλόγου αρχείων για την αποθήκευση PDF εγγράφων "
2802
- "(%s)"
2806
+ "Σφάλμα στην δημιουργία του καταλόγου αρχείων για την αποθήκευση PDF εγγράφων"
2807
+ " (%s)"
2803
2808
 
2804
2809
  #: pdfcredentials/lib.py:82
2805
2810
  msgid ""
@@ -2870,8 +2875,8 @@ msgstr ""
2870
2875
 
2871
2876
  #: rspamd/app_settings.py:21
2872
2877
  msgid ""
2873
- "Absolute path of the file which contains paths to DKIM private keys. Must be "
2874
- "readable by _rspamd group or user."
2878
+ "Absolute path of the file which contains paths to DKIM private keys. Must be"
2879
+ " readable by _rspamd group or user."
2875
2880
  msgstr ""
2876
2881
 
2877
2882
  #: rspamd/app_settings.py:30
@@ -2890,8 +2895,8 @@ msgstr ""
2890
2895
 
2891
2896
  #: rspamd/app_settings.py:53
2892
2897
  msgid ""
2893
- "Location of the rspamd dashboard. Can either be a relative URL (eg. '/"
2894
- "rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
2898
+ "Location of the rspamd dashboard. Can either be a relative URL (eg. "
2899
+ "'/rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
2895
2900
  "guidance on the Super-Admin dashboard."
2896
2901
  msgstr ""
2897
2902
 
@@ -3124,8 +3129,8 @@ msgid ""
3124
3129
  "The password reset link was invalid, possibly because it has already been "
3125
3130
  "used. Please request a new password reset."
3126
3131
  msgstr ""
3127
- "Ο σύνδεσμος για την επαναφορά του κωδικού ήταν άκυρος, πιθανότατα γιατί είχε "
3128
- "είδη χρησιμοποιηθεί. Παρακαλώ ζητήστε μια νέα επαναφορά κωδικού."
3132
+ "Ο σύνδεσμος για την επαναφορά του κωδικού ήταν άκυρος, πιθανότατα γιατί είχε"
3133
+ " είδη χρησιμοποιηθεί. Παρακαλώ ζητήστε μια νέα επαναφορά κωδικού."
3129
3134
 
3130
3135
  #: templates/registration/password_reset_confirm_code.html:22
3131
3136
  msgid "Enter the code you've just received by SMS"
@@ -3149,8 +3154,8 @@ msgstr ""
3149
3154
  "Σας έχουμε αποστείλει με ηλεκτρονικό ταχυδρομείο οδηγίες για να ορίσετε των "
3150
3155
  "κωδικό σας, εφόσον υπάρχει ένας λογαριασμός με το διεύθυνση ηλεκτρονικής "
3151
3156
  "αλληλογραφίας που καταχωρήσατε. Θα πρέπει να το λάβετε σύντομα. <p><p>Εάν "
3152
- "δεν λάβατε το email, παρακαλώ συγουρευτείτε ότι εισάγατε σωστά την διεύθυνση "
3153
- "σας και ελέγξτε τον φάκελο τον Spam σας. </p> "
3157
+ "δεν λάβατε το email, παρακαλώ συγουρευτείτε ότι εισάγατε σωστά την διεύθυνση"
3158
+ " σας και ελέγξτε τον φάκελο τον Spam σας. </p> "
3154
3159
 
3155
3160
  #: templates/registration/password_reset_email.html:4
3156
3161
  #: templates/registration/password_reset_email_v2.html:4
@@ -3202,8 +3207,8 @@ msgstr "Παλιός κωδικός"
3202
3207
 
3203
3208
  #: templates/registration/twofactor_code_verify.html:35
3204
3209
  msgid ""
3205
- "Enter the code from the two-factor app on your mobile device. If you've lost "
3206
- "your device, you may enter one of your recovery codes."
3210
+ "Enter the code from the two-factor app on your mobile device. If you've lost"
3211
+ " your device, you may enter one of your recovery codes."
3207
3212
  msgstr ""
3208
3213
 
3209
3214
  #: templates/registration/twofactor_code_verify.html:42
@@ -3406,16 +3411,32 @@ msgstr "Κείμενο υπογραφής"
3406
3411
  msgid "User defined email signature"
3407
3412
  msgstr "Προεπιλεγμένη υπογραφή χρήστη"
3408
3413
 
3414
+ #: webmail/exceptions.py:18
3415
+ #, fuzzy
3416
+ #| msgid "Server address"
3417
+ msgid "Server response"
3418
+ msgstr "Διεύθυνση εξυπηρετητή"
3419
+
3409
3420
  #: webmail/lib/attachments.py:112
3410
3421
  #, fuzzy
3411
3422
  #| msgid "Failed to remove filter"
3412
3423
  msgid "Failed to remove attachment: "
3413
3424
  msgstr "Σφάλμα κατά την αφαίρεση του συνημμένου:"
3414
3425
 
3426
+ #: webmail/lib/imapemail.py:272
3427
+ msgid "wrote:"
3428
+ msgstr ""
3429
+
3415
3430
  #: webmail/lib/imapemail.py:306
3416
3431
  msgid "Date"
3417
3432
  msgstr "Ημερομηνία"
3418
3433
 
3434
+ #: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
3435
+ #, fuzzy
3436
+ #| msgid "sent messages"
3437
+ msgid "Original message"
3438
+ msgstr "Όλα τα μηνύματα"
3439
+
3419
3440
  #: webmail/lib/imaputils.py:221
3420
3441
  msgid "Failed to retrieve hierarchy delimiter"
3421
3442
  msgstr " Αποτυχία κατά την ανάκτηση της οροθετημένης ιεραρχίας "
@@ -3446,3 +3467,7 @@ msgstr "Σκουπιδοτενεκές"
3446
3467
  #, python-format
3447
3468
  msgid "Attachment is too big (limit: %s)"
3448
3469
  msgstr "Το συνημμένο είναι πολύ μεγάλο (όριο: %s)"
3470
+
3471
+ #, fuzzy, python-brace-format
3472
+ #~ msgid "Connection to IMAP server failed: {error}"
3473
+ #~ msgstr "Η σύνδεση στο διακομιστή IMAP απέτυχε:%s"