modoboa 2.4.11__py3-none-any.whl → 2.5.1__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 (318) hide show
  1. modoboa/admin/api/v2/serializers.py +14 -0
  2. modoboa/amavis/__init__.py +3 -0
  3. modoboa/amavis/app_settings.py +276 -0
  4. modoboa/amavis/apps.py +18 -0
  5. modoboa/amavis/checks/__init__.py +2 -0
  6. modoboa/amavis/checks/settings_checks.py +59 -0
  7. modoboa/amavis/dbrouter.py +35 -0
  8. modoboa/amavis/factories.py +164 -0
  9. modoboa/amavis/handlers.py +146 -0
  10. modoboa/amavis/lib.py +381 -0
  11. modoboa/amavis/management/__init__.py +0 -0
  12. modoboa/amavis/management/commands/__init__.py +0 -0
  13. modoboa/amavis/management/commands/amnotify.py +99 -0
  14. modoboa/amavis/management/commands/qcleanup.py +84 -0
  15. modoboa/amavis/migrations/0001_initial.py +340 -0
  16. modoboa/amavis/migrations/__init__.py +0 -0
  17. modoboa/amavis/models.py +226 -0
  18. modoboa/amavis/serializers.py +139 -0
  19. modoboa/amavis/sql_connector.py +240 -0
  20. modoboa/amavis/sql_email.py +66 -0
  21. modoboa/amavis/tasks.py +33 -0
  22. modoboa/amavis/templates/amavis/notifications/pending_requests.html +16 -0
  23. modoboa/amavis/tests/__init__.py +0 -0
  24. modoboa/amavis/tests/sa-learn +3 -0
  25. modoboa/amavis/tests/sample_messages/quarantined-input.txt +80 -0
  26. modoboa/amavis/tests/sample_messages/quarantined-output-plain_nolinks.txt +17 -0
  27. modoboa/amavis/tests/spamc +3 -0
  28. modoboa/amavis/tests/test_checks.py +25 -0
  29. modoboa/amavis/tests/test_handlers.py +214 -0
  30. modoboa/amavis/tests/test_lib.py +90 -0
  31. modoboa/amavis/tests/test_management_commands.py +45 -0
  32. modoboa/amavis/tests/test_sql_email.py +67 -0
  33. modoboa/amavis/tests/test_utils.py +19 -0
  34. modoboa/amavis/tests/test_viewsets.py +319 -0
  35. modoboa/amavis/urls.py +11 -0
  36. modoboa/amavis/utils.py +105 -0
  37. modoboa/amavis/viewsets.py +265 -0
  38. modoboa/core/api/v1/serializers.py +7 -5
  39. modoboa/core/api/v2/serializers.py +4 -2
  40. modoboa/core/api/v2/tests.py +16 -4
  41. modoboa/core/api/v2/urls.py +5 -5
  42. modoboa/core/api/v2/views.py +6 -2
  43. modoboa/core/api/v2/viewsets.py +24 -3
  44. modoboa/core/commands/deploy.py +3 -0
  45. modoboa/core/commands/templates/settings.py.tpl +12 -11
  46. modoboa/core/handlers.py +6 -2
  47. modoboa/core/management/commands/add_allowed_hosts.py +33 -0
  48. modoboa/core/management/commands/load_initial_data.py +10 -0
  49. modoboa/core/migrations/0025_rename_user_email_is_active_core_user_email_c0c03f_idx.py +23 -5
  50. modoboa/core/tests/test_core.py +24 -0
  51. modoboa/core/utils.py +3 -0
  52. modoboa/frontend_dist/assets/AccountAliasForm-C0oHHyZL.js +1 -0
  53. modoboa/frontend_dist/assets/AccountEditView-lgSJ2Se8.js +1 -0
  54. modoboa/frontend_dist/assets/AccountLayout-U386K8zy.js +1 -0
  55. modoboa/frontend_dist/assets/AccountPasswordSubForm-YsaE_cDx.js +1 -0
  56. modoboa/frontend_dist/assets/AccountView-1jfKFDwb.js +1 -0
  57. modoboa/frontend_dist/assets/AddressBook-CwN64Zls.js +1 -0
  58. modoboa/frontend_dist/assets/AdminLayout-Cxm1lggg.js +1 -0
  59. modoboa/frontend_dist/assets/AlarmsView-9yKGbmkC.css +1 -0
  60. modoboa/frontend_dist/assets/AlarmsView-Bcjsicac.js +1 -0
  61. modoboa/frontend_dist/assets/AliasEditView-k3rVt1tG.js +1 -0
  62. modoboa/frontend_dist/assets/{AliasRecipientForm-IOae6sjF.js → AliasRecipientForm-IehUzKok.js} +1 -1
  63. modoboa/frontend_dist/assets/AliasView-DMzA10eD.js +1 -0
  64. modoboa/frontend_dist/assets/AuditTrailView-5dnGX5El.js +1 -0
  65. modoboa/frontend_dist/assets/CalendarView-DZONeDA9.js +1 -0
  66. modoboa/frontend_dist/assets/{ChoiceField-DJ_c78Cm.js → ChoiceField-DnwXRkht.js} +1 -1
  67. modoboa/frontend_dist/assets/ComposeEmailForm-kghmfNuE.js +1 -0
  68. modoboa/frontend_dist/assets/ComposeEmailView-DLv3wk1k.js +1 -0
  69. modoboa/frontend_dist/assets/ConfirmDialog-CcPrCKuI.js +1 -0
  70. modoboa/frontend_dist/assets/{ConnectedLayout-Dvwmicnc.css → ConnectedLayout-Bxh21hcH.css} +1 -1
  71. modoboa/frontend_dist/assets/ConnectedLayout-CWlBK7Hf.js +1 -0
  72. modoboa/frontend_dist/assets/CreationForm-CW4lxnPg.js +1 -0
  73. modoboa/frontend_dist/assets/DashboardView-DXVZMbMo.js +1 -0
  74. modoboa/frontend_dist/assets/DomainAdminList-C3jcDDc3.js +1 -0
  75. modoboa/frontend_dist/assets/DomainEditView-ph8AaElX.js +1 -0
  76. modoboa/frontend_dist/assets/{DomainTransportForm-C2xo0Yd7.js → DomainTransportForm-NCz6Bl-h.js} +1 -1
  77. modoboa/frontend_dist/assets/DomainView-BgMSSuU-.js +5 -0
  78. modoboa/frontend_dist/assets/{DomainView-BDKoBFYr.css → DomainView-CCLYXPHx.css} +1 -1
  79. modoboa/frontend_dist/assets/DomainsView-CEEU9btK.js +1 -0
  80. modoboa/frontend_dist/assets/DomainsView-DZ-ss9bI.css +1 -0
  81. modoboa/frontend_dist/assets/EmailField-DeqDPm5j.js +1 -0
  82. modoboa/frontend_dist/assets/EmailView-DczVhVO0.js +1 -0
  83. modoboa/frontend_dist/assets/EmptyLayout-BXgcfMLH.js +1 -0
  84. modoboa/frontend_dist/assets/FiltersView-nJj_gSCx.js +1 -0
  85. modoboa/frontend_dist/assets/ForwardEmailView-Bgv3JQb6.js +1 -0
  86. modoboa/frontend_dist/assets/{HtmlEditor-CJ9umKeO.js → HtmlEditor-BWRdelVw.js} +1 -1
  87. modoboa/frontend_dist/assets/{IdentitiesView-0ziuQ5s-.css → IdentitiesView-DPrrRMS5.css} +1 -1
  88. modoboa/frontend_dist/assets/IdentitiesView-Dld9IloZ.js +1 -0
  89. modoboa/frontend_dist/assets/InformationView-BBWKSX8D.js +1 -0
  90. modoboa/frontend_dist/assets/InformationView-C9vvvQhJ.css +1 -0
  91. modoboa/frontend_dist/assets/{LoadingData-CYwX3Jpn.js → LoadingData-G57nJ_JV.js} +1 -1
  92. modoboa/frontend_dist/assets/{LoginCallbackView-E01qkKn0.js → LoginCallbackView-DjyE2SG_.js} +1 -1
  93. modoboa/frontend_dist/assets/{LoginView-Cy4uFV9h.js → LoginView-CqCCXYLo.js} +1 -1
  94. modoboa/frontend_dist/assets/{MailboxView-B-aI4XBq.css → MailboxView-CfStlWhk.css} +1 -1
  95. modoboa/frontend_dist/assets/MailboxView-DRrs9eLO.js +1 -0
  96. modoboa/frontend_dist/assets/MenuItems-BqIZW5av.js +1 -0
  97. modoboa/frontend_dist/assets/MessageView-D_6tx_gd.js +1 -0
  98. modoboa/frontend_dist/assets/MessagesView-BH7JIR03.js +1 -0
  99. modoboa/frontend_dist/assets/MigrationsView-Cv_So9T-.js +1 -0
  100. modoboa/frontend_dist/assets/{ParametersForm-BZM0QSvg.js → ParametersForm-3qXttTuQ.js} +1 -1
  101. modoboa/frontend_dist/assets/ParametersView-3Ns04cpQ.js +1 -0
  102. modoboa/frontend_dist/assets/ParametersView-B5B5Dt6K.js +1 -0
  103. modoboa/frontend_dist/assets/ProviderEditView-zh7CY832.js +1 -0
  104. modoboa/frontend_dist/assets/ProviderGeneralForm-BQU7t3ma.js +1 -0
  105. modoboa/frontend_dist/assets/ProvidersView-CoF_ZkZA.js +1 -0
  106. modoboa/frontend_dist/assets/QuarantineLayout-CYBsrbJM.js +1 -0
  107. modoboa/frontend_dist/assets/QuarantineView-D4gOE4EQ.css +1 -0
  108. modoboa/frontend_dist/assets/QuarantineView-DNvpoycb.js +1 -0
  109. modoboa/frontend_dist/assets/ReplyEmailView-D1XTcglu.js +1 -0
  110. modoboa/frontend_dist/assets/ResourcesForm-BW8rUGgZ.js +1 -0
  111. modoboa/frontend_dist/assets/SelfServiceLayout-DfDHiYeX.js +1 -0
  112. modoboa/frontend_dist/assets/{SettingsView-BxLJBFY0.js → SettingsView-gQiJ2NVb.js} +2 -2
  113. modoboa/frontend_dist/assets/StatisticsView-DYalet_q.js +1 -0
  114. modoboa/frontend_dist/assets/TimeSerieChart-BZ2htbFk.js +1 -0
  115. modoboa/frontend_dist/assets/UserLayout-zUtHi-z-.js +1 -0
  116. modoboa/frontend_dist/assets/VAlert-4r6LxKtg.js +1 -0
  117. modoboa/frontend_dist/assets/VApp-CX_C7AUN.js +1 -0
  118. modoboa/frontend_dist/assets/VAutocomplete-DNKmBvyZ.js +1 -0
  119. modoboa/frontend_dist/assets/VAvatar-DbuoZWmf.js +1 -0
  120. modoboa/frontend_dist/assets/VBadge-BQrRJ9S0.css +1 -0
  121. modoboa/frontend_dist/assets/VBadge-Bv2nvUmC.js +1 -0
  122. modoboa/frontend_dist/assets/VCard-DzjUT5OP.js +1 -0
  123. modoboa/frontend_dist/assets/VCheckbox-dr7UFjl4.js +1 -0
  124. modoboa/frontend_dist/assets/{VCheckboxBtn-Dt810gWf.js → VCheckboxBtn-CpFdBnTv.js} +1 -1
  125. modoboa/frontend_dist/assets/VChip-CaQvfmkw.js +1 -0
  126. modoboa/frontend_dist/assets/VColorPicker-ByGpCW5O.js +1 -0
  127. modoboa/frontend_dist/assets/{VContainer-DvTbsotR.js → VContainer-74Dnn8Ux.js} +1 -1
  128. modoboa/frontend_dist/assets/VDataTable-CL7yHvG7.js +1 -0
  129. modoboa/frontend_dist/assets/VDataTableServer-BqvNcIdw.js +1 -0
  130. modoboa/frontend_dist/assets/VDataTableVirtual--KsOP8i6.js +1 -0
  131. modoboa/frontend_dist/assets/{VDialog-Bk6EWNhz.js → VDialog-DmTGCGR0.js} +1 -1
  132. modoboa/frontend_dist/assets/VExpansionPanels-B7sSTCwd.js +1 -0
  133. modoboa/frontend_dist/assets/VFileInput-SULIc6F3.js +1 -0
  134. modoboa/frontend_dist/assets/VForm-DsRLc-sa.js +1 -0
  135. modoboa/frontend_dist/assets/VInput-CcxkaOXT.css +1 -0
  136. modoboa/frontend_dist/assets/VInput-DVKUObZe.js +1 -0
  137. modoboa/frontend_dist/assets/VMenu-nv0XOgg0.js +1 -0
  138. modoboa/frontend_dist/assets/VPicker-DnDSWJHJ.js +1 -0
  139. modoboa/frontend_dist/assets/VProgressCircular-qK6p5X_Y.js +1 -0
  140. modoboa/frontend_dist/assets/VRadioGroup-CbiPLy0t.js +1 -0
  141. modoboa/frontend_dist/assets/{VRow-BF35mT1S.js → VRow-DJ0NB63-.js} +1 -1
  142. modoboa/frontend_dist/assets/VSelect-CxCFMHyF.js +1 -0
  143. modoboa/frontend_dist/assets/VSelectionControl-C-6A4us5.js +1 -0
  144. modoboa/frontend_dist/assets/VSheet-DI6SxLnG.js +1 -0
  145. modoboa/frontend_dist/assets/VSpacer-CoJVmx8k.js +1 -0
  146. modoboa/frontend_dist/assets/VSwitch-DPnjPQuU.js +1 -0
  147. modoboa/frontend_dist/assets/VTable-ldTxgQPW.js +1 -0
  148. modoboa/frontend_dist/assets/VTabs-aS8WSL9I.js +1 -0
  149. modoboa/frontend_dist/assets/VTextField-BzBVKKob.css +1 -0
  150. modoboa/frontend_dist/assets/VTextField-DKbr4H5w.js +1 -0
  151. modoboa/frontend_dist/assets/VTextarea-BttkFsM4.js +1 -0
  152. modoboa/frontend_dist/assets/VToolbar-BxX3W2kR.js +1 -0
  153. modoboa/frontend_dist/assets/VWindowItem-Cvqvdegd.js +1 -0
  154. modoboa/frontend_dist/assets/WebmailLayout-BT2k6U7q.js +1 -0
  155. modoboa/frontend_dist/assets/accounts-CC2F0a0c.js +1 -0
  156. modoboa/frontend_dist/assets/{admin-o-HRGnmT.js → admin-CHCHFGI6.js} +1 -1
  157. modoboa/frontend_dist/assets/{aliases-DDVeehyg.js → aliases-C9bUD4Ws.js} +1 -1
  158. modoboa/frontend_dist/assets/amavis-BhzV4rgf.js +1 -0
  159. modoboa/frontend_dist/assets/amavis-DCVJxuui.js +1 -0
  160. modoboa/frontend_dist/assets/{contacts-C84DY-Q1.js → contacts-Dxz6eWpf.js} +1 -1
  161. modoboa/frontend_dist/assets/{domains-Bgn4ixHL.js → domains-C2cornvL.js} +1 -1
  162. modoboa/frontend_dist/assets/{domains.store-DTE-V7Y1.js → domains.store-BLKRipG8.js} +1 -1
  163. modoboa/frontend_dist/assets/{filter-CnffiQAW.js → filter-rmxrcjKk.js} +1 -1
  164. modoboa/frontend_dist/assets/forwardRefs-CpzzjgpX.js +1 -0
  165. modoboa/frontend_dist/assets/global.store-DndbMXYb.js +1 -0
  166. modoboa/frontend_dist/assets/{importExport-BlQYb0NO.js → importExport-C3uqrcok.js} +1 -1
  167. modoboa/frontend_dist/assets/index-LhNzkzAh.js +984 -0
  168. modoboa/frontend_dist/assets/layout-DbjDe3Wl.js +1 -0
  169. modoboa/frontend_dist/assets/{layout.store-DkjrAoXt.js → layout.store-Vq5mvIp7.js} +1 -1
  170. modoboa/frontend_dist/assets/{logos-q8SEyAa4.js → logos-Bvcy0usu.js} +1 -1
  171. modoboa/frontend_dist/assets/{logs-B7IJ7LBa.js → logs-BuItINky.js} +1 -1
  172. modoboa/frontend_dist/assets/{parameters-A6iBEYQq.js → parameters-C8IYEP7q.js} +1 -1
  173. modoboa/frontend_dist/assets/{parameters.store-BiXS4_6w.js → parameters.store-1cwSP2JP.js} +1 -1
  174. modoboa/frontend_dist/assets/permissions-DQjAcO9S.js +1 -0
  175. modoboa/frontend_dist/assets/{ssrBoot-AzTdjPjk.js → ssrBoot-BxIQ9ccA.js} +1 -1
  176. modoboa/frontend_dist/assets/{tag-BnSYRTcD.js → tag-3cfI1_f7.js} +1 -1
  177. modoboa/frontend_dist/assets/transports-D4Jk4-AP.js +1 -0
  178. modoboa/frontend_dist/assets/{webmail-CSH_3l6R.js → webmail-B2IUjaxM.js} +1 -1
  179. modoboa/frontend_dist/index.html +1 -1
  180. modoboa/lib/email_utils.py +2 -2
  181. modoboa/lib/permissions.py +7 -0
  182. modoboa/lib/test_runners.py +29 -0
  183. modoboa/lib/tests/__init__.py +5 -1
  184. modoboa/locale/br/LC_MESSAGES/django.po +87 -75
  185. modoboa/locale/cs/LC_MESSAGES/django.po +82 -74
  186. modoboa/locale/cs_CZ/LC_MESSAGES/django.po +145 -121
  187. modoboa/locale/de/LC_MESSAGES/django.mo +0 -0
  188. modoboa/locale/de/LC_MESSAGES/django.po +339 -651
  189. modoboa/locale/de_DE/LC_MESSAGES/django.po +87 -75
  190. modoboa/locale/el_GR/LC_MESSAGES/django.po +160 -135
  191. modoboa/locale/en/LC_MESSAGES/django.po +82 -74
  192. modoboa/locale/es/LC_MESSAGES/django.po +158 -131
  193. modoboa/locale/es_MX/LC_MESSAGES/django.po +82 -74
  194. modoboa/locale/fi/LC_MESSAGES/django.po +87 -75
  195. modoboa/locale/fr/LC_MESSAGES/django.mo +0 -0
  196. modoboa/locale/fr/LC_MESSAGES/django.po +469 -201
  197. modoboa/locale/hu/LC_MESSAGES/django.po +82 -74
  198. modoboa/locale/it/LC_MESSAGES/django.mo +0 -0
  199. modoboa/locale/it/LC_MESSAGES/django.po +148 -122
  200. modoboa/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
  201. modoboa/locale/ja_JP/LC_MESSAGES/django.po +80 -72
  202. modoboa/locale/ka/LC_MESSAGES/django.po +82 -74
  203. modoboa/locale/nl_NL/LC_MESSAGES/django.po +160 -132
  204. modoboa/locale/no/LC_MESSAGES/django.po +82 -74
  205. modoboa/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  206. modoboa/locale/pl_PL/LC_MESSAGES/django.po +172 -149
  207. modoboa/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  208. modoboa/locale/pt_BR/LC_MESSAGES/django.po +172 -144
  209. modoboa/locale/pt_PT/LC_MESSAGES/django.po +135 -112
  210. modoboa/locale/ro_RO/LC_MESSAGES/django.po +87 -75
  211. modoboa/locale/ru/LC_MESSAGES/django.po +142 -118
  212. modoboa/locale/si/LC_MESSAGES/django.po +82 -74
  213. modoboa/locale/sk/LC_MESSAGES/django.po +82 -74
  214. modoboa/locale/sk_SK/LC_MESSAGES/django.po +84 -76
  215. modoboa/locale/sl_SI/LC_MESSAGES/django.po +90 -76
  216. modoboa/locale/sv/LC_MESSAGES/django.mo +0 -0
  217. modoboa/locale/sv/LC_MESSAGES/django.po +172 -139
  218. modoboa/locale/tr/LC_MESSAGES/django.po +87 -75
  219. modoboa/locale/tr_TR/LC_MESSAGES/django.po +84 -74
  220. modoboa/locale/uk/LC_MESSAGES/django.po +82 -74
  221. modoboa/locale/zh/LC_MESSAGES/django.po +82 -74
  222. modoboa/locale/zh_CN/LC_MESSAGES/django.po +82 -74
  223. modoboa/locale/zh_TW/LC_MESSAGES/django.po +87 -75
  224. modoboa/parameters/api/v2/tests.py +2 -2
  225. modoboa/parameters/api/v2/viewsets.py +2 -0
  226. modoboa/policyd/tests.py +2 -0
  227. modoboa/urls_api_v2.py +6 -0
  228. modoboa/webmail/lib/imaputils.py +2 -2
  229. {modoboa-2.4.11.dist-info → modoboa-2.5.1.dist-info}/METADATA +6 -4
  230. {modoboa-2.4.11.dist-info → modoboa-2.5.1.dist-info}/RECORD +235 -185
  231. modoboa/frontend_dist/assets/AccountAliasForm-BV6KvTu6.js +0 -1
  232. modoboa/frontend_dist/assets/AccountEditView-DDOFyfBD.js +0 -1
  233. modoboa/frontend_dist/assets/AccountLayout-rX51xgxT.js +0 -1
  234. modoboa/frontend_dist/assets/AccountPasswordSubForm-D9S6LaeH.js +0 -1
  235. modoboa/frontend_dist/assets/AccountView-cmvaZNq3.js +0 -1
  236. modoboa/frontend_dist/assets/AddressBook-DCJxL8SU.js +0 -1
  237. modoboa/frontend_dist/assets/AdminLayout-r0wfG2lO.js +0 -1
  238. modoboa/frontend_dist/assets/AlarmsView-Bheey-gp.css +0 -1
  239. modoboa/frontend_dist/assets/AlarmsView-C0bqC4PA.js +0 -1
  240. modoboa/frontend_dist/assets/AliasEditView-DVoWoCGY.js +0 -1
  241. modoboa/frontend_dist/assets/AliasView-DrONZXOh.js +0 -1
  242. modoboa/frontend_dist/assets/AuditTrailView-OTkoZaMU.js +0 -1
  243. modoboa/frontend_dist/assets/CalendarView-CqF4_Ui9.js +0 -1
  244. modoboa/frontend_dist/assets/ComposeEmailForm-DO5_GB3e.js +0 -1
  245. modoboa/frontend_dist/assets/ComposeEmailView-A91HCBsN.js +0 -1
  246. modoboa/frontend_dist/assets/ConfirmDialog-BBcgdAnO.js +0 -1
  247. modoboa/frontend_dist/assets/ConnectedLayout-1oRW-Rql.js +0 -1
  248. modoboa/frontend_dist/assets/CreationForm-71YJbjsA.js +0 -1
  249. modoboa/frontend_dist/assets/DashboardView-CdLpSfUl.js +0 -1
  250. modoboa/frontend_dist/assets/DomainAdminList-BjC4KsqI.js +0 -1
  251. modoboa/frontend_dist/assets/DomainEditView-CQjKwYxl.js +0 -1
  252. modoboa/frontend_dist/assets/DomainView-BhhuZI_N.js +0 -5
  253. modoboa/frontend_dist/assets/DomainsView-Cft4BP8Z.js +0 -1
  254. modoboa/frontend_dist/assets/DomainsView-DasJ0NdZ.css +0 -1
  255. modoboa/frontend_dist/assets/EmailField-C8umy0EU.js +0 -1
  256. modoboa/frontend_dist/assets/EmailView-ki7uEQPD.js +0 -1
  257. modoboa/frontend_dist/assets/EmptyLayout-DaA1XH9n.js +0 -1
  258. modoboa/frontend_dist/assets/FiltersView-FYFZxG4B.js +0 -1
  259. modoboa/frontend_dist/assets/ForwardEmailView-cUbnSYCF.js +0 -1
  260. modoboa/frontend_dist/assets/IdentitiesView-njNo8N5n.js +0 -1
  261. modoboa/frontend_dist/assets/InformationView-D1h38POt.js +0 -1
  262. modoboa/frontend_dist/assets/InformationView-U5Ww-Sx1.css +0 -1
  263. modoboa/frontend_dist/assets/MailboxView-IlrLWm_H.js +0 -1
  264. modoboa/frontend_dist/assets/MenuItems-BAtHWzAE.js +0 -1
  265. modoboa/frontend_dist/assets/MessagesView-OSpjixFq.js +0 -1
  266. modoboa/frontend_dist/assets/MigrationsView-DKNOsVzF.js +0 -1
  267. modoboa/frontend_dist/assets/ParametersView-C4bXASiq.js +0 -1
  268. modoboa/frontend_dist/assets/ParametersView-CYXgNmc1.js +0 -1
  269. modoboa/frontend_dist/assets/ProviderEditView-CyxCWTST.js +0 -1
  270. modoboa/frontend_dist/assets/ProviderGeneralForm-BYPjNHqB.js +0 -1
  271. modoboa/frontend_dist/assets/ProvidersView-CxrMkRyk.js +0 -1
  272. modoboa/frontend_dist/assets/ReplyEmailView-Dkw9-N26.js +0 -1
  273. modoboa/frontend_dist/assets/ResourcesForm-CuUvrOdY.js +0 -1
  274. modoboa/frontend_dist/assets/StatisticsView-BN7QsZMT.js +0 -1
  275. modoboa/frontend_dist/assets/TimeSerieChart-BMN8BeFZ.js +0 -1
  276. modoboa/frontend_dist/assets/UserLayout-B6-JQg4F.js +0 -1
  277. modoboa/frontend_dist/assets/VAlert-DIQTrRif.js +0 -1
  278. modoboa/frontend_dist/assets/VApp-CpkYA7js.js +0 -1
  279. modoboa/frontend_dist/assets/VAutocomplete-C4IpXyl8.js +0 -1
  280. modoboa/frontend_dist/assets/VAvatar-Lpb-Dion.js +0 -1
  281. modoboa/frontend_dist/assets/VCard-er_isjE_.js +0 -1
  282. modoboa/frontend_dist/assets/VCheckbox-D-u8JXP1.js +0 -1
  283. modoboa/frontend_dist/assets/VChip-B4iSpj8_.js +0 -1
  284. modoboa/frontend_dist/assets/VColorPicker-BAjGDsXv.js +0 -1
  285. modoboa/frontend_dist/assets/VDataTable-4JRjbtgF.js +0 -1
  286. modoboa/frontend_dist/assets/VDataTableServer-tIDT1m3-.js +0 -1
  287. modoboa/frontend_dist/assets/VDataTableVirtual-BlnO18u_.js +0 -1
  288. modoboa/frontend_dist/assets/VExpansionPanels-CwGtXDhr.js +0 -1
  289. modoboa/frontend_dist/assets/VFileInput-D1_7ZkO_.js +0 -1
  290. modoboa/frontend_dist/assets/VForm-DAkW4nfy.js +0 -1
  291. modoboa/frontend_dist/assets/VMenu-BPFJwj2f.js +0 -1
  292. modoboa/frontend_dist/assets/VPicker-CfT82M8N.js +0 -1
  293. modoboa/frontend_dist/assets/VProgressCircular-w75-3ogi.js +0 -1
  294. modoboa/frontend_dist/assets/VRadioGroup-0j6DNC_k.js +0 -1
  295. modoboa/frontend_dist/assets/VSelect-Cs4ARbAS.js +0 -1
  296. modoboa/frontend_dist/assets/VSelectionControl-Dg-XyRRS.js +0 -1
  297. modoboa/frontend_dist/assets/VSheet-Btq_Mu4s.js +0 -1
  298. modoboa/frontend_dist/assets/VSpacer-C7xukQmu.js +0 -1
  299. modoboa/frontend_dist/assets/VSwitch-Cs1NQrmk.js +0 -1
  300. modoboa/frontend_dist/assets/VTable-CNz2SGk4.js +0 -1
  301. modoboa/frontend_dist/assets/VTabs-B1fyVn4M.js +0 -1
  302. modoboa/frontend_dist/assets/VTextField-BdyvgvkG.js +0 -1
  303. modoboa/frontend_dist/assets/VTextField-C-J20yj_.css +0 -1
  304. modoboa/frontend_dist/assets/VTextarea-DnOMpe0Q.js +0 -1
  305. modoboa/frontend_dist/assets/VToolbar-BiCiBxBJ.js +0 -1
  306. modoboa/frontend_dist/assets/VWindowItem-ChWm_kz3.js +0 -1
  307. modoboa/frontend_dist/assets/WebmailLayout-o4uEkp9e.js +0 -1
  308. modoboa/frontend_dist/assets/forwardRefs-Dvjn_Xq4.js +0 -1
  309. modoboa/frontend_dist/assets/global.store-BaiD63EN.js +0 -1
  310. modoboa/frontend_dist/assets/index-I1VDlN4g.js +0 -984
  311. modoboa/frontend_dist/assets/layout-D8ZJPiJ_.js +0 -1
  312. modoboa/frontend_dist/assets/permissions-CITHLHVg.js +0 -1
  313. modoboa/frontend_dist/assets/transports-Dz7c6kIy.js +0 -1
  314. {modoboa-2.4.11.data → modoboa-2.5.1.data}/scripts/modoboa-admin.py +0 -0
  315. {modoboa-2.4.11.dist-info → modoboa-2.5.1.dist-info}/WHEEL +0 -0
  316. {modoboa-2.4.11.dist-info → modoboa-2.5.1.dist-info}/entry_points.txt +0 -0
  317. {modoboa-2.4.11.dist-info → modoboa-2.5.1.dist-info}/licenses/LICENSE +0 -0
  318. {modoboa-2.4.11.dist-info → modoboa-2.5.1.dist-info}/top_level.txt +0 -0
Binary file
@@ -12,7 +12,7 @@ msgid ""
12
12
  msgstr ""
13
13
  "Project-Id-Version: Modoboa\n"
14
14
  "Report-Msgid-Bugs-To: \n"
15
- "POT-Creation-Date: 2025-07-27 10:50+0200\n"
15
+ "POT-Creation-Date: 2025-08-28 09:41+0200\n"
16
16
  "PO-Revision-Date: 2011-07-01 08:15+0000\n"
17
17
  "Last-Translator: INOUE Daisuke, 2025\n"
18
18
  "Language-Team: Japanese (Japan) (http://app.transifex.com/tonio/modoboa/language/ja_JP/)\n"
@@ -32,65 +32,66 @@ msgstr "すべてのメールボックス全体の容量制限。KB、MB(デ
32
32
  msgid "Default quota in MB applied to mailboxes. A value of 0 means no quota."
33
33
  msgstr "メールボックスの容量制限のデフォルト値を MB で指定します。値を 0 にすると容量制限しません。"
34
34
 
35
- #: admin/api/v1/serializers.py:88
35
+ #: admin/api/v1/serializers.py:94
36
36
  msgid "domain alias with this name already exists"
37
37
  msgstr "この名前のドメインエイリアスがすでに存在します"
38
38
 
39
- #: admin/api/v1/serializers.py:98
39
+ #: admin/api/v1/serializers.py:104
40
40
  msgid "No authorized MX record found for this domain"
41
41
  msgstr "このドメインの承認済み MX レコードが見つかりません"
42
42
 
43
- #: admin/api/v1/serializers.py:116
43
+ #: admin/api/v1/serializers.py:122
44
44
  msgid "Cannot be greater than domain quota"
45
45
  msgstr "ドメインの容量制限より大きくすることはできません"
46
46
 
47
- #: admin/api/v1/serializers.py:162 admin/api/v1/serializers.py:357
48
- #: admin/api/v2/serializers.py:548 admin/models/alias.py:44
47
+ #: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
48
+ #: admin/api/v2/serializers.py:564 admin/models/alias.py:44
49
49
  msgid "Permission denied."
50
50
  msgstr "権限がありません。"
51
51
 
52
- #: admin/api/v1/serializers.py:224 admin/api/v2/serializers.py:88
53
- #: admin/api/v2/serializers.py:470 core/api/v2/serializers.py:235
54
- #: core/api/v2/serializers.py:237 core/api/v2/serializers.py:246
52
+ #: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
53
+ #: admin/api/v2/serializers.py:486 core/api/v2/serializers.py:255
54
+ #: core/api/v2/serializers.py:257 core/api/v2/serializers.py:266
55
55
  #: transport/backends.py:40
56
56
  msgid "This field is required"
57
57
  msgstr "このフィールドは必須です"
58
58
 
59
- #: admin/api/v1/serializers.py:236
59
+ #: admin/api/v1/serializers.py:243
60
60
  msgid ""
61
61
  "List of administered domains (resellers and domain administrators only)."
62
62
  msgstr "管理下ドメイン一覧 ( リセラーとドメイン管理者のみ )"
63
63
 
64
- #: admin/api/v1/serializers.py:330 admin/api/v2/serializers.py:530
64
+ #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:546
65
65
  msgid "Not allowed for this role."
66
66
  msgstr "このロールは許可されていません。"
67
67
 
68
- #: admin/api/v1/serializers.py:348
68
+ #: admin/api/v1/serializers.py:355
69
69
  msgid "Must be equal to mailbox full_address"
70
70
  msgstr "メールボックスの full_address と同じにしてください"
71
71
 
72
- #: admin/api/v1/serializers.py:390 admin/api/v2/serializers.py:582
72
+ #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:598
73
73
  #: calendars/serializers.py:175 calendars/serializers.py:177
74
+ #: pdfcredentials/api/v2/serializers.py:91
74
75
  msgid "This field is required."
75
76
  msgstr "このフィールドは必須です。"
76
77
 
77
- #: admin/api/v1/serializers.py:402 admin/api/v2/serializers.py:599
78
+ #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:615
78
79
  msgid "Local domain {} does not exist"
79
80
  msgstr "ローカルドメイン {} は、存在しません"
80
81
 
81
- #: admin/api/v1/serializers.py:492
82
+ #: admin/api/v1/serializers.py:499
82
83
  msgid "A list of recipient"
83
84
  msgstr "受信者一覧"
84
85
 
85
- #: admin/api/v1/serializers.py:508 admin/api/v2/viewsets.py:286
86
+ #: admin/api/v1/serializers.py:515 admin/api/v2/viewsets.py:286
86
87
  msgid "This alias already exists"
87
88
  msgstr "このエイリアスはすでに存在します"
88
89
 
89
- #: admin/api/v1/serializers.py:544
90
+ #: admin/api/v1/serializers.py:551
90
91
  msgid "You don't have access to this domain."
91
92
  msgstr "このドメインにはアクセスできません。"
92
93
 
93
- #: admin/api/v1/serializers.py:553
94
+ #: admin/api/v1/serializers.py:560
94
95
  msgid "You don't have access to this mailbox."
95
96
  msgstr "このメールボックスにアクセスできません。"
96
97
 
@@ -98,56 +99,56 @@ msgstr "このメールボックスにアクセスできません。"
98
99
  msgid "Here is your new Modoboa password: {}"
99
100
  msgstr "Modoboa の新しいパスワード : {}"
100
101
 
101
- #: admin/api/v2/serializers.py:80
102
+ #: admin/api/v2/serializers.py:82
102
103
  msgid "DKIM keys storage directory not configured"
103
104
  msgstr "DKIM キー保存ディレクトリーを設定してください"
104
105
 
105
- #: admin/api/v2/serializers.py:92
106
+ #: admin/api/v2/serializers.py:94
106
107
  msgid "This field is valid when type is relaydomain"
107
108
  msgstr "この項目はリレードメインの設定の際に有効です"
108
109
 
109
- #: admin/api/v2/serializers.py:99
110
+ #: admin/api/v2/serializers.py:101
110
111
  msgid "You can't define an unlimited quota."
111
112
  msgstr "容量制限を無制限に設定できません。"
112
113
 
113
- #: admin/api/v2/serializers.py:133
114
+ #: admin/api/v2/serializers.py:135
114
115
  #, python-format
115
116
  msgid "User '%s' already exists"
116
117
  msgstr "ユーザー「%s」はすでに存在します"
117
118
 
118
- #: admin/api/v2/serializers.py:248 admin/api/v2/serializers.py:254
119
+ #: admin/api/v2/serializers.py:250 admin/api/v2/serializers.py:256
119
120
  msgid "Must be a positive integer"
120
121
  msgstr "正の整数を入力してください"
121
122
 
122
- #: admin/api/v2/serializers.py:263
123
+ #: admin/api/v2/serializers.py:265
123
124
  msgid "openssl not found, please make sure it is installed."
124
125
  msgstr "openssl が見つかりません。インストールを確認してください。"
125
126
 
126
- #: admin/api/v2/serializers.py:266 pdfcredentials/api/v2/serializers.py:79
127
+ #: admin/api/v2/serializers.py:268 pdfcredentials/api/v2/serializers.py:84
127
128
  msgid "Directory not found."
128
129
  msgstr "ディレクトリーが見つかりません。"
129
130
 
130
- #: admin/api/v2/serializers.py:277
131
+ #: admin/api/v2/serializers.py:279
131
132
  msgid "This field only allows valid IP addresses (or networks)"
132
133
  msgstr "有効な IP アドレス ( またはネットワーク ) を入力してください"
133
134
 
134
- #: admin/api/v2/serializers.py:290
135
+ #: admin/api/v2/serializers.py:292
135
136
  msgid "Please disable imap migration before disabling this option."
136
137
  msgstr "この設定を無効にする前に、IMAP 移行を無効にしてください。"
137
138
 
138
- #: admin/api/v2/serializers.py:303
139
+ #: admin/api/v2/serializers.py:305
139
140
  msgid "Define at least one authorized network / address"
140
141
  msgstr "認証済みのネットワークかアドレスを少なくとも 1 つ以上定義してください"
141
142
 
142
- #: admin/api/v2/serializers.py:565
143
+ #: admin/api/v2/serializers.py:581
143
144
  msgid "The left part of an email address can't be more than 64 characters."
144
145
  msgstr "メールアドレスの左部分を 64 文字以下にしてください。"
145
146
 
146
- #: admin/api/v2/serializers.py:587
147
+ #: admin/api/v2/serializers.py:603
147
148
  msgid "A mailbox is required to create aliases."
148
149
  msgstr "エイリアスを作成するにはメールボックスが必要です。"
149
150
 
150
- #: admin/api/v2/serializers.py:751
151
+ #: admin/api/v2/serializers.py:772
151
152
  msgid "Unknown status"
152
153
  msgstr "不明な状態"
153
154
 
@@ -159,14 +160,6 @@ msgstr "このドメインにはアクセスできません"
159
160
  msgid "You can't delete your own domain"
160
161
  msgstr "自分自身のドメインは削除できません"
161
162
 
162
- #: admin/api/v2/viewsets.py:407
163
- msgid "No alarm ID provided"
164
- msgstr "アラート ID が指定されていません"
165
-
166
- #: admin/api/v2/viewsets.py:411
167
- msgid "Received invalid alarm id(s)"
168
- msgstr "無効なアラート ID を受信"
169
-
170
163
  #: admin/app_settings.py:19 limits/app_settings.py:38 limits/constants.py:13
171
164
  msgid "Domains"
172
165
  msgstr "ドメイン"
@@ -354,7 +347,7 @@ msgstr "メールボックスの変名でエイリアスを作成"
354
347
  msgid "Create an alias using the old address when a mailbox is renamed."
355
348
  msgstr "メールボックスの名前を変更する際、古いアドレスをエイリアスとして作成します。"
356
349
 
357
- #: admin/app_settings.py:287 core/api/v2/viewsets.py:162
350
+ #: admin/app_settings.py:287 core/api/v2/viewsets.py:174
358
351
  msgid "Administration"
359
352
  msgstr "管理"
360
353
 
@@ -383,7 +376,7 @@ msgstr "ドメインエイリアス"
383
376
  msgid "Account import failed (%s): domain does not exist"
384
377
  msgstr "アカウントインポート失敗 ( %s ) : ドメインがありません"
385
378
 
386
- #: admin/handlers.py:242 admin/models/mailbox.py:340
379
+ #: admin/handlers.py:242 admin/models/mailbox.py:342
387
380
  msgid "Mailbox {} already exists"
388
381
  msgstr "{} メールボックスはすでに存在します"
389
382
 
@@ -641,7 +634,7 @@ msgstr "容量制限の設定が必要です"
641
634
  msgid "{}: domain quota exceeded"
642
635
  msgstr "{} : ドメインの容量制限を超過"
643
636
 
644
- #: admin/models/mailbox.py:308
637
+ #: admin/models/mailbox.py:310
645
638
  msgid "Domain does not exist"
646
639
  msgstr "ドメインがありません"
647
640
 
@@ -793,7 +786,7 @@ msgid ""
793
786
  "Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
794
787
  msgstr "インポートする ICS ファイルの最大サイズをバイト ( または KB、MB、GB ) で指定"
795
788
 
796
- #: calendars/app_settings.py:89 core/api/v2/viewsets.py:172
789
+ #: calendars/app_settings.py:89 core/api/v2/viewsets.py:195
797
790
  msgid "Calendars"
798
791
  msgstr "カレンダー"
799
792
 
@@ -827,7 +820,7 @@ msgstr "同期する頻度"
827
820
  msgid "Interval in seconds between 2 synchronization requests"
828
821
  msgstr "同期要求の間隔 ( 秒 )"
829
822
 
830
- #: contacts/app_settings.py:51 core/api/v2/viewsets.py:179
823
+ #: contacts/app_settings.py:51 core/api/v2/viewsets.py:185
831
824
  msgid "Contacts"
832
825
  msgstr "連絡先"
833
826
 
@@ -875,12 +868,12 @@ msgstr "PIN コードが無効です"
875
868
  msgid "2FA is already enabled"
876
869
  msgstr "2FA はすでに有効です"
877
870
 
878
- #: core/api/v1/serializers.py:87
871
+ #: core/api/v1/serializers.py:86
879
872
  #, python-format
880
- msgid "Failed TFA settings editing attempt from '%s' as user '%s'"
881
- msgstr "「%s」から「%s」ユーザーの 2FA 設定変更は失敗"
873
+ msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
874
+ msgstr "「%(addr)s」から「%(user)s」ユーザーの 2FA 設定変更は失敗"
882
875
 
883
- #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:425
876
+ #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:445
884
877
  msgid "Invalid password"
885
878
  msgstr "無効なパスワード"
886
879
 
@@ -892,41 +885,41 @@ msgstr "2 要素認証が無効"
892
885
  msgid "Local"
893
886
  msgstr "ローカル"
894
887
 
895
- #: core/api/v2/serializers.py:175 core/app_settings.py:17
888
+ #: core/api/v2/serializers.py:194 core/app_settings.py:17
896
889
  msgid "User profile"
897
890
  msgstr "ユーザープロフィール"
898
891
 
899
- #: core/api/v2/serializers.py:194 core/api/v2/serializers.py:201
900
- #: core/api/v2/serializers.py:208
892
+ #: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
893
+ #: core/api/v2/serializers.py:228
901
894
  msgid "Invalid syntax"
902
895
  msgstr "不正な構文"
903
896
 
904
- #: core/api/v2/serializers.py:213
897
+ #: core/api/v2/serializers.py:233
905
898
  msgid "Invalid rounds number"
906
899
  msgstr "不正なラウンド数"
907
900
 
908
- #: core/api/v2/serializers.py:413 core/forms.py:81
901
+ #: core/api/v2/serializers.py:433 core/forms.py:81
909
902
  msgid "This code is invalid"
910
903
  msgstr "このコードは無効です"
911
904
 
912
- #: core/api/v2/serializers.py:483 core/views/auth.py:194
905
+ #: core/api/v2/serializers.py:503 core/views/auth.py:194
913
906
  #: core/views/auth.py:247
914
907
  msgid "Please use the following code to recover your Modoboa password: {}"
915
908
  msgstr "Modoboa のパスワード再設定で利用するコード : {}"
916
909
 
917
- #: core/api/v2/viewsets.py:164
910
+ #: core/api/v2/viewsets.py:176
918
911
  msgid "Administration console"
919
912
  msgstr "管理コンソール"
920
913
 
921
- #: core/api/v2/viewsets.py:174
922
- msgid "Calendar"
923
- msgstr "カレンダー"
924
-
925
- #: core/api/v2/viewsets.py:181
914
+ #: core/api/v2/viewsets.py:187
926
915
  msgid "Address book"
927
916
  msgstr "アドレス帳"
928
917
 
929
- #: core/api/v2/viewsets.py:186 core/api/v2/viewsets.py:188
918
+ #: core/api/v2/viewsets.py:197
919
+ msgid "Calendar"
920
+ msgstr "カレンダー"
921
+
922
+ #: core/api/v2/viewsets.py:205 core/api/v2/viewsets.py:207
930
923
  #: webmail/app_settings.py:258 webmail/app_settings.py:265
931
924
  msgid "Webmail"
932
925
  msgstr "Web メール"
@@ -1422,19 +1415,27 @@ msgstr "最大ログ記録期間"
1422
1415
  msgid "The maximum age in days of a log record"
1423
1416
  msgstr "ログを記録する日数の最大期間"
1424
1417
 
1425
- #: core/app_settings.py:726
1418
+ #: core/app_settings.py:727
1419
+ msgid "Retention time in message history"
1420
+ msgstr "メッセージ履歴の保持期間"
1421
+
1422
+ #: core/app_settings.py:730
1423
+ msgid "Retention time (in days) of a message in the message history section"
1424
+ msgstr "メッセージ履歴セクションにメッセージを保持する期間 ( 単位 : 日 )"
1425
+
1426
+ #: core/app_settings.py:737
1426
1427
  msgid "Items per page"
1427
1428
  msgstr "ページあたりの件数"
1428
1429
 
1429
- #: core/app_settings.py:728
1430
+ #: core/app_settings.py:739
1430
1431
  msgid "Number of displayed items per page"
1431
1432
  msgstr "ページあたりに表示される項目の数"
1432
1433
 
1433
- #: core/app_settings.py:735
1434
+ #: core/app_settings.py:746
1434
1435
  msgid "Default top redirection"
1435
1436
  msgstr "デフォルトのリダイレクト先"
1436
1437
 
1437
- #: core/app_settings.py:737
1438
+ #: core/app_settings.py:748
1438
1439
  msgid "The default redirection used when no application is specified"
1439
1440
  msgstr "アプリケーションが未指定の際、デフォルトとなるリダイレクト先"
1440
1441
 
@@ -1948,11 +1949,6 @@ msgstr "除外フォルダーフィルターで対象から外れても同期に
1948
1949
  msgid "IMAP Migration"
1949
1950
  msgstr "IMAP 移行"
1950
1951
 
1951
- #: imap_migration/auth_backends.py:49 webmail/lib/imaputils.py:240
1952
- #, python-brace-format
1953
- msgid "Connection to IMAP server failed: {error}"
1954
- msgstr "IMAP サーバーへの接続に失敗しました : {error}"
1955
-
1956
1952
  #: imap_migration/checks.py:12
1957
1953
  msgid ""
1958
1954
  "Automatic domain/mailbox creation is disabled which means IMAP "
@@ -2274,11 +2270,11 @@ msgstr "アカウント"
2274
2270
  msgid "Personal account information"
2275
2271
  msgstr "個人アカウント情報"
2276
2272
 
2277
- #: pdfcredentials/api/v2/serializers.py:81
2273
+ #: pdfcredentials/api/v2/serializers.py:86
2278
2274
  msgid "Directory is not writable"
2279
2275
  msgstr "ディレクトリーが書き込み禁止"
2280
2276
 
2281
- #: pdfcredentials/api/v2/serializers.py:102
2277
+ #: pdfcredentials/api/v2/serializers.py:114
2282
2278
  msgid "No document available for this user"
2283
2279
  msgstr "このユーザーのための文書なし"
2284
2280
 
@@ -2988,14 +2984,26 @@ msgstr "署名テキスト"
2988
2984
  msgid "User defined email signature"
2989
2985
  msgstr "ユーザー定義のメール署名"
2990
2986
 
2987
+ #: webmail/exceptions.py:18
2988
+ msgid "Server response"
2989
+ msgstr "サーバー応答"
2990
+
2991
2991
  #: webmail/lib/attachments.py:112
2992
2992
  msgid "Failed to remove attachment: "
2993
2993
  msgstr "添付ファイルの削除に失敗 : "
2994
2994
 
2995
+ #: webmail/lib/imapemail.py:272
2996
+ msgid "wrote:"
2997
+ msgstr " : "
2998
+
2995
2999
  #: webmail/lib/imapemail.py:306
2996
3000
  msgid "Date"
2997
3001
  msgstr "日付"
2998
3002
 
3003
+ #: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
3004
+ msgid "Original message"
3005
+ msgstr "元メッセージ"
3006
+
2999
3007
  #: webmail/lib/imaputils.py:221
3000
3008
  msgid "Failed to retrieve hierarchy delimiter"
3001
3009
  msgstr "階層区切りの取得に失敗"