modoboa 2.6.4__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 (364) 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/autoreply/models.py +4 -4
  16. modoboa/calendars/backends/caldav_.py +17 -13
  17. modoboa/calendars/jobs.py +7 -0
  18. modoboa/calendars/mocks.py +4 -1
  19. modoboa/calendars/serializers.py +14 -9
  20. modoboa/calendars/tests.py +10 -9
  21. modoboa/calendars/viewsets.py +3 -1
  22. modoboa/contacts/migrations/0008_addressbook_syncing.py +18 -0
  23. modoboa/contacts/models.py +1 -0
  24. modoboa/contacts/serializers.py +5 -2
  25. modoboa/contacts/tasks.py +9 -3
  26. modoboa/contacts/tests.py +32 -6
  27. modoboa/contacts/viewsets.py +7 -1
  28. modoboa/core/api/v2/serializers.py +0 -7
  29. modoboa/core/api/v2/tests.py +0 -10
  30. modoboa/core/app_settings.py +0 -22
  31. modoboa/core/commands/deploy.py +13 -0
  32. modoboa/core/commands/templates/cron_config.py.tpl +33 -0
  33. modoboa/core/commands/templates/settings.py.tpl +21 -0
  34. modoboa/core/jobs.py +34 -0
  35. modoboa/core/management/commands/load_initial_data.py +1 -1
  36. modoboa/core/password_hashers/base.py +4 -1
  37. modoboa/core/tests/test_core.py +0 -14
  38. modoboa/core/tests/test_jobs.py +40 -0
  39. modoboa/frontend_dist/assets/{AccountAliasForm-tLHotdIR.js → AccountAliasForm-DO6DwfjE.js} +1 -1
  40. modoboa/frontend_dist/assets/{AccountEditView-DnQIIg47.js → AccountEditView-CCuN9mGB.js} +1 -1
  41. modoboa/frontend_dist/assets/AccountLayout-Ge7fzuZg.js +1 -0
  42. modoboa/frontend_dist/assets/AccountPasswordSubForm-PkFPblkR.js +1 -0
  43. modoboa/frontend_dist/assets/AccountView-dgseekZ8.js +1 -0
  44. modoboa/frontend_dist/assets/AddressBook-DZWOHOJj.js +1 -0
  45. modoboa/frontend_dist/assets/AdminLayout-itB_mmH_.js +1 -0
  46. modoboa/frontend_dist/assets/AlarmsView-King6zb6.js +1 -0
  47. modoboa/frontend_dist/assets/{AliasEditView-n75NEN_s.js → AliasEditView-CTjrXYPf.js} +1 -1
  48. modoboa/frontend_dist/assets/AliasRecipientForm-CI7bXqVp.js +1 -0
  49. modoboa/frontend_dist/assets/{AliasView-DFIvPeIm.js → AliasView-BN13MNN_.js} +1 -1
  50. modoboa/frontend_dist/assets/AuditTrailView-C1jQwgoo.js +1 -0
  51. modoboa/frontend_dist/assets/CalendarView-juHVIHU5.css +1 -0
  52. modoboa/frontend_dist/assets/CalendarView-rRSzqxrH.js +1 -0
  53. modoboa/frontend_dist/assets/ChoiceField-DCr12shR.js +1 -0
  54. modoboa/frontend_dist/assets/ComposeEmailForm-BmtKwFb1.js +2 -0
  55. modoboa/frontend_dist/assets/ComposeEmailForm-CVNDl-Mq.css +1 -0
  56. modoboa/frontend_dist/assets/ComposeEmailView-JW22Phrb.js +1 -0
  57. modoboa/frontend_dist/assets/ConfirmDialog-CWpdwSQ6.js +1 -0
  58. modoboa/frontend_dist/assets/ConnectedLayout-BP8pO27H.js +1 -0
  59. modoboa/frontend_dist/assets/{ConnectedLayout-C6HNXWkp.css → ConnectedLayout-Ddpb_6yT.css} +1 -1
  60. modoboa/frontend_dist/assets/CreationForm-CzelJsVQ.js +1 -0
  61. modoboa/frontend_dist/assets/DashboardView-BBkBodVj.js +1 -0
  62. modoboa/frontend_dist/assets/{DomainAdminList-BjtfbhRj.js → DomainAdminList-DD7p3i6F.js} +1 -1
  63. modoboa/frontend_dist/assets/{DomainEditView-Cq5Ea4RW.js → DomainEditView-DoIoNYC4.js} +1 -1
  64. modoboa/frontend_dist/assets/{DomainTransportForm-DAXJGNLA.js → DomainTransportForm-CbiJF9z5.js} +1 -1
  65. modoboa/frontend_dist/assets/{DomainView-BfpK7U14.js → DomainView-BXvznFYz.js} +3 -3
  66. modoboa/frontend_dist/assets/DomainsView-ffYjiffp.js +1 -0
  67. modoboa/frontend_dist/assets/EmailField-KhhJYA4D.js +1 -0
  68. modoboa/frontend_dist/assets/EmailSchedulingForm-CQL5Vfdr.js +1 -0
  69. modoboa/frontend_dist/assets/EmailView-Bq2bHZBO.js +1 -0
  70. modoboa/frontend_dist/assets/EmptyLayout-NrTftp18.js +1 -0
  71. modoboa/frontend_dist/assets/FiltersView-SOQy0U_3.js +1 -0
  72. modoboa/frontend_dist/assets/ForwardEmailView-kEPDjWUw.js +1 -0
  73. modoboa/frontend_dist/assets/{HtmlEditor-D753fIAJ.js → HtmlEditor-CyBl5wj2.js} +15 -15
  74. modoboa/frontend_dist/assets/IdentitiesView-CZFf4oR9.js +1 -0
  75. modoboa/frontend_dist/assets/InformationView-CAtneAqM.js +1 -0
  76. modoboa/frontend_dist/assets/{LoadingData-Tm56XNwj.js → LoadingData-C2txD49L.js} +1 -1
  77. modoboa/frontend_dist/assets/{LoginCallbackView-DjCHUgz5.js → LoginCallbackView-DAvty3CI.js} +1 -1
  78. modoboa/frontend_dist/assets/{LoginView-D0r4XBEl.js → LoginView-DHYITkn4.js} +1 -1
  79. modoboa/frontend_dist/assets/MailboxView-BNg2v7mi.css +1 -0
  80. modoboa/frontend_dist/assets/MailboxView-DHg5A78D.js +5 -0
  81. modoboa/frontend_dist/assets/MenuItems-C9p70bSC.js +1 -0
  82. modoboa/frontend_dist/assets/{MessageView-BWh9BqzS.js → MessageView-CrrEJpNI.js} +1 -1
  83. modoboa/frontend_dist/assets/MessagesView-CyecRd4I.js +1 -0
  84. modoboa/frontend_dist/assets/MigrationsView-DXGKKz2h.js +1 -0
  85. modoboa/frontend_dist/assets/{ParametersForm-y02-GM0r.js → ParametersForm-DFKYkPAs.js} +1 -1
  86. modoboa/frontend_dist/assets/ParametersView-B1wT5oyt.js +1 -0
  87. modoboa/frontend_dist/assets/ParametersView-CfvVzKea.js +1 -0
  88. modoboa/frontend_dist/assets/ProviderEditView-De-8ggBp.js +1 -0
  89. modoboa/frontend_dist/assets/ProviderGeneralForm-DO-IpJMQ.js +1 -0
  90. modoboa/frontend_dist/assets/ProvidersView-Bhk7sCz4.js +1 -0
  91. modoboa/frontend_dist/assets/QuarantineLayout-C1YszNmP.js +1 -0
  92. modoboa/frontend_dist/assets/QuarantineView-cElD_rS-.js +1 -0
  93. modoboa/frontend_dist/assets/ReplyEmailView-BvuOZdLl.js +1 -0
  94. modoboa/frontend_dist/assets/ResourcesForm-FWxrmVwo.js +1 -0
  95. modoboa/frontend_dist/assets/SelfServiceLayout-JHRvfvQf.js +1 -0
  96. modoboa/frontend_dist/assets/SettingsView-SIsKAXtQ.css +1 -0
  97. modoboa/frontend_dist/assets/SettingsView-s2l2Xl1L.js +6 -0
  98. modoboa/frontend_dist/assets/StatisticsView-FiidWvad.js +1 -0
  99. modoboa/frontend_dist/assets/TimeSerieChart-CdqUHiO_.js +1 -0
  100. modoboa/frontend_dist/assets/TimeSerieChart-nLIFGI0y.css +1 -0
  101. modoboa/frontend_dist/assets/UserLayout-DyvI8duf.js +1 -0
  102. modoboa/frontend_dist/assets/{VAlert-CNys_LUS.js → VAlert-MDbeolOo.js} +1 -1
  103. modoboa/frontend_dist/assets/VApp-DM1KLQfQ.js +1 -0
  104. modoboa/frontend_dist/assets/VAutocomplete-C9NL5_uo.css +1 -0
  105. modoboa/frontend_dist/assets/VAutocomplete-CQsWYWNX.js +1 -0
  106. modoboa/frontend_dist/assets/VAvatar-CXV_FqpP.js +1 -0
  107. modoboa/frontend_dist/assets/VBadge-7tDx7aI3.js +1 -0
  108. modoboa/frontend_dist/assets/{VCard-BoH6kjPa.js → VCard-CBtX8JF-.js} +1 -1
  109. modoboa/frontend_dist/assets/VCheckbox-zY1MApOy.js +1 -0
  110. modoboa/frontend_dist/assets/{VCheckboxBtn-Ccl786Rg.js → VCheckboxBtn-B0mIT3E0.js} +1 -1
  111. modoboa/frontend_dist/assets/VColorPicker-BbCHvk6K.js +1 -0
  112. modoboa/frontend_dist/assets/{VColorPicker-B_lVDaYR.css → VColorPicker-C9m8L-6U.css} +1 -1
  113. modoboa/frontend_dist/assets/{VContainer-DKMcKasC.js → VContainer-Cn-vKB3s.js} +1 -1
  114. modoboa/frontend_dist/assets/VDataTable-CNT9KOSp.js +1 -0
  115. modoboa/frontend_dist/assets/VDataTableServer-_yn4Ry6U.js +1 -0
  116. modoboa/frontend_dist/assets/VDataTableVirtual-Csxh3Gp6.js +1 -0
  117. modoboa/frontend_dist/assets/VDatePicker-_OUDqShN.css +1 -0
  118. modoboa/frontend_dist/assets/VDatePicker-iFu13xIP.js +2 -0
  119. modoboa/frontend_dist/assets/VDialog-lKtBdqnp.js +1 -0
  120. modoboa/frontend_dist/assets/VExpansionPanels-CaIvk9iF.js +1 -0
  121. modoboa/frontend_dist/assets/VFileInput-C7J_qVmk.js +1 -0
  122. modoboa/frontend_dist/assets/VForm-fdQ5d-CH.js +1 -0
  123. modoboa/frontend_dist/assets/VInput-BwHvhzAe.js +1 -0
  124. modoboa/frontend_dist/assets/VMenu-BpmJf4X2.js +1 -0
  125. modoboa/frontend_dist/assets/VMenu-C5A_5Hs5.css +1 -0
  126. modoboa/frontend_dist/assets/VPicker-B7cB3kJg.css +1 -0
  127. modoboa/frontend_dist/assets/VPicker-BZho70wU.js +1 -0
  128. modoboa/frontend_dist/assets/VProgressCircular-DRw_-iNj.js +1 -0
  129. modoboa/frontend_dist/assets/VRadioGroup--eiP5xtJ.js +1 -0
  130. modoboa/frontend_dist/assets/{VRow-CuVZGqBj.js → VRow-83Qnr5iB.js} +1 -1
  131. modoboa/frontend_dist/assets/VSelect-BcmGFGif.js +1 -0
  132. modoboa/frontend_dist/assets/{VSelectionControl-uKY9Zull.js → VSelectionControl-Cqi1xt-q.js} +1 -1
  133. modoboa/frontend_dist/assets/VSheet-C3MaHhtw.js +1 -0
  134. modoboa/frontend_dist/assets/VSpacer-CuSkdJZL.js +1 -0
  135. modoboa/frontend_dist/assets/VSwitch-XumUl685.js +1 -0
  136. modoboa/frontend_dist/assets/{VTable-gDsAUSLX.js → VTable-f7wcr2AZ.js} +1 -1
  137. modoboa/frontend_dist/assets/VTabs-CDfdejXj.css +1 -0
  138. modoboa/frontend_dist/assets/VTabs-y4wNP4im.js +1 -0
  139. modoboa/frontend_dist/assets/VTextField-BPIvtrn4.js +1 -0
  140. modoboa/frontend_dist/assets/VTextField-DjbYGlzs.css +1 -0
  141. modoboa/frontend_dist/assets/VTextarea-B6bGYcC3.js +1 -0
  142. modoboa/frontend_dist/assets/VTextarea-f6vTjzFy.css +1 -0
  143. modoboa/frontend_dist/assets/VToolbar-BYDPtwf0.css +1 -0
  144. modoboa/frontend_dist/assets/VToolbar-CB6wwtYc.js +1 -0
  145. modoboa/frontend_dist/assets/VWindowItem-CDtLLEkg.js +1 -0
  146. modoboa/frontend_dist/assets/WebmailLayout-CQQAolnl.css +1 -0
  147. modoboa/frontend_dist/assets/WebmailLayout-tosQSHLS.js +1 -0
  148. modoboa/frontend_dist/assets/{accounts-DqbBlaLK.js → accounts-KUsk6LHW.js} +1 -1
  149. modoboa/frontend_dist/assets/{admin-D36m_nXq.js → admin-BW9cZW0P.js} +1 -1
  150. modoboa/frontend_dist/assets/{aliases-BtyF8GC8.js → aliases-Ge0hjIsH.js} +1 -1
  151. modoboa/frontend_dist/assets/{amavis-DySmsCJQ.js → amavis-BbFeFfsk.js} +1 -1
  152. modoboa/frontend_dist/assets/{amavis-B4QhM5Fa.js → amavis-DtuzP_CS.js} +1 -1
  153. modoboa/frontend_dist/assets/{contacts-Df8ptuMn.js → contacts-DMJlQTe0.js} +1 -1
  154. modoboa/frontend_dist/assets/{domains-CSxtTvUh.js → domains-Du64lcXT.js} +1 -1
  155. modoboa/frontend_dist/assets/domains.store-1U61jeCV.js +1 -0
  156. modoboa/frontend_dist/assets/events-BM3in65C.js +1 -0
  157. modoboa/frontend_dist/assets/filter-Dihm6o59.js +1 -0
  158. modoboa/frontend_dist/assets/importExport-HGcNGWOm.js +1 -0
  159. modoboa/frontend_dist/assets/{index-B9q1vO3K.css → index-B1EK3MQe.css} +1 -1
  160. modoboa/frontend_dist/assets/{index-Bp9Fb67E.js → index-Dv00bmw9.js} +1 -1
  161. modoboa/frontend_dist/assets/index-jui3edpn.js +1001 -0
  162. modoboa/frontend_dist/assets/{language.store-_-zrrEiS.js → language.store-OcfdXL_-.js} +1 -1
  163. modoboa/frontend_dist/assets/languages-CF8hxo7x.js +1 -0
  164. modoboa/frontend_dist/assets/{layout-CjSP_k58.js → layout-DOO7TRTJ.js} +1 -1
  165. modoboa/frontend_dist/assets/{layout.store-CF5WRevH.js → layout.store-C0g-piJn.js} +1 -1
  166. modoboa/frontend_dist/assets/{logos-95XYS6uH.js → logos-Dz2Gzei-.js} +1 -1
  167. modoboa/frontend_dist/assets/{logs-CyU_PIDh.js → logs-CLm32Weu.js} +1 -1
  168. modoboa/frontend_dist/assets/{parameters-BxAXBXU1.js → parameters-DMIAQ7cd.js} +1 -1
  169. modoboa/frontend_dist/assets/{parameters.store-CATOSoQZ.js → parameters.store-DLnFzCwV.js} +1 -1
  170. modoboa/frontend_dist/assets/{permissions-cSkGqV3M.js → permissions-CrpE0b4w.js} +1 -1
  171. modoboa/frontend_dist/assets/{ssrBoot-05WtbG6H.js → ssrBoot-B7cr7q9U.js} +1 -1
  172. modoboa/frontend_dist/assets/{tag-BmV84V2s.js → tag-WF93n81Q.js} +1 -1
  173. modoboa/frontend_dist/assets/{theme-myV4ekXo.js → theme-_0oOYChG.js} +1 -1
  174. modoboa/frontend_dist/assets/transports-CS61syt-.js +1 -0
  175. modoboa/frontend_dist/assets/webmail-CYDXU0DS.js +1 -0
  176. modoboa/frontend_dist/assets/webmail.store-BvHCQSjM.js +1 -0
  177. modoboa/frontend_dist/index.html +2 -2
  178. modoboa/imap_migration/api/v2/serializers.py +13 -0
  179. modoboa/imap_migration/models.py +3 -3
  180. modoboa/imap_migration/templates/imap_migration/offlineimap.conf +2 -2
  181. modoboa/imap_migration/tests.py +28 -0
  182. modoboa/lib/cryptutils.py +2 -2
  183. modoboa/lib/sysutils.py +1 -1
  184. modoboa/lib/tests/__init__.py +0 -1
  185. modoboa/locale/br/LC_MESSAGES/django.mo +0 -0
  186. modoboa/locale/br/LC_MESSAGES/django.po +753 -317
  187. modoboa/locale/cs/LC_MESSAGES/django.po +671 -309
  188. modoboa/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  189. modoboa/locale/cs_CZ/LC_MESSAGES/django.po +801 -378
  190. modoboa/locale/de/LC_MESSAGES/django.mo +0 -0
  191. modoboa/locale/de/LC_MESSAGES/django.po +1116 -455
  192. modoboa/locale/de_DE/LC_MESSAGES/django.mo +0 -0
  193. modoboa/locale/de_DE/LC_MESSAGES/django.po +745 -318
  194. modoboa/locale/el_GR/LC_MESSAGES/django.mo +0 -0
  195. modoboa/locale/el_GR/LC_MESSAGES/django.po +825 -393
  196. modoboa/locale/en/LC_MESSAGES/django.po +669 -309
  197. modoboa/locale/es/LC_MESSAGES/django.mo +0 -0
  198. modoboa/locale/es/LC_MESSAGES/django.po +810 -390
  199. modoboa/locale/es_MX/LC_MESSAGES/django.po +669 -309
  200. modoboa/locale/fi/LC_MESSAGES/django.mo +0 -0
  201. modoboa/locale/fi/LC_MESSAGES/django.po +756 -316
  202. modoboa/locale/fr/LC_MESSAGES/django.mo +0 -0
  203. modoboa/locale/fr/LC_MESSAGES/django.po +674 -313
  204. modoboa/locale/hu/LC_MESSAGES/django.po +669 -309
  205. modoboa/locale/it/LC_MESSAGES/django.mo +0 -0
  206. modoboa/locale/it/LC_MESSAGES/django.po +807 -380
  207. modoboa/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
  208. modoboa/locale/ja_JP/LC_MESSAGES/django.po +951 -419
  209. modoboa/locale/ka/LC_MESSAGES/django.po +669 -309
  210. modoboa/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
  211. modoboa/locale/nl_NL/LC_MESSAGES/django.po +807 -387
  212. modoboa/locale/no/LC_MESSAGES/django.po +669 -309
  213. modoboa/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  214. modoboa/locale/pl_PL/LC_MESSAGES/django.po +826 -396
  215. modoboa/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  216. modoboa/locale/pt_BR/LC_MESSAGES/django.po +830 -392
  217. modoboa/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
  218. modoboa/locale/pt_PT/LC_MESSAGES/django.po +788 -371
  219. modoboa/locale/ro_RO/LC_MESSAGES/django.mo +0 -0
  220. modoboa/locale/ro_RO/LC_MESSAGES/django.po +763 -316
  221. modoboa/locale/ru/LC_MESSAGES/django.mo +0 -0
  222. modoboa/locale/ru/LC_MESSAGES/django.po +1336 -1046
  223. modoboa/locale/si/LC_MESSAGES/django.po +669 -309
  224. modoboa/locale/sk/LC_MESSAGES/django.po +671 -309
  225. modoboa/locale/sk_SK/LC_MESSAGES/django.po +671 -309
  226. modoboa/locale/sl_SI/LC_MESSAGES/django.po +695 -315
  227. modoboa/locale/sv/LC_MESSAGES/django.mo +0 -0
  228. modoboa/locale/sv/LC_MESSAGES/django.po +819 -387
  229. modoboa/locale/tr/LC_MESSAGES/django.mo +0 -0
  230. modoboa/locale/tr/LC_MESSAGES/django.po +737 -315
  231. modoboa/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
  232. modoboa/locale/tr_TR/LC_MESSAGES/django.po +711 -310
  233. modoboa/locale/uk/LC_MESSAGES/django.po +671 -309
  234. modoboa/locale/zh/LC_MESSAGES/django.po +668 -309
  235. modoboa/locale/zh_CN/LC_MESSAGES/django.po +668 -309
  236. modoboa/locale/zh_TW/LC_MESSAGES/django.mo +0 -0
  237. modoboa/locale/zh_TW/LC_MESSAGES/django.po +747 -316
  238. modoboa/maillog/jobs.py +11 -0
  239. modoboa/maillog/tests/test_views.py +5 -4
  240. modoboa/parameters/api/v2/tests.py +1 -1
  241. modoboa/policyd/management/commands/policy_daemon.py +5 -1
  242. modoboa/policyd/tests.py +4 -2
  243. modoboa/rspamd/tests.py +20 -0
  244. modoboa/templates/registration/twofactor_code_verify.html +1 -1
  245. modoboa/webmail/app_settings.py +37 -0
  246. modoboa/webmail/constants.py +21 -1
  247. modoboa/webmail/factories.py +19 -0
  248. modoboa/webmail/jobs.py +27 -0
  249. modoboa/webmail/lib/__init__.py +0 -2
  250. modoboa/webmail/lib/imapemail.py +9 -11
  251. modoboa/webmail/lib/imapheader.py +25 -13
  252. modoboa/webmail/lib/imaputils.py +51 -13
  253. modoboa/webmail/lib/sendmail.py +88 -105
  254. modoboa/webmail/lib/utils.py +109 -0
  255. modoboa/webmail/migrations/0001_initial.py +90 -0
  256. modoboa/webmail/migrations/__init__.py +0 -0
  257. modoboa/webmail/mocks.py +12 -3
  258. modoboa/webmail/models.py +102 -0
  259. modoboa/webmail/serializers.py +84 -4
  260. modoboa/webmail/tests/data.py +21 -0
  261. modoboa/webmail/tests/test_lib_imaputils.py +33 -0
  262. modoboa/webmail/tests/test_viewsets.py +108 -0
  263. modoboa/webmail/urls.py +5 -0
  264. modoboa/webmail/viewsets.py +39 -9
  265. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/METADATA +16 -13
  266. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/RECORD +271 -254
  267. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/WHEEL +1 -1
  268. modoboa/admin/management/commands/handle_mailbox_operations.py +0 -103
  269. modoboa/core/management/commands/cleanlogs.py +0 -53
  270. modoboa/frontend_dist/assets/AccountLayout-B2HptJzY.js +0 -1
  271. modoboa/frontend_dist/assets/AccountPasswordSubForm-DpADntAL.js +0 -1
  272. modoboa/frontend_dist/assets/AccountView-CJBGh9Oe.js +0 -1
  273. modoboa/frontend_dist/assets/AddressBook-CrFqzlzZ.js +0 -1
  274. modoboa/frontend_dist/assets/AdminLayout-BbCt7YxX.js +0 -1
  275. modoboa/frontend_dist/assets/AlarmsView-CIlt_IKQ.js +0 -1
  276. modoboa/frontend_dist/assets/AliasRecipientForm-jjj5yJJw.js +0 -1
  277. modoboa/frontend_dist/assets/AuditTrailView-sWnED3E9.js +0 -1
  278. modoboa/frontend_dist/assets/CalendarView-DSCBIvef.js +0 -1
  279. modoboa/frontend_dist/assets/ChoiceField-RDT6XcnX.js +0 -1
  280. modoboa/frontend_dist/assets/ComposeEmailForm-D3yUbBJX.css +0 -1
  281. modoboa/frontend_dist/assets/ComposeEmailForm-G3sXQAwI.js +0 -1
  282. modoboa/frontend_dist/assets/ComposeEmailView-Ce1CtFjD.js +0 -1
  283. modoboa/frontend_dist/assets/ConfirmDialog-Du7aqKbR.js +0 -1
  284. modoboa/frontend_dist/assets/ConnectedLayout-BHWaBAzH.js +0 -1
  285. modoboa/frontend_dist/assets/CreationForm-CjtILq0_.js +0 -1
  286. modoboa/frontend_dist/assets/DashboardView-DFNwusDZ.js +0 -1
  287. modoboa/frontend_dist/assets/DomainsView-CYxLy-3Y.js +0 -1
  288. modoboa/frontend_dist/assets/EmailField-DmPc4pyP.js +0 -1
  289. modoboa/frontend_dist/assets/EmailView-BE3vYZtJ.js +0 -1
  290. modoboa/frontend_dist/assets/EmptyLayout-DMwKNHfI.js +0 -1
  291. modoboa/frontend_dist/assets/FiltersView-Dps3_fAh.js +0 -1
  292. modoboa/frontend_dist/assets/ForwardEmailView-C0I00eXf.js +0 -1
  293. modoboa/frontend_dist/assets/IdentitiesView-CoGBVhZx.js +0 -1
  294. modoboa/frontend_dist/assets/InformationView-eB2ayeLD.js +0 -1
  295. modoboa/frontend_dist/assets/MailboxView-DIVABvk5.css +0 -1
  296. modoboa/frontend_dist/assets/MailboxView-DNokO2WZ.js +0 -5
  297. modoboa/frontend_dist/assets/MenuItems-dl38msRA.js +0 -1
  298. modoboa/frontend_dist/assets/MessagesView-BZ7NUOwo.js +0 -1
  299. modoboa/frontend_dist/assets/MigrationsView-DcOVgmcH.js +0 -1
  300. modoboa/frontend_dist/assets/ParametersView-B6abt-LH.js +0 -1
  301. modoboa/frontend_dist/assets/ParametersView-v0YS6WU4.js +0 -1
  302. modoboa/frontend_dist/assets/ProviderEditView-BaL9mKxJ.js +0 -1
  303. modoboa/frontend_dist/assets/ProviderGeneralForm-eoHMDO5v.js +0 -1
  304. modoboa/frontend_dist/assets/ProvidersView-Zu-G35u7.js +0 -1
  305. modoboa/frontend_dist/assets/QuarantineLayout-BHiiksnP.js +0 -1
  306. modoboa/frontend_dist/assets/QuarantineView-BOXSobRz.js +0 -1
  307. modoboa/frontend_dist/assets/ReplyEmailView-JmSiNWPy.js +0 -1
  308. modoboa/frontend_dist/assets/ResourcesForm-D0YBapCG.js +0 -1
  309. modoboa/frontend_dist/assets/SelfServiceLayout-DUmQzUDk.js +0 -1
  310. modoboa/frontend_dist/assets/SettingsView-DIvKGRBY.css +0 -1
  311. modoboa/frontend_dist/assets/SettingsView-DMuaKagM.js +0 -6
  312. modoboa/frontend_dist/assets/StatisticsView-CyY_CNcI.js +0 -1
  313. modoboa/frontend_dist/assets/TimeSerieChart-BTDBH33K.js +0 -1
  314. modoboa/frontend_dist/assets/TimeSerieChart-C3XHmlRd.css +0 -1
  315. modoboa/frontend_dist/assets/UserLayout-DwxcQr4L.js +0 -1
  316. modoboa/frontend_dist/assets/VApp-B0vRc3-6.js +0 -1
  317. modoboa/frontend_dist/assets/VAutocomplete-Huaz_-hf.js +0 -1
  318. modoboa/frontend_dist/assets/VAutocomplete-hzGuLlUI.css +0 -1
  319. modoboa/frontend_dist/assets/VAvatar-JdJfoK0C.js +0 -1
  320. modoboa/frontend_dist/assets/VBadge-Cg5iu5LG.js +0 -1
  321. modoboa/frontend_dist/assets/VCheckbox-CCLOJFKF.js +0 -1
  322. modoboa/frontend_dist/assets/VColorPicker-452uc3tY.js +0 -1
  323. modoboa/frontend_dist/assets/VDataTable-BkLLfcQK.js +0 -1
  324. modoboa/frontend_dist/assets/VDataTableServer-B_6fWBA3.js +0 -1
  325. modoboa/frontend_dist/assets/VDataTableVirtual-Ike7oqcC.js +0 -1
  326. modoboa/frontend_dist/assets/VDialog-DIUeAIpw.js +0 -1
  327. modoboa/frontend_dist/assets/VExpansionPanels-BeMgiS7A.js +0 -1
  328. modoboa/frontend_dist/assets/VFileInput-Dvj95FL5.js +0 -1
  329. modoboa/frontend_dist/assets/VForm-DkphQD3e.js +0 -1
  330. modoboa/frontend_dist/assets/VInput-CbqehdOu.js +0 -1
  331. modoboa/frontend_dist/assets/VMenu-B6SCtOwT.js +0 -1
  332. modoboa/frontend_dist/assets/VMenu-BEipA1lw.css +0 -1
  333. modoboa/frontend_dist/assets/VPicker-BUx70Wjg.js +0 -1
  334. modoboa/frontend_dist/assets/VPicker-ClSXs6kv.css +0 -1
  335. modoboa/frontend_dist/assets/VProgressCircular-DTDGzl2O.js +0 -1
  336. modoboa/frontend_dist/assets/VRadioGroup-CS9ULZ1c.js +0 -1
  337. modoboa/frontend_dist/assets/VSelect-D5IXDPEX.js +0 -1
  338. modoboa/frontend_dist/assets/VSheet-HeHw6g5_.js +0 -1
  339. modoboa/frontend_dist/assets/VSpacer-BUxSSJbH.js +0 -1
  340. modoboa/frontend_dist/assets/VSwitch-Dh_dserW.js +0 -1
  341. modoboa/frontend_dist/assets/VTabs-5XSICLQP.js +0 -1
  342. modoboa/frontend_dist/assets/VTabs-NzpINroH.css +0 -1
  343. modoboa/frontend_dist/assets/VTextField-Cow3HZvI.css +0 -1
  344. modoboa/frontend_dist/assets/VTextField-QXQFhKxm.js +0 -1
  345. modoboa/frontend_dist/assets/VTextarea-Bdy4UKmV.js +0 -1
  346. modoboa/frontend_dist/assets/VTextarea-DyGjqrlm.css +0 -1
  347. modoboa/frontend_dist/assets/VToolbar-CB2GrZpA.css +0 -1
  348. modoboa/frontend_dist/assets/VToolbar-CyrYSqJZ.js +0 -1
  349. modoboa/frontend_dist/assets/VWindowItem-kZpArwK1.js +0 -1
  350. modoboa/frontend_dist/assets/WebmailLayout-BzW0LWYp.css +0 -1
  351. modoboa/frontend_dist/assets/WebmailLayout-CNUHODnw.js +0 -1
  352. modoboa/frontend_dist/assets/domains.store-D4ZqCQ-O.js +0 -1
  353. modoboa/frontend_dist/assets/filter-DHKXX97M.js +0 -1
  354. modoboa/frontend_dist/assets/global.store-DYMmGKpn.js +0 -1
  355. modoboa/frontend_dist/assets/importExport-C-adpHJX.js +0 -1
  356. modoboa/frontend_dist/assets/index-B1bntsLR.js +0 -995
  357. modoboa/frontend_dist/assets/languages-CxjoT69j.js +0 -1
  358. modoboa/frontend_dist/assets/transports-ChdHV5hX.js +0 -1
  359. modoboa/frontend_dist/assets/webmail-B7MNMkv_.js +0 -1
  360. modoboa/frontend_dist/assets/webmail.store-Cm-h6hhE.js +0 -1
  361. {modoboa-2.6.4.data → modoboa-2.7.0.data}/scripts/modoboa-admin.py +0 -0
  362. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/entry_points.txt +0 -0
  363. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/licenses/LICENSE +0 -0
  364. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/top_level.txt +0 -0
@@ -11,7 +11,7 @@ msgid ""
11
11
  msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
- "POT-Creation-Date: 2025-08-28 09:41+0200\n"
14
+ "POT-Creation-Date: 2026-02-04 09:30+0100\n"
15
15
  "PO-Revision-Date: 2020-05-11 18:45+0000\n"
16
16
  "Last-Translator: R .. <nordscan@gmail.com>, 2020\n"
17
17
  "Language-Team: Slovak (Slovakia) (https://www.transifex.com/tonio/teams/"
@@ -46,14 +46,14 @@ msgid "Cannot be greater than domain quota"
46
46
  msgstr ""
47
47
 
48
48
  #: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
49
- #: admin/api/v2/serializers.py:564 admin/models/alias.py:44
49
+ #: admin/api/v2/serializers.py:571 admin/models/alias.py:45
50
50
  msgid "Permission denied."
51
51
  msgstr ""
52
52
 
53
53
  #: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
54
- #: admin/api/v2/serializers.py:486 core/api/v2/serializers.py:255
55
- #: core/api/v2/serializers.py:257 core/api/v2/serializers.py:266
56
- #: transport/backends.py:40
54
+ #: admin/api/v2/serializers.py:492 amavis/serializers.py:39
55
+ #: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
56
+ #: core/api/v2/serializers.py:259 transport/backends.py:40
57
57
  msgid "This field is required"
58
58
  msgstr ""
59
59
 
@@ -62,7 +62,7 @@ msgid ""
62
62
  "List of administered domains (resellers and domain administrators only)."
63
63
  msgstr ""
64
64
 
65
- #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:546
65
+ #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
66
66
  msgid "Not allowed for this role."
67
67
  msgstr ""
68
68
 
@@ -70,13 +70,12 @@ msgstr ""
70
70
  msgid "Must be equal to mailbox full_address"
71
71
  msgstr ""
72
72
 
73
- #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:598
74
- #: calendars/serializers.py:175 calendars/serializers.py:177
75
- #: pdfcredentials/api/v2/serializers.py:91
73
+ #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
74
+ #: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
76
75
  msgid "This field is required."
77
76
  msgstr ""
78
77
 
79
- #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:615
78
+ #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
80
79
  msgid "Local domain {} does not exist"
81
80
  msgstr ""
82
81
 
@@ -84,7 +83,7 @@ msgstr ""
84
83
  msgid "A list of recipient"
85
84
  msgstr ""
86
85
 
87
- #: admin/api/v1/serializers.py:515 admin/api/v2/viewsets.py:286
86
+ #: admin/api/v1/serializers.py:515 admin/api/v2/viewsets.py:313
88
87
  msgid "This alias already exists"
89
88
  msgstr ""
90
89
 
@@ -117,47 +116,47 @@ msgstr ""
117
116
  msgid "User '%s' already exists"
118
117
  msgstr ""
119
118
 
120
- #: admin/api/v2/serializers.py:250 admin/api/v2/serializers.py:256
119
+ #: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
121
120
  msgid "Must be a positive integer"
122
121
  msgstr ""
123
122
 
124
- #: admin/api/v2/serializers.py:265
123
+ #: admin/api/v2/serializers.py:271
125
124
  msgid "openssl not found, please make sure it is installed."
126
125
  msgstr ""
127
126
 
128
- #: admin/api/v2/serializers.py:268 pdfcredentials/api/v2/serializers.py:84
127
+ #: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
129
128
  msgid "Directory not found."
130
129
  msgstr ""
131
130
 
132
- #: admin/api/v2/serializers.py:279
131
+ #: admin/api/v2/serializers.py:285
133
132
  msgid "This field only allows valid IP addresses (or networks)"
134
133
  msgstr ""
135
134
 
136
- #: admin/api/v2/serializers.py:292
135
+ #: admin/api/v2/serializers.py:298
137
136
  msgid "Please disable imap migration before disabling this option."
138
137
  msgstr ""
139
138
 
140
- #: admin/api/v2/serializers.py:305
139
+ #: admin/api/v2/serializers.py:311
141
140
  msgid "Define at least one authorized network / address"
142
141
  msgstr ""
143
142
 
144
- #: admin/api/v2/serializers.py:581
143
+ #: admin/api/v2/serializers.py:588
145
144
  msgid "The left part of an email address can't be more than 64 characters."
146
145
  msgstr ""
147
146
 
148
- #: admin/api/v2/serializers.py:603
147
+ #: admin/api/v2/serializers.py:610
149
148
  msgid "A mailbox is required to create aliases."
150
149
  msgstr ""
151
150
 
152
- #: admin/api/v2/serializers.py:772
151
+ #: admin/api/v2/serializers.py:783
153
152
  msgid "Unknown status"
154
153
  msgstr ""
155
154
 
156
- #: admin/api/v2/viewsets.py:84
155
+ #: admin/api/v2/viewsets.py:95
157
156
  msgid "You don't have access to this domain"
158
157
  msgstr ""
159
158
 
160
- #: admin/api/v2/viewsets.py:87
159
+ #: admin/api/v2/viewsets.py:98
161
160
  msgid "You can't delete your own domain"
162
161
  msgstr ""
163
162
 
@@ -241,113 +240,151 @@ msgstr ""
241
240
  msgid "Check every domain against major DNSBL providers"
242
241
  msgstr ""
243
242
 
244
- #: admin/app_settings.py:116
243
+ #: admin/app_settings.py:117
244
+ msgid "Notify domain admins about DNS issues"
245
+ msgstr ""
246
+
247
+ #: admin/app_settings.py:120
248
+ msgid ""
249
+ "Send a notification by email to domain administrators when DNS issues are "
250
+ "encountered"
251
+ msgstr ""
252
+
253
+ #: admin/app_settings.py:128
245
254
  msgid "Custom DNS server"
246
255
  msgstr ""
247
256
 
248
- #: admin/app_settings.py:118
257
+ #: admin/app_settings.py:130
249
258
  msgid "Use a custom DNS server instead of local server configuration"
250
259
  msgstr ""
251
260
 
252
- #: admin/app_settings.py:126
261
+ #: admin/app_settings.py:138
253
262
  msgid "DKIM keys storage directory"
254
263
  msgstr ""
255
264
 
256
- #: admin/app_settings.py:128
265
+ #: admin/app_settings.py:140
257
266
  msgid ""
258
267
  "Absolute path of the directory where DKIM private keys will be stored. Make "
259
268
  "sure this directory belongs to root user and is not readable by the outside "
260
269
  "world."
261
270
  msgstr ""
262
271
 
263
- #: admin/app_settings.py:137
272
+ #: admin/app_settings.py:149
264
273
  msgid "Default DKIM key length"
265
274
  msgstr ""
266
275
 
267
- #: admin/app_settings.py:139
276
+ #: admin/app_settings.py:151
268
277
  msgid "Default length in bits for newly generated DKIM keys."
269
278
  msgstr ""
270
279
 
271
- #: admin/app_settings.py:146
280
+ #: admin/app_settings.py:158
272
281
  msgid "Default domain quota"
273
282
  msgstr ""
274
283
 
275
- #: admin/app_settings.py:148
284
+ #: admin/app_settings.py:160
276
285
  msgid ""
277
286
  "Default quota (in MB) applied to freshly created domains with no value "
278
287
  "specified. A value of 0 means no quota."
279
288
  msgstr ""
280
289
 
281
- #: admin/app_settings.py:156
290
+ #: admin/app_settings.py:168
282
291
  msgid "Default domain sending limit"
283
292
  msgstr ""
284
293
 
285
- #: admin/app_settings.py:158
294
+ #: admin/app_settings.py:170
286
295
  msgid ""
287
296
  "Number of messages freshly created domains will be allowed to send per day. "
288
297
  "Leave empty for no limit."
289
298
  msgstr ""
290
299
 
291
- #: admin/app_settings.py:170 limits/app_settings.py:61
300
+ #: admin/app_settings.py:182 limits/app_settings.py:61
292
301
  #: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
293
302
  msgid "Mailboxes"
294
303
  msgstr ""
295
304
 
296
- #: admin/app_settings.py:176
305
+ #: admin/app_settings.py:188
297
306
  msgid "Handle mailboxes on filesystem"
298
307
  msgstr ""
299
308
 
300
- #: admin/app_settings.py:178
309
+ #: admin/app_settings.py:190
301
310
  msgid ""
302
311
  "Rename or remove mailboxes on the filesystem when they get renamed or "
303
312
  "removed within Modoboa"
304
313
  msgstr ""
305
314
 
306
- #: admin/app_settings.py:186 admin/models/domain.py:36
315
+ #: admin/app_settings.py:198 admin/models/domain.py:36
307
316
  msgid "Default mailbox quota"
308
317
  msgstr ""
309
318
 
310
- #: admin/app_settings.py:188
319
+ #: admin/app_settings.py:200
311
320
  msgid ""
312
321
  "Default mailbox quota (in MB) applied to freshly created domains with no "
313
322
  "value specified. A value of 0 means no quota."
314
323
  msgstr ""
315
324
 
316
- #: admin/app_settings.py:197
325
+ #: admin/app_settings.py:209
317
326
  msgid "Default mailbox sending limit"
318
327
  msgstr ""
319
328
 
320
- #: admin/app_settings.py:199
329
+ #: admin/app_settings.py:211
321
330
  msgid ""
322
331
  "Number of messages freshly created mailboxes will be allowed to send per "
323
332
  "day. Leave empty for no limit."
324
333
  msgstr ""
325
334
 
326
- #: admin/app_settings.py:207
335
+ #: admin/app_settings.py:219
327
336
  msgid "Automatic account removal"
328
337
  msgstr ""
329
338
 
330
- #: admin/app_settings.py:209
339
+ #: admin/app_settings.py:221
331
340
  msgid "When a mailbox is removed, also remove the associated account"
332
341
  msgstr ""
333
342
 
334
- #: admin/app_settings.py:218
343
+ #: admin/app_settings.py:230
335
344
  msgid "Automatic domain/mailbox creation"
336
345
  msgstr ""
337
346
 
338
- #: admin/app_settings.py:221
347
+ #: admin/app_settings.py:233
339
348
  msgid "Create a domain and a mailbox when an account is automatically created."
340
349
  msgstr ""
341
350
 
342
- #: admin/app_settings.py:230
351
+ #: admin/app_settings.py:242
343
352
  msgid "Create an alias when a mailbox is renamed"
344
353
  msgstr ""
345
354
 
346
- #: admin/app_settings.py:233
355
+ #: admin/app_settings.py:245
347
356
  msgid "Create an alias using the old address when a mailbox is renamed."
348
357
  msgstr ""
349
358
 
350
- #: admin/app_settings.py:287 core/api/v2/viewsets.py:174
359
+ #: admin/app_settings.py:257
360
+ msgid "Aliases"
361
+ msgstr ""
362
+
363
+ #: admin/app_settings.py:263
364
+ msgid "Alias can target any domain"
365
+ msgstr ""
366
+
367
+ #: admin/app_settings.py:265
368
+ msgid "Allow aliases to target any domain, not just the local domains."
369
+ msgstr ""
370
+
371
+ #: admin/app_settings.py:272
372
+ msgid "Alias target block list"
373
+ msgstr ""
374
+
375
+ #: admin/app_settings.py:274
376
+ msgid "A list of domains that aliases cannot target (comma separated)."
377
+ msgstr ""
378
+
379
+ #: admin/app_settings.py:282
380
+ msgid "Alias target allow list"
381
+ msgstr ""
382
+
383
+ #: admin/app_settings.py:284
384
+ msgid "A list of domains that aliases can target (comma separated)."
385
+ msgstr ""
386
+
387
+ #: admin/app_settings.py:338 core/api/v2/viewsets.py:174
351
388
  msgid "Administration"
352
389
  msgstr ""
353
390
 
@@ -367,6 +404,35 @@ msgstr ""
367
404
  msgid "Closed"
368
405
  msgstr ""
369
406
 
407
+ #: admin/dns_checker.py:96
408
+ msgid "MX {} listed by DNSBL provider {}"
409
+ msgstr ""
410
+
411
+ #: admin/dns_checker.py:138
412
+ msgid "Domain has no MX record"
413
+ msgstr ""
414
+
415
+ #: admin/dns_checker.py:141
416
+ msgid "Domain {} has no MX record"
417
+ msgstr ""
418
+
419
+ #: admin/dns_checker.py:159
420
+ msgid "Invalid MX record: {}"
421
+ msgstr ""
422
+
423
+ #: admin/dns_checker.py:166
424
+ #, python-brace-format
425
+ msgid "MX record for domain {0} is invalid: {1}"
426
+ msgstr ""
427
+
428
+ #: admin/dns_checker.py:177
429
+ msgid "[modoboa] MX issue(s) for domain {}"
430
+ msgstr ""
431
+
432
+ #: admin/dns_checker.py:224
433
+ msgid "[modoboa] DNSBL issue(s) for domain {}"
434
+ msgstr ""
435
+
370
436
  #: admin/handlers.py:179
371
437
  msgid "domain alias"
372
438
  msgstr ""
@@ -376,58 +442,54 @@ msgstr ""
376
442
  msgid "Account import failed (%s): domain does not exist"
377
443
  msgstr ""
378
444
 
379
- #: admin/handlers.py:242 admin/models/mailbox.py:342
380
- msgid "Mailbox {} already exists"
381
- msgstr ""
382
-
383
- #: admin/handlers.py:251
445
+ #: admin/handlers.py:246
384
446
  #, python-format
385
447
  msgid "Account import failed (%s): wrong quota value"
386
448
  msgstr ""
387
449
 
388
- #: admin/lib.py:121
450
+ #: admin/lib.py:126
389
451
  msgid "You are not allowed to import domains"
390
452
  msgstr ""
391
453
 
392
- #: admin/lib.py:130
454
+ #: admin/lib.py:135
393
455
  msgid "You are not allowed to import domain aliases."
394
456
  msgstr ""
395
457
 
396
- #: admin/lib.py:222 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
397
- #: admin/tests/test_mx.py:171
458
+ #: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
459
+ #: admin/tests/test_mx.py:157
398
460
  #, python-format
399
461
  msgid "No DNS record found for %s"
400
462
  msgstr ""
401
463
 
402
- #: admin/lib.py:225
464
+ #: admin/lib.py:230
403
465
  #, python-format
404
466
  msgid "No %(type)s record for %(name)s"
405
467
  msgstr ""
406
468
 
407
- #: admin/lib.py:229 admin/tests/test_mx.py:156
469
+ #: admin/lib.py:234 admin/tests/test_mx.py:142
408
470
  msgid "No working name servers found"
409
471
  msgstr ""
410
472
 
411
- #: admin/lib.py:232 admin/tests/test_mx.py:160
473
+ #: admin/lib.py:237 admin/tests/test_mx.py:146
412
474
  #, python-format
413
475
  msgid "DNS resolution timeout, unable to query %s at the moment"
414
476
  msgstr ""
415
477
 
416
- #: admin/lib.py:236
478
+ #: admin/lib.py:241
417
479
  msgid "DNS name is too long: {}"
418
480
  msgstr ""
419
481
 
420
- #: admin/lib.py:267
482
+ #: admin/lib.py:272
421
483
  #, python-brace-format
422
484
  msgid "Invalid IP address format for {domain}; {addr}"
423
485
  msgstr ""
424
486
 
425
- #: admin/lib.py:360
487
+ #: admin/lib.py:365
426
488
  #, python-format
427
489
  msgid "Object already exists: %s"
428
490
  msgstr ""
429
491
 
430
- #: admin/lib.py:364
492
+ #: admin/lib.py:369
431
493
  #, python-format
432
494
  msgid "%d objects imported successfully"
433
495
  msgstr ""
@@ -460,77 +522,52 @@ msgstr ""
460
522
  msgid "Failed to generate DKIM public key"
461
523
  msgstr ""
462
524
 
463
- #: admin/management/commands/subcommands/_mx.py:133
464
- msgid "MX {} listed by DNSBL provider {}"
465
- msgstr ""
466
-
467
- #: admin/management/commands/subcommands/_mx.py:174
468
- msgid "Domain has no MX record"
469
- msgstr ""
470
-
471
- #: admin/management/commands/subcommands/_mx.py:177
472
- msgid "Domain {} has no MX record"
473
- msgstr ""
474
-
475
- #: admin/management/commands/subcommands/_mx.py:195
476
- msgid "Invalid MX record: {}"
477
- msgstr ""
478
-
479
- #: admin/management/commands/subcommands/_mx.py:202
480
- #, python-brace-format
481
- msgid "MX record for domain {0} is invalid: {1}"
482
- msgstr ""
483
-
484
- #: admin/management/commands/subcommands/_mx.py:213
485
- msgid "[modoboa] MX issue(s) for domain {}"
486
- msgstr ""
487
-
488
- #: admin/management/commands/subcommands/_mx.py:269
489
- msgid "[modoboa] DNSBL issue(s) for domain {}"
490
- msgstr ""
491
-
492
- #: admin/models/alias.py:42
525
+ #: admin/models/alias.py:43
493
526
  msgid "Domain not found."
494
527
  msgstr ""
495
528
 
496
- #: admin/models/alias.py:97 admin/models/mailbox.py:85
529
+ #: admin/models/alias.py:117 admin/models/mailbox.py:85
497
530
  msgid "address"
498
531
  msgstr ""
499
532
 
500
- #: admin/models/alias.py:99
533
+ #: admin/models/alias.py:119
501
534
  msgid "The alias address."
502
535
  msgstr ""
503
536
 
504
- #: admin/models/alias.py:103 admin/models/domain.py:45
537
+ #: admin/models/alias.py:123 admin/models/domain.py:45
505
538
  #: admin/models/domain_alias.py:45 autoreply/models.py:25
506
539
  msgid "enabled"
507
540
  msgstr ""
508
541
 
509
- #: admin/models/alias.py:104 admin/models/domain_alias.py:46
542
+ #: admin/models/alias.py:124 admin/models/domain_alias.py:46
510
543
  msgid "Check to activate this alias"
511
544
  msgstr ""
512
545
 
513
- #: admin/models/alias.py:108
546
+ #: admin/models/alias.py:128
514
547
  msgid "Description"
515
548
  msgstr ""
516
549
 
517
- #: admin/models/alias.py:109
550
+ #: admin/models/alias.py:129
518
551
  msgid "Expire at"
519
552
  msgstr ""
520
553
 
521
- #: admin/models/alias.py:150
554
+ #: admin/models/alias.py:170
522
555
  msgid "alias"
523
556
  msgstr ""
524
557
 
525
- #: admin/models/alias.py:183
558
+ #: admin/models/alias.py:203
526
559
  msgid "Invalid address"
527
560
  msgstr ""
528
561
 
529
- #: admin/models/alias.py:202
562
+ #: admin/models/alias.py:206
563
+ msgid "Target domain not allowed"
564
+ msgstr ""
565
+
566
+ #: admin/models/alias.py:224
530
567
  msgid "Local recipient {}@{} not found"
531
568
  msgstr ""
532
569
 
533
- #: admin/models/alias.py:251
570
+ #: admin/models/alias.py:273
534
571
  msgid "Invalid line: {}"
535
572
  msgstr ""
536
573
 
@@ -638,6 +675,10 @@ msgstr ""
638
675
  msgid "Domain does not exist"
639
676
  msgstr ""
640
677
 
678
+ #: admin/models/mailbox.py:342
679
+ msgid "Mailbox {} already exists"
680
+ msgstr ""
681
+
641
682
  #: admin/templates/admin/notifications/domain_in_dnsbl.html:3
642
683
  #, python-format
643
684
  msgid ""
@@ -657,21 +698,334 @@ msgstr ""
657
698
  msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
658
699
  msgstr ""
659
700
 
660
- #: admin/tests/test_mx.py:155
701
+ #: admin/tests/test_mx.py:141
661
702
  #, python-format
662
703
  msgid "No MX record for %s"
663
704
  msgstr ""
664
705
 
665
- #: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
706
+ #: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
666
707
  #, python-format
667
708
  msgid "Invalid IP address format for %(domain)s; %(addr)s"
668
709
  msgstr ""
669
710
 
670
- #: admin/tests/test_mx.py:199
711
+ #: admin/tests/test_mx.py:185
671
712
  #, python-format
672
713
  msgid "No AAAA record for %s"
673
714
  msgstr ""
674
715
 
716
+ #: amavis/app_settings.py:11
717
+ msgid "Amavis settings"
718
+ msgstr ""
719
+
720
+ #: amavis/app_settings.py:17
721
+ msgid "Localpart is case sensitive"
722
+ msgstr ""
723
+
724
+ #: amavis/app_settings.py:19
725
+ msgid "Value should match amavisd.conf variable $localpart_is_case_sensitive"
726
+ msgstr ""
727
+
728
+ #: amavis/app_settings.py:27
729
+ msgid "Recipient delimiter"
730
+ msgstr ""
731
+
732
+ #: amavis/app_settings.py:29
733
+ msgid "Value should match amavisd.conf variable $recipient_delimiter"
734
+ msgstr ""
735
+
736
+ #: amavis/app_settings.py:41
737
+ msgid "Quarantine settings"
738
+ msgstr ""
739
+
740
+ #: amavis/app_settings.py:47
741
+ msgid "Maximum message age"
742
+ msgstr ""
743
+
744
+ #: amavis/app_settings.py:49
745
+ msgid "Quarantine messages maximum age (in days) before deletion"
746
+ msgstr ""
747
+
748
+ #: amavis/app_settings.py:60
749
+ msgid "Message releasing"
750
+ msgstr ""
751
+
752
+ #: amavis/app_settings.py:66
753
+ msgid "Remove released messages"
754
+ msgstr ""
755
+
756
+ #: amavis/app_settings.py:68
757
+ msgid "Remove messages marked as released while cleaning up the database"
758
+ msgstr ""
759
+
760
+ #: amavis/app_settings.py:76
761
+ msgid "Amavis connection mode"
762
+ msgstr ""
763
+
764
+ #: amavis/app_settings.py:78
765
+ msgid "Mode used to access the PDP server"
766
+ msgstr ""
767
+
768
+ #: amavis/app_settings.py:85
769
+ msgid "PDP server address"
770
+ msgstr ""
771
+
772
+ #: amavis/app_settings.py:87
773
+ msgid "PDP server address (if inet mode)"
774
+ msgstr ""
775
+
776
+ #: amavis/app_settings.py:95
777
+ msgid "PDP server port"
778
+ msgstr ""
779
+
780
+ #: amavis/app_settings.py:97
781
+ msgid "PDP server port (if inet mode)"
782
+ msgstr ""
783
+
784
+ #: amavis/app_settings.py:105
785
+ msgid "PDP server socket"
786
+ msgstr ""
787
+
788
+ #: amavis/app_settings.py:107
789
+ msgid "Path to the PDP server socket (if unix mode)"
790
+ msgstr ""
791
+
792
+ #: amavis/app_settings.py:115
793
+ msgid "Allow direct release"
794
+ msgstr ""
795
+
796
+ #: amavis/app_settings.py:117
797
+ msgid "Allow users to directly release their messages"
798
+ msgstr ""
799
+
800
+ #: amavis/app_settings.py:124
801
+ msgid "Enable self-service mode"
802
+ msgstr ""
803
+
804
+ #: amavis/app_settings.py:126
805
+ msgid "Activate the 'self-service' mode"
806
+ msgstr ""
807
+
808
+ #: amavis/app_settings.py:133
809
+ msgid "Notifications sender"
810
+ msgstr ""
811
+
812
+ #: amavis/app_settings.py:135
813
+ msgid "The e-mail address used to send notitications"
814
+ msgstr ""
815
+
816
+ #: amavis/app_settings.py:146
817
+ msgid "Manual learning"
818
+ msgstr ""
819
+
820
+ #: amavis/app_settings.py:152
821
+ msgid "Enable manual learning"
822
+ msgstr ""
823
+
824
+ #: amavis/app_settings.py:154
825
+ msgid "Allow super administrators to manually train Spamassassin"
826
+ msgstr ""
827
+
828
+ #: amavis/app_settings.py:161
829
+ msgid "Is Spamassassin local?"
830
+ msgstr ""
831
+
832
+ #: amavis/app_settings.py:163
833
+ msgid "Tell if Spamassassin is running on the same server than modoboa"
834
+ msgstr ""
835
+
836
+ #: amavis/app_settings.py:171
837
+ msgid "Default user"
838
+ msgstr ""
839
+
840
+ #: amavis/app_settings.py:173
841
+ msgid "Name of the user owning the default bayesian database"
842
+ msgstr ""
843
+
844
+ #: amavis/app_settings.py:181
845
+ msgid "Spamd address"
846
+ msgstr ""
847
+
848
+ #: amavis/app_settings.py:183
849
+ msgid "The IP address where spamd can be reached"
850
+ msgstr ""
851
+
852
+ #: amavis/app_settings.py:191
853
+ msgid "Spamd port"
854
+ msgstr ""
855
+
856
+ #: amavis/app_settings.py:193
857
+ msgid "The TCP port spamd is listening on"
858
+ msgstr ""
859
+
860
+ #: amavis/app_settings.py:202
861
+ msgid "Enable per-domain manual learning"
862
+ msgstr ""
863
+
864
+ #: amavis/app_settings.py:205
865
+ msgid ""
866
+ "Allow domain administrators to train Spamassassin (within dedicated per-"
867
+ "domain databases)"
868
+ msgstr ""
869
+
870
+ #: amavis/app_settings.py:215
871
+ msgid "Enable per-user manual learning"
872
+ msgstr ""
873
+
874
+ #: amavis/app_settings.py:218
875
+ msgid ""
876
+ "Allow simple users to personally train Spamassassin (within a dedicated "
877
+ "database)"
878
+ msgstr ""
879
+
880
+ #: amavis/app_settings.py:236 webmail/app_settings.py:155
881
+ msgid "Display"
882
+ msgstr ""
883
+
884
+ #: amavis/app_settings.py:243 webmail/app_settings.py:181
885
+ msgid "Number of displayed emails per page"
886
+ msgstr ""
887
+
888
+ #: amavis/app_settings.py:246
889
+ msgid "Set the maximum number of messages displayed in a page"
890
+ msgstr ""
891
+
892
+ #: amavis/app_settings.py:266 amavis/app_settings.py:273
893
+ msgid "Amavis"
894
+ msgstr ""
895
+
896
+ #: amavis/checks/settings_checks.py:8
897
+ msgid ""
898
+ "AMAVIS_DEFAULT_DATABASE_ENCODING does not match the character encoding used "
899
+ "by the Amavis database."
900
+ msgstr ""
901
+
902
+ #: amavis/checks/settings_checks.py:12
903
+ msgid ""
904
+ "Check your database character encoding and set/update "
905
+ "AMAVIS_DEFAULT_DATABASE_ENCODING."
906
+ msgstr ""
907
+
908
+ #: amavis/checks/settings_checks.py:19
909
+ msgid "Modoboa Amavis has not been tested using the selected database engine."
910
+ msgstr ""
911
+
912
+ #: amavis/checks/settings_checks.py:20
913
+ msgid "Try using PostgreSQL, MySQL or MariaDB."
914
+ msgstr ""
915
+
916
+ #: amavis/handlers.py:141
917
+ msgid "Pending requests"
918
+ msgstr ""
919
+
920
+ #: amavis/lib.py:59
921
+ #, python-format
922
+ msgid "Connection to amavis failed: %s"
923
+ msgstr ""
924
+
925
+ #: amavis/lib.py:133
926
+ msgid "Failed to find {} binary"
927
+ msgstr ""
928
+
929
+ #: amavis/lib.py:148
930
+ msgid "No recipient found"
931
+ msgstr ""
932
+
933
+ #: amavis/lib.py:159
934
+ msgid "Local domain not found"
935
+ msgstr ""
936
+
937
+ #: amavis/management/commands/amnotify.py:59
938
+ msgid "[modoboa] Pending release requests"
939
+ msgstr ""
940
+
941
+ #: amavis/models.py:101
942
+ msgid "Virus filter"
943
+ msgstr ""
944
+
945
+ #: amavis/models.py:105 amavis/models.py:119 amavis/models.py:133
946
+ msgid "yes"
947
+ msgstr ""
948
+
949
+ #: amavis/models.py:106 amavis/models.py:120 amavis/models.py:134
950
+ msgid "no"
951
+ msgstr ""
952
+
953
+ #: amavis/models.py:107 amavis/models.py:121 amavis/models.py:135
954
+ msgid "default"
955
+ msgstr ""
956
+
957
+ #: amavis/models.py:111
958
+ msgid "Bypass virus checks or not. Choose 'default' to use global settings."
959
+ msgstr ""
960
+
961
+ #: amavis/models.py:115
962
+ msgid "Spam filter"
963
+ msgstr ""
964
+
965
+ #: amavis/models.py:125
966
+ msgid "Bypass spam checks or not. Choose 'default' to use global settings."
967
+ msgstr ""
968
+
969
+ #: amavis/models.py:129
970
+ msgid "Banned filter"
971
+ msgstr ""
972
+
973
+ #: amavis/models.py:139
974
+ msgid "Bypass banned checks or not. Choose 'default' to use global settings."
975
+ msgstr ""
976
+
977
+ #: amavis/models.py:170
978
+ msgid "Spam marker"
979
+ msgstr ""
980
+
981
+ #: amavis/models.py:176
982
+ msgid ""
983
+ "Modify spam subject using the specified text. Choose 'default' to use global "
984
+ "settings."
985
+ msgstr ""
986
+
987
+ #: amavis/templates/amavis/notifications/pending_requests.html:3
988
+ #, python-format
989
+ msgid "%(counter)s release request is pending for action."
990
+ msgid_plural "%(counter)s release requests are pending for action."
991
+ msgstr[0] ""
992
+ msgstr[1] ""
993
+ msgstr[2] ""
994
+ msgstr[3] ""
995
+
996
+ #: amavis/templates/amavis/notifications/pending_requests.html:8
997
+ msgid "Sketch:"
998
+ msgstr ""
999
+
1000
+ #: amavis/templates/amavis/notifications/pending_requests.html:10
1001
+ msgid "From:"
1002
+ msgstr ""
1003
+
1004
+ #: amavis/templates/amavis/notifications/pending_requests.html:11
1005
+ msgid "To:"
1006
+ msgstr ""
1007
+
1008
+ #: amavis/templates/amavis/notifications/pending_requests.html:12
1009
+ msgid "Date:"
1010
+ msgstr ""
1011
+
1012
+ #: amavis/templates/amavis/notifications/pending_requests.html:13
1013
+ msgid "Subject:"
1014
+ msgstr ""
1015
+
1016
+ #: amavis/templates/amavis/notifications/pending_requests.html:14
1017
+ msgid "Act on this message:"
1018
+ msgstr ""
1019
+
1020
+ #: amavis/templates/amavis/notifications/pending_requests.html:16
1021
+ #, python-format
1022
+ msgid "Please visit %(listingurl)s for a full listing."
1023
+ msgstr ""
1024
+
1025
+ #: amavis/viewsets.py:122
1026
+ msgid "Invalid request"
1027
+ msgstr ""
1028
+
675
1029
  #: autoreply/api/v2/serializers.py:27
676
1030
  msgid "Value can't be less than 1 day"
677
1031
  msgstr ""
@@ -772,7 +1126,7 @@ msgstr ""
772
1126
  msgid "Allow domain administrators to manage user calendars (read and write)"
773
1127
  msgstr ""
774
1128
 
775
- #: calendars/app_settings.py:60 core/app_settings.py:676
1129
+ #: calendars/app_settings.py:60 core/app_settings.py:664
776
1130
  #: rspamd/app_settings.py:45
777
1131
  msgid "Miscellaneous"
778
1132
  msgstr ""
@@ -786,15 +1140,15 @@ msgid ""
786
1140
  "Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
787
1141
  msgstr ""
788
1142
 
789
- #: calendars/app_settings.py:89 core/api/v2/viewsets.py:195
1143
+ #: calendars/app_settings.py:89 core/api/v2/viewsets.py:205
790
1144
  msgid "Calendars"
791
1145
  msgstr ""
792
1146
 
793
- #: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
1147
+ #: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
794
1148
  msgid "Server location is not set, please fix it."
795
1149
  msgstr ""
796
1150
 
797
- #: calendars/viewsets.py:197
1151
+ #: calendars/viewsets.py:199
798
1152
  msgid "Uploaded file is too big (max: {} bytes)"
799
1153
  msgstr ""
800
1154
 
@@ -820,7 +1174,7 @@ msgstr ""
820
1174
  msgid "Interval in seconds between 2 synchronization requests"
821
1175
  msgstr ""
822
1176
 
823
- #: contacts/app_settings.py:51 core/api/v2/viewsets.py:185
1177
+ #: contacts/app_settings.py:51 core/api/v2/viewsets.py:195
824
1178
  msgid "Contacts"
825
1179
  msgstr ""
826
1180
 
@@ -868,12 +1222,12 @@ msgstr ""
868
1222
  msgid "2FA is already enabled"
869
1223
  msgstr ""
870
1224
 
871
- #: core/api/v1/serializers.py:86
1225
+ #: core/api/v1/serializers.py:87
872
1226
  #, python-format
873
1227
  msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
874
1228
  msgstr ""
875
1229
 
876
- #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:445
1230
+ #: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
877
1231
  msgid "Invalid password"
878
1232
  msgstr ""
879
1233
 
@@ -885,24 +1239,20 @@ msgstr ""
885
1239
  msgid "Local"
886
1240
  msgstr ""
887
1241
 
888
- #: core/api/v2/serializers.py:194 core/app_settings.py:17
889
- msgid "User profile"
890
- msgstr ""
891
-
892
- #: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
893
- #: core/api/v2/serializers.py:228
1242
+ #: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
1243
+ #: core/api/v2/serializers.py:221
894
1244
  msgid "Invalid syntax"
895
1245
  msgstr ""
896
1246
 
897
- #: core/api/v2/serializers.py:233
1247
+ #: core/api/v2/serializers.py:226
898
1248
  msgid "Invalid rounds number"
899
1249
  msgstr ""
900
1250
 
901
- #: core/api/v2/serializers.py:433 core/forms.py:81
1251
+ #: core/api/v2/serializers.py:426 core/forms.py:81
902
1252
  msgid "This code is invalid"
903
1253
  msgstr ""
904
1254
 
905
- #: core/api/v2/serializers.py:503 core/views/auth.py:194 core/views/auth.py:247
1255
+ #: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
906
1256
  msgid "Please use the following code to recover your Modoboa password: {}"
907
1257
  msgstr ""
908
1258
 
@@ -910,534 +1260,534 @@ msgstr ""
910
1260
  msgid "Administration console"
911
1261
  msgstr ""
912
1262
 
913
- #: core/api/v2/viewsets.py:187
914
- msgid "Address book"
1263
+ #: core/api/v2/viewsets.py:184 dmarc/models.py:11
1264
+ msgid "Quarantine"
1265
+ msgstr ""
1266
+
1267
+ #: core/api/v2/viewsets.py:186
1268
+ msgid "Amavis quarantine"
915
1269
  msgstr ""
916
1270
 
917
1271
  #: core/api/v2/viewsets.py:197
1272
+ msgid "Address book"
1273
+ msgstr ""
1274
+
1275
+ #: core/api/v2/viewsets.py:207
918
1276
  msgid "Calendar"
919
1277
  msgstr ""
920
1278
 
921
- #: core/api/v2/viewsets.py:205 core/api/v2/viewsets.py:207
922
- #: webmail/app_settings.py:258 webmail/app_settings.py:265
1279
+ #: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
1280
+ #: webmail/app_settings.py:295 webmail/app_settings.py:302
923
1281
  msgid "Webmail"
924
1282
  msgstr ""
925
1283
 
926
- #: core/app_settings.py:37
1284
+ #: core/app_settings.py:25
927
1285
  msgid "Authentication"
928
1286
  msgstr ""
929
1287
 
930
- #: core/app_settings.py:43
1288
+ #: core/app_settings.py:31
931
1289
  msgid "Authentication type"
932
1290
  msgstr ""
933
1291
 
934
- #: core/app_settings.py:45
1292
+ #: core/app_settings.py:33
935
1293
  msgid "The backend used for authentication"
936
1294
  msgstr ""
937
1295
 
938
- #: core/app_settings.py:52
1296
+ #: core/app_settings.py:40
939
1297
  msgid "Default password scheme"
940
1298
  msgstr ""
941
1299
 
942
- #: core/app_settings.py:54
1300
+ #: core/app_settings.py:42
943
1301
  msgid "Scheme used to crypt mailbox passwords"
944
1302
  msgstr ""
945
1303
 
946
- #: core/app_settings.py:61
1304
+ #: core/app_settings.py:49
947
1305
  msgid "Rounds"
948
1306
  msgstr ""
949
1307
 
950
- #: core/app_settings.py:63
1308
+ #: core/app_settings.py:51
951
1309
  msgid ""
952
1310
  "Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
953
1311
  "between 1000 and 999999999, inclusive."
954
1312
  msgstr ""
955
1313
 
956
- #: core/app_settings.py:73
1314
+ #: core/app_settings.py:61
957
1315
  msgid "Update password scheme at login"
958
1316
  msgstr ""
959
1317
 
960
- #: core/app_settings.py:76
1318
+ #: core/app_settings.py:64
961
1319
  msgid "Update user password at login to use the default password scheme"
962
1320
  msgstr ""
963
1321
 
964
- #: core/app_settings.py:84
1322
+ #: core/app_settings.py:72
965
1323
  msgid "Default password"
966
1324
  msgstr ""
967
1325
 
968
- #: core/app_settings.py:86
1326
+ #: core/app_settings.py:74
969
1327
  msgid "Default password for automatically created accounts."
970
1328
  msgstr ""
971
1329
 
972
- #: core/app_settings.py:93
1330
+ #: core/app_settings.py:81
973
1331
  msgid "Random password length"
974
1332
  msgstr ""
975
1333
 
976
- #: core/app_settings.py:95
1334
+ #: core/app_settings.py:83
977
1335
  msgid "Length of randomly generated passwords."
978
1336
  msgstr ""
979
1337
 
980
- #: core/app_settings.py:103
1338
+ #: core/app_settings.py:91
981
1339
  msgid "Allow special characters for random password"
982
1340
  msgstr ""
983
1341
 
984
- #: core/app_settings.py:106
1342
+ #: core/app_settings.py:94
985
1343
  msgid "Enable special characters in randomly generated passwords."
986
1344
  msgstr ""
987
1345
 
988
- #: core/app_settings.py:114
1346
+ #: core/app_settings.py:102
989
1347
  msgid "Update password service URL"
990
1348
  msgstr ""
991
1349
 
992
- #: core/app_settings.py:116
1350
+ #: core/app_settings.py:104
993
1351
  msgid ""
994
1352
  "The URL of an external page where users will be able to update their "
995
1353
  "password. It applies only to non local users, ie. those automatically "
996
1354
  "created after a successful external authentication (LDAP, SMTP)."
997
1355
  msgstr ""
998
1356
 
999
- #: core/app_settings.py:126
1357
+ #: core/app_settings.py:114
1000
1358
  msgid "Password recovery announcement"
1001
1359
  msgstr ""
1002
1360
 
1003
- #: core/app_settings.py:128
1361
+ #: core/app_settings.py:116
1004
1362
  msgid "A temporary message that will be displayed on the reset password page."
1005
1363
  msgstr ""
1006
1364
 
1007
- #: core/app_settings.py:137
1365
+ #: core/app_settings.py:125
1008
1366
  msgid "Enable password recovery by SMS"
1009
1367
  msgstr ""
1010
1368
 
1011
- #: core/app_settings.py:140
1369
+ #: core/app_settings.py:128
1012
1370
  msgid "Enable password recovery by SMS for users who filled a phone number."
1013
1371
  msgstr ""
1014
1372
 
1015
- #: core/app_settings.py:148
1373
+ #: core/app_settings.py:136
1016
1374
  msgid "SMS provider"
1017
1375
  msgstr ""
1018
1376
 
1019
- #: core/app_settings.py:151
1377
+ #: core/app_settings.py:139
1020
1378
  msgid "Choose a provider to send password recovery SMS"
1021
1379
  msgstr ""
1022
1380
 
1023
- #: core/app_settings.py:163
1381
+ #: core/app_settings.py:151
1024
1382
  msgid "LDAP"
1025
1383
  msgstr ""
1026
1384
 
1027
- #: core/app_settings.py:169 sievefilters/app_settings.py:18
1385
+ #: core/app_settings.py:157 sievefilters/app_settings.py:18
1028
1386
  #: sievefilters/app_settings.py:51 webmail/app_settings.py:36
1029
- #: webmail/app_settings.py:73
1387
+ #: webmail/app_settings.py:73 webmail/app_settings.py:119
1030
1388
  msgid "Server address"
1031
1389
  msgstr ""
1032
1390
 
1033
- #: core/app_settings.py:171
1391
+ #: core/app_settings.py:159
1034
1392
  msgid "The IP address or the DNS name of the LDAP server"
1035
1393
  msgstr ""
1036
1394
 
1037
- #: core/app_settings.py:178 sievefilters/app_settings.py:25
1395
+ #: core/app_settings.py:166 sievefilters/app_settings.py:25
1038
1396
  #: sievefilters/app_settings.py:67 webmail/app_settings.py:54
1039
- #: webmail/app_settings.py:91
1397
+ #: webmail/app_settings.py:91 webmail/app_settings.py:137
1040
1398
  msgid "Server port"
1041
1399
  msgstr ""
1042
1400
 
1043
- #: core/app_settings.py:180
1401
+ #: core/app_settings.py:168
1044
1402
  msgid "The TCP port number used by the LDAP server"
1045
1403
  msgstr ""
1046
1404
 
1047
- #: core/app_settings.py:188
1405
+ #: core/app_settings.py:176
1048
1406
  msgid "Enable secondary server (fallback)"
1049
1407
  msgstr ""
1050
1408
 
1051
- #: core/app_settings.py:191
1409
+ #: core/app_settings.py:179
1052
1410
  msgid ""
1053
1411
  "Enable a secondary LDAP server which will be used if the primary one fails"
1054
1412
  msgstr ""
1055
1413
 
1056
- #: core/app_settings.py:199
1414
+ #: core/app_settings.py:187
1057
1415
  msgid "Secondary server address"
1058
1416
  msgstr ""
1059
1417
 
1060
- #: core/app_settings.py:202
1418
+ #: core/app_settings.py:190
1061
1419
  msgid "The IP address or the DNS name of the seondary LDAP server"
1062
1420
  msgstr ""
1063
1421
 
1064
- #: core/app_settings.py:209
1422
+ #: core/app_settings.py:197
1065
1423
  msgid "Secondary server port"
1066
1424
  msgstr ""
1067
1425
 
1068
- #: core/app_settings.py:212
1426
+ #: core/app_settings.py:200
1069
1427
  msgid "The TCP port number used by the LDAP secondary server"
1070
1428
  msgstr ""
1071
1429
 
1072
- #: core/app_settings.py:219 sievefilters/app_settings.py:58
1430
+ #: core/app_settings.py:207 sievefilters/app_settings.py:58
1073
1431
  #: webmail/app_settings.py:45
1074
1432
  msgid "Use a secured connection"
1075
1433
  msgstr ""
1076
1434
 
1077
- #: core/app_settings.py:221
1435
+ #: core/app_settings.py:209
1078
1436
  msgid "Use an SSL/STARTTLS connection to access the LDAP server"
1079
1437
  msgstr ""
1080
1438
 
1081
- #: core/app_settings.py:228
1439
+ #: core/app_settings.py:216
1082
1440
  msgid "Active Directory"
1083
1441
  msgstr ""
1084
1442
 
1085
- #: core/app_settings.py:230
1443
+ #: core/app_settings.py:218
1086
1444
  msgid "Tell if the LDAP server is an Active Directory one"
1087
1445
  msgstr ""
1088
1446
 
1089
- #: core/app_settings.py:237
1447
+ #: core/app_settings.py:225
1090
1448
  msgid "Administrator groups"
1091
1449
  msgstr ""
1092
1450
 
1093
- #: core/app_settings.py:239
1451
+ #: core/app_settings.py:227
1094
1452
  msgid ""
1095
1453
  "Members of those LDAP Posix groups will be created as domain administrators. "
1096
1454
  "Use ';' characters to separate groups."
1097
1455
  msgstr ""
1098
1456
 
1099
- #: core/app_settings.py:248
1457
+ #: core/app_settings.py:236
1100
1458
  msgid "Group type"
1101
1459
  msgstr ""
1102
1460
 
1103
- #: core/app_settings.py:250
1461
+ #: core/app_settings.py:238
1104
1462
  msgid "The LDAP group type to use with your directory."
1105
1463
  msgstr ""
1106
1464
 
1107
- #: core/app_settings.py:257
1465
+ #: core/app_settings.py:245
1108
1466
  msgid "Groups search base"
1109
1467
  msgstr ""
1110
1468
 
1111
- #: core/app_settings.py:259
1469
+ #: core/app_settings.py:247
1112
1470
  msgid "The distinguished name of the search base used to find groups"
1113
1471
  msgstr ""
1114
1472
 
1115
- #: core/app_settings.py:267
1473
+ #: core/app_settings.py:255
1116
1474
  msgid "Password attribute"
1117
1475
  msgstr ""
1118
1476
 
1119
- #: core/app_settings.py:269
1477
+ #: core/app_settings.py:257
1120
1478
  msgid "The attribute used to store user passwords"
1121
1479
  msgstr ""
1122
1480
 
1123
- #: core/app_settings.py:276
1481
+ #: core/app_settings.py:264
1124
1482
  msgid "LDAP authentication settings"
1125
1483
  msgstr ""
1126
1484
 
1127
- #: core/app_settings.py:284
1485
+ #: core/app_settings.py:272
1128
1486
  msgid "Authentication method"
1129
1487
  msgstr ""
1130
1488
 
1131
- #: core/app_settings.py:287
1489
+ #: core/app_settings.py:275
1132
1490
  msgid "Choose the authentication method to use"
1133
1491
  msgstr ""
1134
1492
 
1135
- #: core/app_settings.py:294 core/app_settings.py:357
1493
+ #: core/app_settings.py:282 core/app_settings.py:345
1136
1494
  msgid "Bind DN"
1137
1495
  msgstr ""
1138
1496
 
1139
- #: core/app_settings.py:296 core/app_settings.py:359
1497
+ #: core/app_settings.py:284 core/app_settings.py:347
1140
1498
  msgid ""
1141
1499
  "The distinguished name to use when binding to the LDAP server. Leave empty "
1142
1500
  "for an anonymous bind"
1143
1501
  msgstr ""
1144
1502
 
1145
- #: core/app_settings.py:305 core/app_settings.py:367
1503
+ #: core/app_settings.py:293 core/app_settings.py:355
1146
1504
  msgid "Bind password"
1147
1505
  msgstr ""
1148
1506
 
1149
- #: core/app_settings.py:307 core/app_settings.py:369
1507
+ #: core/app_settings.py:295 core/app_settings.py:357
1150
1508
  msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
1151
1509
  msgstr ""
1152
1510
 
1153
- #: core/app_settings.py:317 core/app_settings.py:422
1511
+ #: core/app_settings.py:305 core/app_settings.py:410
1154
1512
  msgid "Users search base"
1155
1513
  msgstr ""
1156
1514
 
1157
- #: core/app_settings.py:319 core/app_settings.py:424
1515
+ #: core/app_settings.py:307 core/app_settings.py:412
1158
1516
  msgid "The distinguished name of the search base used to find users"
1159
1517
  msgstr ""
1160
1518
 
1161
- #: core/app_settings.py:328 core/app_settings.py:433
1519
+ #: core/app_settings.py:316 core/app_settings.py:421
1162
1520
  msgid "Search filter"
1163
1521
  msgstr ""
1164
1522
 
1165
- #: core/app_settings.py:330 core/app_settings.py:435
1523
+ #: core/app_settings.py:318 core/app_settings.py:423
1166
1524
  msgid ""
1167
1525
  "An optional filter string (e.g. '(objectClass=person)'). In order to be "
1168
1526
  "valid, it must be enclosed in parentheses."
1169
1527
  msgstr ""
1170
1528
 
1171
- #: core/app_settings.py:339
1529
+ #: core/app_settings.py:327
1172
1530
  msgid "User DN template"
1173
1531
  msgstr ""
1174
1532
 
1175
- #: core/app_settings.py:341
1533
+ #: core/app_settings.py:329
1176
1534
  #, python-format
1177
1535
  msgid ""
1178
1536
  "The template used to construct a user's DN. It should contain one "
1179
1537
  "placeholder (ie. %(user)s)"
1180
1538
  msgstr ""
1181
1539
 
1182
- #: core/app_settings.py:350
1540
+ #: core/app_settings.py:338
1183
1541
  msgid "LDAP synchronization settings"
1184
1542
  msgstr ""
1185
1543
 
1186
- #: core/app_settings.py:378
1544
+ #: core/app_settings.py:366
1187
1545
  msgid "Enable export to LDAP"
1188
1546
  msgstr ""
1189
1547
 
1190
- #: core/app_settings.py:380
1548
+ #: core/app_settings.py:368
1191
1549
  msgid ""
1192
1550
  "Enable automatic synchronization between local database and LDAP directory"
1193
1551
  msgstr ""
1194
1552
 
1195
- #: core/app_settings.py:389
1553
+ #: core/app_settings.py:377
1196
1554
  msgid "Delete remote LDAP account when local account is deleted"
1197
1555
  msgstr ""
1198
1556
 
1199
- #: core/app_settings.py:392
1557
+ #: core/app_settings.py:380
1200
1558
  msgid ""
1201
1559
  "Delete remote LDAP account when local account is deleted, otherwise it will "
1202
1560
  "be disabled."
1203
1561
  msgstr ""
1204
1562
 
1205
- #: core/app_settings.py:401
1563
+ #: core/app_settings.py:389
1206
1564
  msgid "Account DN template"
1207
1565
  msgstr ""
1208
1566
 
1209
- #: core/app_settings.py:403
1567
+ #: core/app_settings.py:391
1210
1568
  #, python-format
1211
1569
  msgid ""
1212
1570
  "The template used to construct an account's DN. It should contain one "
1213
1571
  "placeholder (ie. %(user)s)"
1214
1572
  msgstr ""
1215
1573
 
1216
- #: core/app_settings.py:412
1574
+ #: core/app_settings.py:400
1217
1575
  msgid "Enable import from LDAP"
1218
1576
  msgstr ""
1219
1577
 
1220
- #: core/app_settings.py:414
1578
+ #: core/app_settings.py:402
1221
1579
  msgid "Enable account synchronization from LDAP directory to local database"
1222
1580
  msgstr ""
1223
1581
 
1224
- #: core/app_settings.py:444
1582
+ #: core/app_settings.py:432
1225
1583
  msgid "Username attribute"
1226
1584
  msgstr ""
1227
1585
 
1228
- #: core/app_settings.py:446
1586
+ #: core/app_settings.py:434
1229
1587
  msgid "The name of the LDAP attribute where the username can be found."
1230
1588
  msgstr ""
1231
1589
 
1232
- #: core/app_settings.py:455
1590
+ #: core/app_settings.py:443
1233
1591
  msgid "Enable Dovecot LDAP sync"
1234
1592
  msgstr ""
1235
1593
 
1236
- #: core/app_settings.py:457
1594
+ #: core/app_settings.py:445
1237
1595
  msgid "LDAP authentication settings will be applied to Dovecot configuration."
1238
1596
  msgstr ""
1239
1597
 
1240
- #: core/app_settings.py:465
1598
+ #: core/app_settings.py:453
1241
1599
  msgid "Dovecot LDAP config file"
1242
1600
  msgstr ""
1243
1601
 
1244
- #: core/app_settings.py:467
1602
+ #: core/app_settings.py:455
1245
1603
  msgid ""
1246
1604
  "Location of the configuration file which contains Dovecot LDAP settings."
1247
1605
  msgstr ""
1248
1606
 
1249
- #: core/app_settings.py:480
1607
+ #: core/app_settings.py:468
1250
1608
  msgid "Dashboard"
1251
1609
  msgstr ""
1252
1610
 
1253
- #: core/app_settings.py:486
1611
+ #: core/app_settings.py:474
1254
1612
  msgid "Custom welcome message"
1255
1613
  msgstr ""
1256
1614
 
1257
- #: core/app_settings.py:488
1615
+ #: core/app_settings.py:476
1258
1616
  msgid "A welcome message that will be displayed instead the default one"
1259
1617
  msgstr ""
1260
1618
 
1261
- #: core/app_settings.py:495
1619
+ #: core/app_settings.py:483
1262
1620
  msgid "Custom RSS feed"
1263
1621
  msgstr ""
1264
1622
 
1265
- #: core/app_settings.py:497
1623
+ #: core/app_settings.py:485
1266
1624
  msgid "Display custom RSS feed to resellers and domain administrators"
1267
1625
  msgstr ""
1268
1626
 
1269
- #: core/app_settings.py:506
1627
+ #: core/app_settings.py:494
1270
1628
  msgid "Display custom RSS feed to super admins"
1271
1629
  msgstr ""
1272
1630
 
1273
- #: core/app_settings.py:509
1631
+ #: core/app_settings.py:497
1274
1632
  msgid "Display custom RSS feed also to super administrators"
1275
1633
  msgstr ""
1276
1634
 
1277
- #: core/app_settings.py:517
1635
+ #: core/app_settings.py:505
1278
1636
  msgid "Hide features widget"
1279
1637
  msgstr ""
1280
1638
 
1281
- #: core/app_settings.py:519
1639
+ #: core/app_settings.py:507
1282
1640
  msgid "Hide features widget for resellers and domain administrators"
1283
1641
  msgstr ""
1284
1642
 
1285
- #: core/app_settings.py:531
1643
+ #: core/app_settings.py:519
1286
1644
  msgid "Theme"
1287
1645
  msgstr ""
1288
1646
 
1289
- #: core/app_settings.py:537
1647
+ #: core/app_settings.py:525
1290
1648
  msgid "Primary theme color"
1291
1649
  msgstr ""
1292
1650
 
1293
- #: core/app_settings.py:539
1651
+ #: core/app_settings.py:527
1294
1652
  msgid ""
1295
1653
  "Primary color of the theme (hexadecimal code), used as the background color "
1296
1654
  "of the left menu for example"
1297
1655
  msgstr ""
1298
1656
 
1299
- #: core/app_settings.py:548
1657
+ #: core/app_settings.py:536
1300
1658
  msgid "Primary theme color (lighter version)"
1301
1659
  msgstr ""
1302
1660
 
1303
- #: core/app_settings.py:551 core/app_settings.py:563
1661
+ #: core/app_settings.py:539 core/app_settings.py:551
1304
1662
  msgid "Primary color of the theme (hexadecimal code)"
1305
1663
  msgstr ""
1306
1664
 
1307
- #: core/app_settings.py:560
1665
+ #: core/app_settings.py:548
1308
1666
  msgid "Primary theme color (darker version)"
1309
1667
  msgstr ""
1310
1668
 
1311
- #: core/app_settings.py:571
1669
+ #: core/app_settings.py:559
1312
1670
  msgid "Secondary theme color"
1313
1671
  msgstr ""
1314
1672
 
1315
- #: core/app_settings.py:573
1673
+ #: core/app_settings.py:561
1316
1674
  msgid ""
1317
1675
  "Secondary color of the theme (hexadecimal code), used as the background "
1318
1676
  "color of some buttons for example"
1319
1677
  msgstr ""
1320
1678
 
1321
- #: core/app_settings.py:581
1679
+ #: core/app_settings.py:569
1322
1680
  msgid "Labels theme color"
1323
1681
  msgstr ""
1324
1682
 
1325
- #: core/app_settings.py:583
1683
+ #: core/app_settings.py:571
1326
1684
  msgid "Theme color for labels (hexadecimal code)"
1327
1685
  msgstr ""
1328
1686
 
1329
- #: core/app_settings.py:595
1687
+ #: core/app_settings.py:583
1330
1688
  msgid "Notifications"
1331
1689
  msgstr ""
1332
1690
 
1333
- #: core/app_settings.py:601
1691
+ #: core/app_settings.py:589
1334
1692
  msgid "Sender address"
1335
1693
  msgstr ""
1336
1694
 
1337
- #: core/app_settings.py:603
1695
+ #: core/app_settings.py:591
1338
1696
  msgid "Email address used to send notifications."
1339
1697
  msgstr ""
1340
1698
 
1341
- #: core/app_settings.py:614
1699
+ #: core/app_settings.py:602
1342
1700
  msgid "Public API"
1343
1701
  msgstr ""
1344
1702
 
1345
- #: core/app_settings.py:620
1703
+ #: core/app_settings.py:608
1346
1704
  msgid "Enable communication"
1347
1705
  msgstr ""
1348
1706
 
1349
- #: core/app_settings.py:622 core/app_settings.py:632
1707
+ #: core/app_settings.py:610 core/app_settings.py:620
1350
1708
  msgid "Automatically checks if a newer version is available"
1351
1709
  msgstr ""
1352
1710
 
1353
- #: core/app_settings.py:629
1711
+ #: core/app_settings.py:617
1354
1712
  msgid "Check new versions"
1355
1713
  msgstr ""
1356
1714
 
1357
- #: core/app_settings.py:640
1715
+ #: core/app_settings.py:628
1358
1716
  msgid "Send an email when new versions are found"
1359
1717
  msgstr ""
1360
1718
 
1361
- #: core/app_settings.py:644
1719
+ #: core/app_settings.py:632
1362
1720
  msgid "Send an email to notify admins about new versions"
1363
1721
  msgstr ""
1364
1722
 
1365
- #: core/app_settings.py:651 sievefilters/constants.py:25
1723
+ #: core/app_settings.py:639 sievefilters/constants.py:25
1366
1724
  msgid "Recipient"
1367
1725
  msgstr ""
1368
1726
 
1369
- #: core/app_settings.py:654
1727
+ #: core/app_settings.py:642
1370
1728
  msgid "Recipient of new versions notification emails."
1371
1729
  msgstr ""
1372
1730
 
1373
- #: core/app_settings.py:661
1731
+ #: core/app_settings.py:649
1374
1732
  msgid "Send statistics"
1375
1733
  msgstr ""
1376
1734
 
1377
- #: core/app_settings.py:664
1735
+ #: core/app_settings.py:652
1378
1736
  msgid "Send statistics to Modoboa public API (counters and used extensions)"
1379
1737
  msgstr ""
1380
1738
 
1381
- #: core/app_settings.py:683
1739
+ #: core/app_settings.py:671
1382
1740
  msgid "Enable inactive account tracking"
1383
1741
  msgstr ""
1384
1742
 
1385
- #: core/app_settings.py:686
1743
+ #: core/app_settings.py:674
1386
1744
  msgid ""
1387
1745
  "Allow the administrator to set a threshold (in days) beyond which an account "
1388
1746
  "is considered inactive if the user hasn't logged in"
1389
1747
  msgstr ""
1390
1748
 
1391
- #: core/app_settings.py:695
1749
+ #: core/app_settings.py:683
1392
1750
  msgid "Inactive account threshold"
1393
1751
  msgstr ""
1394
1752
 
1395
- #: core/app_settings.py:698
1753
+ #: core/app_settings.py:686
1396
1754
  msgid ""
1397
1755
  "An account with a last login date greater than this threshold (in days) will "
1398
1756
  "be considered as inactive"
1399
1757
  msgstr ""
1400
1758
 
1401
- #: core/app_settings.py:707
1759
+ #: core/app_settings.py:695
1402
1760
  msgid "Top notifications check interval"
1403
1761
  msgstr ""
1404
1762
 
1405
- #: core/app_settings.py:710
1763
+ #: core/app_settings.py:698
1406
1764
  msgid "Interval between two top notification checks (in seconds)"
1407
1765
  msgstr ""
1408
1766
 
1409
- #: core/app_settings.py:717
1767
+ #: core/app_settings.py:705
1410
1768
  msgid "Maximum log record age"
1411
1769
  msgstr ""
1412
1770
 
1413
- #: core/app_settings.py:719
1771
+ #: core/app_settings.py:707
1414
1772
  msgid "The maximum age in days of a log record"
1415
1773
  msgstr ""
1416
1774
 
1417
- #: core/app_settings.py:727
1775
+ #: core/app_settings.py:715
1418
1776
  msgid "Retention time in message history"
1419
1777
  msgstr ""
1420
1778
 
1421
- #: core/app_settings.py:730
1779
+ #: core/app_settings.py:718
1422
1780
  msgid "Retention time (in days) of a message in the message history section"
1423
1781
  msgstr ""
1424
1782
 
1425
- #: core/app_settings.py:737
1783
+ #: core/app_settings.py:725
1426
1784
  msgid "Items per page"
1427
1785
  msgstr ""
1428
1786
 
1429
- #: core/app_settings.py:739
1787
+ #: core/app_settings.py:727
1430
1788
  msgid "Number of displayed items per page"
1431
1789
  msgstr ""
1432
1790
 
1433
- #: core/app_settings.py:746
1434
- msgid "Default top redirection"
1435
- msgstr ""
1436
-
1437
- #: core/app_settings.py:748
1438
- msgid "The default redirection used when no application is specified"
1439
- msgstr ""
1440
-
1441
1791
  #: core/checks.py:15
1442
1792
  msgid ""
1443
1793
  "You have USE_TZ set to False, this may result in issues during transitions "
@@ -1563,7 +1913,7 @@ msgstr ""
1563
1913
  msgid "One or more updates are available"
1564
1914
  msgstr ""
1565
1915
 
1566
- #: core/handlers.py:138
1916
+ #: core/handlers.py:140
1567
1917
  #, python-format
1568
1918
  msgid "You are still using a deprecated password scheme (%s)"
1569
1919
  msgstr ""
@@ -1730,22 +2080,22 @@ msgstr[3] ""
1730
2080
  msgid "The core part of Modoboa"
1731
2081
  msgstr ""
1732
2082
 
1733
- #: core/views/auth.py:65
2083
+ #: core/views/auth.py:82
1734
2084
  #, python-format
1735
2085
  msgid "User '%s' successfully logged in"
1736
2086
  msgstr ""
1737
2087
 
1738
- #: core/views/auth.py:109
2088
+ #: core/views/auth.py:128
1739
2089
  #, python-format
1740
2090
  msgid "Password scheme mismatch. Updating %s password"
1741
2091
  msgstr ""
1742
2092
 
1743
- #: core/views/auth.py:116
2093
+ #: core/views/auth.py:135
1744
2094
  #, python-format
1745
2095
  msgid "Password hash parameter missmatch. Updating %s password"
1746
2096
  msgstr ""
1747
2097
 
1748
- #: core/views/auth.py:154
2098
+ #: core/views/auth.py:173
1749
2099
  msgid "User '{}' successfully logged out"
1750
2100
  msgstr ""
1751
2101
 
@@ -1770,14 +2120,10 @@ msgid "Not resolved"
1770
2120
  msgstr ""
1771
2121
 
1772
2122
  #: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
1773
- #: webmail/constants.py:18
2123
+ #: webmail/constants.py:38
1774
2124
  msgid "None"
1775
2125
  msgstr ""
1776
2126
 
1777
- #: dmarc/models.py:11
1778
- msgid "Quarantine"
1779
- msgstr ""
1780
-
1781
2127
  #: dmarc/models.py:12
1782
2128
  msgid "Reject"
1783
2129
  msgstr ""
@@ -1902,7 +2248,11 @@ msgstr ""
1902
2248
  msgid "Public key mismatchs"
1903
2249
  msgstr ""
1904
2250
 
1905
- #: imap_migration/api/v2/serializers.py:117
2251
+ #: imap_migration/api/v2/serializers.py:66
2252
+ msgid "Migrated domain with name {} already exists"
2253
+ msgstr ""
2254
+
2255
+ #: imap_migration/api/v2/serializers.py:130
1906
2256
  msgid "Access denied"
1907
2257
  msgstr ""
1908
2258
 
@@ -2577,7 +2927,7 @@ msgstr ""
2577
2927
  msgid "Rspamd"
2578
2928
  msgstr ""
2579
2929
 
2580
- #: sievefilters/api/v2/viewsets.py:193
2930
+ #: sievefilters/api/v2/viewsets.py:203
2581
2931
  #, python-format
2582
2932
  msgid "Filter %s already exists"
2583
2933
  msgstr ""
@@ -2650,7 +3000,7 @@ msgstr ""
2650
3000
  msgid "is not"
2651
3001
  msgstr ""
2652
3002
 
2653
- #: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
3003
+ #: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
2654
3004
  msgid "Subject"
2655
3005
  msgstr ""
2656
3006
 
@@ -2876,19 +3226,19 @@ msgstr ""
2876
3226
  msgid "SMTP settings"
2877
3227
  msgstr ""
2878
3228
 
2879
- #: webmail/app_settings.py:75
3229
+ #: webmail/app_settings.py:75 webmail/app_settings.py:121
2880
3230
  msgid "Address of your SMTP server"
2881
3231
  msgstr ""
2882
3232
 
2883
- #: webmail/app_settings.py:82
3233
+ #: webmail/app_settings.py:82 webmail/app_settings.py:128
2884
3234
  msgid "Secured connection mode"
2885
3235
  msgstr ""
2886
3236
 
2887
- #: webmail/app_settings.py:84
3237
+ #: webmail/app_settings.py:84 webmail/app_settings.py:130
2888
3238
  msgid "Use a secured connection to access SMTP server"
2889
3239
  msgstr ""
2890
3240
 
2891
- #: webmail/app_settings.py:93
3241
+ #: webmail/app_settings.py:93 webmail/app_settings.py:139
2892
3242
  msgid "Listening port of your SMTP server"
2893
3243
  msgstr ""
2894
3244
 
@@ -2900,103 +3250,99 @@ msgstr ""
2900
3250
  msgid "Server needs authentication"
2901
3251
  msgstr ""
2902
3252
 
2903
- #: webmail/app_settings.py:118
2904
- msgid "Display"
3253
+ #: webmail/app_settings.py:113
3254
+ msgid "Scheduling settings"
2905
3255
  msgstr ""
2906
3256
 
2907
- #: webmail/app_settings.py:124
3257
+ #: webmail/app_settings.py:161
2908
3258
  msgid "Default message display mode"
2909
3259
  msgstr ""
2910
3260
 
2911
- #: webmail/app_settings.py:126
3261
+ #: webmail/app_settings.py:163
2912
3262
  msgid "The default mode used when displaying a message"
2913
3263
  msgstr ""
2914
3264
 
2915
- #: webmail/app_settings.py:133
3265
+ #: webmail/app_settings.py:170
2916
3266
  msgid "Enable HTML links display"
2917
3267
  msgstr ""
2918
3268
 
2919
- #: webmail/app_settings.py:136
3269
+ #: webmail/app_settings.py:173
2920
3270
  msgid "Enable/Disable HTML links display"
2921
3271
  msgstr ""
2922
3272
 
2923
- #: webmail/app_settings.py:144
2924
- msgid "Number of displayed emails per page"
2925
- msgstr ""
2926
-
2927
- #: webmail/app_settings.py:147
3273
+ #: webmail/app_settings.py:184
2928
3274
  msgid "Sets the maximum number of messages displayed in a page"
2929
3275
  msgstr ""
2930
3276
 
2931
- #: webmail/app_settings.py:154
3277
+ #: webmail/app_settings.py:191
2932
3278
  msgid "Listing refresh rate"
2933
3279
  msgstr ""
2934
3280
 
2935
- #: webmail/app_settings.py:156
3281
+ #: webmail/app_settings.py:193
2936
3282
  msgid "Automatic listing refresh rate (in secconds)"
2937
3283
  msgstr ""
2938
3284
 
2939
- #: webmail/app_settings.py:163
3285
+ #: webmail/app_settings.py:200
2940
3286
  msgid "Folder container's width"
2941
3287
  msgstr ""
2942
3288
 
2943
- #: webmail/app_settings.py:165
3289
+ #: webmail/app_settings.py:202
2944
3290
  msgid "The width of the folder list container"
2945
3291
  msgstr ""
2946
3292
 
2947
- #: webmail/app_settings.py:176
3293
+ #: webmail/app_settings.py:213
2948
3294
  msgid "Folders"
2949
3295
  msgstr ""
2950
3296
 
2951
- #: webmail/app_settings.py:182
3297
+ #: webmail/app_settings.py:219
2952
3298
  msgid "Trash folder"
2953
3299
  msgstr ""
2954
3300
 
2955
- #: webmail/app_settings.py:184
3301
+ #: webmail/app_settings.py:221
2956
3302
  msgid "Folder where deleted messages go"
2957
3303
  msgstr ""
2958
3304
 
2959
- #: webmail/app_settings.py:191
3305
+ #: webmail/app_settings.py:228
2960
3306
  msgid "Sent folder"
2961
3307
  msgstr ""
2962
3308
 
2963
- #: webmail/app_settings.py:193
3309
+ #: webmail/app_settings.py:230
2964
3310
  msgid "Folder where copies of sent messages go"
2965
3311
  msgstr ""
2966
3312
 
2967
- #: webmail/app_settings.py:200
3313
+ #: webmail/app_settings.py:237
2968
3314
  msgid "Drafts folder"
2969
3315
  msgstr ""
2970
3316
 
2971
- #: webmail/app_settings.py:201
3317
+ #: webmail/app_settings.py:238
2972
3318
  msgid "Folder where drafts go"
2973
3319
  msgstr ""
2974
3320
 
2975
- #: webmail/app_settings.py:207
3321
+ #: webmail/app_settings.py:244
2976
3322
  msgid "Junk folder"
2977
3323
  msgstr ""
2978
3324
 
2979
- #: webmail/app_settings.py:209
3325
+ #: webmail/app_settings.py:246
2980
3326
  msgid "Folder where junk messages should go"
2981
3327
  msgstr ""
2982
3328
 
2983
- #: webmail/app_settings.py:220
3329
+ #: webmail/app_settings.py:257
2984
3330
  msgid "Composing messages"
2985
3331
  msgstr ""
2986
3332
 
2987
- #: webmail/app_settings.py:226
3333
+ #: webmail/app_settings.py:263
2988
3334
  msgid "Default editor"
2989
3335
  msgstr ""
2990
3336
 
2991
- #: webmail/app_settings.py:228
3337
+ #: webmail/app_settings.py:265
2992
3338
  msgid "The default editor to use when composing a message"
2993
3339
  msgstr ""
2994
3340
 
2995
- #: webmail/app_settings.py:235
3341
+ #: webmail/app_settings.py:272
2996
3342
  msgid "Signature text"
2997
3343
  msgstr ""
2998
3344
 
2999
- #: webmail/app_settings.py:237
3345
+ #: webmail/app_settings.py:274
3000
3346
  msgid "User defined email signature"
3001
3347
  msgstr ""
3002
3348
 
@@ -3010,43 +3356,59 @@ msgstr ""
3010
3356
  msgid "Failed to remove attachment: "
3011
3357
  msgstr "Nepodarilo sa vytvoriť účet LDAP: {}"
3012
3358
 
3013
- #: webmail/lib/imapemail.py:272
3359
+ #: webmail/lib/imapemail.py:270
3014
3360
  msgid "wrote:"
3015
3361
  msgstr ""
3016
3362
 
3017
- #: webmail/lib/imapemail.py:306
3363
+ #: webmail/lib/imapemail.py:304
3018
3364
  msgid "Date"
3019
3365
  msgstr ""
3020
3366
 
3021
- #: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
3367
+ #: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
3022
3368
  msgid "Original message"
3023
3369
  msgstr ""
3024
3370
 
3025
- #: webmail/lib/imaputils.py:221
3371
+ #: webmail/lib/imaputils.py:222
3026
3372
  msgid "Failed to retrieve hierarchy delimiter"
3027
3373
  msgstr ""
3028
3374
 
3029
- #: webmail/lib/imaputils.py:472
3375
+ #: webmail/lib/imaputils.py:478
3030
3376
  msgid "Inbox"
3031
3377
  msgstr ""
3032
3378
 
3033
- #: webmail/lib/imaputils.py:476
3379
+ #: webmail/lib/imaputils.py:482
3034
3380
  msgid "Drafts"
3035
3381
  msgstr ""
3036
3382
 
3037
- #: webmail/lib/imaputils.py:481
3383
+ #: webmail/lib/imaputils.py:487
3038
3384
  msgid "Junk"
3039
3385
  msgstr ""
3040
3386
 
3041
- #: webmail/lib/imaputils.py:486
3387
+ #: webmail/lib/imaputils.py:492
3042
3388
  msgid "Sent"
3043
3389
  msgstr ""
3044
3390
 
3045
- #: webmail/lib/imaputils.py:491
3391
+ #: webmail/lib/imaputils.py:500
3392
+ msgid "Scheduled"
3393
+ msgstr ""
3394
+
3395
+ #: webmail/lib/imaputils.py:507
3046
3396
  msgid "Trash"
3047
3397
  msgstr ""
3048
3398
 
3049
- #: webmail/viewsets.py:343
3399
+ #: webmail/serializers.py:220
3400
+ msgid "Moving scheduled messages is forbidden"
3401
+ msgstr ""
3402
+
3403
+ #: webmail/serializers.py:253
3404
+ msgid "Only datetime in the future is allowed"
3405
+ msgstr ""
3406
+
3407
+ #: webmail/serializers.py:258
3408
+ msgid "Provived datetime must be one minute in the future at least"
3409
+ msgstr ""
3410
+
3411
+ #: webmail/viewsets.py:359
3050
3412
  #, python-format
3051
3413
  msgid "Attachment is too big (limit: %s)"
3052
3414
  msgstr ""