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