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