modoboa 2.6.5__py3-none-any.whl → 2.7.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 (359) hide show
  1. modoboa/admin/api/v2/serializers.py +1 -0
  2. modoboa/admin/app_settings.py +12 -0
  3. modoboa/admin/{management/commands/subcommands/_mx.py → dns_checker.py} +41 -111
  4. modoboa/admin/jobs.py +86 -0
  5. modoboa/admin/management/commands/modo.py +0 -2
  6. modoboa/admin/tests/test_mailbox_operations.py +4 -4
  7. modoboa/admin/tests/test_mx.py +68 -56
  8. modoboa/amavis/jobs.py +11 -0
  9. modoboa/amavis/tests/test_jobs.py +18 -0
  10. modoboa/amavis/tests/test_viewsets.py +2 -3
  11. modoboa/autoconfig/templates/autoconfig/autoconfig.xml +2 -2
  12. modoboa/autoconfig/templates/autoconfig/autodiscover.xml +14 -0
  13. modoboa/autoconfig/tests.py +2 -1
  14. modoboa/autoconfig/views.py +11 -3
  15. modoboa/calendars/backends/caldav_.py +17 -13
  16. modoboa/calendars/jobs.py +7 -0
  17. modoboa/calendars/mocks.py +4 -1
  18. modoboa/calendars/serializers.py +14 -9
  19. modoboa/calendars/tests.py +10 -9
  20. modoboa/calendars/viewsets.py +3 -1
  21. modoboa/contacts/migrations/0008_addressbook_syncing.py +18 -0
  22. modoboa/contacts/models.py +1 -0
  23. modoboa/contacts/serializers.py +5 -2
  24. modoboa/contacts/tasks.py +9 -3
  25. modoboa/contacts/tests.py +32 -6
  26. modoboa/contacts/viewsets.py +7 -1
  27. modoboa/core/api/v2/serializers.py +0 -7
  28. modoboa/core/api/v2/tests.py +0 -10
  29. modoboa/core/app_settings.py +0 -22
  30. modoboa/core/commands/deploy.py +13 -0
  31. modoboa/core/commands/templates/cron_config.py.tpl +33 -0
  32. modoboa/core/commands/templates/settings.py.tpl +21 -0
  33. modoboa/core/jobs.py +34 -0
  34. modoboa/core/management/commands/load_initial_data.py +1 -1
  35. modoboa/core/password_hashers/base.py +4 -1
  36. modoboa/core/tests/test_core.py +0 -14
  37. modoboa/core/tests/test_jobs.py +40 -0
  38. modoboa/frontend_dist/assets/{AccountAliasForm-B-hTKSFr.js → AccountAliasForm-DO6DwfjE.js} +1 -1
  39. modoboa/frontend_dist/assets/{AccountEditView-LkP_qhf_.js → AccountEditView-CCuN9mGB.js} +1 -1
  40. modoboa/frontend_dist/assets/AccountLayout-Ge7fzuZg.js +1 -0
  41. modoboa/frontend_dist/assets/AccountPasswordSubForm-PkFPblkR.js +1 -0
  42. modoboa/frontend_dist/assets/AccountView-dgseekZ8.js +1 -0
  43. modoboa/frontend_dist/assets/AddressBook-DZWOHOJj.js +1 -0
  44. modoboa/frontend_dist/assets/AdminLayout-itB_mmH_.js +1 -0
  45. modoboa/frontend_dist/assets/AlarmsView-King6zb6.js +1 -0
  46. modoboa/frontend_dist/assets/{AliasEditView-BVjNJekt.js → AliasEditView-CTjrXYPf.js} +1 -1
  47. modoboa/frontend_dist/assets/AliasRecipientForm-CI7bXqVp.js +1 -0
  48. modoboa/frontend_dist/assets/{AliasView-DvvI6cV9.js → AliasView-BN13MNN_.js} +1 -1
  49. modoboa/frontend_dist/assets/AuditTrailView-C1jQwgoo.js +1 -0
  50. modoboa/frontend_dist/assets/CalendarView-juHVIHU5.css +1 -0
  51. modoboa/frontend_dist/assets/CalendarView-rRSzqxrH.js +1 -0
  52. modoboa/frontend_dist/assets/ChoiceField-DCr12shR.js +1 -0
  53. modoboa/frontend_dist/assets/ComposeEmailForm-BmtKwFb1.js +2 -0
  54. modoboa/frontend_dist/assets/ComposeEmailForm-CVNDl-Mq.css +1 -0
  55. modoboa/frontend_dist/assets/ComposeEmailView-JW22Phrb.js +1 -0
  56. modoboa/frontend_dist/assets/ConfirmDialog-CWpdwSQ6.js +1 -0
  57. modoboa/frontend_dist/assets/ConnectedLayout-BP8pO27H.js +1 -0
  58. modoboa/frontend_dist/assets/{ConnectedLayout-C6HNXWkp.css → ConnectedLayout-Ddpb_6yT.css} +1 -1
  59. modoboa/frontend_dist/assets/CreationForm-CzelJsVQ.js +1 -0
  60. modoboa/frontend_dist/assets/DashboardView-BBkBodVj.js +1 -0
  61. modoboa/frontend_dist/assets/{DomainAdminList-BO8_4Cwt.js → DomainAdminList-DD7p3i6F.js} +1 -1
  62. modoboa/frontend_dist/assets/{DomainEditView-BXylM4aB.js → DomainEditView-DoIoNYC4.js} +1 -1
  63. modoboa/frontend_dist/assets/{DomainTransportForm-Ccw5BXyM.js → DomainTransportForm-CbiJF9z5.js} +1 -1
  64. modoboa/frontend_dist/assets/{DomainView-Bd5XQI-1.js → DomainView-BXvznFYz.js} +3 -3
  65. modoboa/frontend_dist/assets/DomainsView-ffYjiffp.js +1 -0
  66. modoboa/frontend_dist/assets/EmailField-KhhJYA4D.js +1 -0
  67. modoboa/frontend_dist/assets/EmailSchedulingForm-CQL5Vfdr.js +1 -0
  68. modoboa/frontend_dist/assets/EmailView-Bq2bHZBO.js +1 -0
  69. modoboa/frontend_dist/assets/EmptyLayout-NrTftp18.js +1 -0
  70. modoboa/frontend_dist/assets/FiltersView-SOQy0U_3.js +1 -0
  71. modoboa/frontend_dist/assets/ForwardEmailView-kEPDjWUw.js +1 -0
  72. modoboa/frontend_dist/assets/{HtmlEditor-DNn3CY-w.js → HtmlEditor-CyBl5wj2.js} +15 -15
  73. modoboa/frontend_dist/assets/IdentitiesView-CZFf4oR9.js +1 -0
  74. modoboa/frontend_dist/assets/InformationView-CAtneAqM.js +1 -0
  75. modoboa/frontend_dist/assets/{LoadingData-CnQ_aVqa.js → LoadingData-C2txD49L.js} +1 -1
  76. modoboa/frontend_dist/assets/{LoginCallbackView-Nh_gmh8e.js → LoginCallbackView-DAvty3CI.js} +1 -1
  77. modoboa/frontend_dist/assets/{LoginView-BtC9BHuJ.js → LoginView-DHYITkn4.js} +1 -1
  78. modoboa/frontend_dist/assets/MailboxView-BNg2v7mi.css +1 -0
  79. modoboa/frontend_dist/assets/MailboxView-DHg5A78D.js +5 -0
  80. modoboa/frontend_dist/assets/MenuItems-C9p70bSC.js +1 -0
  81. modoboa/frontend_dist/assets/{MessageView-C1Goz-hY.js → MessageView-CrrEJpNI.js} +1 -1
  82. modoboa/frontend_dist/assets/MessagesView-CyecRd4I.js +1 -0
  83. modoboa/frontend_dist/assets/MigrationsView-DXGKKz2h.js +1 -0
  84. modoboa/frontend_dist/assets/{ParametersForm-BegEnkQM.js → ParametersForm-DFKYkPAs.js} +1 -1
  85. modoboa/frontend_dist/assets/ParametersView-B1wT5oyt.js +1 -0
  86. modoboa/frontend_dist/assets/ParametersView-CfvVzKea.js +1 -0
  87. modoboa/frontend_dist/assets/ProviderEditView-De-8ggBp.js +1 -0
  88. modoboa/frontend_dist/assets/{ProviderGeneralForm-BAELnXh6.js → ProviderGeneralForm-DO-IpJMQ.js} +1 -1
  89. modoboa/frontend_dist/assets/ProvidersView-Bhk7sCz4.js +1 -0
  90. modoboa/frontend_dist/assets/QuarantineLayout-C1YszNmP.js +1 -0
  91. modoboa/frontend_dist/assets/QuarantineView-cElD_rS-.js +1 -0
  92. modoboa/frontend_dist/assets/ReplyEmailView-BvuOZdLl.js +1 -0
  93. modoboa/frontend_dist/assets/ResourcesForm-FWxrmVwo.js +1 -0
  94. modoboa/frontend_dist/assets/SelfServiceLayout-JHRvfvQf.js +1 -0
  95. modoboa/frontend_dist/assets/SettingsView-SIsKAXtQ.css +1 -0
  96. modoboa/frontend_dist/assets/SettingsView-s2l2Xl1L.js +6 -0
  97. modoboa/frontend_dist/assets/StatisticsView-FiidWvad.js +1 -0
  98. modoboa/frontend_dist/assets/TimeSerieChart-CdqUHiO_.js +1 -0
  99. modoboa/frontend_dist/assets/TimeSerieChart-nLIFGI0y.css +1 -0
  100. modoboa/frontend_dist/assets/UserLayout-DyvI8duf.js +1 -0
  101. modoboa/frontend_dist/assets/{VAlert-Buv8Z5G4.js → VAlert-MDbeolOo.js} +1 -1
  102. modoboa/frontend_dist/assets/VApp-DM1KLQfQ.js +1 -0
  103. modoboa/frontend_dist/assets/VAutocomplete-C9NL5_uo.css +1 -0
  104. modoboa/frontend_dist/assets/VAutocomplete-CQsWYWNX.js +1 -0
  105. modoboa/frontend_dist/assets/VAvatar-CXV_FqpP.js +1 -0
  106. modoboa/frontend_dist/assets/VBadge-7tDx7aI3.js +1 -0
  107. modoboa/frontend_dist/assets/{VCard-D7AwBs4w.js → VCard-CBtX8JF-.js} +1 -1
  108. modoboa/frontend_dist/assets/VCheckbox-zY1MApOy.js +1 -0
  109. modoboa/frontend_dist/assets/{VCheckboxBtn-B5evxN9K.js → VCheckboxBtn-B0mIT3E0.js} +1 -1
  110. modoboa/frontend_dist/assets/VColorPicker-BbCHvk6K.js +1 -0
  111. modoboa/frontend_dist/assets/{VColorPicker-B_lVDaYR.css → VColorPicker-C9m8L-6U.css} +1 -1
  112. modoboa/frontend_dist/assets/{VContainer-DY9021j4.js → VContainer-Cn-vKB3s.js} +1 -1
  113. modoboa/frontend_dist/assets/VDataTable-CNT9KOSp.js +1 -0
  114. modoboa/frontend_dist/assets/VDataTableServer-_yn4Ry6U.js +1 -0
  115. modoboa/frontend_dist/assets/VDataTableVirtual-Csxh3Gp6.js +1 -0
  116. modoboa/frontend_dist/assets/VDatePicker-_OUDqShN.css +1 -0
  117. modoboa/frontend_dist/assets/VDatePicker-iFu13xIP.js +2 -0
  118. modoboa/frontend_dist/assets/VDialog-lKtBdqnp.js +1 -0
  119. modoboa/frontend_dist/assets/VExpansionPanels-CaIvk9iF.js +1 -0
  120. modoboa/frontend_dist/assets/VFileInput-C7J_qVmk.js +1 -0
  121. modoboa/frontend_dist/assets/VForm-fdQ5d-CH.js +1 -0
  122. modoboa/frontend_dist/assets/VInput-BwHvhzAe.js +1 -0
  123. modoboa/frontend_dist/assets/VMenu-BpmJf4X2.js +1 -0
  124. modoboa/frontend_dist/assets/VMenu-C5A_5Hs5.css +1 -0
  125. modoboa/frontend_dist/assets/VPicker-B7cB3kJg.css +1 -0
  126. modoboa/frontend_dist/assets/VPicker-BZho70wU.js +1 -0
  127. modoboa/frontend_dist/assets/VProgressCircular-DRw_-iNj.js +1 -0
  128. modoboa/frontend_dist/assets/VRadioGroup--eiP5xtJ.js +1 -0
  129. modoboa/frontend_dist/assets/{VRow-DyK_Mj7R.js → VRow-83Qnr5iB.js} +1 -1
  130. modoboa/frontend_dist/assets/VSelect-BcmGFGif.js +1 -0
  131. modoboa/frontend_dist/assets/{VSelectionControl-Dkms9_P5.js → VSelectionControl-Cqi1xt-q.js} +1 -1
  132. modoboa/frontend_dist/assets/VSheet-C3MaHhtw.js +1 -0
  133. modoboa/frontend_dist/assets/VSpacer-CuSkdJZL.js +1 -0
  134. modoboa/frontend_dist/assets/VSwitch-XumUl685.js +1 -0
  135. modoboa/frontend_dist/assets/{VTable-D8ZwwC_B.js → VTable-f7wcr2AZ.js} +1 -1
  136. modoboa/frontend_dist/assets/VTabs-CDfdejXj.css +1 -0
  137. modoboa/frontend_dist/assets/VTabs-y4wNP4im.js +1 -0
  138. modoboa/frontend_dist/assets/VTextField-BPIvtrn4.js +1 -0
  139. modoboa/frontend_dist/assets/VTextField-DjbYGlzs.css +1 -0
  140. modoboa/frontend_dist/assets/VTextarea-B6bGYcC3.js +1 -0
  141. modoboa/frontend_dist/assets/VTextarea-f6vTjzFy.css +1 -0
  142. modoboa/frontend_dist/assets/VToolbar-BYDPtwf0.css +1 -0
  143. modoboa/frontend_dist/assets/VToolbar-CB6wwtYc.js +1 -0
  144. modoboa/frontend_dist/assets/VWindowItem-CDtLLEkg.js +1 -0
  145. modoboa/frontend_dist/assets/WebmailLayout-CQQAolnl.css +1 -0
  146. modoboa/frontend_dist/assets/WebmailLayout-tosQSHLS.js +1 -0
  147. modoboa/frontend_dist/assets/{accounts-BZBqbAmd.js → accounts-KUsk6LHW.js} +1 -1
  148. modoboa/frontend_dist/assets/{admin-uCrKjpln.js → admin-BW9cZW0P.js} +1 -1
  149. modoboa/frontend_dist/assets/{aliases-CFwFkX45.js → aliases-Ge0hjIsH.js} +1 -1
  150. modoboa/frontend_dist/assets/{amavis-DCy0U0TD.js → amavis-BbFeFfsk.js} +1 -1
  151. modoboa/frontend_dist/assets/{amavis-B4ScfQsG.js → amavis-DtuzP_CS.js} +1 -1
  152. modoboa/frontend_dist/assets/{contacts-DKmh2q-4.js → contacts-DMJlQTe0.js} +1 -1
  153. modoboa/frontend_dist/assets/{domains-CDE4_LDF.js → domains-Du64lcXT.js} +1 -1
  154. modoboa/frontend_dist/assets/{domains.store-a9Y5UlDV.js → domains.store-1U61jeCV.js} +1 -1
  155. modoboa/frontend_dist/assets/events-BM3in65C.js +1 -0
  156. modoboa/frontend_dist/assets/filter-Dihm6o59.js +1 -0
  157. modoboa/frontend_dist/assets/importExport-HGcNGWOm.js +1 -0
  158. modoboa/frontend_dist/assets/{index-B9q1vO3K.css → index-B1EK3MQe.css} +1 -1
  159. modoboa/frontend_dist/assets/{index-Dwg6jPTX.js → index-Dv00bmw9.js} +1 -1
  160. modoboa/frontend_dist/assets/{index-BjibLozh.js → index-jui3edpn.js} +47 -41
  161. modoboa/frontend_dist/assets/{language.store-DGuI8jG0.js → language.store-OcfdXL_-.js} +1 -1
  162. modoboa/frontend_dist/assets/languages-CF8hxo7x.js +1 -0
  163. modoboa/frontend_dist/assets/{layout-5PvsmkGR.js → layout-DOO7TRTJ.js} +1 -1
  164. modoboa/frontend_dist/assets/{layout.store-DJVcXtxk.js → layout.store-C0g-piJn.js} +1 -1
  165. modoboa/frontend_dist/assets/{logos-CMmd0hOG.js → logos-Dz2Gzei-.js} +1 -1
  166. modoboa/frontend_dist/assets/{logs-D2GOydPZ.js → logs-CLm32Weu.js} +1 -1
  167. modoboa/frontend_dist/assets/{parameters-DJdlq9sh.js → parameters-DMIAQ7cd.js} +1 -1
  168. modoboa/frontend_dist/assets/{parameters.store-DH3pPlaT.js → parameters.store-DLnFzCwV.js} +1 -1
  169. modoboa/frontend_dist/assets/{permissions-CgFJFhCp.js → permissions-CrpE0b4w.js} +1 -1
  170. modoboa/frontend_dist/assets/{ssrBoot-ChTB-PYP.js → ssrBoot-B7cr7q9U.js} +1 -1
  171. modoboa/frontend_dist/assets/{tag-CvrHE14f.js → tag-WF93n81Q.js} +1 -1
  172. modoboa/frontend_dist/assets/{theme-DFzlhSh5.js → theme-_0oOYChG.js} +1 -1
  173. modoboa/frontend_dist/assets/transports-CS61syt-.js +1 -0
  174. modoboa/frontend_dist/assets/webmail-CYDXU0DS.js +1 -0
  175. modoboa/frontend_dist/assets/webmail.store-BvHCQSjM.js +1 -0
  176. modoboa/frontend_dist/index.html +2 -2
  177. modoboa/imap_migration/models.py +3 -3
  178. modoboa/imap_migration/templates/imap_migration/offlineimap.conf +2 -2
  179. modoboa/imap_migration/tests.py +21 -0
  180. modoboa/lib/cryptutils.py +2 -2
  181. modoboa/lib/sysutils.py +1 -1
  182. modoboa/lib/tests/__init__.py +0 -1
  183. modoboa/locale/br/LC_MESSAGES/django.mo +0 -0
  184. modoboa/locale/br/LC_MESSAGES/django.po +301 -273
  185. modoboa/locale/cs/LC_MESSAGES/django.po +286 -269
  186. modoboa/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  187. modoboa/locale/cs_CZ/LC_MESSAGES/django.po +303 -275
  188. modoboa/locale/de/LC_MESSAGES/django.mo +0 -0
  189. modoboa/locale/de/LC_MESSAGES/django.po +297 -269
  190. modoboa/locale/de_DE/LC_MESSAGES/django.mo +0 -0
  191. modoboa/locale/de_DE/LC_MESSAGES/django.po +303 -275
  192. modoboa/locale/el_GR/LC_MESSAGES/django.mo +0 -0
  193. modoboa/locale/el_GR/LC_MESSAGES/django.po +303 -275
  194. modoboa/locale/en/LC_MESSAGES/django.po +286 -269
  195. modoboa/locale/es/LC_MESSAGES/django.mo +0 -0
  196. modoboa/locale/es/LC_MESSAGES/django.po +302 -274
  197. modoboa/locale/es_MX/LC_MESSAGES/django.po +286 -269
  198. modoboa/locale/fi/LC_MESSAGES/django.mo +0 -0
  199. modoboa/locale/fi/LC_MESSAGES/django.po +299 -271
  200. modoboa/locale/fr/LC_MESSAGES/django.mo +0 -0
  201. modoboa/locale/fr/LC_MESSAGES/django.po +288 -271
  202. modoboa/locale/hu/LC_MESSAGES/django.po +286 -269
  203. modoboa/locale/it/LC_MESSAGES/django.mo +0 -0
  204. modoboa/locale/it/LC_MESSAGES/django.po +303 -275
  205. modoboa/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
  206. modoboa/locale/ja_JP/LC_MESSAGES/django.po +390 -413
  207. modoboa/locale/ka/LC_MESSAGES/django.po +286 -269
  208. modoboa/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
  209. modoboa/locale/nl_NL/LC_MESSAGES/django.po +299 -271
  210. modoboa/locale/no/LC_MESSAGES/django.po +286 -269
  211. modoboa/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  212. modoboa/locale/pl_PL/LC_MESSAGES/django.po +297 -269
  213. modoboa/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  214. modoboa/locale/pt_BR/LC_MESSAGES/django.po +298 -270
  215. modoboa/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
  216. modoboa/locale/pt_PT/LC_MESSAGES/django.po +303 -275
  217. modoboa/locale/ro_RO/LC_MESSAGES/django.mo +0 -0
  218. modoboa/locale/ro_RO/LC_MESSAGES/django.po +299 -271
  219. modoboa/locale/ru/LC_MESSAGES/django.mo +0 -0
  220. modoboa/locale/ru/LC_MESSAGES/django.po +993 -1096
  221. modoboa/locale/si/LC_MESSAGES/django.po +286 -269
  222. modoboa/locale/sk/LC_MESSAGES/django.po +286 -269
  223. modoboa/locale/sk_SK/LC_MESSAGES/django.po +286 -269
  224. modoboa/locale/sl_SI/LC_MESSAGES/django.po +288 -269
  225. modoboa/locale/sv/LC_MESSAGES/django.mo +0 -0
  226. modoboa/locale/sv/LC_MESSAGES/django.po +297 -269
  227. modoboa/locale/tr/LC_MESSAGES/django.mo +0 -0
  228. modoboa/locale/tr/LC_MESSAGES/django.po +301 -272
  229. modoboa/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
  230. modoboa/locale/tr_TR/LC_MESSAGES/django.po +291 -269
  231. modoboa/locale/uk/LC_MESSAGES/django.po +286 -269
  232. modoboa/locale/zh/LC_MESSAGES/django.po +286 -269
  233. modoboa/locale/zh_CN/LC_MESSAGES/django.po +286 -269
  234. modoboa/locale/zh_TW/LC_MESSAGES/django.mo +0 -0
  235. modoboa/locale/zh_TW/LC_MESSAGES/django.po +295 -273
  236. modoboa/maillog/jobs.py +11 -0
  237. modoboa/maillog/tests/test_views.py +5 -4
  238. modoboa/parameters/api/v2/tests.py +1 -1
  239. modoboa/policyd/management/commands/policy_daemon.py +5 -1
  240. modoboa/policyd/tests.py +4 -2
  241. modoboa/rspamd/tests.py +20 -0
  242. modoboa/templates/registration/twofactor_code_verify.html +1 -1
  243. modoboa/webmail/app_settings.py +37 -0
  244. modoboa/webmail/constants.py +21 -1
  245. modoboa/webmail/factories.py +19 -0
  246. modoboa/webmail/jobs.py +27 -0
  247. modoboa/webmail/lib/__init__.py +0 -2
  248. modoboa/webmail/lib/imapemail.py +9 -11
  249. modoboa/webmail/lib/imapheader.py +25 -13
  250. modoboa/webmail/lib/imaputils.py +51 -13
  251. modoboa/webmail/lib/sendmail.py +88 -105
  252. modoboa/webmail/lib/utils.py +109 -0
  253. modoboa/webmail/migrations/0001_initial.py +90 -0
  254. modoboa/webmail/migrations/__init__.py +0 -0
  255. modoboa/webmail/mocks.py +12 -3
  256. modoboa/webmail/models.py +102 -0
  257. modoboa/webmail/serializers.py +84 -4
  258. modoboa/webmail/tests/data.py +21 -0
  259. modoboa/webmail/tests/test_lib_imaputils.py +33 -0
  260. modoboa/webmail/tests/test_viewsets.py +108 -0
  261. modoboa/webmail/urls.py +5 -0
  262. modoboa/webmail/viewsets.py +39 -9
  263. {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/METADATA +16 -13
  264. {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/RECORD +269 -252
  265. {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/WHEEL +1 -1
  266. modoboa/admin/management/commands/handle_mailbox_operations.py +0 -103
  267. modoboa/core/management/commands/cleanlogs.py +0 -53
  268. modoboa/frontend_dist/assets/AccountLayout-APeC9bsN.js +0 -1
  269. modoboa/frontend_dist/assets/AccountPasswordSubForm-D4vB2yQK.js +0 -1
  270. modoboa/frontend_dist/assets/AccountView-CloBP1BY.js +0 -1
  271. modoboa/frontend_dist/assets/AddressBook-C03MXg3y.js +0 -1
  272. modoboa/frontend_dist/assets/AdminLayout-DFmyKOo6.js +0 -1
  273. modoboa/frontend_dist/assets/AlarmsView-CFhH0I5d.js +0 -1
  274. modoboa/frontend_dist/assets/AliasRecipientForm-CZ_SvjtG.js +0 -1
  275. modoboa/frontend_dist/assets/AuditTrailView-Cyq25Jle.js +0 -1
  276. modoboa/frontend_dist/assets/CalendarView-C_dSXRp9.js +0 -1
  277. modoboa/frontend_dist/assets/ChoiceField-BPhUvoyr.js +0 -1
  278. modoboa/frontend_dist/assets/ComposeEmailForm-D3yUbBJX.css +0 -1
  279. modoboa/frontend_dist/assets/ComposeEmailForm-Ns5SYs4J.js +0 -1
  280. modoboa/frontend_dist/assets/ComposeEmailView-DgUfiWEH.js +0 -1
  281. modoboa/frontend_dist/assets/ConfirmDialog-BMIg94-U.js +0 -1
  282. modoboa/frontend_dist/assets/ConnectedLayout-CSXdVJtV.js +0 -1
  283. modoboa/frontend_dist/assets/CreationForm-CaAZYATm.js +0 -1
  284. modoboa/frontend_dist/assets/DashboardView-DErmyUoy.js +0 -1
  285. modoboa/frontend_dist/assets/DomainsView-CC1EwRId.js +0 -1
  286. modoboa/frontend_dist/assets/EmailField-BFgga4zp.js +0 -1
  287. modoboa/frontend_dist/assets/EmailView-DPWTch_6.js +0 -1
  288. modoboa/frontend_dist/assets/EmptyLayout-DAw7fAab.js +0 -1
  289. modoboa/frontend_dist/assets/FiltersView-Cg9lkLw0.js +0 -1
  290. modoboa/frontend_dist/assets/ForwardEmailView-Dd1sxgaP.js +0 -1
  291. modoboa/frontend_dist/assets/IdentitiesView-CiHIQ9Qt.js +0 -1
  292. modoboa/frontend_dist/assets/InformationView-Cc0aBA5j.js +0 -1
  293. modoboa/frontend_dist/assets/MailboxView-DIVABvk5.css +0 -1
  294. modoboa/frontend_dist/assets/MailboxView-DplC0IXR.js +0 -5
  295. modoboa/frontend_dist/assets/MenuItems-efx2rqwT.js +0 -1
  296. modoboa/frontend_dist/assets/MessagesView-CesYYZ9f.js +0 -1
  297. modoboa/frontend_dist/assets/MigrationsView-DSBk8T0y.js +0 -1
  298. modoboa/frontend_dist/assets/ParametersView-B8W_PAiz.js +0 -1
  299. modoboa/frontend_dist/assets/ParametersView-Dsx2M_g9.js +0 -1
  300. modoboa/frontend_dist/assets/ProviderEditView-PEAr7MA1.js +0 -1
  301. modoboa/frontend_dist/assets/ProvidersView-CHvQf3Vv.js +0 -1
  302. modoboa/frontend_dist/assets/QuarantineLayout-BWEaBK48.js +0 -1
  303. modoboa/frontend_dist/assets/QuarantineView-BzjeDhTm.js +0 -1
  304. modoboa/frontend_dist/assets/ReplyEmailView-CwQ9jsce.js +0 -1
  305. modoboa/frontend_dist/assets/ResourcesForm-noC3AXd9.js +0 -1
  306. modoboa/frontend_dist/assets/SelfServiceLayout-DQgRMu0L.js +0 -1
  307. modoboa/frontend_dist/assets/SettingsView-DJTdIeRK.css +0 -1
  308. modoboa/frontend_dist/assets/SettingsView-Dgwpfd8O.js +0 -6
  309. modoboa/frontend_dist/assets/StatisticsView-BZkVSh5o.js +0 -1
  310. modoboa/frontend_dist/assets/TimeSerieChart-BXJwhTMO.js +0 -1
  311. modoboa/frontend_dist/assets/TimeSerieChart-C3XHmlRd.css +0 -1
  312. modoboa/frontend_dist/assets/UserLayout-CWK9ICfE.js +0 -1
  313. modoboa/frontend_dist/assets/VApp-CiIBWB_Q.js +0 -1
  314. modoboa/frontend_dist/assets/VAutocomplete-DcNqTIie.js +0 -1
  315. modoboa/frontend_dist/assets/VAutocomplete-hzGuLlUI.css +0 -1
  316. modoboa/frontend_dist/assets/VAvatar-BsHplcRP.js +0 -1
  317. modoboa/frontend_dist/assets/VBadge-CavP_E2g.js +0 -1
  318. modoboa/frontend_dist/assets/VCheckbox-CKW9lz5i.js +0 -1
  319. modoboa/frontend_dist/assets/VColorPicker-Bsrz8yif.js +0 -1
  320. modoboa/frontend_dist/assets/VDataTable-ocZo8ju0.js +0 -1
  321. modoboa/frontend_dist/assets/VDataTableServer-CJfpYXQW.js +0 -1
  322. modoboa/frontend_dist/assets/VDataTableVirtual-Cr8yw49k.js +0 -1
  323. modoboa/frontend_dist/assets/VDialog-CUMh3paI.js +0 -1
  324. modoboa/frontend_dist/assets/VExpansionPanels-CkwHiKsA.js +0 -1
  325. modoboa/frontend_dist/assets/VFileInput-D5qlksIG.js +0 -1
  326. modoboa/frontend_dist/assets/VForm-ClJU5x_v.js +0 -1
  327. modoboa/frontend_dist/assets/VInput-DhzSMFXh.js +0 -1
  328. modoboa/frontend_dist/assets/VMenu-B53a3gm6.js +0 -1
  329. modoboa/frontend_dist/assets/VMenu-BEipA1lw.css +0 -1
  330. modoboa/frontend_dist/assets/VPicker-B928ZVJQ.js +0 -1
  331. modoboa/frontend_dist/assets/VPicker-ClSXs6kv.css +0 -1
  332. modoboa/frontend_dist/assets/VProgressCircular-viI3jDXe.js +0 -1
  333. modoboa/frontend_dist/assets/VRadioGroup-C0bqFrYg.js +0 -1
  334. modoboa/frontend_dist/assets/VSelect-y0E5_vPn.js +0 -1
  335. modoboa/frontend_dist/assets/VSheet-DQkh_hsX.js +0 -1
  336. modoboa/frontend_dist/assets/VSpacer-CBqB9uSt.js +0 -1
  337. modoboa/frontend_dist/assets/VSwitch-D4xdR9jz.js +0 -1
  338. modoboa/frontend_dist/assets/VTabs-D2c0KeF2.js +0 -1
  339. modoboa/frontend_dist/assets/VTabs-NzpINroH.css +0 -1
  340. modoboa/frontend_dist/assets/VTextField-Cow3HZvI.css +0 -1
  341. modoboa/frontend_dist/assets/VTextField-DvvH1ciR.js +0 -1
  342. modoboa/frontend_dist/assets/VTextarea-DHtXtzqP.js +0 -1
  343. modoboa/frontend_dist/assets/VTextarea-DyGjqrlm.css +0 -1
  344. modoboa/frontend_dist/assets/VToolbar-CB2GrZpA.css +0 -1
  345. modoboa/frontend_dist/assets/VToolbar-pvLQtmbU.js +0 -1
  346. modoboa/frontend_dist/assets/VWindowItem-DErNPSH8.js +0 -1
  347. modoboa/frontend_dist/assets/WebmailLayout-BzW0LWYp.css +0 -1
  348. modoboa/frontend_dist/assets/WebmailLayout-D7J-QJ-0.js +0 -1
  349. modoboa/frontend_dist/assets/filter-BVvMTmPG.js +0 -1
  350. modoboa/frontend_dist/assets/global.store-Bha4Z76j.js +0 -1
  351. modoboa/frontend_dist/assets/importExport-EgijWlC1.js +0 -1
  352. modoboa/frontend_dist/assets/languages-Cge6pECg.js +0 -1
  353. modoboa/frontend_dist/assets/transports-BUSYxSF4.js +0 -1
  354. modoboa/frontend_dist/assets/webmail-HVg3ZHC0.js +0 -1
  355. modoboa/frontend_dist/assets/webmail.store-D-d88s4w.js +0 -1
  356. {modoboa-2.6.5.data → modoboa-2.7.0.data}/scripts/modoboa-admin.py +0 -0
  357. {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/entry_points.txt +0 -0
  358. {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/licenses/LICENSE +0 -0
  359. {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/top_level.txt +0 -0
@@ -8,7 +8,7 @@ msgid ""
8
8
  msgstr ""
9
9
  "Project-Id-Version: Modoboa\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2025-12-02 16:07+0100\n"
11
+ "POT-Creation-Date: 2026-02-04 09:30+0100\n"
12
12
  "PO-Revision-Date: 2016-11-09 16:13+0000\n"
13
13
  "Last-Translator: Gregor <info@gregorjev.net>\n"
14
14
  "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/tonio/modoboa/"
@@ -43,14 +43,14 @@ msgid "Cannot be greater than domain quota"
43
43
  msgstr ""
44
44
 
45
45
  #: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
46
- #: admin/api/v2/serializers.py:570 admin/models/alias.py:45
46
+ #: admin/api/v2/serializers.py:571 admin/models/alias.py:45
47
47
  msgid "Permission denied."
48
48
  msgstr ""
49
49
 
50
50
  #: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
51
- #: admin/api/v2/serializers.py:491 amavis/serializers.py:39
52
- #: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
53
- #: core/api/v2/serializers.py:266 transport/backends.py:40
51
+ #: admin/api/v2/serializers.py:492 amavis/serializers.py:39
52
+ #: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
53
+ #: core/api/v2/serializers.py:259 transport/backends.py:40
54
54
  msgid "This field is required"
55
55
  msgstr ""
56
56
 
@@ -59,7 +59,7 @@ msgid ""
59
59
  "List of administered domains (resellers and domain administrators only)."
60
60
  msgstr ""
61
61
 
62
- #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
62
+ #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
63
63
  msgid "Not allowed for this role."
64
64
  msgstr ""
65
65
 
@@ -67,13 +67,12 @@ msgstr ""
67
67
  msgid "Must be equal to mailbox full_address"
68
68
  msgstr ""
69
69
 
70
- #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
71
- #: calendars/serializers.py:175 calendars/serializers.py:177
72
- #: pdfcredentials/api/v2/serializers.py:91
70
+ #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
71
+ #: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
73
72
  msgid "This field is required."
74
73
  msgstr ""
75
74
 
76
- #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
75
+ #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
77
76
  msgid "Local domain {} does not exist"
78
77
  msgstr ""
79
78
 
@@ -114,39 +113,39 @@ msgstr ""
114
113
  msgid "User '%s' already exists"
115
114
  msgstr ""
116
115
 
117
- #: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
116
+ #: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
118
117
  msgid "Must be a positive integer"
119
118
  msgstr ""
120
119
 
121
- #: admin/api/v2/serializers.py:270
120
+ #: admin/api/v2/serializers.py:271
122
121
  msgid "openssl not found, please make sure it is installed."
123
122
  msgstr ""
124
123
 
125
- #: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
124
+ #: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
126
125
  msgid "Directory not found."
127
126
  msgstr ""
128
127
 
129
- #: admin/api/v2/serializers.py:284
128
+ #: admin/api/v2/serializers.py:285
130
129
  msgid "This field only allows valid IP addresses (or networks)"
131
130
  msgstr ""
132
131
 
133
- #: admin/api/v2/serializers.py:297
132
+ #: admin/api/v2/serializers.py:298
134
133
  msgid "Please disable imap migration before disabling this option."
135
134
  msgstr ""
136
135
 
137
- #: admin/api/v2/serializers.py:310
136
+ #: admin/api/v2/serializers.py:311
138
137
  msgid "Define at least one authorized network / address"
139
138
  msgstr ""
140
139
 
141
- #: admin/api/v2/serializers.py:587
140
+ #: admin/api/v2/serializers.py:588
142
141
  msgid "The left part of an email address can't be more than 64 characters."
143
142
  msgstr ""
144
143
 
145
- #: admin/api/v2/serializers.py:609
144
+ #: admin/api/v2/serializers.py:610
146
145
  msgid "A mailbox is required to create aliases."
147
146
  msgstr ""
148
147
 
149
- #: admin/api/v2/serializers.py:782
148
+ #: admin/api/v2/serializers.py:783
150
149
  #, fuzzy
151
150
  #| msgid "Unknow migration"
152
151
  msgid "Unknown status"
@@ -240,141 +239,151 @@ msgstr ""
240
239
  msgid "Check every domain against major DNSBL providers"
241
240
  msgstr ""
242
241
 
243
- #: admin/app_settings.py:116
242
+ #: admin/app_settings.py:117
243
+ msgid "Notify domain admins about DNS issues"
244
+ msgstr ""
245
+
246
+ #: admin/app_settings.py:120
247
+ msgid ""
248
+ "Send a notification by email to domain administrators when DNS issues are "
249
+ "encountered"
250
+ msgstr ""
251
+
252
+ #: admin/app_settings.py:128
244
253
  msgid "Custom DNS server"
245
254
  msgstr ""
246
255
 
247
- #: admin/app_settings.py:118
256
+ #: admin/app_settings.py:130
248
257
  msgid "Use a custom DNS server instead of local server configuration"
249
258
  msgstr ""
250
259
 
251
- #: admin/app_settings.py:126
260
+ #: admin/app_settings.py:138
252
261
  msgid "DKIM keys storage directory"
253
262
  msgstr ""
254
263
 
255
- #: admin/app_settings.py:128
264
+ #: admin/app_settings.py:140
256
265
  msgid ""
257
266
  "Absolute path of the directory where DKIM private keys will be stored. Make "
258
267
  "sure this directory belongs to root user and is not readable by the outside "
259
268
  "world."
260
269
  msgstr ""
261
270
 
262
- #: admin/app_settings.py:137
271
+ #: admin/app_settings.py:149
263
272
  msgid "Default DKIM key length"
264
273
  msgstr ""
265
274
 
266
- #: admin/app_settings.py:139
275
+ #: admin/app_settings.py:151
267
276
  msgid "Default length in bits for newly generated DKIM keys."
268
277
  msgstr ""
269
278
 
270
- #: admin/app_settings.py:146
279
+ #: admin/app_settings.py:158
271
280
  msgid "Default domain quota"
272
281
  msgstr ""
273
282
 
274
- #: admin/app_settings.py:148
283
+ #: admin/app_settings.py:160
275
284
  msgid ""
276
285
  "Default quota (in MB) applied to freshly created domains with no value "
277
286
  "specified. A value of 0 means no quota."
278
287
  msgstr ""
279
288
 
280
- #: admin/app_settings.py:156
289
+ #: admin/app_settings.py:168
281
290
  msgid "Default domain sending limit"
282
291
  msgstr ""
283
292
 
284
- #: admin/app_settings.py:158
293
+ #: admin/app_settings.py:170
285
294
  msgid ""
286
295
  "Number of messages freshly created domains will be allowed to send per day. "
287
296
  "Leave empty for no limit."
288
297
  msgstr ""
289
298
 
290
- #: admin/app_settings.py:170 limits/app_settings.py:61
299
+ #: admin/app_settings.py:182 limits/app_settings.py:61
291
300
  #: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
292
301
  msgid "Mailboxes"
293
302
  msgstr ""
294
303
 
295
- #: admin/app_settings.py:176
304
+ #: admin/app_settings.py:188
296
305
  msgid "Handle mailboxes on filesystem"
297
306
  msgstr ""
298
307
 
299
- #: admin/app_settings.py:178
308
+ #: admin/app_settings.py:190
300
309
  msgid ""
301
310
  "Rename or remove mailboxes on the filesystem when they get renamed or "
302
311
  "removed within Modoboa"
303
312
  msgstr ""
304
313
 
305
- #: admin/app_settings.py:186 admin/models/domain.py:36
314
+ #: admin/app_settings.py:198 admin/models/domain.py:36
306
315
  msgid "Default mailbox quota"
307
316
  msgstr ""
308
317
 
309
- #: admin/app_settings.py:188
318
+ #: admin/app_settings.py:200
310
319
  msgid ""
311
320
  "Default mailbox quota (in MB) applied to freshly created domains with no "
312
321
  "value specified. A value of 0 means no quota."
313
322
  msgstr ""
314
323
 
315
- #: admin/app_settings.py:197
324
+ #: admin/app_settings.py:209
316
325
  msgid "Default mailbox sending limit"
317
326
  msgstr ""
318
327
 
319
- #: admin/app_settings.py:199
328
+ #: admin/app_settings.py:211
320
329
  msgid ""
321
330
  "Number of messages freshly created mailboxes will be allowed to send per "
322
331
  "day. Leave empty for no limit."
323
332
  msgstr ""
324
333
 
325
- #: admin/app_settings.py:207
334
+ #: admin/app_settings.py:219
326
335
  msgid "Automatic account removal"
327
336
  msgstr ""
328
337
 
329
- #: admin/app_settings.py:209
338
+ #: admin/app_settings.py:221
330
339
  msgid "When a mailbox is removed, also remove the associated account"
331
340
  msgstr ""
332
341
 
333
- #: admin/app_settings.py:218
342
+ #: admin/app_settings.py:230
334
343
  msgid "Automatic domain/mailbox creation"
335
344
  msgstr ""
336
345
 
337
- #: admin/app_settings.py:221
346
+ #: admin/app_settings.py:233
338
347
  msgid "Create a domain and a mailbox when an account is automatically created."
339
348
  msgstr ""
340
349
 
341
- #: admin/app_settings.py:230
350
+ #: admin/app_settings.py:242
342
351
  msgid "Create an alias when a mailbox is renamed"
343
352
  msgstr ""
344
353
 
345
- #: admin/app_settings.py:233
354
+ #: admin/app_settings.py:245
346
355
  msgid "Create an alias using the old address when a mailbox is renamed."
347
356
  msgstr ""
348
357
 
349
- #: admin/app_settings.py:245
358
+ #: admin/app_settings.py:257
350
359
  msgid "Aliases"
351
360
  msgstr ""
352
361
 
353
- #: admin/app_settings.py:251
362
+ #: admin/app_settings.py:263
354
363
  msgid "Alias can target any domain"
355
364
  msgstr ""
356
365
 
357
- #: admin/app_settings.py:253
366
+ #: admin/app_settings.py:265
358
367
  msgid "Allow aliases to target any domain, not just the local domains."
359
368
  msgstr ""
360
369
 
361
- #: admin/app_settings.py:260
370
+ #: admin/app_settings.py:272
362
371
  msgid "Alias target block list"
363
372
  msgstr ""
364
373
 
365
- #: admin/app_settings.py:262
374
+ #: admin/app_settings.py:274
366
375
  msgid "A list of domains that aliases cannot target (comma separated)."
367
376
  msgstr ""
368
377
 
369
- #: admin/app_settings.py:270
378
+ #: admin/app_settings.py:282
370
379
  msgid "Alias target allow list"
371
380
  msgstr ""
372
381
 
373
- #: admin/app_settings.py:272
382
+ #: admin/app_settings.py:284
374
383
  msgid "A list of domains that aliases can target (comma separated)."
375
384
  msgstr ""
376
385
 
377
- #: admin/app_settings.py:326 core/api/v2/viewsets.py:174
386
+ #: admin/app_settings.py:338 core/api/v2/viewsets.py:174
378
387
  #, fuzzy
379
388
  #| msgid "IMAP migration"
380
389
  msgid "Administration"
@@ -396,6 +405,35 @@ msgstr ""
396
405
  msgid "Closed"
397
406
  msgstr ""
398
407
 
408
+ #: admin/dns_checker.py:96
409
+ msgid "MX {} listed by DNSBL provider {}"
410
+ msgstr ""
411
+
412
+ #: admin/dns_checker.py:138
413
+ msgid "Domain has no MX record"
414
+ msgstr ""
415
+
416
+ #: admin/dns_checker.py:141
417
+ msgid "Domain {} has no MX record"
418
+ msgstr ""
419
+
420
+ #: admin/dns_checker.py:159
421
+ msgid "Invalid MX record: {}"
422
+ msgstr ""
423
+
424
+ #: admin/dns_checker.py:166
425
+ #, python-brace-format
426
+ msgid "MX record for domain {0} is invalid: {1}"
427
+ msgstr ""
428
+
429
+ #: admin/dns_checker.py:177
430
+ msgid "[modoboa] MX issue(s) for domain {}"
431
+ msgstr ""
432
+
433
+ #: admin/dns_checker.py:224
434
+ msgid "[modoboa] DNSBL issue(s) for domain {}"
435
+ msgstr ""
436
+
399
437
  #: admin/handlers.py:179
400
438
  msgid "domain alias"
401
439
  msgstr ""
@@ -418,8 +456,8 @@ msgstr ""
418
456
  msgid "You are not allowed to import domain aliases."
419
457
  msgstr ""
420
458
 
421
- #: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
422
- #: admin/tests/test_mx.py:171
459
+ #: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
460
+ #: admin/tests/test_mx.py:157
423
461
  #, python-format
424
462
  msgid "No DNS record found for %s"
425
463
  msgstr ""
@@ -429,11 +467,11 @@ msgstr ""
429
467
  msgid "No %(type)s record for %(name)s"
430
468
  msgstr ""
431
469
 
432
- #: admin/lib.py:234 admin/tests/test_mx.py:156
470
+ #: admin/lib.py:234 admin/tests/test_mx.py:142
433
471
  msgid "No working name servers found"
434
472
  msgstr ""
435
473
 
436
- #: admin/lib.py:237 admin/tests/test_mx.py:160
474
+ #: admin/lib.py:237 admin/tests/test_mx.py:146
437
475
  #, python-format
438
476
  msgid "DNS resolution timeout, unable to query %s at the moment"
439
477
  msgstr ""
@@ -485,35 +523,6 @@ msgstr ""
485
523
  msgid "Failed to generate DKIM public key"
486
524
  msgstr ""
487
525
 
488
- #: admin/management/commands/subcommands/_mx.py:133
489
- msgid "MX {} listed by DNSBL provider {}"
490
- msgstr ""
491
-
492
- #: admin/management/commands/subcommands/_mx.py:174
493
- msgid "Domain has no MX record"
494
- msgstr ""
495
-
496
- #: admin/management/commands/subcommands/_mx.py:177
497
- msgid "Domain {} has no MX record"
498
- msgstr ""
499
-
500
- #: admin/management/commands/subcommands/_mx.py:195
501
- msgid "Invalid MX record: {}"
502
- msgstr ""
503
-
504
- #: admin/management/commands/subcommands/_mx.py:202
505
- #, python-brace-format
506
- msgid "MX record for domain {0} is invalid: {1}"
507
- msgstr ""
508
-
509
- #: admin/management/commands/subcommands/_mx.py:213
510
- msgid "[modoboa] MX issue(s) for domain {}"
511
- msgstr ""
512
-
513
- #: admin/management/commands/subcommands/_mx.py:269
514
- msgid "[modoboa] DNSBL issue(s) for domain {}"
515
- msgstr ""
516
-
517
526
  #: admin/models/alias.py:43
518
527
  msgid "Domain not found."
519
528
  msgstr ""
@@ -695,17 +704,17 @@ msgstr ""
695
704
  msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
696
705
  msgstr ""
697
706
 
698
- #: admin/tests/test_mx.py:155
707
+ #: admin/tests/test_mx.py:141
699
708
  #, python-format
700
709
  msgid "No MX record for %s"
701
710
  msgstr ""
702
711
 
703
- #: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
712
+ #: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
704
713
  #, python-format
705
714
  msgid "Invalid IP address format for %(domain)s; %(addr)s"
706
715
  msgstr ""
707
716
 
708
- #: admin/tests/test_mx.py:199
717
+ #: admin/tests/test_mx.py:185
709
718
  #, python-format
710
719
  msgid "No AAAA record for %s"
711
720
  msgstr ""
@@ -892,11 +901,11 @@ msgid ""
892
901
  "database)"
893
902
  msgstr ""
894
903
 
895
- #: amavis/app_settings.py:236 webmail/app_settings.py:118
904
+ #: amavis/app_settings.py:236 webmail/app_settings.py:155
896
905
  msgid "Display"
897
906
  msgstr ""
898
907
 
899
- #: amavis/app_settings.py:243 webmail/app_settings.py:144
908
+ #: amavis/app_settings.py:243 webmail/app_settings.py:181
900
909
  msgid "Number of displayed emails per page"
901
910
  msgstr ""
902
911
 
@@ -1150,7 +1159,7 @@ msgstr "Selitev IMAP"
1150
1159
  msgid "Allow domain administrators to manage user calendars (read and write)"
1151
1160
  msgstr ""
1152
1161
 
1153
- #: calendars/app_settings.py:60 core/app_settings.py:676
1162
+ #: calendars/app_settings.py:60 core/app_settings.py:664
1154
1163
  #: rspamd/app_settings.py:45
1155
1164
  msgid "Miscellaneous"
1156
1165
  msgstr ""
@@ -1168,11 +1177,11 @@ msgstr ""
1168
1177
  msgid "Calendars"
1169
1178
  msgstr ""
1170
1179
 
1171
- #: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
1180
+ #: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
1172
1181
  msgid "Server location is not set, please fix it."
1173
1182
  msgstr ""
1174
1183
 
1175
- #: calendars/viewsets.py:197
1184
+ #: calendars/viewsets.py:199
1176
1185
  msgid "Uploaded file is too big (max: {} bytes)"
1177
1186
  msgstr ""
1178
1187
 
@@ -1255,7 +1264,7 @@ msgstr ""
1255
1264
  msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
1256
1265
  msgstr ""
1257
1266
 
1258
- #: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
1267
+ #: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
1259
1268
  msgid "Invalid password"
1260
1269
  msgstr ""
1261
1270
 
@@ -1267,24 +1276,20 @@ msgstr ""
1267
1276
  msgid "Local"
1268
1277
  msgstr ""
1269
1278
 
1270
- #: core/api/v2/serializers.py:194 core/app_settings.py:17
1271
- msgid "User profile"
1272
- msgstr ""
1273
-
1274
- #: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
1275
- #: core/api/v2/serializers.py:228
1279
+ #: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
1280
+ #: core/api/v2/serializers.py:221
1276
1281
  msgid "Invalid syntax"
1277
1282
  msgstr ""
1278
1283
 
1279
- #: core/api/v2/serializers.py:233
1284
+ #: core/api/v2/serializers.py:226
1280
1285
  msgid "Invalid rounds number"
1281
1286
  msgstr ""
1282
1287
 
1283
- #: core/api/v2/serializers.py:433 core/forms.py:81
1288
+ #: core/api/v2/serializers.py:426 core/forms.py:81
1284
1289
  msgid "This code is invalid"
1285
1290
  msgstr ""
1286
1291
 
1287
- #: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
1292
+ #: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
1288
1293
  msgid "Please use the following code to recover your Modoboa password: {}"
1289
1294
  msgstr ""
1290
1295
 
@@ -1313,539 +1318,531 @@ msgid "Calendar"
1313
1318
  msgstr ""
1314
1319
 
1315
1320
  #: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
1316
- #: webmail/app_settings.py:258 webmail/app_settings.py:265
1321
+ #: webmail/app_settings.py:295 webmail/app_settings.py:302
1317
1322
  msgid "Webmail"
1318
1323
  msgstr ""
1319
1324
 
1320
- #: core/app_settings.py:37
1325
+ #: core/app_settings.py:25
1321
1326
  msgid "Authentication"
1322
1327
  msgstr ""
1323
1328
 
1324
- #: core/app_settings.py:43
1329
+ #: core/app_settings.py:31
1325
1330
  msgid "Authentication type"
1326
1331
  msgstr ""
1327
1332
 
1328
- #: core/app_settings.py:45
1333
+ #: core/app_settings.py:33
1329
1334
  msgid "The backend used for authentication"
1330
1335
  msgstr ""
1331
1336
 
1332
- #: core/app_settings.py:52
1337
+ #: core/app_settings.py:40
1333
1338
  msgid "Default password scheme"
1334
1339
  msgstr ""
1335
1340
 
1336
- #: core/app_settings.py:54
1341
+ #: core/app_settings.py:42
1337
1342
  msgid "Scheme used to crypt mailbox passwords"
1338
1343
  msgstr ""
1339
1344
 
1340
- #: core/app_settings.py:61
1345
+ #: core/app_settings.py:49
1341
1346
  msgid "Rounds"
1342
1347
  msgstr ""
1343
1348
 
1344
- #: core/app_settings.py:63
1349
+ #: core/app_settings.py:51
1345
1350
  msgid ""
1346
1351
  "Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
1347
1352
  "between 1000 and 999999999, inclusive."
1348
1353
  msgstr ""
1349
1354
 
1350
- #: core/app_settings.py:73
1355
+ #: core/app_settings.py:61
1351
1356
  msgid "Update password scheme at login"
1352
1357
  msgstr ""
1353
1358
 
1354
- #: core/app_settings.py:76
1359
+ #: core/app_settings.py:64
1355
1360
  msgid "Update user password at login to use the default password scheme"
1356
1361
  msgstr ""
1357
1362
 
1358
- #: core/app_settings.py:84
1363
+ #: core/app_settings.py:72
1359
1364
  msgid "Default password"
1360
1365
  msgstr ""
1361
1366
 
1362
- #: core/app_settings.py:86
1367
+ #: core/app_settings.py:74
1363
1368
  msgid "Default password for automatically created accounts."
1364
1369
  msgstr ""
1365
1370
 
1366
- #: core/app_settings.py:93
1371
+ #: core/app_settings.py:81
1367
1372
  msgid "Random password length"
1368
1373
  msgstr ""
1369
1374
 
1370
- #: core/app_settings.py:95
1375
+ #: core/app_settings.py:83
1371
1376
  msgid "Length of randomly generated passwords."
1372
1377
  msgstr ""
1373
1378
 
1374
- #: core/app_settings.py:103
1379
+ #: core/app_settings.py:91
1375
1380
  msgid "Allow special characters for random password"
1376
1381
  msgstr ""
1377
1382
 
1378
- #: core/app_settings.py:106
1383
+ #: core/app_settings.py:94
1379
1384
  msgid "Enable special characters in randomly generated passwords."
1380
1385
  msgstr ""
1381
1386
 
1382
- #: core/app_settings.py:114
1387
+ #: core/app_settings.py:102
1383
1388
  msgid "Update password service URL"
1384
1389
  msgstr ""
1385
1390
 
1386
- #: core/app_settings.py:116
1391
+ #: core/app_settings.py:104
1387
1392
  msgid ""
1388
1393
  "The URL of an external page where users will be able to update their "
1389
1394
  "password. It applies only to non local users, ie. those automatically "
1390
1395
  "created after a successful external authentication (LDAP, SMTP)."
1391
1396
  msgstr ""
1392
1397
 
1393
- #: core/app_settings.py:126
1398
+ #: core/app_settings.py:114
1394
1399
  msgid "Password recovery announcement"
1395
1400
  msgstr ""
1396
1401
 
1397
- #: core/app_settings.py:128
1402
+ #: core/app_settings.py:116
1398
1403
  msgid "A temporary message that will be displayed on the reset password page."
1399
1404
  msgstr ""
1400
1405
 
1401
- #: core/app_settings.py:137
1406
+ #: core/app_settings.py:125
1402
1407
  msgid "Enable password recovery by SMS"
1403
1408
  msgstr ""
1404
1409
 
1405
- #: core/app_settings.py:140
1410
+ #: core/app_settings.py:128
1406
1411
  msgid "Enable password recovery by SMS for users who filled a phone number."
1407
1412
  msgstr ""
1408
1413
 
1409
- #: core/app_settings.py:148
1414
+ #: core/app_settings.py:136
1410
1415
  msgid "SMS provider"
1411
1416
  msgstr ""
1412
1417
 
1413
- #: core/app_settings.py:151
1418
+ #: core/app_settings.py:139
1414
1419
  msgid "Choose a provider to send password recovery SMS"
1415
1420
  msgstr ""
1416
1421
 
1417
- #: core/app_settings.py:163
1422
+ #: core/app_settings.py:151
1418
1423
  msgid "LDAP"
1419
1424
  msgstr ""
1420
1425
 
1421
- #: core/app_settings.py:169 sievefilters/app_settings.py:18
1426
+ #: core/app_settings.py:157 sievefilters/app_settings.py:18
1422
1427
  #: sievefilters/app_settings.py:51 webmail/app_settings.py:36
1423
- #: webmail/app_settings.py:73
1428
+ #: webmail/app_settings.py:73 webmail/app_settings.py:119
1424
1429
  msgid "Server address"
1425
1430
  msgstr "Naslov strežnika"
1426
1431
 
1427
- #: core/app_settings.py:171
1432
+ #: core/app_settings.py:159
1428
1433
  msgid "The IP address or the DNS name of the LDAP server"
1429
1434
  msgstr ""
1430
1435
 
1431
- #: core/app_settings.py:178 sievefilters/app_settings.py:25
1436
+ #: core/app_settings.py:166 sievefilters/app_settings.py:25
1432
1437
  #: sievefilters/app_settings.py:67 webmail/app_settings.py:54
1433
- #: webmail/app_settings.py:91
1438
+ #: webmail/app_settings.py:91 webmail/app_settings.py:137
1434
1439
  msgid "Server port"
1435
1440
  msgstr "Vrata strežnika"
1436
1441
 
1437
- #: core/app_settings.py:180
1442
+ #: core/app_settings.py:168
1438
1443
  msgid "The TCP port number used by the LDAP server"
1439
1444
  msgstr ""
1440
1445
 
1441
- #: core/app_settings.py:188
1446
+ #: core/app_settings.py:176
1442
1447
  msgid "Enable secondary server (fallback)"
1443
1448
  msgstr ""
1444
1449
 
1445
- #: core/app_settings.py:191
1450
+ #: core/app_settings.py:179
1446
1451
  msgid ""
1447
1452
  "Enable a secondary LDAP server which will be used if the primary one fails"
1448
1453
  msgstr ""
1449
1454
 
1450
- #: core/app_settings.py:199
1455
+ #: core/app_settings.py:187
1451
1456
  #, fuzzy
1452
1457
  #| msgid "Server address"
1453
1458
  msgid "Secondary server address"
1454
1459
  msgstr "Naslov strežnika"
1455
1460
 
1456
- #: core/app_settings.py:202
1461
+ #: core/app_settings.py:190
1457
1462
  msgid "The IP address or the DNS name of the seondary LDAP server"
1458
1463
  msgstr ""
1459
1464
 
1460
- #: core/app_settings.py:209
1465
+ #: core/app_settings.py:197
1461
1466
  #, fuzzy
1462
1467
  #| msgid "Server port"
1463
1468
  msgid "Secondary server port"
1464
1469
  msgstr "Vrata strežnika"
1465
1470
 
1466
- #: core/app_settings.py:212
1471
+ #: core/app_settings.py:200
1467
1472
  msgid "The TCP port number used by the LDAP secondary server"
1468
1473
  msgstr ""
1469
1474
 
1470
- #: core/app_settings.py:219 sievefilters/app_settings.py:58
1475
+ #: core/app_settings.py:207 sievefilters/app_settings.py:58
1471
1476
  #: webmail/app_settings.py:45
1472
1477
  msgid "Use a secured connection"
1473
1478
  msgstr "Uporabi zavarovano povezavo"
1474
1479
 
1475
- #: core/app_settings.py:221
1480
+ #: core/app_settings.py:209
1476
1481
  #, fuzzy
1477
1482
  #| msgid "Use a secured connection to access IMAP server"
1478
1483
  msgid "Use an SSL/STARTTLS connection to access the LDAP server"
1479
1484
  msgstr "Za dostop do IMAP strežnika, uporabite zavarovano povezavo"
1480
1485
 
1481
- #: core/app_settings.py:228
1486
+ #: core/app_settings.py:216
1482
1487
  msgid "Active Directory"
1483
1488
  msgstr ""
1484
1489
 
1485
- #: core/app_settings.py:230
1490
+ #: core/app_settings.py:218
1486
1491
  msgid "Tell if the LDAP server is an Active Directory one"
1487
1492
  msgstr ""
1488
1493
 
1489
- #: core/app_settings.py:237
1494
+ #: core/app_settings.py:225
1490
1495
  msgid "Administrator groups"
1491
1496
  msgstr ""
1492
1497
 
1493
- #: core/app_settings.py:239
1498
+ #: core/app_settings.py:227
1494
1499
  msgid ""
1495
1500
  "Members of those LDAP Posix groups will be created as domain administrators. "
1496
1501
  "Use ';' characters to separate groups."
1497
1502
  msgstr ""
1498
1503
 
1499
- #: core/app_settings.py:248
1504
+ #: core/app_settings.py:236
1500
1505
  msgid "Group type"
1501
1506
  msgstr ""
1502
1507
 
1503
- #: core/app_settings.py:250
1508
+ #: core/app_settings.py:238
1504
1509
  msgid "The LDAP group type to use with your directory."
1505
1510
  msgstr ""
1506
1511
 
1507
- #: core/app_settings.py:257
1512
+ #: core/app_settings.py:245
1508
1513
  msgid "Groups search base"
1509
1514
  msgstr ""
1510
1515
 
1511
- #: core/app_settings.py:259
1516
+ #: core/app_settings.py:247
1512
1517
  msgid "The distinguished name of the search base used to find groups"
1513
1518
  msgstr ""
1514
1519
 
1515
- #: core/app_settings.py:267
1520
+ #: core/app_settings.py:255
1516
1521
  msgid "Password attribute"
1517
1522
  msgstr ""
1518
1523
 
1519
- #: core/app_settings.py:269
1524
+ #: core/app_settings.py:257
1520
1525
  msgid "The attribute used to store user passwords"
1521
1526
  msgstr ""
1522
1527
 
1523
- #: core/app_settings.py:276
1528
+ #: core/app_settings.py:264
1524
1529
  #, fuzzy
1525
1530
  #| msgid "Connection settings"
1526
1531
  msgid "LDAP authentication settings"
1527
1532
  msgstr "Nastavitve povezave"
1528
1533
 
1529
- #: core/app_settings.py:284
1534
+ #: core/app_settings.py:272
1530
1535
  msgid "Authentication method"
1531
1536
  msgstr ""
1532
1537
 
1533
- #: core/app_settings.py:287
1538
+ #: core/app_settings.py:275
1534
1539
  msgid "Choose the authentication method to use"
1535
1540
  msgstr ""
1536
1541
 
1537
- #: core/app_settings.py:294 core/app_settings.py:357
1542
+ #: core/app_settings.py:282 core/app_settings.py:345
1538
1543
  msgid "Bind DN"
1539
1544
  msgstr ""
1540
1545
 
1541
- #: core/app_settings.py:296 core/app_settings.py:359
1546
+ #: core/app_settings.py:284 core/app_settings.py:347
1542
1547
  msgid ""
1543
1548
  "The distinguished name to use when binding to the LDAP server. Leave empty "
1544
1549
  "for an anonymous bind"
1545
1550
  msgstr ""
1546
1551
 
1547
- #: core/app_settings.py:305 core/app_settings.py:367
1552
+ #: core/app_settings.py:293 core/app_settings.py:355
1548
1553
  msgid "Bind password"
1549
1554
  msgstr ""
1550
1555
 
1551
- #: core/app_settings.py:307 core/app_settings.py:369
1556
+ #: core/app_settings.py:295 core/app_settings.py:357
1552
1557
  msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
1553
1558
  msgstr ""
1554
1559
 
1555
- #: core/app_settings.py:317 core/app_settings.py:422
1560
+ #: core/app_settings.py:305 core/app_settings.py:410
1556
1561
  msgid "Users search base"
1557
1562
  msgstr ""
1558
1563
 
1559
- #: core/app_settings.py:319 core/app_settings.py:424
1564
+ #: core/app_settings.py:307 core/app_settings.py:412
1560
1565
  msgid "The distinguished name of the search base used to find users"
1561
1566
  msgstr ""
1562
1567
 
1563
- #: core/app_settings.py:328 core/app_settings.py:433
1568
+ #: core/app_settings.py:316 core/app_settings.py:421
1564
1569
  msgid "Search filter"
1565
1570
  msgstr ""
1566
1571
 
1567
- #: core/app_settings.py:330 core/app_settings.py:435
1572
+ #: core/app_settings.py:318 core/app_settings.py:423
1568
1573
  msgid ""
1569
1574
  "An optional filter string (e.g. '(objectClass=person)'). In order to be "
1570
1575
  "valid, it must be enclosed in parentheses."
1571
1576
  msgstr ""
1572
1577
 
1573
- #: core/app_settings.py:339
1578
+ #: core/app_settings.py:327
1574
1579
  msgid "User DN template"
1575
1580
  msgstr ""
1576
1581
 
1577
- #: core/app_settings.py:341
1582
+ #: core/app_settings.py:329
1578
1583
  #, python-format
1579
1584
  msgid ""
1580
1585
  "The template used to construct a user's DN. It should contain one "
1581
1586
  "placeholder (ie. %(user)s)"
1582
1587
  msgstr ""
1583
1588
 
1584
- #: core/app_settings.py:350
1589
+ #: core/app_settings.py:338
1585
1590
  #, fuzzy
1586
1591
  #| msgid "Connection settings"
1587
1592
  msgid "LDAP synchronization settings"
1588
1593
  msgstr "Nastavitve povezave"
1589
1594
 
1590
- #: core/app_settings.py:378
1595
+ #: core/app_settings.py:366
1591
1596
  msgid "Enable export to LDAP"
1592
1597
  msgstr ""
1593
1598
 
1594
- #: core/app_settings.py:380
1599
+ #: core/app_settings.py:368
1595
1600
  msgid ""
1596
1601
  "Enable automatic synchronization between local database and LDAP directory"
1597
1602
  msgstr ""
1598
1603
 
1599
- #: core/app_settings.py:389
1604
+ #: core/app_settings.py:377
1600
1605
  msgid "Delete remote LDAP account when local account is deleted"
1601
1606
  msgstr ""
1602
1607
 
1603
- #: core/app_settings.py:392
1608
+ #: core/app_settings.py:380
1604
1609
  msgid ""
1605
1610
  "Delete remote LDAP account when local account is deleted, otherwise it will "
1606
1611
  "be disabled."
1607
1612
  msgstr ""
1608
1613
 
1609
- #: core/app_settings.py:401
1614
+ #: core/app_settings.py:389
1610
1615
  msgid "Account DN template"
1611
1616
  msgstr ""
1612
1617
 
1613
- #: core/app_settings.py:403
1618
+ #: core/app_settings.py:391
1614
1619
  #, python-format
1615
1620
  msgid ""
1616
1621
  "The template used to construct an account's DN. It should contain one "
1617
1622
  "placeholder (ie. %(user)s)"
1618
1623
  msgstr ""
1619
1624
 
1620
- #: core/app_settings.py:412
1625
+ #: core/app_settings.py:400
1621
1626
  msgid "Enable import from LDAP"
1622
1627
  msgstr ""
1623
1628
 
1624
- #: core/app_settings.py:414
1629
+ #: core/app_settings.py:402
1625
1630
  msgid "Enable account synchronization from LDAP directory to local database"
1626
1631
  msgstr ""
1627
1632
 
1628
- #: core/app_settings.py:444
1633
+ #: core/app_settings.py:432
1629
1634
  msgid "Username attribute"
1630
1635
  msgstr ""
1631
1636
 
1632
- #: core/app_settings.py:446
1637
+ #: core/app_settings.py:434
1633
1638
  msgid "The name of the LDAP attribute where the username can be found."
1634
1639
  msgstr ""
1635
1640
 
1636
- #: core/app_settings.py:455
1641
+ #: core/app_settings.py:443
1637
1642
  msgid "Enable Dovecot LDAP sync"
1638
1643
  msgstr ""
1639
1644
 
1640
- #: core/app_settings.py:457
1645
+ #: core/app_settings.py:445
1641
1646
  msgid "LDAP authentication settings will be applied to Dovecot configuration."
1642
1647
  msgstr ""
1643
1648
 
1644
- #: core/app_settings.py:465
1649
+ #: core/app_settings.py:453
1645
1650
  msgid "Dovecot LDAP config file"
1646
1651
  msgstr ""
1647
1652
 
1648
- #: core/app_settings.py:467
1653
+ #: core/app_settings.py:455
1649
1654
  msgid ""
1650
1655
  "Location of the configuration file which contains Dovecot LDAP settings."
1651
1656
  msgstr ""
1652
1657
 
1653
- #: core/app_settings.py:480
1658
+ #: core/app_settings.py:468
1654
1659
  msgid "Dashboard"
1655
1660
  msgstr ""
1656
1661
 
1657
- #: core/app_settings.py:486
1662
+ #: core/app_settings.py:474
1658
1663
  msgid "Custom welcome message"
1659
1664
  msgstr ""
1660
1665
 
1661
- #: core/app_settings.py:488
1666
+ #: core/app_settings.py:476
1662
1667
  msgid "A welcome message that will be displayed instead the default one"
1663
1668
  msgstr ""
1664
1669
 
1665
- #: core/app_settings.py:495
1670
+ #: core/app_settings.py:483
1666
1671
  msgid "Custom RSS feed"
1667
1672
  msgstr ""
1668
1673
 
1669
- #: core/app_settings.py:497
1674
+ #: core/app_settings.py:485
1670
1675
  msgid "Display custom RSS feed to resellers and domain administrators"
1671
1676
  msgstr ""
1672
1677
 
1673
- #: core/app_settings.py:506
1678
+ #: core/app_settings.py:494
1674
1679
  msgid "Display custom RSS feed to super admins"
1675
1680
  msgstr ""
1676
1681
 
1677
- #: core/app_settings.py:509
1682
+ #: core/app_settings.py:497
1678
1683
  msgid "Display custom RSS feed also to super administrators"
1679
1684
  msgstr ""
1680
1685
 
1681
- #: core/app_settings.py:517
1686
+ #: core/app_settings.py:505
1682
1687
  msgid "Hide features widget"
1683
1688
  msgstr ""
1684
1689
 
1685
- #: core/app_settings.py:519
1690
+ #: core/app_settings.py:507
1686
1691
  msgid "Hide features widget for resellers and domain administrators"
1687
1692
  msgstr ""
1688
1693
 
1689
- #: core/app_settings.py:531
1694
+ #: core/app_settings.py:519
1690
1695
  msgid "Theme"
1691
1696
  msgstr ""
1692
1697
 
1693
- #: core/app_settings.py:537
1698
+ #: core/app_settings.py:525
1694
1699
  msgid "Primary theme color"
1695
1700
  msgstr ""
1696
1701
 
1697
- #: core/app_settings.py:539
1702
+ #: core/app_settings.py:527
1698
1703
  msgid ""
1699
1704
  "Primary color of the theme (hexadecimal code), used as the background color "
1700
1705
  "of the left menu for example"
1701
1706
  msgstr ""
1702
1707
 
1703
- #: core/app_settings.py:548
1708
+ #: core/app_settings.py:536
1704
1709
  msgid "Primary theme color (lighter version)"
1705
1710
  msgstr ""
1706
1711
 
1707
- #: core/app_settings.py:551 core/app_settings.py:563
1712
+ #: core/app_settings.py:539 core/app_settings.py:551
1708
1713
  msgid "Primary color of the theme (hexadecimal code)"
1709
1714
  msgstr ""
1710
1715
 
1711
- #: core/app_settings.py:560
1716
+ #: core/app_settings.py:548
1712
1717
  msgid "Primary theme color (darker version)"
1713
1718
  msgstr ""
1714
1719
 
1715
- #: core/app_settings.py:571
1720
+ #: core/app_settings.py:559
1716
1721
  #, fuzzy
1717
1722
  #| msgid "Server port"
1718
1723
  msgid "Secondary theme color"
1719
1724
  msgstr "Vrata strežnika"
1720
1725
 
1721
- #: core/app_settings.py:573
1726
+ #: core/app_settings.py:561
1722
1727
  msgid ""
1723
1728
  "Secondary color of the theme (hexadecimal code), used as the background "
1724
1729
  "color of some buttons for example"
1725
1730
  msgstr ""
1726
1731
 
1727
- #: core/app_settings.py:581
1732
+ #: core/app_settings.py:569
1728
1733
  msgid "Labels theme color"
1729
1734
  msgstr ""
1730
1735
 
1731
- #: core/app_settings.py:583
1736
+ #: core/app_settings.py:571
1732
1737
  msgid "Theme color for labels (hexadecimal code)"
1733
1738
  msgstr ""
1734
1739
 
1735
- #: core/app_settings.py:595
1740
+ #: core/app_settings.py:583
1736
1741
  msgid "Notifications"
1737
1742
  msgstr ""
1738
1743
 
1739
- #: core/app_settings.py:601
1744
+ #: core/app_settings.py:589
1740
1745
  #, fuzzy
1741
1746
  #| msgid "Server address"
1742
1747
  msgid "Sender address"
1743
1748
  msgstr "Naslov strežnika"
1744
1749
 
1745
- #: core/app_settings.py:603
1750
+ #: core/app_settings.py:591
1746
1751
  msgid "Email address used to send notifications."
1747
1752
  msgstr ""
1748
1753
 
1749
- #: core/app_settings.py:614
1754
+ #: core/app_settings.py:602
1750
1755
  msgid "Public API"
1751
1756
  msgstr ""
1752
1757
 
1753
- #: core/app_settings.py:620
1758
+ #: core/app_settings.py:608
1754
1759
  msgid "Enable communication"
1755
1760
  msgstr ""
1756
1761
 
1757
- #: core/app_settings.py:622 core/app_settings.py:632
1762
+ #: core/app_settings.py:610 core/app_settings.py:620
1758
1763
  msgid "Automatically checks if a newer version is available"
1759
1764
  msgstr ""
1760
1765
 
1761
- #: core/app_settings.py:629
1766
+ #: core/app_settings.py:617
1762
1767
  msgid "Check new versions"
1763
1768
  msgstr ""
1764
1769
 
1765
- #: core/app_settings.py:640
1770
+ #: core/app_settings.py:628
1766
1771
  msgid "Send an email when new versions are found"
1767
1772
  msgstr ""
1768
1773
 
1769
- #: core/app_settings.py:644
1774
+ #: core/app_settings.py:632
1770
1775
  msgid "Send an email to notify admins about new versions"
1771
1776
  msgstr ""
1772
1777
 
1773
- #: core/app_settings.py:651 sievefilters/constants.py:25
1778
+ #: core/app_settings.py:639 sievefilters/constants.py:25
1774
1779
  msgid "Recipient"
1775
1780
  msgstr ""
1776
1781
 
1777
- #: core/app_settings.py:654
1782
+ #: core/app_settings.py:642
1778
1783
  msgid "Recipient of new versions notification emails."
1779
1784
  msgstr ""
1780
1785
 
1781
- #: core/app_settings.py:661
1786
+ #: core/app_settings.py:649
1782
1787
  msgid "Send statistics"
1783
1788
  msgstr ""
1784
1789
 
1785
- #: core/app_settings.py:664
1790
+ #: core/app_settings.py:652
1786
1791
  msgid "Send statistics to Modoboa public API (counters and used extensions)"
1787
1792
  msgstr ""
1788
1793
 
1789
- #: core/app_settings.py:683
1794
+ #: core/app_settings.py:671
1790
1795
  msgid "Enable inactive account tracking"
1791
1796
  msgstr ""
1792
1797
 
1793
- #: core/app_settings.py:686
1798
+ #: core/app_settings.py:674
1794
1799
  msgid ""
1795
1800
  "Allow the administrator to set a threshold (in days) beyond which an account "
1796
1801
  "is considered inactive if the user hasn't logged in"
1797
1802
  msgstr ""
1798
1803
 
1799
- #: core/app_settings.py:695
1804
+ #: core/app_settings.py:683
1800
1805
  msgid "Inactive account threshold"
1801
1806
  msgstr ""
1802
1807
 
1803
- #: core/app_settings.py:698
1808
+ #: core/app_settings.py:686
1804
1809
  msgid ""
1805
1810
  "An account with a last login date greater than this threshold (in days) will "
1806
1811
  "be considered as inactive"
1807
1812
  msgstr ""
1808
1813
 
1809
- #: core/app_settings.py:707
1814
+ #: core/app_settings.py:695
1810
1815
  msgid "Top notifications check interval"
1811
1816
  msgstr ""
1812
1817
 
1813
- #: core/app_settings.py:710
1818
+ #: core/app_settings.py:698
1814
1819
  msgid "Interval between two top notification checks (in seconds)"
1815
1820
  msgstr ""
1816
1821
 
1817
- #: core/app_settings.py:717
1822
+ #: core/app_settings.py:705
1818
1823
  msgid "Maximum log record age"
1819
1824
  msgstr ""
1820
1825
 
1821
- #: core/app_settings.py:719
1826
+ #: core/app_settings.py:707
1822
1827
  msgid "The maximum age in days of a log record"
1823
1828
  msgstr ""
1824
1829
 
1825
- #: core/app_settings.py:727
1830
+ #: core/app_settings.py:715
1826
1831
  msgid "Retention time in message history"
1827
1832
  msgstr ""
1828
1833
 
1829
- #: core/app_settings.py:730
1834
+ #: core/app_settings.py:718
1830
1835
  msgid "Retention time (in days) of a message in the message history section"
1831
1836
  msgstr ""
1832
1837
 
1833
- #: core/app_settings.py:737
1838
+ #: core/app_settings.py:725
1834
1839
  msgid "Items per page"
1835
1840
  msgstr ""
1836
1841
 
1837
- #: core/app_settings.py:739
1842
+ #: core/app_settings.py:727
1838
1843
  msgid "Number of displayed items per page"
1839
1844
  msgstr ""
1840
1845
 
1841
- #: core/app_settings.py:746
1842
- msgid "Default top redirection"
1843
- msgstr ""
1844
-
1845
- #: core/app_settings.py:748
1846
- msgid "The default redirection used when no application is specified"
1847
- msgstr ""
1848
-
1849
1846
  #: core/checks.py:15
1850
1847
  msgid ""
1851
1848
  "You have USE_TZ set to False, this may result in issues during transitions "
@@ -2178,7 +2175,7 @@ msgid "Not resolved"
2178
2175
  msgstr ""
2179
2176
 
2180
2177
  #: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
2181
- #: webmail/constants.py:18
2178
+ #: webmail/constants.py:38
2182
2179
  msgid "None"
2183
2180
  msgstr ""
2184
2181
 
@@ -3110,7 +3107,7 @@ msgstr ""
3110
3107
  msgid "is not"
3111
3108
  msgstr ""
3112
3109
 
3113
- #: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
3110
+ #: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
3114
3111
  msgid "Subject"
3115
3112
  msgstr ""
3116
3113
 
@@ -3342,25 +3339,25 @@ msgstr ""
3342
3339
  msgid "SMTP settings"
3343
3340
  msgstr "IMAP nastavitve brez povezave"
3344
3341
 
3345
- #: webmail/app_settings.py:75
3342
+ #: webmail/app_settings.py:75 webmail/app_settings.py:121
3346
3343
  #, fuzzy
3347
3344
  #| msgid "Address of your IMAP server"
3348
3345
  msgid "Address of your SMTP server"
3349
3346
  msgstr "Naslov vašega IMAP strežnika"
3350
3347
 
3351
- #: webmail/app_settings.py:82
3348
+ #: webmail/app_settings.py:82 webmail/app_settings.py:128
3352
3349
  #, fuzzy
3353
3350
  #| msgid "Use a secured connection"
3354
3351
  msgid "Secured connection mode"
3355
3352
  msgstr "Uporabi zavarovano povezavo"
3356
3353
 
3357
- #: webmail/app_settings.py:84
3354
+ #: webmail/app_settings.py:84 webmail/app_settings.py:130
3358
3355
  #, fuzzy
3359
3356
  #| msgid "Use a secured connection to access IMAP server"
3360
3357
  msgid "Use a secured connection to access SMTP server"
3361
3358
  msgstr "Za dostop do IMAP strežnika, uporabite zavarovano povezavo"
3362
3359
 
3363
- #: webmail/app_settings.py:93
3360
+ #: webmail/app_settings.py:93 webmail/app_settings.py:139
3364
3361
  #, fuzzy
3365
3362
  #| msgid "Listening port of your IMAP server"
3366
3363
  msgid "Listening port of your SMTP server"
@@ -3378,95 +3375,101 @@ msgstr "Nastavitve povezave"
3378
3375
  msgid "Server needs authentication"
3379
3376
  msgstr "Nastavitve povezave"
3380
3377
 
3381
- #: webmail/app_settings.py:124
3378
+ #: webmail/app_settings.py:113
3379
+ #, fuzzy
3380
+ #| msgid "Connection settings"
3381
+ msgid "Scheduling settings"
3382
+ msgstr "Nastavitve povezave"
3383
+
3384
+ #: webmail/app_settings.py:161
3382
3385
  msgid "Default message display mode"
3383
3386
  msgstr ""
3384
3387
 
3385
- #: webmail/app_settings.py:126
3388
+ #: webmail/app_settings.py:163
3386
3389
  msgid "The default mode used when displaying a message"
3387
3390
  msgstr ""
3388
3391
 
3389
- #: webmail/app_settings.py:133
3392
+ #: webmail/app_settings.py:170
3390
3393
  msgid "Enable HTML links display"
3391
3394
  msgstr ""
3392
3395
 
3393
- #: webmail/app_settings.py:136
3396
+ #: webmail/app_settings.py:173
3394
3397
  msgid "Enable/Disable HTML links display"
3395
3398
  msgstr ""
3396
3399
 
3397
- #: webmail/app_settings.py:147
3400
+ #: webmail/app_settings.py:184
3398
3401
  msgid "Sets the maximum number of messages displayed in a page"
3399
3402
  msgstr ""
3400
3403
 
3401
- #: webmail/app_settings.py:154
3404
+ #: webmail/app_settings.py:191
3402
3405
  msgid "Listing refresh rate"
3403
3406
  msgstr ""
3404
3407
 
3405
- #: webmail/app_settings.py:156
3408
+ #: webmail/app_settings.py:193
3406
3409
  msgid "Automatic listing refresh rate (in secconds)"
3407
3410
  msgstr ""
3408
3411
 
3409
- #: webmail/app_settings.py:163
3412
+ #: webmail/app_settings.py:200
3410
3413
  msgid "Folder container's width"
3411
3414
  msgstr ""
3412
3415
 
3413
- #: webmail/app_settings.py:165
3416
+ #: webmail/app_settings.py:202
3414
3417
  msgid "The width of the folder list container"
3415
3418
  msgstr ""
3416
3419
 
3417
- #: webmail/app_settings.py:176
3420
+ #: webmail/app_settings.py:213
3418
3421
  msgid "Folders"
3419
3422
  msgstr ""
3420
3423
 
3421
- #: webmail/app_settings.py:182
3424
+ #: webmail/app_settings.py:219
3422
3425
  msgid "Trash folder"
3423
3426
  msgstr ""
3424
3427
 
3425
- #: webmail/app_settings.py:184
3428
+ #: webmail/app_settings.py:221
3426
3429
  msgid "Folder where deleted messages go"
3427
3430
  msgstr ""
3428
3431
 
3429
- #: webmail/app_settings.py:191
3432
+ #: webmail/app_settings.py:228
3430
3433
  msgid "Sent folder"
3431
3434
  msgstr ""
3432
3435
 
3433
- #: webmail/app_settings.py:193
3436
+ #: webmail/app_settings.py:230
3434
3437
  msgid "Folder where copies of sent messages go"
3435
3438
  msgstr ""
3436
3439
 
3437
- #: webmail/app_settings.py:200
3440
+ #: webmail/app_settings.py:237
3438
3441
  msgid "Drafts folder"
3439
3442
  msgstr ""
3440
3443
 
3441
- #: webmail/app_settings.py:201
3444
+ #: webmail/app_settings.py:238
3442
3445
  msgid "Folder where drafts go"
3443
3446
  msgstr ""
3444
3447
 
3445
- #: webmail/app_settings.py:207
3448
+ #: webmail/app_settings.py:244
3446
3449
  msgid "Junk folder"
3447
3450
  msgstr ""
3448
3451
 
3449
- #: webmail/app_settings.py:209
3452
+ #: webmail/app_settings.py:246
3450
3453
  msgid "Folder where junk messages should go"
3451
3454
  msgstr ""
3452
3455
 
3453
- #: webmail/app_settings.py:220
3456
+ #: webmail/app_settings.py:257
3454
3457
  msgid "Composing messages"
3455
3458
  msgstr ""
3456
3459
 
3457
- #: webmail/app_settings.py:226
3460
+ #: webmail/app_settings.py:263
3458
3461
  msgid "Default editor"
3459
3462
  msgstr ""
3460
3463
 
3461
- #: webmail/app_settings.py:228
3464
+ #: webmail/app_settings.py:265
3462
3465
  msgid "The default editor to use when composing a message"
3463
3466
  msgstr ""
3464
3467
 
3465
- #: webmail/app_settings.py:235
3468
+ #: webmail/app_settings.py:272
3466
3469
  msgid "Signature text"
3467
3470
  msgstr ""
3468
3471
 
3469
- #: webmail/app_settings.py:237
3472
+ #: webmail/app_settings.py:274
3470
3473
  msgid "User defined email signature"
3471
3474
  msgstr ""
3472
3475
 
@@ -3480,43 +3483,59 @@ msgstr "Naslov strežnika"
3480
3483
  msgid "Failed to remove attachment: "
3481
3484
  msgstr ""
3482
3485
 
3483
- #: webmail/lib/imapemail.py:272
3486
+ #: webmail/lib/imapemail.py:270
3484
3487
  msgid "wrote:"
3485
3488
  msgstr ""
3486
3489
 
3487
- #: webmail/lib/imapemail.py:306
3490
+ #: webmail/lib/imapemail.py:304
3488
3491
  msgid "Date"
3489
3492
  msgstr ""
3490
3493
 
3491
- #: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
3494
+ #: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
3492
3495
  msgid "Original message"
3493
3496
  msgstr ""
3494
3497
 
3495
- #: webmail/lib/imaputils.py:221
3498
+ #: webmail/lib/imaputils.py:222
3496
3499
  msgid "Failed to retrieve hierarchy delimiter"
3497
3500
  msgstr ""
3498
3501
 
3499
- #: webmail/lib/imaputils.py:472
3502
+ #: webmail/lib/imaputils.py:478
3500
3503
  msgid "Inbox"
3501
3504
  msgstr ""
3502
3505
 
3503
- #: webmail/lib/imaputils.py:476
3506
+ #: webmail/lib/imaputils.py:482
3504
3507
  msgid "Drafts"
3505
3508
  msgstr ""
3506
3509
 
3507
- #: webmail/lib/imaputils.py:481
3510
+ #: webmail/lib/imaputils.py:487
3508
3511
  msgid "Junk"
3509
3512
  msgstr ""
3510
3513
 
3511
- #: webmail/lib/imaputils.py:486
3514
+ #: webmail/lib/imaputils.py:492
3512
3515
  msgid "Sent"
3513
3516
  msgstr ""
3514
3517
 
3515
- #: webmail/lib/imaputils.py:491
3518
+ #: webmail/lib/imaputils.py:500
3519
+ msgid "Scheduled"
3520
+ msgstr ""
3521
+
3522
+ #: webmail/lib/imaputils.py:507
3516
3523
  msgid "Trash"
3517
3524
  msgstr ""
3518
3525
 
3519
- #: webmail/viewsets.py:357
3526
+ #: webmail/serializers.py:220
3527
+ msgid "Moving scheduled messages is forbidden"
3528
+ msgstr ""
3529
+
3530
+ #: webmail/serializers.py:253
3531
+ msgid "Only datetime in the future is allowed"
3532
+ msgstr ""
3533
+
3534
+ #: webmail/serializers.py:258
3535
+ msgid "Provived datetime must be one minute in the future at least"
3536
+ msgstr ""
3537
+
3538
+ #: webmail/viewsets.py:359
3520
3539
  #, python-format
3521
3540
  msgid "Attachment is too big (limit: %s)"
3522
3541
  msgstr ""