modoboa 2.6.4__py3-none-any.whl → 2.7.0__py3-none-any.whl

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