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