modoboa 2.6.5__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 (359) 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/calendars/backends/caldav_.py +17 -13
  16. modoboa/calendars/jobs.py +7 -0
  17. modoboa/calendars/mocks.py +4 -1
  18. modoboa/calendars/serializers.py +14 -9
  19. modoboa/calendars/tests.py +10 -9
  20. modoboa/calendars/viewsets.py +3 -1
  21. modoboa/contacts/migrations/0008_addressbook_syncing.py +18 -0
  22. modoboa/contacts/models.py +1 -0
  23. modoboa/contacts/serializers.py +5 -2
  24. modoboa/contacts/tasks.py +9 -3
  25. modoboa/contacts/tests.py +32 -6
  26. modoboa/contacts/viewsets.py +7 -1
  27. modoboa/core/api/v2/serializers.py +0 -7
  28. modoboa/core/api/v2/tests.py +0 -10
  29. modoboa/core/app_settings.py +0 -22
  30. modoboa/core/commands/deploy.py +13 -0
  31. modoboa/core/commands/templates/cron_config.py.tpl +33 -0
  32. modoboa/core/commands/templates/settings.py.tpl +21 -0
  33. modoboa/core/jobs.py +34 -0
  34. modoboa/core/management/commands/load_initial_data.py +1 -1
  35. modoboa/core/password_hashers/base.py +4 -1
  36. modoboa/core/tests/test_core.py +0 -14
  37. modoboa/core/tests/test_jobs.py +40 -0
  38. modoboa/frontend_dist/assets/{AccountAliasForm-B-hTKSFr.js → AccountAliasForm-DO6DwfjE.js} +1 -1
  39. modoboa/frontend_dist/assets/{AccountEditView-LkP_qhf_.js → AccountEditView-CCuN9mGB.js} +1 -1
  40. modoboa/frontend_dist/assets/AccountLayout-Ge7fzuZg.js +1 -0
  41. modoboa/frontend_dist/assets/AccountPasswordSubForm-PkFPblkR.js +1 -0
  42. modoboa/frontend_dist/assets/AccountView-dgseekZ8.js +1 -0
  43. modoboa/frontend_dist/assets/AddressBook-DZWOHOJj.js +1 -0
  44. modoboa/frontend_dist/assets/AdminLayout-itB_mmH_.js +1 -0
  45. modoboa/frontend_dist/assets/AlarmsView-King6zb6.js +1 -0
  46. modoboa/frontend_dist/assets/{AliasEditView-BVjNJekt.js → AliasEditView-CTjrXYPf.js} +1 -1
  47. modoboa/frontend_dist/assets/AliasRecipientForm-CI7bXqVp.js +1 -0
  48. modoboa/frontend_dist/assets/{AliasView-DvvI6cV9.js → AliasView-BN13MNN_.js} +1 -1
  49. modoboa/frontend_dist/assets/AuditTrailView-C1jQwgoo.js +1 -0
  50. modoboa/frontend_dist/assets/CalendarView-juHVIHU5.css +1 -0
  51. modoboa/frontend_dist/assets/CalendarView-rRSzqxrH.js +1 -0
  52. modoboa/frontend_dist/assets/ChoiceField-DCr12shR.js +1 -0
  53. modoboa/frontend_dist/assets/ComposeEmailForm-BmtKwFb1.js +2 -0
  54. modoboa/frontend_dist/assets/ComposeEmailForm-CVNDl-Mq.css +1 -0
  55. modoboa/frontend_dist/assets/ComposeEmailView-JW22Phrb.js +1 -0
  56. modoboa/frontend_dist/assets/ConfirmDialog-CWpdwSQ6.js +1 -0
  57. modoboa/frontend_dist/assets/ConnectedLayout-BP8pO27H.js +1 -0
  58. modoboa/frontend_dist/assets/{ConnectedLayout-C6HNXWkp.css → ConnectedLayout-Ddpb_6yT.css} +1 -1
  59. modoboa/frontend_dist/assets/CreationForm-CzelJsVQ.js +1 -0
  60. modoboa/frontend_dist/assets/DashboardView-BBkBodVj.js +1 -0
  61. modoboa/frontend_dist/assets/{DomainAdminList-BO8_4Cwt.js → DomainAdminList-DD7p3i6F.js} +1 -1
  62. modoboa/frontend_dist/assets/{DomainEditView-BXylM4aB.js → DomainEditView-DoIoNYC4.js} +1 -1
  63. modoboa/frontend_dist/assets/{DomainTransportForm-Ccw5BXyM.js → DomainTransportForm-CbiJF9z5.js} +1 -1
  64. modoboa/frontend_dist/assets/{DomainView-Bd5XQI-1.js → DomainView-BXvznFYz.js} +3 -3
  65. modoboa/frontend_dist/assets/DomainsView-ffYjiffp.js +1 -0
  66. modoboa/frontend_dist/assets/EmailField-KhhJYA4D.js +1 -0
  67. modoboa/frontend_dist/assets/EmailSchedulingForm-CQL5Vfdr.js +1 -0
  68. modoboa/frontend_dist/assets/EmailView-Bq2bHZBO.js +1 -0
  69. modoboa/frontend_dist/assets/EmptyLayout-NrTftp18.js +1 -0
  70. modoboa/frontend_dist/assets/FiltersView-SOQy0U_3.js +1 -0
  71. modoboa/frontend_dist/assets/ForwardEmailView-kEPDjWUw.js +1 -0
  72. modoboa/frontend_dist/assets/{HtmlEditor-DNn3CY-w.js → HtmlEditor-CyBl5wj2.js} +15 -15
  73. modoboa/frontend_dist/assets/IdentitiesView-CZFf4oR9.js +1 -0
  74. modoboa/frontend_dist/assets/InformationView-CAtneAqM.js +1 -0
  75. modoboa/frontend_dist/assets/{LoadingData-CnQ_aVqa.js → LoadingData-C2txD49L.js} +1 -1
  76. modoboa/frontend_dist/assets/{LoginCallbackView-Nh_gmh8e.js → LoginCallbackView-DAvty3CI.js} +1 -1
  77. modoboa/frontend_dist/assets/{LoginView-BtC9BHuJ.js → LoginView-DHYITkn4.js} +1 -1
  78. modoboa/frontend_dist/assets/MailboxView-BNg2v7mi.css +1 -0
  79. modoboa/frontend_dist/assets/MailboxView-DHg5A78D.js +5 -0
  80. modoboa/frontend_dist/assets/MenuItems-C9p70bSC.js +1 -0
  81. modoboa/frontend_dist/assets/{MessageView-C1Goz-hY.js → MessageView-CrrEJpNI.js} +1 -1
  82. modoboa/frontend_dist/assets/MessagesView-CyecRd4I.js +1 -0
  83. modoboa/frontend_dist/assets/MigrationsView-DXGKKz2h.js +1 -0
  84. modoboa/frontend_dist/assets/{ParametersForm-BegEnkQM.js → ParametersForm-DFKYkPAs.js} +1 -1
  85. modoboa/frontend_dist/assets/ParametersView-B1wT5oyt.js +1 -0
  86. modoboa/frontend_dist/assets/ParametersView-CfvVzKea.js +1 -0
  87. modoboa/frontend_dist/assets/ProviderEditView-De-8ggBp.js +1 -0
  88. modoboa/frontend_dist/assets/{ProviderGeneralForm-BAELnXh6.js → ProviderGeneralForm-DO-IpJMQ.js} +1 -1
  89. modoboa/frontend_dist/assets/ProvidersView-Bhk7sCz4.js +1 -0
  90. modoboa/frontend_dist/assets/QuarantineLayout-C1YszNmP.js +1 -0
  91. modoboa/frontend_dist/assets/QuarantineView-cElD_rS-.js +1 -0
  92. modoboa/frontend_dist/assets/ReplyEmailView-BvuOZdLl.js +1 -0
  93. modoboa/frontend_dist/assets/ResourcesForm-FWxrmVwo.js +1 -0
  94. modoboa/frontend_dist/assets/SelfServiceLayout-JHRvfvQf.js +1 -0
  95. modoboa/frontend_dist/assets/SettingsView-SIsKAXtQ.css +1 -0
  96. modoboa/frontend_dist/assets/SettingsView-s2l2Xl1L.js +6 -0
  97. modoboa/frontend_dist/assets/StatisticsView-FiidWvad.js +1 -0
  98. modoboa/frontend_dist/assets/TimeSerieChart-CdqUHiO_.js +1 -0
  99. modoboa/frontend_dist/assets/TimeSerieChart-nLIFGI0y.css +1 -0
  100. modoboa/frontend_dist/assets/UserLayout-DyvI8duf.js +1 -0
  101. modoboa/frontend_dist/assets/{VAlert-Buv8Z5G4.js → VAlert-MDbeolOo.js} +1 -1
  102. modoboa/frontend_dist/assets/VApp-DM1KLQfQ.js +1 -0
  103. modoboa/frontend_dist/assets/VAutocomplete-C9NL5_uo.css +1 -0
  104. modoboa/frontend_dist/assets/VAutocomplete-CQsWYWNX.js +1 -0
  105. modoboa/frontend_dist/assets/VAvatar-CXV_FqpP.js +1 -0
  106. modoboa/frontend_dist/assets/VBadge-7tDx7aI3.js +1 -0
  107. modoboa/frontend_dist/assets/{VCard-D7AwBs4w.js → VCard-CBtX8JF-.js} +1 -1
  108. modoboa/frontend_dist/assets/VCheckbox-zY1MApOy.js +1 -0
  109. modoboa/frontend_dist/assets/{VCheckboxBtn-B5evxN9K.js → VCheckboxBtn-B0mIT3E0.js} +1 -1
  110. modoboa/frontend_dist/assets/VColorPicker-BbCHvk6K.js +1 -0
  111. modoboa/frontend_dist/assets/{VColorPicker-B_lVDaYR.css → VColorPicker-C9m8L-6U.css} +1 -1
  112. modoboa/frontend_dist/assets/{VContainer-DY9021j4.js → VContainer-Cn-vKB3s.js} +1 -1
  113. modoboa/frontend_dist/assets/VDataTable-CNT9KOSp.js +1 -0
  114. modoboa/frontend_dist/assets/VDataTableServer-_yn4Ry6U.js +1 -0
  115. modoboa/frontend_dist/assets/VDataTableVirtual-Csxh3Gp6.js +1 -0
  116. modoboa/frontend_dist/assets/VDatePicker-_OUDqShN.css +1 -0
  117. modoboa/frontend_dist/assets/VDatePicker-iFu13xIP.js +2 -0
  118. modoboa/frontend_dist/assets/VDialog-lKtBdqnp.js +1 -0
  119. modoboa/frontend_dist/assets/VExpansionPanels-CaIvk9iF.js +1 -0
  120. modoboa/frontend_dist/assets/VFileInput-C7J_qVmk.js +1 -0
  121. modoboa/frontend_dist/assets/VForm-fdQ5d-CH.js +1 -0
  122. modoboa/frontend_dist/assets/VInput-BwHvhzAe.js +1 -0
  123. modoboa/frontend_dist/assets/VMenu-BpmJf4X2.js +1 -0
  124. modoboa/frontend_dist/assets/VMenu-C5A_5Hs5.css +1 -0
  125. modoboa/frontend_dist/assets/VPicker-B7cB3kJg.css +1 -0
  126. modoboa/frontend_dist/assets/VPicker-BZho70wU.js +1 -0
  127. modoboa/frontend_dist/assets/VProgressCircular-DRw_-iNj.js +1 -0
  128. modoboa/frontend_dist/assets/VRadioGroup--eiP5xtJ.js +1 -0
  129. modoboa/frontend_dist/assets/{VRow-DyK_Mj7R.js → VRow-83Qnr5iB.js} +1 -1
  130. modoboa/frontend_dist/assets/VSelect-BcmGFGif.js +1 -0
  131. modoboa/frontend_dist/assets/{VSelectionControl-Dkms9_P5.js → VSelectionControl-Cqi1xt-q.js} +1 -1
  132. modoboa/frontend_dist/assets/VSheet-C3MaHhtw.js +1 -0
  133. modoboa/frontend_dist/assets/VSpacer-CuSkdJZL.js +1 -0
  134. modoboa/frontend_dist/assets/VSwitch-XumUl685.js +1 -0
  135. modoboa/frontend_dist/assets/{VTable-D8ZwwC_B.js → VTable-f7wcr2AZ.js} +1 -1
  136. modoboa/frontend_dist/assets/VTabs-CDfdejXj.css +1 -0
  137. modoboa/frontend_dist/assets/VTabs-y4wNP4im.js +1 -0
  138. modoboa/frontend_dist/assets/VTextField-BPIvtrn4.js +1 -0
  139. modoboa/frontend_dist/assets/VTextField-DjbYGlzs.css +1 -0
  140. modoboa/frontend_dist/assets/VTextarea-B6bGYcC3.js +1 -0
  141. modoboa/frontend_dist/assets/VTextarea-f6vTjzFy.css +1 -0
  142. modoboa/frontend_dist/assets/VToolbar-BYDPtwf0.css +1 -0
  143. modoboa/frontend_dist/assets/VToolbar-CB6wwtYc.js +1 -0
  144. modoboa/frontend_dist/assets/VWindowItem-CDtLLEkg.js +1 -0
  145. modoboa/frontend_dist/assets/WebmailLayout-CQQAolnl.css +1 -0
  146. modoboa/frontend_dist/assets/WebmailLayout-tosQSHLS.js +1 -0
  147. modoboa/frontend_dist/assets/{accounts-BZBqbAmd.js → accounts-KUsk6LHW.js} +1 -1
  148. modoboa/frontend_dist/assets/{admin-uCrKjpln.js → admin-BW9cZW0P.js} +1 -1
  149. modoboa/frontend_dist/assets/{aliases-CFwFkX45.js → aliases-Ge0hjIsH.js} +1 -1
  150. modoboa/frontend_dist/assets/{amavis-DCy0U0TD.js → amavis-BbFeFfsk.js} +1 -1
  151. modoboa/frontend_dist/assets/{amavis-B4ScfQsG.js → amavis-DtuzP_CS.js} +1 -1
  152. modoboa/frontend_dist/assets/{contacts-DKmh2q-4.js → contacts-DMJlQTe0.js} +1 -1
  153. modoboa/frontend_dist/assets/{domains-CDE4_LDF.js → domains-Du64lcXT.js} +1 -1
  154. modoboa/frontend_dist/assets/{domains.store-a9Y5UlDV.js → domains.store-1U61jeCV.js} +1 -1
  155. modoboa/frontend_dist/assets/events-BM3in65C.js +1 -0
  156. modoboa/frontend_dist/assets/filter-Dihm6o59.js +1 -0
  157. modoboa/frontend_dist/assets/importExport-HGcNGWOm.js +1 -0
  158. modoboa/frontend_dist/assets/{index-B9q1vO3K.css → index-B1EK3MQe.css} +1 -1
  159. modoboa/frontend_dist/assets/{index-Dwg6jPTX.js → index-Dv00bmw9.js} +1 -1
  160. modoboa/frontend_dist/assets/{index-BjibLozh.js → index-jui3edpn.js} +47 -41
  161. modoboa/frontend_dist/assets/{language.store-DGuI8jG0.js → language.store-OcfdXL_-.js} +1 -1
  162. modoboa/frontend_dist/assets/languages-CF8hxo7x.js +1 -0
  163. modoboa/frontend_dist/assets/{layout-5PvsmkGR.js → layout-DOO7TRTJ.js} +1 -1
  164. modoboa/frontend_dist/assets/{layout.store-DJVcXtxk.js → layout.store-C0g-piJn.js} +1 -1
  165. modoboa/frontend_dist/assets/{logos-CMmd0hOG.js → logos-Dz2Gzei-.js} +1 -1
  166. modoboa/frontend_dist/assets/{logs-D2GOydPZ.js → logs-CLm32Weu.js} +1 -1
  167. modoboa/frontend_dist/assets/{parameters-DJdlq9sh.js → parameters-DMIAQ7cd.js} +1 -1
  168. modoboa/frontend_dist/assets/{parameters.store-DH3pPlaT.js → parameters.store-DLnFzCwV.js} +1 -1
  169. modoboa/frontend_dist/assets/{permissions-CgFJFhCp.js → permissions-CrpE0b4w.js} +1 -1
  170. modoboa/frontend_dist/assets/{ssrBoot-ChTB-PYP.js → ssrBoot-B7cr7q9U.js} +1 -1
  171. modoboa/frontend_dist/assets/{tag-CvrHE14f.js → tag-WF93n81Q.js} +1 -1
  172. modoboa/frontend_dist/assets/{theme-DFzlhSh5.js → theme-_0oOYChG.js} +1 -1
  173. modoboa/frontend_dist/assets/transports-CS61syt-.js +1 -0
  174. modoboa/frontend_dist/assets/webmail-CYDXU0DS.js +1 -0
  175. modoboa/frontend_dist/assets/webmail.store-BvHCQSjM.js +1 -0
  176. modoboa/frontend_dist/index.html +2 -2
  177. modoboa/imap_migration/models.py +3 -3
  178. modoboa/imap_migration/templates/imap_migration/offlineimap.conf +2 -2
  179. modoboa/imap_migration/tests.py +21 -0
  180. modoboa/lib/cryptutils.py +2 -2
  181. modoboa/lib/sysutils.py +1 -1
  182. modoboa/lib/tests/__init__.py +0 -1
  183. modoboa/locale/br/LC_MESSAGES/django.mo +0 -0
  184. modoboa/locale/br/LC_MESSAGES/django.po +301 -273
  185. modoboa/locale/cs/LC_MESSAGES/django.po +286 -269
  186. modoboa/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  187. modoboa/locale/cs_CZ/LC_MESSAGES/django.po +303 -275
  188. modoboa/locale/de/LC_MESSAGES/django.mo +0 -0
  189. modoboa/locale/de/LC_MESSAGES/django.po +297 -269
  190. modoboa/locale/de_DE/LC_MESSAGES/django.mo +0 -0
  191. modoboa/locale/de_DE/LC_MESSAGES/django.po +303 -275
  192. modoboa/locale/el_GR/LC_MESSAGES/django.mo +0 -0
  193. modoboa/locale/el_GR/LC_MESSAGES/django.po +303 -275
  194. modoboa/locale/en/LC_MESSAGES/django.po +286 -269
  195. modoboa/locale/es/LC_MESSAGES/django.mo +0 -0
  196. modoboa/locale/es/LC_MESSAGES/django.po +302 -274
  197. modoboa/locale/es_MX/LC_MESSAGES/django.po +286 -269
  198. modoboa/locale/fi/LC_MESSAGES/django.mo +0 -0
  199. modoboa/locale/fi/LC_MESSAGES/django.po +299 -271
  200. modoboa/locale/fr/LC_MESSAGES/django.mo +0 -0
  201. modoboa/locale/fr/LC_MESSAGES/django.po +288 -271
  202. modoboa/locale/hu/LC_MESSAGES/django.po +286 -269
  203. modoboa/locale/it/LC_MESSAGES/django.mo +0 -0
  204. modoboa/locale/it/LC_MESSAGES/django.po +303 -275
  205. modoboa/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
  206. modoboa/locale/ja_JP/LC_MESSAGES/django.po +390 -413
  207. modoboa/locale/ka/LC_MESSAGES/django.po +286 -269
  208. modoboa/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
  209. modoboa/locale/nl_NL/LC_MESSAGES/django.po +299 -271
  210. modoboa/locale/no/LC_MESSAGES/django.po +286 -269
  211. modoboa/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  212. modoboa/locale/pl_PL/LC_MESSAGES/django.po +297 -269
  213. modoboa/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  214. modoboa/locale/pt_BR/LC_MESSAGES/django.po +298 -270
  215. modoboa/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
  216. modoboa/locale/pt_PT/LC_MESSAGES/django.po +303 -275
  217. modoboa/locale/ro_RO/LC_MESSAGES/django.mo +0 -0
  218. modoboa/locale/ro_RO/LC_MESSAGES/django.po +299 -271
  219. modoboa/locale/ru/LC_MESSAGES/django.mo +0 -0
  220. modoboa/locale/ru/LC_MESSAGES/django.po +993 -1096
  221. modoboa/locale/si/LC_MESSAGES/django.po +286 -269
  222. modoboa/locale/sk/LC_MESSAGES/django.po +286 -269
  223. modoboa/locale/sk_SK/LC_MESSAGES/django.po +286 -269
  224. modoboa/locale/sl_SI/LC_MESSAGES/django.po +288 -269
  225. modoboa/locale/sv/LC_MESSAGES/django.mo +0 -0
  226. modoboa/locale/sv/LC_MESSAGES/django.po +297 -269
  227. modoboa/locale/tr/LC_MESSAGES/django.mo +0 -0
  228. modoboa/locale/tr/LC_MESSAGES/django.po +301 -272
  229. modoboa/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
  230. modoboa/locale/tr_TR/LC_MESSAGES/django.po +291 -269
  231. modoboa/locale/uk/LC_MESSAGES/django.po +286 -269
  232. modoboa/locale/zh/LC_MESSAGES/django.po +286 -269
  233. modoboa/locale/zh_CN/LC_MESSAGES/django.po +286 -269
  234. modoboa/locale/zh_TW/LC_MESSAGES/django.mo +0 -0
  235. modoboa/locale/zh_TW/LC_MESSAGES/django.po +295 -273
  236. modoboa/maillog/jobs.py +11 -0
  237. modoboa/maillog/tests/test_views.py +5 -4
  238. modoboa/parameters/api/v2/tests.py +1 -1
  239. modoboa/policyd/management/commands/policy_daemon.py +5 -1
  240. modoboa/policyd/tests.py +4 -2
  241. modoboa/rspamd/tests.py +20 -0
  242. modoboa/templates/registration/twofactor_code_verify.html +1 -1
  243. modoboa/webmail/app_settings.py +37 -0
  244. modoboa/webmail/constants.py +21 -1
  245. modoboa/webmail/factories.py +19 -0
  246. modoboa/webmail/jobs.py +27 -0
  247. modoboa/webmail/lib/__init__.py +0 -2
  248. modoboa/webmail/lib/imapemail.py +9 -11
  249. modoboa/webmail/lib/imapheader.py +25 -13
  250. modoboa/webmail/lib/imaputils.py +51 -13
  251. modoboa/webmail/lib/sendmail.py +88 -105
  252. modoboa/webmail/lib/utils.py +109 -0
  253. modoboa/webmail/migrations/0001_initial.py +90 -0
  254. modoboa/webmail/migrations/__init__.py +0 -0
  255. modoboa/webmail/mocks.py +12 -3
  256. modoboa/webmail/models.py +102 -0
  257. modoboa/webmail/serializers.py +84 -4
  258. modoboa/webmail/tests/data.py +21 -0
  259. modoboa/webmail/tests/test_lib_imaputils.py +33 -0
  260. modoboa/webmail/tests/test_viewsets.py +108 -0
  261. modoboa/webmail/urls.py +5 -0
  262. modoboa/webmail/viewsets.py +39 -9
  263. {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/METADATA +16 -13
  264. {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/RECORD +269 -252
  265. {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/WHEEL +1 -1
  266. modoboa/admin/management/commands/handle_mailbox_operations.py +0 -103
  267. modoboa/core/management/commands/cleanlogs.py +0 -53
  268. modoboa/frontend_dist/assets/AccountLayout-APeC9bsN.js +0 -1
  269. modoboa/frontend_dist/assets/AccountPasswordSubForm-D4vB2yQK.js +0 -1
  270. modoboa/frontend_dist/assets/AccountView-CloBP1BY.js +0 -1
  271. modoboa/frontend_dist/assets/AddressBook-C03MXg3y.js +0 -1
  272. modoboa/frontend_dist/assets/AdminLayout-DFmyKOo6.js +0 -1
  273. modoboa/frontend_dist/assets/AlarmsView-CFhH0I5d.js +0 -1
  274. modoboa/frontend_dist/assets/AliasRecipientForm-CZ_SvjtG.js +0 -1
  275. modoboa/frontend_dist/assets/AuditTrailView-Cyq25Jle.js +0 -1
  276. modoboa/frontend_dist/assets/CalendarView-C_dSXRp9.js +0 -1
  277. modoboa/frontend_dist/assets/ChoiceField-BPhUvoyr.js +0 -1
  278. modoboa/frontend_dist/assets/ComposeEmailForm-D3yUbBJX.css +0 -1
  279. modoboa/frontend_dist/assets/ComposeEmailForm-Ns5SYs4J.js +0 -1
  280. modoboa/frontend_dist/assets/ComposeEmailView-DgUfiWEH.js +0 -1
  281. modoboa/frontend_dist/assets/ConfirmDialog-BMIg94-U.js +0 -1
  282. modoboa/frontend_dist/assets/ConnectedLayout-CSXdVJtV.js +0 -1
  283. modoboa/frontend_dist/assets/CreationForm-CaAZYATm.js +0 -1
  284. modoboa/frontend_dist/assets/DashboardView-DErmyUoy.js +0 -1
  285. modoboa/frontend_dist/assets/DomainsView-CC1EwRId.js +0 -1
  286. modoboa/frontend_dist/assets/EmailField-BFgga4zp.js +0 -1
  287. modoboa/frontend_dist/assets/EmailView-DPWTch_6.js +0 -1
  288. modoboa/frontend_dist/assets/EmptyLayout-DAw7fAab.js +0 -1
  289. modoboa/frontend_dist/assets/FiltersView-Cg9lkLw0.js +0 -1
  290. modoboa/frontend_dist/assets/ForwardEmailView-Dd1sxgaP.js +0 -1
  291. modoboa/frontend_dist/assets/IdentitiesView-CiHIQ9Qt.js +0 -1
  292. modoboa/frontend_dist/assets/InformationView-Cc0aBA5j.js +0 -1
  293. modoboa/frontend_dist/assets/MailboxView-DIVABvk5.css +0 -1
  294. modoboa/frontend_dist/assets/MailboxView-DplC0IXR.js +0 -5
  295. modoboa/frontend_dist/assets/MenuItems-efx2rqwT.js +0 -1
  296. modoboa/frontend_dist/assets/MessagesView-CesYYZ9f.js +0 -1
  297. modoboa/frontend_dist/assets/MigrationsView-DSBk8T0y.js +0 -1
  298. modoboa/frontend_dist/assets/ParametersView-B8W_PAiz.js +0 -1
  299. modoboa/frontend_dist/assets/ParametersView-Dsx2M_g9.js +0 -1
  300. modoboa/frontend_dist/assets/ProviderEditView-PEAr7MA1.js +0 -1
  301. modoboa/frontend_dist/assets/ProvidersView-CHvQf3Vv.js +0 -1
  302. modoboa/frontend_dist/assets/QuarantineLayout-BWEaBK48.js +0 -1
  303. modoboa/frontend_dist/assets/QuarantineView-BzjeDhTm.js +0 -1
  304. modoboa/frontend_dist/assets/ReplyEmailView-CwQ9jsce.js +0 -1
  305. modoboa/frontend_dist/assets/ResourcesForm-noC3AXd9.js +0 -1
  306. modoboa/frontend_dist/assets/SelfServiceLayout-DQgRMu0L.js +0 -1
  307. modoboa/frontend_dist/assets/SettingsView-DJTdIeRK.css +0 -1
  308. modoboa/frontend_dist/assets/SettingsView-Dgwpfd8O.js +0 -6
  309. modoboa/frontend_dist/assets/StatisticsView-BZkVSh5o.js +0 -1
  310. modoboa/frontend_dist/assets/TimeSerieChart-BXJwhTMO.js +0 -1
  311. modoboa/frontend_dist/assets/TimeSerieChart-C3XHmlRd.css +0 -1
  312. modoboa/frontend_dist/assets/UserLayout-CWK9ICfE.js +0 -1
  313. modoboa/frontend_dist/assets/VApp-CiIBWB_Q.js +0 -1
  314. modoboa/frontend_dist/assets/VAutocomplete-DcNqTIie.js +0 -1
  315. modoboa/frontend_dist/assets/VAutocomplete-hzGuLlUI.css +0 -1
  316. modoboa/frontend_dist/assets/VAvatar-BsHplcRP.js +0 -1
  317. modoboa/frontend_dist/assets/VBadge-CavP_E2g.js +0 -1
  318. modoboa/frontend_dist/assets/VCheckbox-CKW9lz5i.js +0 -1
  319. modoboa/frontend_dist/assets/VColorPicker-Bsrz8yif.js +0 -1
  320. modoboa/frontend_dist/assets/VDataTable-ocZo8ju0.js +0 -1
  321. modoboa/frontend_dist/assets/VDataTableServer-CJfpYXQW.js +0 -1
  322. modoboa/frontend_dist/assets/VDataTableVirtual-Cr8yw49k.js +0 -1
  323. modoboa/frontend_dist/assets/VDialog-CUMh3paI.js +0 -1
  324. modoboa/frontend_dist/assets/VExpansionPanels-CkwHiKsA.js +0 -1
  325. modoboa/frontend_dist/assets/VFileInput-D5qlksIG.js +0 -1
  326. modoboa/frontend_dist/assets/VForm-ClJU5x_v.js +0 -1
  327. modoboa/frontend_dist/assets/VInput-DhzSMFXh.js +0 -1
  328. modoboa/frontend_dist/assets/VMenu-B53a3gm6.js +0 -1
  329. modoboa/frontend_dist/assets/VMenu-BEipA1lw.css +0 -1
  330. modoboa/frontend_dist/assets/VPicker-B928ZVJQ.js +0 -1
  331. modoboa/frontend_dist/assets/VPicker-ClSXs6kv.css +0 -1
  332. modoboa/frontend_dist/assets/VProgressCircular-viI3jDXe.js +0 -1
  333. modoboa/frontend_dist/assets/VRadioGroup-C0bqFrYg.js +0 -1
  334. modoboa/frontend_dist/assets/VSelect-y0E5_vPn.js +0 -1
  335. modoboa/frontend_dist/assets/VSheet-DQkh_hsX.js +0 -1
  336. modoboa/frontend_dist/assets/VSpacer-CBqB9uSt.js +0 -1
  337. modoboa/frontend_dist/assets/VSwitch-D4xdR9jz.js +0 -1
  338. modoboa/frontend_dist/assets/VTabs-D2c0KeF2.js +0 -1
  339. modoboa/frontend_dist/assets/VTabs-NzpINroH.css +0 -1
  340. modoboa/frontend_dist/assets/VTextField-Cow3HZvI.css +0 -1
  341. modoboa/frontend_dist/assets/VTextField-DvvH1ciR.js +0 -1
  342. modoboa/frontend_dist/assets/VTextarea-DHtXtzqP.js +0 -1
  343. modoboa/frontend_dist/assets/VTextarea-DyGjqrlm.css +0 -1
  344. modoboa/frontend_dist/assets/VToolbar-CB2GrZpA.css +0 -1
  345. modoboa/frontend_dist/assets/VToolbar-pvLQtmbU.js +0 -1
  346. modoboa/frontend_dist/assets/VWindowItem-DErNPSH8.js +0 -1
  347. modoboa/frontend_dist/assets/WebmailLayout-BzW0LWYp.css +0 -1
  348. modoboa/frontend_dist/assets/WebmailLayout-D7J-QJ-0.js +0 -1
  349. modoboa/frontend_dist/assets/filter-BVvMTmPG.js +0 -1
  350. modoboa/frontend_dist/assets/global.store-Bha4Z76j.js +0 -1
  351. modoboa/frontend_dist/assets/importExport-EgijWlC1.js +0 -1
  352. modoboa/frontend_dist/assets/languages-Cge6pECg.js +0 -1
  353. modoboa/frontend_dist/assets/transports-BUSYxSF4.js +0 -1
  354. modoboa/frontend_dist/assets/webmail-HVg3ZHC0.js +0 -1
  355. modoboa/frontend_dist/assets/webmail.store-D-d88s4w.js +0 -1
  356. {modoboa-2.6.5.data → modoboa-2.7.0.data}/scripts/modoboa-admin.py +0 -0
  357. {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/entry_points.txt +0 -0
  358. {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/licenses/LICENSE +0 -0
  359. {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/top_level.txt +0 -0
@@ -3,7 +3,7 @@
3
3
  # This file is distributed under the same license as the PACKAGE package.
4
4
  #
5
5
  # Translators:
6
- # Antoine Nguyen <tonio@ngyn.org>, 2016-2017,2020,2023-2025
6
+ # Antoine Nguyen <tonio@ngyn.org>, 2016-2017,2020,2023-2026
7
7
  # Christophe CHAUVET <christophe.chauvet@gmail.com>, 2018
8
8
  # Icarus Flight, 2022
9
9
  # Icarus Flight, 2022
@@ -15,9 +15,9 @@ msgid ""
15
15
  msgstr ""
16
16
  "Project-Id-Version: Modoboa\n"
17
17
  "Report-Msgid-Bugs-To: \n"
18
- "POT-Creation-Date: 2025-12-02 16:07+0100\n"
18
+ "POT-Creation-Date: 2026-02-04 09:30+0100\n"
19
19
  "PO-Revision-Date: 2011-07-01 08:15+0000\n"
20
- "Last-Translator: Antoine Nguyen <tonio@ngyn.org>, 2016-2017,2020,2023-2025\n"
20
+ "Last-Translator: Antoine Nguyen <tonio@ngyn.org>, 2016-2017,2020,2023-2026\n"
21
21
  "Language-Team: French (http://app.transifex.com/tonio/modoboa/language/fr/)\n"
22
22
  "MIME-Version: 1.0\n"
23
23
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -48,14 +48,14 @@ msgid "Cannot be greater than domain quota"
48
48
  msgstr "Ne peut pas être supérieur au quota du domaine"
49
49
 
50
50
  #: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
51
- #: admin/api/v2/serializers.py:570 admin/models/alias.py:45
51
+ #: admin/api/v2/serializers.py:571 admin/models/alias.py:45
52
52
  msgid "Permission denied."
53
53
  msgstr "Permission refusée."
54
54
 
55
55
  #: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
56
- #: admin/api/v2/serializers.py:491 amavis/serializers.py:39
57
- #: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
58
- #: core/api/v2/serializers.py:266 transport/backends.py:40
56
+ #: admin/api/v2/serializers.py:492 amavis/serializers.py:39
57
+ #: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
58
+ #: core/api/v2/serializers.py:259 transport/backends.py:40
59
59
  msgid "This field is required"
60
60
  msgstr "Ce champ est requis"
61
61
 
@@ -64,7 +64,7 @@ msgid ""
64
64
  "List of administered domains (resellers and domain administrators only)."
65
65
  msgstr "Liste des domaines administrés (revendeurs et administrateurs de domaine seulement)."
66
66
 
67
- #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
67
+ #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
68
68
  msgid "Not allowed for this role."
69
69
  msgstr "Non autorisé pour ce rôle."
70
70
 
@@ -72,13 +72,12 @@ msgstr "Non autorisé pour ce rôle."
72
72
  msgid "Must be equal to mailbox full_address"
73
73
  msgstr "Doit être égale au champ full_address dans mailbox"
74
74
 
75
- #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
76
- #: calendars/serializers.py:175 calendars/serializers.py:177
77
- #: pdfcredentials/api/v2/serializers.py:91
75
+ #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
76
+ #: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
78
77
  msgid "This field is required."
79
78
  msgstr "Ce champ est requis."
80
79
 
81
- #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
80
+ #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
82
81
  msgid "Local domain {} does not exist"
83
82
  msgstr "Le domaine local {} n'existe pas"
84
83
 
@@ -119,39 +118,39 @@ msgstr "Vous ne pouvez pas définir de quota illimité"
119
118
  msgid "User '%s' already exists"
120
119
  msgstr "L'utilisateur '%s' existe déjà"
121
120
 
122
- #: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
121
+ #: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
123
122
  msgid "Must be a positive integer"
124
123
  msgstr "Doit être un entier positif"
125
124
 
126
- #: admin/api/v2/serializers.py:270
125
+ #: admin/api/v2/serializers.py:271
127
126
  msgid "openssl not found, please make sure it is installed."
128
127
  msgstr "impossible de trouver openssl, veuillez vous assurer vous qu'il est installé."
129
128
 
130
- #: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
129
+ #: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
131
130
  msgid "Directory not found."
132
131
  msgstr "Répertoire introuvable."
133
132
 
134
- #: admin/api/v2/serializers.py:284
133
+ #: admin/api/v2/serializers.py:285
135
134
  msgid "This field only allows valid IP addresses (or networks)"
136
135
  msgstr "Ce champ n'autorise que des adresses IP correctes (ou des réseaux)"
137
136
 
138
- #: admin/api/v2/serializers.py:297
137
+ #: admin/api/v2/serializers.py:298
139
138
  msgid "Please disable imap migration before disabling this option."
140
139
  msgstr "Veuillez désactiver la migration IMAP avant de désactiver cette option"
141
140
 
142
- #: admin/api/v2/serializers.py:310
141
+ #: admin/api/v2/serializers.py:311
143
142
  msgid "Define at least one authorized network / address"
144
143
  msgstr "Définissez au moins un réseau / une adresse autorisé"
145
144
 
146
- #: admin/api/v2/serializers.py:587
145
+ #: admin/api/v2/serializers.py:588
147
146
  msgid "The left part of an email address can't be more than 64 characters."
148
147
  msgstr "La partie gauche d'un courriel ne peut pas faire plus de 64 caractères."
149
148
 
150
- #: admin/api/v2/serializers.py:609
149
+ #: admin/api/v2/serializers.py:610
151
150
  msgid "A mailbox is required to create aliases."
152
151
  msgstr "Une boîte aux lettres est requises pour créer des alias"
153
152
 
154
- #: admin/api/v2/serializers.py:782
153
+ #: admin/api/v2/serializers.py:783
155
154
  msgid "Unknown status"
156
155
  msgstr "Statut inconnu"
157
156
 
@@ -243,142 +242,152 @@ msgstr "Activer les vérifications DNSBL"
243
242
  msgid "Check every domain against major DNSBL providers"
244
243
  msgstr "Vérifie chaque domaine auprès des fournisseurs de DNSBL"
245
244
 
246
- #: admin/app_settings.py:116
245
+ #: admin/app_settings.py:117
246
+ msgid "Notify domain admins about DNS issues"
247
+ msgstr "Notifier les administrateurs de domaine à propos des problèmes DNS"
248
+
249
+ #: admin/app_settings.py:120
250
+ msgid ""
251
+ "Send a notification by email to domain administrators when DNS issues are "
252
+ "encountered"
253
+ msgstr "Envoyer une notification email aux administrateurs de domaine quand des problèmes DNS sont rencontrés"
254
+
255
+ #: admin/app_settings.py:128
247
256
  msgid "Custom DNS server"
248
257
  msgstr "Serveur DNS personnalisé"
249
258
 
250
- #: admin/app_settings.py:118
259
+ #: admin/app_settings.py:130
251
260
  msgid "Use a custom DNS server instead of local server configuration"
252
261
  msgstr "Utiliser un serveur DNS personnalisé à la place de la configuration par défaut du serveur"
253
262
 
254
- #: admin/app_settings.py:126
263
+ #: admin/app_settings.py:138
255
264
  msgid "DKIM keys storage directory"
256
265
  msgstr "Répertoire de stockage des clés DKIM"
257
266
 
258
- #: admin/app_settings.py:128
267
+ #: admin/app_settings.py:140
259
268
  msgid ""
260
269
  "Absolute path of the directory where DKIM private keys will be stored. Make "
261
270
  "sure this directory belongs to root user and is not readable by the outside "
262
271
  "world."
263
272
  msgstr "Chemin absolu du répertoire dans lequel seront stockées les clés DKIM. Assurez vous que ce répertoire appartient à l'utilisateur root et qu'il n'est pas lisible par le monde extérieur."
264
273
 
265
- #: admin/app_settings.py:137
274
+ #: admin/app_settings.py:149
266
275
  msgid "Default DKIM key length"
267
276
  msgstr "Taille par défaut d'une clé DKIM"
268
277
 
269
- #: admin/app_settings.py:139
278
+ #: admin/app_settings.py:151
270
279
  msgid "Default length in bits for newly generated DKIM keys."
271
280
  msgstr "Taille par défaut en octets des clés DKIM nouvellement générées."
272
281
 
273
- #: admin/app_settings.py:146
282
+ #: admin/app_settings.py:158
274
283
  msgid "Default domain quota"
275
284
  msgstr "Quota de domaine par défaut"
276
285
 
277
- #: admin/app_settings.py:148
286
+ #: admin/app_settings.py:160
278
287
  msgid ""
279
288
  "Default quota (in MB) applied to freshly created domains with no value "
280
289
  "specified. A value of 0 means no quota."
281
290
  msgstr "Quota par défaut (en Mo) appliqué aux domaines fraichement créés et ne spécifiant pas de valeur. 0 signifie qu'aucun quota ne sera appliqué."
282
291
 
283
- #: admin/app_settings.py:156
292
+ #: admin/app_settings.py:168
284
293
  msgid "Default domain sending limit"
285
294
  msgstr "Limite d'envoi par défaut du domaine"
286
295
 
287
- #: admin/app_settings.py:158
296
+ #: admin/app_settings.py:170
288
297
  msgid ""
289
298
  "Number of messages freshly created domains will be allowed to send per day. "
290
299
  "Leave empty for no limit."
291
300
  msgstr "Nombre maximal de messages que les nouveaux domaines seront autorisés à envoyer par jour. Laisser vide pour n'indiquer aucune limite."
292
301
 
293
- #: admin/app_settings.py:170 limits/app_settings.py:61
302
+ #: admin/app_settings.py:182 limits/app_settings.py:61
294
303
  #: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
295
304
  msgid "Mailboxes"
296
305
  msgstr "Boites"
297
306
 
298
- #: admin/app_settings.py:176
307
+ #: admin/app_settings.py:188
299
308
  msgid "Handle mailboxes on filesystem"
300
309
  msgstr "Gérer les boites sur le système de fichiers"
301
310
 
302
- #: admin/app_settings.py:178
311
+ #: admin/app_settings.py:190
303
312
  msgid ""
304
313
  "Rename or remove mailboxes on the filesystem when they get renamed or "
305
314
  "removed within Modoboa"
306
315
  msgstr "Renommer ou supprimer les boites sur le système de fichiers quand elles sont renommées ou supprimées dans Modoboa"
307
316
 
308
- #: admin/app_settings.py:186 admin/models/domain.py:36
317
+ #: admin/app_settings.py:198 admin/models/domain.py:36
309
318
  msgid "Default mailbox quota"
310
319
  msgstr "Quota par défaut pour une boîte aux lettres"
311
320
 
312
- #: admin/app_settings.py:188
321
+ #: admin/app_settings.py:200
313
322
  msgid ""
314
323
  "Default mailbox quota (in MB) applied to freshly created domains with no "
315
324
  "value specified. A value of 0 means no quota."
316
325
  msgstr "Quota par défaut (en Mo) appliqué aux nouveaux domaines quand aucune valeur n'est spécifiée. Une valeur de 0 signifie pas de quota."
317
326
 
318
- #: admin/app_settings.py:197
327
+ #: admin/app_settings.py:209
319
328
  msgid "Default mailbox sending limit"
320
329
  msgstr "Limite d'envoi par défaut d'une boîte aux lettres"
321
330
 
322
- #: admin/app_settings.py:199
331
+ #: admin/app_settings.py:211
323
332
  msgid ""
324
333
  "Number of messages freshly created mailboxes will be allowed to send per "
325
334
  "day. Leave empty for no limit."
326
335
  msgstr "Nombre maximal de messages que les nouveaux comptes seront autorisés à envoyer par jour. Laisser vide pour n'indiquer aucune limite."
327
336
 
328
- #: admin/app_settings.py:207
337
+ #: admin/app_settings.py:219
329
338
  msgid "Automatic account removal"
330
339
  msgstr "Suppression automatique de compte"
331
340
 
332
- #: admin/app_settings.py:209
341
+ #: admin/app_settings.py:221
333
342
  msgid "When a mailbox is removed, also remove the associated account"
334
343
  msgstr "Lorsqu'une boite aux lettres est supprimée, supprimer le compte associé en même temps"
335
344
 
336
- #: admin/app_settings.py:218
345
+ #: admin/app_settings.py:230
337
346
  msgid "Automatic domain/mailbox creation"
338
347
  msgstr "Création automatique de domaine/boite aux lettres"
339
348
 
340
- #: admin/app_settings.py:221
349
+ #: admin/app_settings.py:233
341
350
  msgid ""
342
351
  "Create a domain and a mailbox when an account is automatically created."
343
352
  msgstr "Créer un domaine et une boite aux lettres quand un compte est créé automatiquement."
344
353
 
345
- #: admin/app_settings.py:230
354
+ #: admin/app_settings.py:242
346
355
  msgid "Create an alias when a mailbox is renamed"
347
356
  msgstr "Créer un alias quand une boite aux lettres est renommée"
348
357
 
349
- #: admin/app_settings.py:233
358
+ #: admin/app_settings.py:245
350
359
  msgid "Create an alias using the old address when a mailbox is renamed."
351
360
  msgstr "Créer un alias en utilisant l'ancienne adresse quand une boite aux lettres est renommée."
352
361
 
353
- #: admin/app_settings.py:245
362
+ #: admin/app_settings.py:257
354
363
  msgid "Aliases"
355
364
  msgstr "Alias"
356
365
 
357
- #: admin/app_settings.py:251
366
+ #: admin/app_settings.py:263
358
367
  msgid "Alias can target any domain"
359
368
  msgstr "Les alias peuvent cibler n'importe quel domaine"
360
369
 
361
- #: admin/app_settings.py:253
370
+ #: admin/app_settings.py:265
362
371
  msgid "Allow aliases to target any domain, not just the local domains."
363
372
  msgstr "Autoriser les alias à cibler n'importe quel domaine, pas uniquement les domaines locaux."
364
373
 
365
- #: admin/app_settings.py:260
374
+ #: admin/app_settings.py:272
366
375
  msgid "Alias target block list"
367
376
  msgstr "Cibles interdites pour les alias"
368
377
 
369
- #: admin/app_settings.py:262
378
+ #: admin/app_settings.py:274
370
379
  msgid "A list of domains that aliases cannot target (comma separated)."
371
380
  msgstr "Une liste de domaines que les alias ne peuvent pas cibler (séparés par une virgule)."
372
381
 
373
- #: admin/app_settings.py:270
382
+ #: admin/app_settings.py:282
374
383
  msgid "Alias target allow list"
375
384
  msgstr "Cibles autorisées pour les alias"
376
385
 
377
- #: admin/app_settings.py:272
386
+ #: admin/app_settings.py:284
378
387
  msgid "A list of domains that aliases can target (comma separated)."
379
388
  msgstr "Une liste de domaines que les alias peuvent cibler (séparés par une virgule)."
380
389
 
381
- #: admin/app_settings.py:326 core/api/v2/viewsets.py:174
390
+ #: admin/app_settings.py:338 core/api/v2/viewsets.py:174
382
391
  msgid "Administration"
383
392
  msgstr "Administration"
384
393
 
@@ -398,6 +407,35 @@ msgstr "Ouverte"
398
407
  msgid "Closed"
399
408
  msgstr "Fermée"
400
409
 
410
+ #: admin/dns_checker.py:96
411
+ msgid "MX {} listed by DNSBL provider {}"
412
+ msgstr "Le MX {} est listé par le fournisseur de DNSBL {}"
413
+
414
+ #: admin/dns_checker.py:138
415
+ msgid "Domain has no MX record"
416
+ msgstr "Le domaine n'a pas d'enregistrement MX"
417
+
418
+ #: admin/dns_checker.py:141
419
+ msgid "Domain {} has no MX record"
420
+ msgstr "Le domaine {} n'a pas d'enregistrement MX"
421
+
422
+ #: admin/dns_checker.py:159
423
+ msgid "Invalid MX record: {}"
424
+ msgstr "Enregistrement MX incorrect : {}"
425
+
426
+ #: admin/dns_checker.py:166
427
+ #, python-brace-format
428
+ msgid "MX record for domain {0} is invalid: {1}"
429
+ msgstr "Enregistrement MX invalide pour le domaine {0} : {1}"
430
+
431
+ #: admin/dns_checker.py:177
432
+ msgid "[modoboa] MX issue(s) for domain {}"
433
+ msgstr "[modoboa] problème(s) de MX pour le domaine {}"
434
+
435
+ #: admin/dns_checker.py:224
436
+ msgid "[modoboa] DNSBL issue(s) for domain {}"
437
+ msgstr "[modoboa] Problème(s) DNSBL pour le domaine {}"
438
+
401
439
  #: admin/handlers.py:179
402
440
  msgid "domain alias"
403
441
  msgstr "alias de domaine"
@@ -420,8 +458,8 @@ msgstr "Vous n'êtes pas autorisé à importer des domaines"
420
458
  msgid "You are not allowed to import domain aliases."
421
459
  msgstr "Vous n'êtes pas autorisé à importer des alias de domaine."
422
460
 
423
- #: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
424
- #: admin/tests/test_mx.py:171
461
+ #: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
462
+ #: admin/tests/test_mx.py:157
425
463
  #, python-format
426
464
  msgid "No DNS record found for %s"
427
465
  msgstr "Aucun enregistrement DNS trouvé pour %s."
@@ -431,11 +469,11 @@ msgstr "Aucun enregistrement DNS trouvé pour %s."
431
469
  msgid "No %(type)s record for %(name)s"
432
470
  msgstr "Aucun enregistrement %(type)s trouvé pour %(name)s"
433
471
 
434
- #: admin/lib.py:234 admin/tests/test_mx.py:156
472
+ #: admin/lib.py:234 admin/tests/test_mx.py:142
435
473
  msgid "No working name servers found"
436
474
  msgstr "Aucun serveur de noms fonctionnel trouvé"
437
475
 
438
- #: admin/lib.py:237 admin/tests/test_mx.py:160
476
+ #: admin/lib.py:237 admin/tests/test_mx.py:146
439
477
  #, python-format
440
478
  msgid "DNS resolution timeout, unable to query %s at the moment"
441
479
  msgstr "Timeout de résolution DNS, impossible de requêter %s pour l'instant"
@@ -487,35 +525,6 @@ msgstr "Echec lors de la génération de la clé privée DKIM"
487
525
  msgid "Failed to generate DKIM public key"
488
526
  msgstr "Echec lors de la génération de la clé publique DKIM"
489
527
 
490
- #: admin/management/commands/subcommands/_mx.py:133
491
- msgid "MX {} listed by DNSBL provider {}"
492
- msgstr "Le MX {} est listé par le fournisseur de DNSBL {}"
493
-
494
- #: admin/management/commands/subcommands/_mx.py:174
495
- msgid "Domain has no MX record"
496
- msgstr "Le domaine n'a pas d'enregistrement MX"
497
-
498
- #: admin/management/commands/subcommands/_mx.py:177
499
- msgid "Domain {} has no MX record"
500
- msgstr "Le domaine {} n'a pas d'enregistrement MX"
501
-
502
- #: admin/management/commands/subcommands/_mx.py:195
503
- msgid "Invalid MX record: {}"
504
- msgstr "Enregistrement MX incorrect : {}"
505
-
506
- #: admin/management/commands/subcommands/_mx.py:202
507
- #, python-brace-format
508
- msgid "MX record for domain {0} is invalid: {1}"
509
- msgstr "Enregistrement MX invalide pour le domaine {0} : {1}"
510
-
511
- #: admin/management/commands/subcommands/_mx.py:213
512
- msgid "[modoboa] MX issue(s) for domain {}"
513
- msgstr "[modoboa] problème(s) de MX pour le domaine {}"
514
-
515
- #: admin/management/commands/subcommands/_mx.py:269
516
- msgid "[modoboa] DNSBL issue(s) for domain {}"
517
- msgstr "[modoboa] Problème(s) DNSBL pour le domaine {}"
518
-
519
528
  #: admin/models/alias.py:43
520
529
  msgid "Domain not found."
521
530
  msgstr "Domaine introuvable."
@@ -692,17 +701,17 @@ msgstr "La réputation de ce domaine sera affectée et il est probable que les e
692
701
  msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
693
702
  msgstr "Modoboa a détecté que le domain %(domain)s n'a aucun enregistrement MX valide :"
694
703
 
695
- #: admin/tests/test_mx.py:155
704
+ #: admin/tests/test_mx.py:141
696
705
  #, python-format
697
706
  msgid "No MX record for %s"
698
707
  msgstr "Aucun enregistrement MX trouvé pour %s"
699
708
 
700
- #: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
709
+ #: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
701
710
  #, python-format
702
711
  msgid "Invalid IP address format for %(domain)s; %(addr)s"
703
712
  msgstr "Format d'adresse IP incorrect pour %(domain)s; %(addr)s"
704
713
 
705
- #: admin/tests/test_mx.py:199
714
+ #: admin/tests/test_mx.py:185
706
715
  #, python-format
707
716
  msgid "No AAAA record for %s"
708
717
  msgstr "Aucun enregistrement AAAA trouvé pour %s"
@@ -871,11 +880,11 @@ msgid ""
871
880
  "database)"
872
881
  msgstr "Autorise les utilisateur à entrainer personnellement Spamassassin (au sein d'une base dédiée)"
873
882
 
874
- #: amavis/app_settings.py:236 webmail/app_settings.py:118
883
+ #: amavis/app_settings.py:236 webmail/app_settings.py:155
875
884
  msgid "Display"
876
885
  msgstr "Affichage"
877
886
 
878
- #: amavis/app_settings.py:243 webmail/app_settings.py:144
887
+ #: amavis/app_settings.py:243 webmail/app_settings.py:181
879
888
  msgid "Number of displayed emails per page"
880
889
  msgstr "Nombre de messages affichés par page"
881
890
 
@@ -1119,7 +1128,7 @@ msgstr "Autoriser l'administration des calendriers"
1119
1128
  msgid "Allow domain administrators to manage user calendars (read and write)"
1120
1129
  msgstr "Autoriser les administrateurs de domaine à gérer les calendriers des utilisateurs (lecture et écriture)"
1121
1130
 
1122
- #: calendars/app_settings.py:60 core/app_settings.py:676
1131
+ #: calendars/app_settings.py:60 core/app_settings.py:664
1123
1132
  #: rspamd/app_settings.py:45
1124
1133
  msgid "Miscellaneous"
1125
1134
  msgstr "Divers"
@@ -1137,11 +1146,11 @@ msgstr "Taille maximale en octets des fichiers ICS importés (ou KB, MB, GB si p
1137
1146
  msgid "Calendars"
1138
1147
  msgstr "Calendriers"
1139
1148
 
1140
- #: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
1149
+ #: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
1141
1150
  msgid "Server location is not set, please fix it."
1142
1151
  msgstr "L'emplacement du serveur n'est pas renseigné, veuillez corriger"
1143
1152
 
1144
- #: calendars/viewsets.py:197
1153
+ #: calendars/viewsets.py:199
1145
1154
  msgid "Uploaded file is too big (max: {} bytes)"
1146
1155
  msgstr "Le fichier téléchargé est trop gros (max : {} octets)"
1147
1156
 
@@ -1220,7 +1229,7 @@ msgstr "2FA est déjà activf"
1220
1229
  msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
1221
1230
  msgstr "Echec de modification des paramètres TFA depuis '%(addr)s' en tant qu'utilisateur '%(user)s'"
1222
1231
 
1223
- #: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
1232
+ #: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
1224
1233
  msgid "Invalid password"
1225
1234
  msgstr "Mot de passe incorrect"
1226
1235
 
@@ -1232,24 +1241,20 @@ msgstr "Authentification 2 facteurs non activée"
1232
1241
  msgid "Local"
1233
1242
  msgstr "Locale"
1234
1243
 
1235
- #: core/api/v2/serializers.py:194 core/app_settings.py:17
1236
- msgid "User profile"
1237
- msgstr "Profil utilisateur"
1238
-
1239
- #: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
1240
- #: core/api/v2/serializers.py:228
1244
+ #: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
1245
+ #: core/api/v2/serializers.py:221
1241
1246
  msgid "Invalid syntax"
1242
1247
  msgstr "Syntaxe invalide"
1243
1248
 
1244
- #: core/api/v2/serializers.py:233
1249
+ #: core/api/v2/serializers.py:226
1245
1250
  msgid "Invalid rounds number"
1246
1251
  msgstr "Nombre invalide de tours"
1247
1252
 
1248
- #: core/api/v2/serializers.py:433 core/forms.py:81
1253
+ #: core/api/v2/serializers.py:426 core/forms.py:81
1249
1254
  msgid "This code is invalid"
1250
1255
  msgstr "Ce code n'est pas valide"
1251
1256
 
1252
- #: core/api/v2/serializers.py:503 core/views/auth.py:213
1257
+ #: core/api/v2/serializers.py:496 core/views/auth.py:213
1253
1258
  #: core/views/auth.py:266
1254
1259
  msgid "Please use the following code to recover your Modoboa password: {}"
1255
1260
  msgstr "Veuillez utiliser le code suivant pour récupérer votre mot de passe Modoboa : {}"
@@ -1275,525 +1280,517 @@ msgid "Calendar"
1275
1280
  msgstr "Calendrier"
1276
1281
 
1277
1282
  #: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
1278
- #: webmail/app_settings.py:258 webmail/app_settings.py:265
1283
+ #: webmail/app_settings.py:295 webmail/app_settings.py:302
1279
1284
  msgid "Webmail"
1280
1285
  msgstr "Webmail"
1281
1286
 
1282
- #: core/app_settings.py:37
1287
+ #: core/app_settings.py:25
1283
1288
  msgid "Authentication"
1284
1289
  msgstr "Authentification"
1285
1290
 
1286
- #: core/app_settings.py:43
1291
+ #: core/app_settings.py:31
1287
1292
  msgid "Authentication type"
1288
1293
  msgstr "Type d'authentification"
1289
1294
 
1290
- #: core/app_settings.py:45
1295
+ #: core/app_settings.py:33
1291
1296
  msgid "The backend used for authentication"
1292
1297
  msgstr "Le backend utilisé pour l'authentification"
1293
1298
 
1294
- #: core/app_settings.py:52
1299
+ #: core/app_settings.py:40
1295
1300
  msgid "Default password scheme"
1296
1301
  msgstr "Méthode de chiffrement par défaut"
1297
1302
 
1298
- #: core/app_settings.py:54
1303
+ #: core/app_settings.py:42
1299
1304
  msgid "Scheme used to crypt mailbox passwords"
1300
1305
  msgstr "Méthode utilisée pour chiffrer les mots de passe des boites aux lettres"
1301
1306
 
1302
- #: core/app_settings.py:61
1307
+ #: core/app_settings.py:49
1303
1308
  msgid "Rounds"
1304
1309
  msgstr "Tours"
1305
1310
 
1306
- #: core/app_settings.py:63
1311
+ #: core/app_settings.py:51
1307
1312
  msgid ""
1308
1313
  "Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
1309
1314
  "between 1000 and 999999999, inclusive."
1310
1315
  msgstr "Nombre de tours à utiliser (sha256crypt et sha512crypt uniquement). Doit être compris entre 1000 et 999999999 inclue."
1311
1316
 
1312
- #: core/app_settings.py:73
1317
+ #: core/app_settings.py:61
1313
1318
  msgid "Update password scheme at login"
1314
1319
  msgstr "Mettre à jour la méthode de chiffrement du mot de passe à la connexion"
1315
1320
 
1316
- #: core/app_settings.py:76
1321
+ #: core/app_settings.py:64
1317
1322
  msgid "Update user password at login to use the default password scheme"
1318
1323
  msgstr "Mise à jour du mot de passe utilisateur lors d'une connexion pour utiliser la méthode de chiffrement par défaut"
1319
1324
 
1320
- #: core/app_settings.py:84
1325
+ #: core/app_settings.py:72
1321
1326
  msgid "Default password"
1322
1327
  msgstr "Mot de passe par défaut"
1323
1328
 
1324
- #: core/app_settings.py:86
1329
+ #: core/app_settings.py:74
1325
1330
  msgid "Default password for automatically created accounts."
1326
1331
  msgstr "Mot de passe par défaut pour les comptes créés automatiquement."
1327
1332
 
1328
- #: core/app_settings.py:93
1333
+ #: core/app_settings.py:81
1329
1334
  msgid "Random password length"
1330
1335
  msgstr "Taille d'un mot de passe aléatoire"
1331
1336
 
1332
- #: core/app_settings.py:95
1337
+ #: core/app_settings.py:83
1333
1338
  msgid "Length of randomly generated passwords."
1334
1339
  msgstr "Taille des mots de passe générés aléatoirement."
1335
1340
 
1336
- #: core/app_settings.py:103
1341
+ #: core/app_settings.py:91
1337
1342
  msgid "Allow special characters for random password"
1338
1343
  msgstr "Autoriser les caractères spéciaux pour les mots de passe aléatoires"
1339
1344
 
1340
- #: core/app_settings.py:106
1345
+ #: core/app_settings.py:94
1341
1346
  msgid "Enable special characters in randomly generated passwords."
1342
1347
  msgstr "Activer les caractères spéciaux dans les mots de passe générés aléatoirement."
1343
1348
 
1344
- #: core/app_settings.py:114
1349
+ #: core/app_settings.py:102
1345
1350
  msgid "Update password service URL"
1346
1351
  msgstr "URL de service de mise à jour du mot de passe"
1347
1352
 
1348
- #: core/app_settings.py:116
1353
+ #: core/app_settings.py:104
1349
1354
  msgid ""
1350
1355
  "The URL of an external page where users will be able to update their "
1351
1356
  "password. It applies only to non local users, ie. those automatically "
1352
1357
  "created after a successful external authentication (LDAP, SMTP)."
1353
1358
  msgstr "L'URL d'une page externe où les utilisateurs pourront mettre à jour leur mot de passe. Elle s'applique uniquement aux utilisateurs non locaux, c'est à dire ceux créés après une authentification externe réussie (LDAP, SMTP)."
1354
1359
 
1355
- #: core/app_settings.py:126
1360
+ #: core/app_settings.py:114
1356
1361
  msgid "Password recovery announcement"
1357
1362
  msgstr "Annonce pour la récupération de mot de passe"
1358
1363
 
1359
- #: core/app_settings.py:128
1364
+ #: core/app_settings.py:116
1360
1365
  msgid "A temporary message that will be displayed on the reset password page."
1361
1366
  msgstr "Un message temporaire qui sera affiché sur la page de récupération de mot de passe"
1362
1367
 
1363
- #: core/app_settings.py:137
1368
+ #: core/app_settings.py:125
1364
1369
  msgid "Enable password recovery by SMS"
1365
1370
  msgstr "Activer la récupération de mot de passe par SMS"
1366
1371
 
1367
- #: core/app_settings.py:140
1372
+ #: core/app_settings.py:128
1368
1373
  msgid "Enable password recovery by SMS for users who filled a phone number."
1369
1374
  msgstr "Activer la récupération de mot de passe par SMS pour les utilisateurs ayant renseigné un numéro de téléphone"
1370
1375
 
1371
- #: core/app_settings.py:148
1376
+ #: core/app_settings.py:136
1372
1377
  msgid "SMS provider"
1373
1378
  msgstr "Fournisseur SMS"
1374
1379
 
1375
- #: core/app_settings.py:151
1380
+ #: core/app_settings.py:139
1376
1381
  msgid "Choose a provider to send password recovery SMS"
1377
1382
  msgstr "Choisir un fournisseur pour envoyer les SMS de récupération de mot de passe"
1378
1383
 
1379
- #: core/app_settings.py:163
1384
+ #: core/app_settings.py:151
1380
1385
  msgid "LDAP"
1381
1386
  msgstr "LDAP"
1382
1387
 
1383
- #: core/app_settings.py:169 sievefilters/app_settings.py:18
1388
+ #: core/app_settings.py:157 sievefilters/app_settings.py:18
1384
1389
  #: sievefilters/app_settings.py:51 webmail/app_settings.py:36
1385
- #: webmail/app_settings.py:73
1390
+ #: webmail/app_settings.py:73 webmail/app_settings.py:119
1386
1391
  msgid "Server address"
1387
1392
  msgstr "Adresse du serveur"
1388
1393
 
1389
- #: core/app_settings.py:171
1394
+ #: core/app_settings.py:159
1390
1395
  msgid "The IP address or the DNS name of the LDAP server"
1391
1396
  msgstr "L'adresse IP ou le nom DNS du serveur LDAP"
1392
1397
 
1393
- #: core/app_settings.py:178 sievefilters/app_settings.py:25
1398
+ #: core/app_settings.py:166 sievefilters/app_settings.py:25
1394
1399
  #: sievefilters/app_settings.py:67 webmail/app_settings.py:54
1395
- #: webmail/app_settings.py:91
1400
+ #: webmail/app_settings.py:91 webmail/app_settings.py:137
1396
1401
  msgid "Server port"
1397
1402
  msgstr "Port utilisé par le serveur"
1398
1403
 
1399
- #: core/app_settings.py:180
1404
+ #: core/app_settings.py:168
1400
1405
  msgid "The TCP port number used by the LDAP server"
1401
1406
  msgstr "Le port TCP utilisé par le serveur LDAP"
1402
1407
 
1403
- #: core/app_settings.py:188
1408
+ #: core/app_settings.py:176
1404
1409
  msgid "Enable secondary server (fallback)"
1405
1410
  msgstr "Activer le serveur secondaire (secours)"
1406
1411
 
1407
- #: core/app_settings.py:191
1412
+ #: core/app_settings.py:179
1408
1413
  msgid ""
1409
1414
  "Enable a secondary LDAP server which will be used if the primary one fails"
1410
1415
  msgstr "Activer un serveur LDAP secondaire qui sera utilisé si le principal est en échec"
1411
1416
 
1412
- #: core/app_settings.py:199
1417
+ #: core/app_settings.py:187
1413
1418
  msgid "Secondary server address"
1414
1419
  msgstr "Adresse du serveur secondaire"
1415
1420
 
1416
- #: core/app_settings.py:202
1421
+ #: core/app_settings.py:190
1417
1422
  msgid "The IP address or the DNS name of the seondary LDAP server"
1418
1423
  msgstr "L'adresse IP ou le nom DNS du serveur LDAP secondaire"
1419
1424
 
1420
- #: core/app_settings.py:209
1425
+ #: core/app_settings.py:197
1421
1426
  msgid "Secondary server port"
1422
1427
  msgstr "Port du serveur secondaire"
1423
1428
 
1424
- #: core/app_settings.py:212
1429
+ #: core/app_settings.py:200
1425
1430
  msgid "The TCP port number used by the LDAP secondary server"
1426
1431
  msgstr "Le numéro du port TCP utilisé par le serveur LDAP secondaire"
1427
1432
 
1428
- #: core/app_settings.py:219 sievefilters/app_settings.py:58
1433
+ #: core/app_settings.py:207 sievefilters/app_settings.py:58
1429
1434
  #: webmail/app_settings.py:45
1430
1435
  msgid "Use a secured connection"
1431
1436
  msgstr "Utiliser une connexion sécurisée"
1432
1437
 
1433
- #: core/app_settings.py:221
1438
+ #: core/app_settings.py:209
1434
1439
  msgid "Use an SSL/STARTTLS connection to access the LDAP server"
1435
1440
  msgstr "Utiliser une connexion SSL/STARTTLS pour accéder au serveur LDAP"
1436
1441
 
1437
- #: core/app_settings.py:228
1442
+ #: core/app_settings.py:216
1438
1443
  msgid "Active Directory"
1439
1444
  msgstr "Active Directory"
1440
1445
 
1441
- #: core/app_settings.py:230
1446
+ #: core/app_settings.py:218
1442
1447
  msgid "Tell if the LDAP server is an Active Directory one"
1443
1448
  msgstr "Indiquer si le serveur LDAP est un Active Directory ou pas"
1444
1449
 
1445
- #: core/app_settings.py:237
1450
+ #: core/app_settings.py:225
1446
1451
  msgid "Administrator groups"
1447
1452
  msgstr "Groupes administrateurs"
1448
1453
 
1449
- #: core/app_settings.py:239
1454
+ #: core/app_settings.py:227
1450
1455
  msgid ""
1451
1456
  "Members of those LDAP Posix groups will be created as domain administrators."
1452
1457
  " Use ';' characters to separate groups."
1453
1458
  msgstr "Les membres de ces groupes LDAP (Posix) seront créés en tant qu'administrateurs de domaine. Utiliser des caractères ';' pour séparer les groupes."
1454
1459
 
1455
- #: core/app_settings.py:248
1460
+ #: core/app_settings.py:236
1456
1461
  msgid "Group type"
1457
1462
  msgstr "Type de groupe"
1458
1463
 
1459
- #: core/app_settings.py:250
1464
+ #: core/app_settings.py:238
1460
1465
  msgid "The LDAP group type to use with your directory."
1461
1466
  msgstr "Le type de groupe LDAP à utiliser avec votre annuaire."
1462
1467
 
1463
- #: core/app_settings.py:257
1468
+ #: core/app_settings.py:245
1464
1469
  msgid "Groups search base"
1465
1470
  msgstr "Base de recherche des groupes"
1466
1471
 
1467
- #: core/app_settings.py:259
1472
+ #: core/app_settings.py:247
1468
1473
  msgid "The distinguished name of the search base used to find groups"
1469
1474
  msgstr "Le nom distinctif de la base de recherche utilisée pour rechercher les groupes"
1470
1475
 
1471
- #: core/app_settings.py:267
1476
+ #: core/app_settings.py:255
1472
1477
  msgid "Password attribute"
1473
1478
  msgstr "Attribut 'mot de passe'"
1474
1479
 
1475
- #: core/app_settings.py:269
1480
+ #: core/app_settings.py:257
1476
1481
  msgid "The attribute used to store user passwords"
1477
1482
  msgstr "L'attribut utilisé pour stocker les mots de passe"
1478
1483
 
1479
- #: core/app_settings.py:276
1484
+ #: core/app_settings.py:264
1480
1485
  msgid "LDAP authentication settings"
1481
1486
  msgstr "Paramètres d'authentification LDAP"
1482
1487
 
1483
- #: core/app_settings.py:284
1488
+ #: core/app_settings.py:272
1484
1489
  msgid "Authentication method"
1485
1490
  msgstr "Méthode d'authentification"
1486
1491
 
1487
- #: core/app_settings.py:287
1492
+ #: core/app_settings.py:275
1488
1493
  msgid "Choose the authentication method to use"
1489
1494
  msgstr "Choisir la méthode d'authentification à utiliser"
1490
1495
 
1491
- #: core/app_settings.py:294 core/app_settings.py:357
1496
+ #: core/app_settings.py:282 core/app_settings.py:345
1492
1497
  msgid "Bind DN"
1493
1498
  msgstr "ND de connexion"
1494
1499
 
1495
- #: core/app_settings.py:296 core/app_settings.py:359
1500
+ #: core/app_settings.py:284 core/app_settings.py:347
1496
1501
  msgid ""
1497
1502
  "The distinguished name to use when binding to the LDAP server. Leave empty "
1498
1503
  "for an anonymous bind"
1499
1504
  msgstr "Le nom distinctif à utiliser pour les connections au serveur LDAP. Laisser vide pour une connexion anonyme"
1500
1505
 
1501
- #: core/app_settings.py:305 core/app_settings.py:367
1506
+ #: core/app_settings.py:293 core/app_settings.py:355
1502
1507
  msgid "Bind password"
1503
1508
  msgstr "Mot de passe de connexion"
1504
1509
 
1505
- #: core/app_settings.py:307 core/app_settings.py:369
1510
+ #: core/app_settings.py:295 core/app_settings.py:357
1506
1511
  msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
1507
1512
  msgstr "Le mot de passe à utiliser pour les connections au serveur LDAP (avec 'ND de connexion')"
1508
1513
 
1509
- #: core/app_settings.py:317 core/app_settings.py:422
1514
+ #: core/app_settings.py:305 core/app_settings.py:410
1510
1515
  msgid "Users search base"
1511
1516
  msgstr "Base de recherche des utilisateurs"
1512
1517
 
1513
- #: core/app_settings.py:319 core/app_settings.py:424
1518
+ #: core/app_settings.py:307 core/app_settings.py:412
1514
1519
  msgid "The distinguished name of the search base used to find users"
1515
1520
  msgstr "Le nom distinctif de la base de recherche utilisée pour rechercher les utilisateurs"
1516
1521
 
1517
- #: core/app_settings.py:328 core/app_settings.py:433
1522
+ #: core/app_settings.py:316 core/app_settings.py:421
1518
1523
  msgid "Search filter"
1519
1524
  msgstr "Filtre de recherche"
1520
1525
 
1521
- #: core/app_settings.py:330 core/app_settings.py:435
1526
+ #: core/app_settings.py:318 core/app_settings.py:423
1522
1527
  msgid ""
1523
1528
  "An optional filter string (e.g. '(objectClass=person)'). In order to be "
1524
1529
  "valid, it must be enclosed in parentheses."
1525
1530
  msgstr "Un filtre de recherche optionel (ex. '(objectClass=person)'). Pour être valide, il doit être entouré de parenthèses."
1526
1531
 
1527
- #: core/app_settings.py:339
1532
+ #: core/app_settings.py:327
1528
1533
  msgid "User DN template"
1529
1534
  msgstr "Modèle de nom distinctif utilisateur"
1530
1535
 
1531
- #: core/app_settings.py:341
1536
+ #: core/app_settings.py:329
1532
1537
  #, python-format
1533
1538
  msgid ""
1534
1539
  "The template used to construct a user's DN. It should contain one "
1535
1540
  "placeholder (ie. %(user)s)"
1536
1541
  msgstr "Le modèle utilisé pour construire le nom distinctif d'un utilisateur. Il doit contenir un espace réservé (ex. %(user)s)"
1537
1542
 
1538
- #: core/app_settings.py:350
1543
+ #: core/app_settings.py:338
1539
1544
  msgid "LDAP synchronization settings"
1540
1545
  msgstr "Paramètres de synchronisation LDAP"
1541
1546
 
1542
- #: core/app_settings.py:378
1547
+ #: core/app_settings.py:366
1543
1548
  msgid "Enable export to LDAP"
1544
1549
  msgstr "Activer l'export LDAP"
1545
1550
 
1546
- #: core/app_settings.py:380
1551
+ #: core/app_settings.py:368
1547
1552
  msgid ""
1548
1553
  "Enable automatic synchronization between local database and LDAP directory"
1549
1554
  msgstr "Activer la synchronisation automatique entre la base de données locale et l'annuaire LDAP"
1550
1555
 
1551
- #: core/app_settings.py:389
1556
+ #: core/app_settings.py:377
1552
1557
  msgid "Delete remote LDAP account when local account is deleted"
1553
1558
  msgstr "Supprimer un compte LDAP distant lorsqu'un compte local est supprimé"
1554
1559
 
1555
- #: core/app_settings.py:392
1560
+ #: core/app_settings.py:380
1556
1561
  msgid ""
1557
1562
  "Delete remote LDAP account when local account is deleted, otherwise it will "
1558
1563
  "be disabled."
1559
1564
  msgstr "Supprimer un compte LDAP distant lorsqu'un compte local supprimé, autrement il sera désactivé."
1560
1565
 
1561
- #: core/app_settings.py:401
1566
+ #: core/app_settings.py:389
1562
1567
  msgid "Account DN template"
1563
1568
  msgstr "Modèle des DN de compte"
1564
1569
 
1565
- #: core/app_settings.py:403
1570
+ #: core/app_settings.py:391
1566
1571
  #, python-format
1567
1572
  msgid ""
1568
1573
  "The template used to construct an account's DN. It should contain one "
1569
1574
  "placeholder (ie. %(user)s)"
1570
1575
  msgstr "Le modèle utilisé pour construite un DN de compte (nom unique). Il doit contenir un emplacement (c'est à dire 1%(user)s)"
1571
1576
 
1572
- #: core/app_settings.py:412
1577
+ #: core/app_settings.py:400
1573
1578
  msgid "Enable import from LDAP"
1574
1579
  msgstr "Activer l'import LDAP"
1575
1580
 
1576
- #: core/app_settings.py:414
1581
+ #: core/app_settings.py:402
1577
1582
  msgid "Enable account synchronization from LDAP directory to local database"
1578
1583
  msgstr "Activer la synchronisation des comptes entre un annuaire LDAP et la base de données locale"
1579
1584
 
1580
- #: core/app_settings.py:444
1585
+ #: core/app_settings.py:432
1581
1586
  msgid "Username attribute"
1582
1587
  msgstr "Attribut nom d'utilisateur"
1583
1588
 
1584
- #: core/app_settings.py:446
1589
+ #: core/app_settings.py:434
1585
1590
  msgid "The name of the LDAP attribute where the username can be found."
1586
1591
  msgstr "Le nom de l'attribut LDAP dans lequel le nom d'utilisateur peut être trouvé."
1587
1592
 
1588
- #: core/app_settings.py:455
1593
+ #: core/app_settings.py:443
1589
1594
  msgid "Enable Dovecot LDAP sync"
1590
1595
  msgstr "Activer la synchronisation LDAP pour Dovecot"
1591
1596
 
1592
- #: core/app_settings.py:457
1597
+ #: core/app_settings.py:445
1593
1598
  msgid "LDAP authentication settings will be applied to Dovecot configuration."
1594
1599
  msgstr "Les paramètres d'authentification LDAP seront appliqués à la configuration de Dovecot."
1595
1600
 
1596
- #: core/app_settings.py:465
1601
+ #: core/app_settings.py:453
1597
1602
  msgid "Dovecot LDAP config file"
1598
1603
  msgstr "Fichier de configuration Dovecot pour LDAP"
1599
1604
 
1600
- #: core/app_settings.py:467
1605
+ #: core/app_settings.py:455
1601
1606
  msgid ""
1602
1607
  "Location of the configuration file which contains Dovecot LDAP settings."
1603
1608
  msgstr "Emplacement du fichier de configuration qui contient les paramètres LDAP de Dovecot"
1604
1609
 
1605
- #: core/app_settings.py:480
1610
+ #: core/app_settings.py:468
1606
1611
  msgid "Dashboard"
1607
1612
  msgstr "Tableau de bord"
1608
1613
 
1609
- #: core/app_settings.py:486
1614
+ #: core/app_settings.py:474
1610
1615
  msgid "Custom welcome message"
1611
1616
  msgstr "Message d'accueil personnalisé"
1612
1617
 
1613
- #: core/app_settings.py:488
1618
+ #: core/app_settings.py:476
1614
1619
  msgid "A welcome message that will be displayed instead the default one"
1615
1620
  msgstr "Un message d'accueil qui sera affiché à la place de celui par défaut"
1616
1621
 
1617
- #: core/app_settings.py:495
1622
+ #: core/app_settings.py:483
1618
1623
  msgid "Custom RSS feed"
1619
1624
  msgstr "Flux RSS personnalisé"
1620
1625
 
1621
- #: core/app_settings.py:497
1626
+ #: core/app_settings.py:485
1622
1627
  msgid "Display custom RSS feed to resellers and domain administrators"
1623
1628
  msgstr "Afficher un flux RSS personnalisé aux revendeurs et administrateurs de domaine"
1624
1629
 
1625
- #: core/app_settings.py:506
1630
+ #: core/app_settings.py:494
1626
1631
  msgid "Display custom RSS feed to super admins"
1627
1632
  msgstr "Afficher le flux RSS personnalisé aux super admins"
1628
1633
 
1629
- #: core/app_settings.py:509
1634
+ #: core/app_settings.py:497
1630
1635
  msgid "Display custom RSS feed also to super administrators"
1631
1636
  msgstr "Afficher le flux RSS personnalisé aussi aux super administrateurs"
1632
1637
 
1633
- #: core/app_settings.py:517
1638
+ #: core/app_settings.py:505
1634
1639
  msgid "Hide features widget"
1635
1640
  msgstr "Masquer le widget des fonctionnalités"
1636
1641
 
1637
- #: core/app_settings.py:519
1642
+ #: core/app_settings.py:507
1638
1643
  msgid "Hide features widget for resellers and domain administrators"
1639
1644
  msgstr "Masquer le widget des fonctionnalités pour les revendeurs et les administrateurs de domaine"
1640
1645
 
1641
- #: core/app_settings.py:531
1646
+ #: core/app_settings.py:519
1642
1647
  msgid "Theme"
1643
1648
  msgstr "Thème"
1644
1649
 
1645
- #: core/app_settings.py:537
1650
+ #: core/app_settings.py:525
1646
1651
  msgid "Primary theme color"
1647
1652
  msgstr "Couleur principale du thème"
1648
1653
 
1649
- #: core/app_settings.py:539
1654
+ #: core/app_settings.py:527
1650
1655
  msgid ""
1651
1656
  "Primary color of the theme (hexadecimal code), used as the background color "
1652
1657
  "of the left menu for example"
1653
1658
  msgstr "Couleur principale du thème (code hexadécimal), utilisée par exemple comme couleur de fond dans le menu de gauche"
1654
1659
 
1655
- #: core/app_settings.py:548
1660
+ #: core/app_settings.py:536
1656
1661
  msgid "Primary theme color (lighter version)"
1657
1662
  msgstr "Couleur principale du thème (version plus claire)"
1658
1663
 
1659
- #: core/app_settings.py:551 core/app_settings.py:563
1664
+ #: core/app_settings.py:539 core/app_settings.py:551
1660
1665
  msgid "Primary color of the theme (hexadecimal code)"
1661
1666
  msgstr "Couleur principale du thème (code hexadécimal)"
1662
1667
 
1663
- #: core/app_settings.py:560
1668
+ #: core/app_settings.py:548
1664
1669
  msgid "Primary theme color (darker version)"
1665
1670
  msgstr "Couleur principale du thème (version plus sombre)"
1666
1671
 
1667
- #: core/app_settings.py:571
1672
+ #: core/app_settings.py:559
1668
1673
  msgid "Secondary theme color"
1669
1674
  msgstr "Couleur secondaire du thème"
1670
1675
 
1671
- #: core/app_settings.py:573
1676
+ #: core/app_settings.py:561
1672
1677
  msgid ""
1673
1678
  "Secondary color of the theme (hexadecimal code), used as the background "
1674
1679
  "color of some buttons for example"
1675
1680
  msgstr "Couleur secondaire du thème (code hexadécimal), utilisée par exemple comme couleur de fond de certains boutons"
1676
1681
 
1677
- #: core/app_settings.py:581
1682
+ #: core/app_settings.py:569
1678
1683
  msgid "Labels theme color"
1679
1684
  msgstr "Couleur des libellés du thème"
1680
1685
 
1681
- #: core/app_settings.py:583
1686
+ #: core/app_settings.py:571
1682
1687
  msgid "Theme color for labels (hexadecimal code)"
1683
1688
  msgstr "Couleur du thème pour les libellés (code hexadécimal)"
1684
1689
 
1685
- #: core/app_settings.py:595
1690
+ #: core/app_settings.py:583
1686
1691
  msgid "Notifications"
1687
1692
  msgstr "Notifications"
1688
1693
 
1689
- #: core/app_settings.py:601
1694
+ #: core/app_settings.py:589
1690
1695
  msgid "Sender address"
1691
1696
  msgstr "Adresse d'envoi"
1692
1697
 
1693
- #: core/app_settings.py:603
1698
+ #: core/app_settings.py:591
1694
1699
  msgid "Email address used to send notifications."
1695
1700
  msgstr "Adresse utilisée pour envoyer les notifications."
1696
1701
 
1697
- #: core/app_settings.py:614
1702
+ #: core/app_settings.py:602
1698
1703
  msgid "Public API"
1699
1704
  msgstr "API publique"
1700
1705
 
1701
- #: core/app_settings.py:620
1706
+ #: core/app_settings.py:608
1702
1707
  msgid "Enable communication"
1703
1708
  msgstr "Activer la communication"
1704
1709
 
1705
- #: core/app_settings.py:622 core/app_settings.py:632
1710
+ #: core/app_settings.py:610 core/app_settings.py:620
1706
1711
  msgid "Automatically checks if a newer version is available"
1707
1712
  msgstr "Vérifie automatiquement si une nouvelle version est disponible"
1708
1713
 
1709
- #: core/app_settings.py:629
1714
+ #: core/app_settings.py:617
1710
1715
  msgid "Check new versions"
1711
1716
  msgstr "Vérifier les nouvelles versions"
1712
1717
 
1713
- #: core/app_settings.py:640
1718
+ #: core/app_settings.py:628
1714
1719
  msgid "Send an email when new versions are found"
1715
1720
  msgstr "Envoyer un email quand de nouvelles versions sont trouvées"
1716
1721
 
1717
- #: core/app_settings.py:644
1722
+ #: core/app_settings.py:632
1718
1723
  msgid "Send an email to notify admins about new versions"
1719
1724
  msgstr "Envoyer un email pour notifier les administrateurs à propos des nouvelles versions"
1720
1725
 
1721
- #: core/app_settings.py:651 sievefilters/constants.py:25
1726
+ #: core/app_settings.py:639 sievefilters/constants.py:25
1722
1727
  msgid "Recipient"
1723
1728
  msgstr "Destinataire"
1724
1729
 
1725
- #: core/app_settings.py:654
1730
+ #: core/app_settings.py:642
1726
1731
  msgid "Recipient of new versions notification emails."
1727
1732
  msgstr "Destinataire des emails de notification pour les nouvelles versions"
1728
1733
 
1729
- #: core/app_settings.py:661
1734
+ #: core/app_settings.py:649
1730
1735
  msgid "Send statistics"
1731
1736
  msgstr "Envoyer des statistiques"
1732
1737
 
1733
- #: core/app_settings.py:664
1738
+ #: core/app_settings.py:652
1734
1739
  msgid "Send statistics to Modoboa public API (counters and used extensions)"
1735
1740
  msgstr "Envoyer des statistiques à l'API publique de Modoboa (compteurs et extensions utilisées)"
1736
1741
 
1737
- #: core/app_settings.py:683
1742
+ #: core/app_settings.py:671
1738
1743
  msgid "Enable inactive account tracking"
1739
1744
  msgstr "Activer le suivi des comptes inactifs"
1740
1745
 
1741
- #: core/app_settings.py:686
1746
+ #: core/app_settings.py:674
1742
1747
  msgid ""
1743
1748
  "Allow the administrator to set a threshold (in days) beyond which an account"
1744
1749
  " is considered inactive if the user hasn't logged in"
1745
1750
  msgstr "Autoriser les administrateurs à définir in seuil (en jours) à partir duquel un compte est considéré comme inactif si l'utilisateur ne s'est pas connecté"
1746
1751
 
1747
- #: core/app_settings.py:695
1752
+ #: core/app_settings.py:683
1748
1753
  msgid "Inactive account threshold"
1749
1754
  msgstr "Seuil des comptes inactifs"
1750
1755
 
1751
- #: core/app_settings.py:698
1756
+ #: core/app_settings.py:686
1752
1757
  msgid ""
1753
1758
  "An account with a last login date greater than this threshold (in days) will"
1754
1759
  " be considered as inactive"
1755
1760
  msgstr "Un compte avec une date de dernière connexion antérieure à ce seuil sera considéré comme inactif"
1756
1761
 
1757
- #: core/app_settings.py:707
1762
+ #: core/app_settings.py:695
1758
1763
  msgid "Top notifications check interval"
1759
1764
  msgstr "Intervalle de vérification des notifications"
1760
1765
 
1761
- #: core/app_settings.py:710
1766
+ #: core/app_settings.py:698
1762
1767
  msgid "Interval between two top notification checks (in seconds)"
1763
1768
  msgstr "Intervalle entre deux vérifications de notification (en secondes)"
1764
1769
 
1765
- #: core/app_settings.py:717
1770
+ #: core/app_settings.py:705
1766
1771
  msgid "Maximum log record age"
1767
1772
  msgstr "Age maximal d'un enregistrement du journal"
1768
1773
 
1769
- #: core/app_settings.py:719
1774
+ #: core/app_settings.py:707
1770
1775
  msgid "The maximum age in days of a log record"
1771
1776
  msgstr "L'age maximal en jours d'un enregistrement du journal"
1772
1777
 
1773
- #: core/app_settings.py:727
1778
+ #: core/app_settings.py:715
1774
1779
  msgid "Retention time in message history"
1775
1780
  msgstr "Durée de rétention dans l'historique des messages"
1776
1781
 
1777
- #: core/app_settings.py:730
1782
+ #: core/app_settings.py:718
1778
1783
  msgid "Retention time (in days) of a message in the message history section"
1779
1784
  msgstr "Durée de rétention (en jours) d'un message dans l'historique des messages"
1780
1785
 
1781
- #: core/app_settings.py:737
1786
+ #: core/app_settings.py:725
1782
1787
  msgid "Items per page"
1783
1788
  msgstr "Eléments par page"
1784
1789
 
1785
- #: core/app_settings.py:739
1790
+ #: core/app_settings.py:727
1786
1791
  msgid "Number of displayed items per page"
1787
1792
  msgstr "Nombre d'éléments affichés par page"
1788
1793
 
1789
- #: core/app_settings.py:746
1790
- msgid "Default top redirection"
1791
- msgstr "Redirection par défaut"
1792
-
1793
- #: core/app_settings.py:748
1794
- msgid "The default redirection used when no application is specified"
1795
- msgstr "La redirection appliquée par défaut quand aucune application n'est spécifiée"
1796
-
1797
1794
  #: core/checks.py:15
1798
1795
  msgid ""
1799
1796
  "You have USE_TZ set to False, this may result in issues during transitions "
@@ -2121,7 +2118,7 @@ msgid "Not resolved"
2121
2118
  msgstr "Non résolu"
2122
2119
 
2123
2120
  #: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
2124
- #: webmail/constants.py:18
2121
+ #: webmail/constants.py:38
2125
2122
  msgid "None"
2126
2123
  msgstr "Aucun"
2127
2124
 
@@ -2999,7 +2996,7 @@ msgstr "est"
2999
2996
  msgid "is not"
3000
2997
  msgstr "n'est pas"
3001
2998
 
3002
- #: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
2999
+ #: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
3003
3000
  msgid "Subject"
3004
3001
  msgstr "Sujet"
3005
3002
 
@@ -3225,19 +3222,19 @@ msgstr "Taille maximale d'une pièce jointe en octets (ou KB, MG, GB si précis
3225
3222
  msgid "SMTP settings"
3226
3223
  msgstr "Paramètres SMTP"
3227
3224
 
3228
- #: webmail/app_settings.py:75
3225
+ #: webmail/app_settings.py:75 webmail/app_settings.py:121
3229
3226
  msgid "Address of your SMTP server"
3230
3227
  msgstr "Adresse de votre serveur SMTP"
3231
3228
 
3232
- #: webmail/app_settings.py:82
3229
+ #: webmail/app_settings.py:82 webmail/app_settings.py:128
3233
3230
  msgid "Secured connection mode"
3234
3231
  msgstr "Mode de connexion sécurisé"
3235
3232
 
3236
- #: webmail/app_settings.py:84
3233
+ #: webmail/app_settings.py:84 webmail/app_settings.py:130
3237
3234
  msgid "Use a secured connection to access SMTP server"
3238
3235
  msgstr "Utiliser une connexion sécurisée pour accéder au serveur SMTP"
3239
3236
 
3240
- #: webmail/app_settings.py:93
3237
+ #: webmail/app_settings.py:93 webmail/app_settings.py:139
3241
3238
  msgid "Listening port of your SMTP server"
3242
3239
  msgstr "Port d'écoute de votre serveur SMTP"
3243
3240
 
@@ -3249,95 +3246,99 @@ msgstr "Authentification requise"
3249
3246
  msgid "Server needs authentication"
3250
3247
  msgstr "Le serveur nécessite une authentification"
3251
3248
 
3252
- #: webmail/app_settings.py:124
3249
+ #: webmail/app_settings.py:113
3250
+ msgid "Scheduling settings"
3251
+ msgstr "Paramètres de planification"
3252
+
3253
+ #: webmail/app_settings.py:161
3253
3254
  msgid "Default message display mode"
3254
3255
  msgstr "Mode d'affichage par défaut"
3255
3256
 
3256
- #: webmail/app_settings.py:126
3257
+ #: webmail/app_settings.py:163
3257
3258
  msgid "The default mode used when displaying a message"
3258
3259
  msgstr "Le mode par défaut utilisé pour afficher un message"
3259
3260
 
3260
- #: webmail/app_settings.py:133
3261
+ #: webmail/app_settings.py:170
3261
3262
  msgid "Enable HTML links display"
3262
3263
  msgstr "Activer l'affichage des liens HTML"
3263
3264
 
3264
- #: webmail/app_settings.py:136
3265
+ #: webmail/app_settings.py:173
3265
3266
  msgid "Enable/Disable HTML links display"
3266
3267
  msgstr "Activer/Désactiver l'affichage des liens HTML"
3267
3268
 
3268
- #: webmail/app_settings.py:147
3269
+ #: webmail/app_settings.py:184
3269
3270
  msgid "Sets the maximum number of messages displayed in a page"
3270
3271
  msgstr "Définir le nombre maximal de messages affichés dans une page"
3271
3272
 
3272
- #: webmail/app_settings.py:154
3273
+ #: webmail/app_settings.py:191
3273
3274
  msgid "Listing refresh rate"
3274
3275
  msgstr "Taux de rafraichissement de la liste"
3275
3276
 
3276
- #: webmail/app_settings.py:156
3277
+ #: webmail/app_settings.py:193
3277
3278
  msgid "Automatic listing refresh rate (in secconds)"
3278
3279
  msgstr "Taux de rafraichissement automatique de la liste (en secondes)"
3279
3280
 
3280
- #: webmail/app_settings.py:163
3281
+ #: webmail/app_settings.py:200
3281
3282
  msgid "Folder container's width"
3282
3283
  msgstr "Largeur du conteneur des dossiers"
3283
3284
 
3284
- #: webmail/app_settings.py:165
3285
+ #: webmail/app_settings.py:202
3285
3286
  msgid "The width of the folder list container"
3286
3287
  msgstr "La largeur du conteneur de la liste des dossiers"
3287
3288
 
3288
- #: webmail/app_settings.py:176
3289
+ #: webmail/app_settings.py:213
3289
3290
  msgid "Folders"
3290
3291
  msgstr "Dossiers"
3291
3292
 
3292
- #: webmail/app_settings.py:182
3293
+ #: webmail/app_settings.py:219
3293
3294
  msgid "Trash folder"
3294
3295
  msgstr "Dossier poubelle"
3295
3296
 
3296
- #: webmail/app_settings.py:184
3297
+ #: webmail/app_settings.py:221
3297
3298
  msgid "Folder where deleted messages go"
3298
3299
  msgstr "Dossier dans lequel vont les messages supprimés"
3299
3300
 
3300
- #: webmail/app_settings.py:191
3301
+ #: webmail/app_settings.py:228
3301
3302
  msgid "Sent folder"
3302
3303
  msgstr "Dossier envoyé"
3303
3304
 
3304
- #: webmail/app_settings.py:193
3305
+ #: webmail/app_settings.py:230
3305
3306
  msgid "Folder where copies of sent messages go"
3306
3307
  msgstr "Dossier dans lequel vont les copies de messages envoyés"
3307
3308
 
3308
- #: webmail/app_settings.py:200
3309
+ #: webmail/app_settings.py:237
3309
3310
  msgid "Drafts folder"
3310
3311
  msgstr "Dossier brouillon"
3311
3312
 
3312
- #: webmail/app_settings.py:201
3313
+ #: webmail/app_settings.py:238
3313
3314
  msgid "Folder where drafts go"
3314
3315
  msgstr "Dossier dans lequel vont les brouillons"
3315
3316
 
3316
- #: webmail/app_settings.py:207
3317
+ #: webmail/app_settings.py:244
3317
3318
  msgid "Junk folder"
3318
3319
  msgstr "Dossier Junk"
3319
3320
 
3320
- #: webmail/app_settings.py:209
3321
+ #: webmail/app_settings.py:246
3321
3322
  msgid "Folder where junk messages should go"
3322
3323
  msgstr "Dossier dans lequel les messages indésirables doivent aller"
3323
3324
 
3324
- #: webmail/app_settings.py:220
3325
+ #: webmail/app_settings.py:257
3325
3326
  msgid "Composing messages"
3326
3327
  msgstr "Rédaction de messages"
3327
3328
 
3328
- #: webmail/app_settings.py:226
3329
+ #: webmail/app_settings.py:263
3329
3330
  msgid "Default editor"
3330
3331
  msgstr "Editeur par défaut"
3331
3332
 
3332
- #: webmail/app_settings.py:228
3333
+ #: webmail/app_settings.py:265
3333
3334
  msgid "The default editor to use when composing a message"
3334
3335
  msgstr "L'éditeur à utiliser par défaut pour rédiger un message"
3335
3336
 
3336
- #: webmail/app_settings.py:235
3337
+ #: webmail/app_settings.py:272
3337
3338
  msgid "Signature text"
3338
3339
  msgstr "Texte de signature"
3339
3340
 
3340
- #: webmail/app_settings.py:237
3341
+ #: webmail/app_settings.py:274
3341
3342
  msgid "User defined email signature"
3342
3343
  msgstr "Signature email personnalisée"
3343
3344
 
@@ -3349,43 +3350,59 @@ msgstr "Réponse du serveur"
3349
3350
  msgid "Failed to remove attachment: "
3350
3351
  msgstr "Impossible de supprimer la pièce jointe :"
3351
3352
 
3352
- #: webmail/lib/imapemail.py:272
3353
+ #: webmail/lib/imapemail.py:270
3353
3354
  msgid "wrote:"
3354
3355
  msgstr "a écrit :"
3355
3356
 
3356
- #: webmail/lib/imapemail.py:306
3357
+ #: webmail/lib/imapemail.py:304
3357
3358
  msgid "Date"
3358
3359
  msgstr "Date"
3359
3360
 
3360
- #: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
3361
+ #: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
3361
3362
  msgid "Original message"
3362
3363
  msgstr "Message original"
3363
3364
 
3364
- #: webmail/lib/imaputils.py:221
3365
+ #: webmail/lib/imaputils.py:222
3365
3366
  msgid "Failed to retrieve hierarchy delimiter"
3366
3367
  msgstr "Echec lors de la récupération du séparateur de hierarchie"
3367
3368
 
3368
- #: webmail/lib/imaputils.py:472
3369
+ #: webmail/lib/imaputils.py:478
3369
3370
  msgid "Inbox"
3370
3371
  msgstr "Boite de réception"
3371
3372
 
3372
- #: webmail/lib/imaputils.py:476
3373
+ #: webmail/lib/imaputils.py:482
3373
3374
  msgid "Drafts"
3374
3375
  msgstr "Brouillons"
3375
3376
 
3376
- #: webmail/lib/imaputils.py:481
3377
+ #: webmail/lib/imaputils.py:487
3377
3378
  msgid "Junk"
3378
3379
  msgstr "Indésirables"
3379
3380
 
3380
- #: webmail/lib/imaputils.py:486
3381
+ #: webmail/lib/imaputils.py:492
3381
3382
  msgid "Sent"
3382
3383
  msgstr "Envoyés"
3383
3384
 
3384
- #: webmail/lib/imaputils.py:491
3385
+ #: webmail/lib/imaputils.py:500
3386
+ msgid "Scheduled"
3387
+ msgstr "Planifiés"
3388
+
3389
+ #: webmail/lib/imaputils.py:507
3385
3390
  msgid "Trash"
3386
3391
  msgstr "Corbeille"
3387
3392
 
3388
- #: webmail/viewsets.py:357
3393
+ #: webmail/serializers.py:220
3394
+ msgid "Moving scheduled messages is forbidden"
3395
+ msgstr "Déplacer des messages planifiés n'est pas autorisé"
3396
+
3397
+ #: webmail/serializers.py:253
3398
+ msgid "Only datetime in the future is allowed"
3399
+ msgstr "Seule une date à venir est autorisée"
3400
+
3401
+ #: webmail/serializers.py:258
3402
+ msgid "Provived datetime must be one minute in the future at least"
3403
+ msgstr "La date fournie doit être au minimum une minute dans le futur"
3404
+
3405
+ #: webmail/viewsets.py:359
3389
3406
  #, python-format
3390
3407
  msgid "Attachment is too big (limit: %s)"
3391
3408
  msgstr "La pièce jointe est trop grosse (limite : %s)"