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