modoboa 2.4.10__py3-none-any.whl → 2.5.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.
- modoboa/admin/api/v1/serializers.py +1 -0
- modoboa/admin/api/v2/serializers.py +15 -1
- modoboa/admin/api/v2/tests.py +11 -1
- modoboa/admin/lib.py +1 -1
- modoboa/admin/models/mailbox.py +15 -13
- modoboa/admin/models/mxrecord.py +4 -0
- modoboa/admin/tests/test_import_.py +11 -11
- modoboa/amavis/__init__.py +3 -0
- modoboa/amavis/app_settings.py +276 -0
- modoboa/amavis/apps.py +18 -0
- modoboa/amavis/checks/__init__.py +2 -0
- modoboa/amavis/checks/settings_checks.py +59 -0
- modoboa/amavis/dbrouter.py +35 -0
- modoboa/amavis/factories.py +164 -0
- modoboa/amavis/handlers.py +146 -0
- modoboa/amavis/lib.py +381 -0
- modoboa/amavis/management/__init__.py +0 -0
- modoboa/amavis/management/commands/__init__.py +0 -0
- modoboa/amavis/management/commands/amnotify.py +99 -0
- modoboa/amavis/management/commands/qcleanup.py +84 -0
- modoboa/amavis/migrations/0001_initial.py +340 -0
- modoboa/amavis/migrations/__init__.py +0 -0
- modoboa/amavis/models.py +226 -0
- modoboa/amavis/serializers.py +139 -0
- modoboa/amavis/sql_connector.py +240 -0
- modoboa/amavis/sql_email.py +66 -0
- modoboa/amavis/tasks.py +33 -0
- modoboa/amavis/templates/amavis/notifications/pending_requests.html +16 -0
- modoboa/amavis/tests/__init__.py +0 -0
- modoboa/amavis/tests/sa-learn +3 -0
- modoboa/amavis/tests/sample_messages/quarantined-input.txt +80 -0
- modoboa/amavis/tests/sample_messages/quarantined-output-plain_nolinks.txt +17 -0
- modoboa/amavis/tests/spamc +3 -0
- modoboa/amavis/tests/test_checks.py +25 -0
- modoboa/amavis/tests/test_handlers.py +214 -0
- modoboa/amavis/tests/test_lib.py +90 -0
- modoboa/amavis/tests/test_management_commands.py +45 -0
- modoboa/amavis/tests/test_sql_email.py +67 -0
- modoboa/amavis/tests/test_utils.py +19 -0
- modoboa/amavis/tests/test_viewsets.py +319 -0
- modoboa/amavis/urls.py +11 -0
- modoboa/amavis/utils.py +105 -0
- modoboa/amavis/viewsets.py +265 -0
- modoboa/core/api/v1/serializers.py +7 -5
- modoboa/core/api/v2/serializers.py +13 -2
- modoboa/core/api/v2/tests.py +34 -4
- modoboa/core/api/v2/urls.py +10 -5
- modoboa/core/api/v2/views.py +23 -2
- modoboa/core/api/v2/viewsets.py +24 -3
- modoboa/core/app_settings.py +11 -0
- modoboa/core/fido2_auth.py +1 -2
- modoboa/core/handlers.py +6 -2
- modoboa/core/management/commands/add_allowed_hosts.py +33 -0
- modoboa/core/management/commands/cleanlogs.py +9 -0
- modoboa/core/management/commands/load_initial_data.py +10 -0
- modoboa/core/migrations/0025_rename_user_email_is_active_core_user_email_c0c03f_idx.py +23 -5
- modoboa/core/tests/test_core.py +29 -0
- modoboa/core/utils.py +6 -0
- modoboa/dnstools/api/v2/serializers.py +9 -11
- modoboa/frontend_dist/assets/AccountAliasForm-BuSy_1n9.js +1 -0
- modoboa/frontend_dist/assets/AccountEditView-qdJmLM_e.js +1 -0
- modoboa/frontend_dist/assets/AccountLayout-DrN7vHsX.js +1 -0
- modoboa/frontend_dist/assets/AccountPasswordSubForm-DZGt_Xgq.js +1 -0
- modoboa/frontend_dist/assets/AccountView-CO65y0vZ.js +1 -0
- modoboa/frontend_dist/assets/AddressBook-BZNUlhek.js +1 -0
- modoboa/frontend_dist/assets/AdminLayout-CTNhuwTw.js +1 -0
- modoboa/frontend_dist/assets/AlarmsView-9yKGbmkC.css +1 -0
- modoboa/frontend_dist/assets/AlarmsView-DN_JIw9g.js +1 -0
- modoboa/frontend_dist/assets/AliasEditView-DjpPUTp9.js +1 -0
- modoboa/frontend_dist/assets/{AliasRecipientForm-DVZXWaUX.js → AliasRecipientForm-B1Y8wFdP.js} +1 -1
- modoboa/frontend_dist/assets/AliasView-GOJ5lyQH.js +1 -0
- modoboa/frontend_dist/assets/AuditTrailView-fbXmq70e.js +1 -0
- modoboa/frontend_dist/assets/CalendarView-LlQQNEPL.js +1 -0
- modoboa/frontend_dist/assets/{ChoiceField-7eU7c_rI.js → ChoiceField-B3ReQHVe.js} +1 -1
- modoboa/frontend_dist/assets/ComposeEmailForm-Bs1fZXAL.js +1 -0
- modoboa/frontend_dist/assets/ComposeEmailView-s3LMl3pO.js +1 -0
- modoboa/frontend_dist/assets/ConfirmDialog-DY_kUHLG.js +1 -0
- modoboa/frontend_dist/assets/{ConnectedLayout-BaJZ3BeR.css → ConnectedLayout-Bxh21hcH.css} +1 -1
- modoboa/frontend_dist/assets/ConnectedLayout-UWjiYBNw.js +1 -0
- modoboa/frontend_dist/assets/CreationForm-ORg3fazt.js +1 -0
- modoboa/frontend_dist/assets/DashboardView-Dplk9itS.js +1 -0
- modoboa/frontend_dist/assets/{DashboardView-BLlMi6Qb.css → DashboardView-gwwVAPvt.css} +1 -1
- modoboa/frontend_dist/assets/DomainAdminList-DVn9x0rB.js +1 -0
- modoboa/frontend_dist/assets/DomainEditView-nAoL64D_.js +1 -0
- modoboa/frontend_dist/assets/{DomainTransportForm-DPnPGBOp.js → DomainTransportForm-CA-DNUxX.js} +1 -1
- modoboa/frontend_dist/assets/{DomainView-BDKoBFYr.css → DomainView-CCLYXPHx.css} +1 -1
- modoboa/frontend_dist/assets/DomainView-CdXPpwJG.js +5 -0
- modoboa/frontend_dist/assets/DomainsView-B_59gowf.js +1 -0
- modoboa/frontend_dist/assets/DomainsView-DZ-ss9bI.css +1 -0
- modoboa/frontend_dist/assets/EmailField-CwcwI5xW.js +1 -0
- modoboa/frontend_dist/assets/EmailView-BshxcfAK.js +1 -0
- modoboa/frontend_dist/assets/EmptyLayout-DFfhnhLi.js +1 -0
- modoboa/frontend_dist/assets/FiltersView-Cf20MSTK.js +1 -0
- modoboa/frontend_dist/assets/ForwardEmailView-CZG062os.js +1 -0
- modoboa/frontend_dist/assets/{HtmlEditor-uM4AtIGi.js → HtmlEditor-Bh4c689R.js} +1 -1
- modoboa/frontend_dist/assets/IdentitiesView-BXAuU1YX.js +1 -0
- modoboa/frontend_dist/assets/{IdentitiesView-jmuItyMZ.css → IdentitiesView-DPrrRMS5.css} +1 -1
- modoboa/frontend_dist/assets/InformationView-C9vvvQhJ.css +1 -0
- modoboa/frontend_dist/assets/InformationView-Cn5FZW7H.js +1 -0
- modoboa/frontend_dist/assets/{LoadingData-CVD2Aen8.js → LoadingData-CdVvm4FI.js} +1 -1
- modoboa/frontend_dist/assets/{LoginCallbackView-sWzBke1g.js → LoginCallbackView-B9hAH4MI.js} +1 -1
- modoboa/frontend_dist/assets/{LoginView-wmN73W0f.js → LoginView-tHIR4Adc.js} +1 -1
- modoboa/frontend_dist/assets/MailboxView-Bugu2vhg.js +1 -0
- modoboa/frontend_dist/assets/MenuItems-PXjiG-fs.js +1 -0
- modoboa/frontend_dist/assets/MessageView-Cy4STShm.js +1 -0
- modoboa/frontend_dist/assets/MessagesView-DdkuEgfX.js +1 -0
- modoboa/frontend_dist/assets/MigrationsView-CidSEjCF.js +1 -0
- modoboa/frontend_dist/assets/{ParametersForm-BCeQljir.js → ParametersForm-CAv4SH-E.js} +1 -1
- modoboa/frontend_dist/assets/ParametersView-CX7Ffemw.js +1 -0
- modoboa/frontend_dist/assets/ParametersView-CrbNcmV3.js +1 -0
- modoboa/frontend_dist/assets/ProviderEditView-CrltAQXl.js +1 -0
- modoboa/frontend_dist/assets/ProviderGeneralForm-BYAzVnXM.js +1 -0
- modoboa/frontend_dist/assets/ProvidersView-osjIY4Ex.js +1 -0
- modoboa/frontend_dist/assets/QuarantineLayout-B8EcU9vS.js +1 -0
- modoboa/frontend_dist/assets/QuarantineView-D4gOE4EQ.css +1 -0
- modoboa/frontend_dist/assets/QuarantineView-D8Qg0MXA.js +1 -0
- modoboa/frontend_dist/assets/ReplyEmailView-BABPqWhd.js +1 -0
- modoboa/frontend_dist/assets/ResourcesForm-OaqdRYVs.js +1 -0
- modoboa/frontend_dist/assets/SelfServiceLayout-d277YTGR.js +1 -0
- modoboa/frontend_dist/assets/SettingsView-9iNcDhkI.js +6 -0
- modoboa/frontend_dist/assets/StatisticsView-cHsPyGkL.js +1 -0
- modoboa/frontend_dist/assets/TimeSerieChart--V83dcJ9.js +1 -0
- modoboa/frontend_dist/assets/UserLayout-B3sBiTcZ.js +1 -0
- modoboa/frontend_dist/assets/VAlert-BuaaYN2h.js +1 -0
- modoboa/frontend_dist/assets/VApp-CKP-6zGP.js +1 -0
- modoboa/frontend_dist/assets/VAutocomplete-Dwv6_Rzq.js +1 -0
- modoboa/frontend_dist/assets/VAvatar-Cmga0vj6.js +1 -0
- modoboa/frontend_dist/assets/VBadge-BQrRJ9S0.css +1 -0
- modoboa/frontend_dist/assets/VBadge-CixeK87a.js +1 -0
- modoboa/frontend_dist/assets/VCard-CxH9DWoK.js +1 -0
- modoboa/frontend_dist/assets/VCheckbox-62GOpvvP.js +1 -0
- modoboa/frontend_dist/assets/{VCheckboxBtn-j7di4leN.js → VCheckboxBtn-DMoNtKT8.js} +1 -1
- modoboa/frontend_dist/assets/VChip-D_styETR.js +1 -0
- modoboa/frontend_dist/assets/VColorPicker-BHscBGQV.js +1 -0
- modoboa/frontend_dist/assets/VContainer-B46caNs1.js +1 -0
- modoboa/frontend_dist/assets/VDataTable-Bh8NbVSx.js +1 -0
- modoboa/frontend_dist/assets/VDataTableServer-BDR5hOmo.js +1 -0
- modoboa/frontend_dist/assets/VDataTableVirtual-BOQlNtIG.js +1 -0
- modoboa/frontend_dist/assets/{VDialog-CZqM2Ofu.js → VDialog-BcTg7w6P.js} +1 -1
- modoboa/frontend_dist/assets/VExpansionPanels-BmH5Jl2Z.js +1 -0
- modoboa/frontend_dist/assets/VFileInput-BC4yAygd.js +1 -0
- modoboa/frontend_dist/assets/VForm-D5iPGkde.js +1 -0
- modoboa/frontend_dist/assets/VInput-CcxkaOXT.css +1 -0
- modoboa/frontend_dist/assets/VInput-CoDJzvaW.js +1 -0
- modoboa/frontend_dist/assets/VMenu-gUG70-zD.js +1 -0
- modoboa/frontend_dist/assets/VPicker-BXuKT3zB.js +1 -0
- modoboa/frontend_dist/assets/VProgressCircular-BtOPiGCg.js +1 -0
- modoboa/frontend_dist/assets/VRadioGroup-DIFZKSn-.js +1 -0
- modoboa/frontend_dist/assets/{VRow-C_Ydf6yr.js → VRow-ozg66L7j.js} +1 -1
- modoboa/frontend_dist/assets/VSelect-C3RjAa45.js +1 -0
- modoboa/frontend_dist/assets/VSelectionControl-zyz-fJvC.js +1 -0
- modoboa/frontend_dist/assets/VSheet-BNx2X4Mk.js +1 -0
- modoboa/frontend_dist/assets/VSpacer-DinPiXs9.js +1 -0
- modoboa/frontend_dist/assets/VSwitch-DwxdeAEq.js +1 -0
- modoboa/frontend_dist/assets/VTable-DaLxa4FO.js +1 -0
- modoboa/frontend_dist/assets/VTabs-BP0Hgsgm.js +1 -0
- modoboa/frontend_dist/assets/VTextField-BzBVKKob.css +1 -0
- modoboa/frontend_dist/assets/VTextField-XoGTj1KG.js +1 -0
- modoboa/frontend_dist/assets/VTextarea-wBlRMIv_.js +1 -0
- modoboa/frontend_dist/assets/VToolbar-CFZfqeOr.js +1 -0
- modoboa/frontend_dist/assets/VWindowItem-BB7ETW3b.js +1 -0
- modoboa/frontend_dist/assets/WebmailLayout-_Hk1XhVq.js +1 -0
- modoboa/frontend_dist/assets/accounts-DUzbx6k8.js +1 -0
- modoboa/frontend_dist/assets/admin-DewTk2H8.js +1 -0
- modoboa/frontend_dist/assets/{aliases-c3n-dCV_.js → aliases-4sXmjwXp.js} +1 -1
- modoboa/frontend_dist/assets/amavis-CC0li7_T.js +1 -0
- modoboa/frontend_dist/assets/amavis-DK8SHE6o.js +1 -0
- modoboa/frontend_dist/assets/{contacts-Bqckz8sr.js → contacts-BjghrPqZ.js} +1 -1
- modoboa/frontend_dist/assets/{domains-nBMR-fRf.js → domains-BSawReeu.js} +1 -1
- modoboa/frontend_dist/assets/{domains.store-ChZgLcqP.js → domains.store-D-vWCEIK.js} +1 -1
- modoboa/frontend_dist/assets/{filter-D7NrAf6a.js → filter-C82FUCw_.js} +1 -1
- modoboa/frontend_dist/assets/forwardRefs-cvcnlhoK.js +1 -0
- modoboa/frontend_dist/assets/global.store-DbkcI5o2.js +1 -0
- modoboa/frontend_dist/assets/{importExport-Dn9vYw7T.js → importExport-DzoL4Mvc.js} +1 -1
- modoboa/frontend_dist/assets/index-BImkz5Jx.js +984 -0
- modoboa/frontend_dist/assets/index-DuzUMVLM.js +1 -0
- modoboa/frontend_dist/assets/layout-C5FyYCHK.js +1 -0
- modoboa/frontend_dist/assets/{layout.store-BxBoBlgf.js → layout.store-NXWtFIwL.js} +1 -1
- modoboa/frontend_dist/assets/logos-BswdveCV.js +1 -0
- modoboa/frontend_dist/assets/{logs-DrTzylW7.js → logs-6CbtfaZS.js} +1 -1
- modoboa/frontend_dist/assets/{parameters-Lgiqp7aw.js → parameters-aSQiR7kN.js} +1 -1
- modoboa/frontend_dist/assets/{parameters.store-C9k9DuTj.js → parameters.store-CzQqVatx.js} +1 -1
- modoboa/frontend_dist/assets/permissions-DNoefz-n.js +1 -0
- modoboa/frontend_dist/assets/{ssrBoot-BsxW6uW4.js → ssrBoot-CKUX4kcb.js} +1 -1
- modoboa/frontend_dist/assets/{tag-CFK9dzMJ.js → tag-B_yWNNJD.js} +1 -1
- modoboa/frontend_dist/assets/transports-BDNB9wR5.js +1 -0
- modoboa/frontend_dist/assets/{webmail-KrD8ZhNM.js → webmail-CdU6CD9b.js} +1 -1
- modoboa/frontend_dist/index.html +1 -1
- modoboa/lib/email_utils.py +2 -2
- modoboa/lib/permissions.py +7 -0
- modoboa/lib/redis.py +1 -5
- modoboa/lib/test_runners.py +29 -0
- modoboa/lib/tests/__init__.py +5 -1
- modoboa/locale/br/LC_MESSAGES/django.po +87 -75
- modoboa/locale/cs/LC_MESSAGES/django.po +82 -74
- modoboa/locale/cs_CZ/LC_MESSAGES/django.po +145 -121
- modoboa/locale/de/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/de/LC_MESSAGES/django.po +339 -651
- modoboa/locale/de_DE/LC_MESSAGES/django.po +87 -75
- modoboa/locale/el_GR/LC_MESSAGES/django.po +160 -135
- modoboa/locale/en/LC_MESSAGES/django.po +82 -74
- modoboa/locale/es/LC_MESSAGES/django.po +158 -131
- modoboa/locale/es_MX/LC_MESSAGES/django.po +82 -74
- modoboa/locale/fi/LC_MESSAGES/django.po +87 -75
- modoboa/locale/fr/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/fr/LC_MESSAGES/django.po +469 -201
- modoboa/locale/hu/LC_MESSAGES/django.po +82 -74
- modoboa/locale/it/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/it/LC_MESSAGES/django.po +148 -122
- modoboa/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/ja_JP/LC_MESSAGES/django.po +201 -334
- modoboa/locale/ka/LC_MESSAGES/django.po +82 -74
- modoboa/locale/nl_NL/LC_MESSAGES/django.po +160 -132
- modoboa/locale/no/LC_MESSAGES/django.po +82 -74
- modoboa/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/pl_PL/LC_MESSAGES/django.po +172 -149
- modoboa/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/pt_BR/LC_MESSAGES/django.po +172 -144
- modoboa/locale/pt_PT/LC_MESSAGES/django.po +135 -112
- modoboa/locale/ro_RO/LC_MESSAGES/django.po +87 -75
- modoboa/locale/ru/LC_MESSAGES/django.po +142 -118
- modoboa/locale/si/LC_MESSAGES/django.po +82 -74
- modoboa/locale/sk/LC_MESSAGES/django.po +82 -74
- modoboa/locale/sk_SK/LC_MESSAGES/django.po +84 -76
- modoboa/locale/sl_SI/LC_MESSAGES/django.po +90 -76
- modoboa/locale/sv/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/sv/LC_MESSAGES/django.po +172 -139
- modoboa/locale/tr/LC_MESSAGES/django.po +87 -75
- modoboa/locale/tr_TR/LC_MESSAGES/django.po +84 -74
- modoboa/locale/uk/LC_MESSAGES/django.po +82 -74
- modoboa/locale/zh/LC_MESSAGES/django.po +82 -74
- modoboa/locale/zh_CN/LC_MESSAGES/django.po +82 -74
- modoboa/locale/zh_TW/LC_MESSAGES/django.po +87 -75
- modoboa/parameters/api/v2/tests.py +2 -2
- modoboa/parameters/api/v2/viewsets.py +2 -0
- modoboa/policyd/tests.py +2 -0
- modoboa/urls_api_v2.py +6 -0
- {modoboa-2.4.10.dist-info → modoboa-2.5.0.dist-info}/METADATA +6 -4
- {modoboa-2.4.10.dist-info → modoboa-2.5.0.dist-info}/RECORD +244 -193
- modoboa/frontend_dist/assets/AccountAliasForm-DVXatAhB.js +0 -1
- modoboa/frontend_dist/assets/AccountEditView-DmvQjxpx.js +0 -1
- modoboa/frontend_dist/assets/AccountLayout-OGtZvlHR.js +0 -1
- modoboa/frontend_dist/assets/AccountPasswordSubForm-g3IEGrgM.js +0 -1
- modoboa/frontend_dist/assets/AccountView-DsxYqr3k.js +0 -1
- modoboa/frontend_dist/assets/AddressBook-3RoKiKon.js +0 -1
- modoboa/frontend_dist/assets/AdminLayout-CWfn8zaQ.js +0 -1
- modoboa/frontend_dist/assets/AlarmsView-Bheey-gp.css +0 -1
- modoboa/frontend_dist/assets/AlarmsView-D3Mh8ntf.js +0 -1
- modoboa/frontend_dist/assets/AliasEditView-C15eUZ11.js +0 -1
- modoboa/frontend_dist/assets/AliasView-Cyvc5vMb.js +0 -1
- modoboa/frontend_dist/assets/AuditTrailView-LI2XuLLn.js +0 -1
- modoboa/frontend_dist/assets/CalendarView-BpOlPh3f.js +0 -1
- modoboa/frontend_dist/assets/ComposeEmailForm-CNfI7ept.js +0 -1
- modoboa/frontend_dist/assets/ComposeEmailView-B866Xsrc.js +0 -1
- modoboa/frontend_dist/assets/ConfirmDialog-BvqxQsD1.js +0 -1
- modoboa/frontend_dist/assets/ConnectedLayout-BQ3ug6Jh.js +0 -1
- modoboa/frontend_dist/assets/CreationForm-C9Kh05ax.js +0 -1
- modoboa/frontend_dist/assets/DashboardView-Cw-gIcuB.js +0 -1
- modoboa/frontend_dist/assets/DomainAdminList-CsWUNKVk.js +0 -1
- modoboa/frontend_dist/assets/DomainEditView-DocxeOeW.js +0 -1
- modoboa/frontend_dist/assets/DomainView-Djc_0PsF.js +0 -5
- modoboa/frontend_dist/assets/DomainsView-B-Lxru7P.js +0 -1
- modoboa/frontend_dist/assets/DomainsView-DasJ0NdZ.css +0 -1
- modoboa/frontend_dist/assets/EmailField-BEKxuYni.js +0 -1
- modoboa/frontend_dist/assets/EmailView-BsR1Wes5.js +0 -1
- modoboa/frontend_dist/assets/EmptyLayout-BzPFOeLU.js +0 -1
- modoboa/frontend_dist/assets/FiltersView-5rmpC5cC.js +0 -1
- modoboa/frontend_dist/assets/ForwardEmailView-D7MbetcT.js +0 -1
- modoboa/frontend_dist/assets/IdentitiesView-BqjD9Lue.js +0 -1
- modoboa/frontend_dist/assets/InformationView-CghcvPn2.js +0 -1
- modoboa/frontend_dist/assets/InformationView-U5Ww-Sx1.css +0 -1
- modoboa/frontend_dist/assets/MailboxView-T_p-_ZtJ.js +0 -1
- modoboa/frontend_dist/assets/MenuItems-kHCMzR5E.js +0 -1
- modoboa/frontend_dist/assets/MessagesView-Cerv3xsy.js +0 -1
- modoboa/frontend_dist/assets/MigrationsView-7kjqPyYU.js +0 -1
- modoboa/frontend_dist/assets/ParametersView-DspBxVMV.js +0 -1
- modoboa/frontend_dist/assets/ParametersView-Dy0H5ep1.js +0 -1
- modoboa/frontend_dist/assets/ProviderEditView-DDLMOylC.js +0 -1
- modoboa/frontend_dist/assets/ProviderGeneralForm-BwOSKNHK.js +0 -1
- modoboa/frontend_dist/assets/ProvidersView-C99UD0WB.js +0 -1
- modoboa/frontend_dist/assets/ReplyEmailView-DAPBHldd.js +0 -1
- modoboa/frontend_dist/assets/ResourcesForm-D87PHeH0.js +0 -1
- modoboa/frontend_dist/assets/SettingsView-OxDo9wNd.js +0 -6
- modoboa/frontend_dist/assets/StatisticsView-CM__Eqku.js +0 -1
- modoboa/frontend_dist/assets/TimeSerieChart-C6j0uYR_.js +0 -1
- modoboa/frontend_dist/assets/UserLayout-CckCGnPS.js +0 -1
- modoboa/frontend_dist/assets/VAlert-B7mzOJIO.js +0 -1
- modoboa/frontend_dist/assets/VApp-BKxnjOoi.js +0 -1
- modoboa/frontend_dist/assets/VAutocomplete-Cc4_tcl1.js +0 -1
- modoboa/frontend_dist/assets/VAvatar-BAgTUIvX.js +0 -1
- modoboa/frontend_dist/assets/VCard-DFWiFORP.js +0 -1
- modoboa/frontend_dist/assets/VCheckbox-CKsH_vq3.js +0 -1
- modoboa/frontend_dist/assets/VChip-nZ0uhY7t.js +0 -1
- modoboa/frontend_dist/assets/VColorPicker-Os2aeP6J.js +0 -1
- modoboa/frontend_dist/assets/VContainer-Btam4lk2.js +0 -1
- modoboa/frontend_dist/assets/VDataTable-D_0_xJTl.js +0 -1
- modoboa/frontend_dist/assets/VDataTableServer-BWTt4Mzi.js +0 -1
- modoboa/frontend_dist/assets/VDataTableVirtual-BwVmkt4u.js +0 -1
- modoboa/frontend_dist/assets/VExpansionPanels-B5D6GOa3.js +0 -1
- modoboa/frontend_dist/assets/VFileInput-Cv9DIPki.js +0 -1
- modoboa/frontend_dist/assets/VForm-CpoZf60D.js +0 -1
- modoboa/frontend_dist/assets/VMenu-B_dVqOmo.js +0 -1
- modoboa/frontend_dist/assets/VPicker-CXkIGEze.js +0 -1
- modoboa/frontend_dist/assets/VProgressCircular-CrEXxs7k.js +0 -1
- modoboa/frontend_dist/assets/VRadioGroup-D8ypjYOO.js +0 -1
- modoboa/frontend_dist/assets/VSelect-CS51PDEt.js +0 -1
- modoboa/frontend_dist/assets/VSelectionControl-DiOqtY38.js +0 -1
- modoboa/frontend_dist/assets/VSheet-5VVWtHvs.js +0 -1
- modoboa/frontend_dist/assets/VSpacer-C6PZ3X24.js +0 -1
- modoboa/frontend_dist/assets/VSwitch-Chg5o-Cp.js +0 -1
- modoboa/frontend_dist/assets/VTable-KsiZ3cBz.js +0 -1
- modoboa/frontend_dist/assets/VTabs-tNrJIYO0.js +0 -1
- modoboa/frontend_dist/assets/VTextField-C-J20yj_.css +0 -1
- modoboa/frontend_dist/assets/VTextField-CLwRV0Cb.js +0 -1
- modoboa/frontend_dist/assets/VTextarea-Di8jbl8m.js +0 -1
- modoboa/frontend_dist/assets/VToolbar-CGwhgdmI.js +0 -1
- modoboa/frontend_dist/assets/VWindowItem-wWSFAGI-.js +0 -1
- modoboa/frontend_dist/assets/WebmailLayout-DsYThBrz.js +0 -1
- modoboa/frontend_dist/assets/admin-CJVLMHh9.js +0 -1
- modoboa/frontend_dist/assets/forwardRefs-Cpc3YYl6.js +0 -1
- modoboa/frontend_dist/assets/global.store-DUP26-A5.js +0 -1
- modoboa/frontend_dist/assets/index-DV9Li2cg.js +0 -852
- modoboa/frontend_dist/assets/index-DzL89N4E.js +0 -1
- modoboa/frontend_dist/assets/layout-CHO37cA6.js +0 -1
- modoboa/frontend_dist/assets/permissions-mL5hLHcW.js +0 -1
- modoboa/frontend_dist/assets/transports-TO08iTXJ.js +0 -1
- {modoboa-2.4.10.data → modoboa-2.5.0.data}/scripts/modoboa-admin.py +0 -0
- {modoboa-2.4.10.dist-info → modoboa-2.5.0.dist-info}/WHEEL +0 -0
- {modoboa-2.4.10.dist-info → modoboa-2.5.0.dist-info}/entry_points.txt +0 -0
- {modoboa-2.4.10.dist-info → modoboa-2.5.0.dist-info}/licenses/LICENSE +0 -0
- {modoboa-2.4.10.dist-info → modoboa-2.5.0.dist-info}/top_level.txt +0 -0
|
@@ -14,18 +14,15 @@ msgid ""
|
|
|
14
14
|
msgstr ""
|
|
15
15
|
"Project-Id-Version: Modoboa\n"
|
|
16
16
|
"Report-Msgid-Bugs-To: \n"
|
|
17
|
-
"POT-Creation-Date: 2025-
|
|
17
|
+
"POT-Creation-Date: 2025-08-28 09:41+0200\n"
|
|
18
18
|
"PO-Revision-Date: 2020-05-06 11:16+0000\n"
|
|
19
19
|
"Last-Translator: Antoine Nguyen <tonio@ngyn.org>\n"
|
|
20
|
-
"Language-Team: Russian (http://www.transifex.com/tonio/modoboa/language/"
|
|
21
|
-
"ru/)\n"
|
|
20
|
+
"Language-Team: Russian (http://www.transifex.com/tonio/modoboa/language/ru/)\n"
|
|
22
21
|
"Language: ru\n"
|
|
23
22
|
"MIME-Version: 1.0\n"
|
|
24
23
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
25
24
|
"Content-Transfer-Encoding: 8bit\n"
|
|
26
|
-
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
|
27
|
-
"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
|
|
28
|
-
"(n%100>=11 && n%100<=14)? 2 : 3);\n"
|
|
25
|
+
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
|
29
26
|
|
|
30
27
|
#: admin/api/v1/serializers.py:39
|
|
31
28
|
msgid ""
|
|
@@ -37,76 +34,77 @@ msgstr ""
|
|
|
37
34
|
msgid "Default quota in MB applied to mailboxes. A value of 0 means no quota."
|
|
38
35
|
msgstr ""
|
|
39
36
|
|
|
40
|
-
#: admin/api/v1/serializers.py:
|
|
37
|
+
#: admin/api/v1/serializers.py:94
|
|
41
38
|
#, fuzzy
|
|
42
39
|
msgid "domain alias with this name already exists"
|
|
43
40
|
msgstr "Синоним с таким именем уже есть"
|
|
44
41
|
|
|
45
|
-
#: admin/api/v1/serializers.py:
|
|
42
|
+
#: admin/api/v1/serializers.py:104
|
|
46
43
|
msgid "No authorized MX record found for this domain"
|
|
47
44
|
msgstr ""
|
|
48
45
|
|
|
49
|
-
#: admin/api/v1/serializers.py:
|
|
46
|
+
#: admin/api/v1/serializers.py:122
|
|
50
47
|
msgid "Cannot be greater than domain quota"
|
|
51
48
|
msgstr ""
|
|
52
49
|
|
|
53
|
-
#: admin/api/v1/serializers.py:
|
|
54
|
-
#: admin/api/v2/serializers.py:
|
|
50
|
+
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
|
|
51
|
+
#: admin/api/v2/serializers.py:564 admin/models/alias.py:44
|
|
55
52
|
#, fuzzy
|
|
56
53
|
#| msgid "Permissions"
|
|
57
54
|
msgid "Permission denied."
|
|
58
55
|
msgstr "Права"
|
|
59
56
|
|
|
60
|
-
#: admin/api/v1/serializers.py:
|
|
61
|
-
#: admin/api/v2/serializers.py:
|
|
62
|
-
#: core/api/v2/serializers.py:
|
|
57
|
+
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
|
|
58
|
+
#: admin/api/v2/serializers.py:486 core/api/v2/serializers.py:255
|
|
59
|
+
#: core/api/v2/serializers.py:257 core/api/v2/serializers.py:266
|
|
63
60
|
#: transport/backends.py:40
|
|
64
61
|
msgid "This field is required"
|
|
65
62
|
msgstr "Это поле обязательно для заполнеия"
|
|
66
63
|
|
|
67
|
-
#: admin/api/v1/serializers.py:
|
|
64
|
+
#: admin/api/v1/serializers.py:243
|
|
68
65
|
msgid ""
|
|
69
66
|
"List of administered domains (resellers and domain administrators only)."
|
|
70
67
|
msgstr ""
|
|
71
68
|
|
|
72
|
-
#: admin/api/v1/serializers.py:
|
|
69
|
+
#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:546
|
|
73
70
|
msgid "Not allowed for this role."
|
|
74
71
|
msgstr ""
|
|
75
72
|
|
|
76
|
-
#: admin/api/v1/serializers.py:
|
|
73
|
+
#: admin/api/v1/serializers.py:355
|
|
77
74
|
msgid "Must be equal to mailbox full_address"
|
|
78
75
|
msgstr ""
|
|
79
76
|
|
|
80
|
-
#: admin/api/v1/serializers.py:
|
|
77
|
+
#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:598
|
|
81
78
|
#: calendars/serializers.py:175 calendars/serializers.py:177
|
|
79
|
+
#: pdfcredentials/api/v2/serializers.py:91
|
|
82
80
|
#, fuzzy
|
|
83
81
|
#| msgid "A quota is required"
|
|
84
82
|
msgid "This field is required."
|
|
85
83
|
msgstr "Требуется квота"
|
|
86
84
|
|
|
87
|
-
#: admin/api/v1/serializers.py:
|
|
85
|
+
#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:615
|
|
88
86
|
#, fuzzy
|
|
89
87
|
#| msgid "Domain does not exist"
|
|
90
88
|
msgid "Local domain {} does not exist"
|
|
91
89
|
msgstr "Домен не существует"
|
|
92
90
|
|
|
93
|
-
#: admin/api/v1/serializers.py:
|
|
91
|
+
#: admin/api/v1/serializers.py:499
|
|
94
92
|
msgid "A list of recipient"
|
|
95
93
|
msgstr ""
|
|
96
94
|
|
|
97
|
-
#: admin/api/v1/serializers.py:
|
|
95
|
+
#: admin/api/v1/serializers.py:515 admin/api/v2/viewsets.py:286
|
|
98
96
|
#, fuzzy
|
|
99
97
|
#| msgid "User '%s' already exists"
|
|
100
98
|
msgid "This alias already exists"
|
|
101
99
|
msgstr "Пользователь '%s' уже существует"
|
|
102
100
|
|
|
103
|
-
#: admin/api/v1/serializers.py:
|
|
101
|
+
#: admin/api/v1/serializers.py:551
|
|
104
102
|
#, fuzzy
|
|
105
103
|
#| msgid "You don't have access to this domain"
|
|
106
104
|
msgid "You don't have access to this domain."
|
|
107
105
|
msgstr "Вы не имеете права доступа к этому домену"
|
|
108
106
|
|
|
109
|
-
#: admin/api/v1/serializers.py:
|
|
107
|
+
#: admin/api/v1/serializers.py:560
|
|
110
108
|
#, fuzzy
|
|
111
109
|
#| msgid "You don't have access to this domain"
|
|
112
110
|
msgid "You don't have access to this mailbox."
|
|
@@ -116,58 +114,58 @@ msgstr "Вы не имеете права доступа к этому доме
|
|
|
116
114
|
msgid "Here is your new Modoboa password: {}"
|
|
117
115
|
msgstr ""
|
|
118
116
|
|
|
119
|
-
#: admin/api/v2/serializers.py:
|
|
117
|
+
#: admin/api/v2/serializers.py:82
|
|
120
118
|
msgid "DKIM keys storage directory not configured"
|
|
121
119
|
msgstr ""
|
|
122
120
|
|
|
123
|
-
#: admin/api/v2/serializers.py:
|
|
121
|
+
#: admin/api/v2/serializers.py:94
|
|
124
122
|
msgid "This field is valid when type is relaydomain"
|
|
125
123
|
msgstr ""
|
|
126
124
|
|
|
127
|
-
#: admin/api/v2/serializers.py:
|
|
125
|
+
#: admin/api/v2/serializers.py:101
|
|
128
126
|
msgid "You can't define an unlimited quota."
|
|
129
127
|
msgstr ""
|
|
130
128
|
|
|
131
|
-
#: admin/api/v2/serializers.py:
|
|
129
|
+
#: admin/api/v2/serializers.py:135
|
|
132
130
|
#, python-format
|
|
133
131
|
msgid "User '%s' already exists"
|
|
134
132
|
msgstr "Пользователь '%s' уже существует"
|
|
135
133
|
|
|
136
|
-
#: admin/api/v2/serializers.py:
|
|
134
|
+
#: admin/api/v2/serializers.py:250 admin/api/v2/serializers.py:256
|
|
137
135
|
msgid "Must be a positive integer"
|
|
138
136
|
msgstr ""
|
|
139
137
|
|
|
140
|
-
#: admin/api/v2/serializers.py:
|
|
138
|
+
#: admin/api/v2/serializers.py:265
|
|
141
139
|
msgid "openssl not found, please make sure it is installed."
|
|
142
140
|
msgstr ""
|
|
143
141
|
|
|
144
|
-
#: admin/api/v2/serializers.py:
|
|
142
|
+
#: admin/api/v2/serializers.py:268 pdfcredentials/api/v2/serializers.py:84
|
|
145
143
|
#, fuzzy
|
|
146
144
|
#| msgid "Domain modified"
|
|
147
145
|
msgid "Directory not found."
|
|
148
146
|
msgstr "Домен изменен"
|
|
149
147
|
|
|
150
|
-
#: admin/api/v2/serializers.py:
|
|
148
|
+
#: admin/api/v2/serializers.py:279
|
|
151
149
|
msgid "This field only allows valid IP addresses (or networks)"
|
|
152
150
|
msgstr ""
|
|
153
151
|
|
|
154
|
-
#: admin/api/v2/serializers.py:
|
|
152
|
+
#: admin/api/v2/serializers.py:292
|
|
155
153
|
msgid "Please disable imap migration before disabling this option."
|
|
156
154
|
msgstr ""
|
|
157
155
|
|
|
158
|
-
#: admin/api/v2/serializers.py:
|
|
156
|
+
#: admin/api/v2/serializers.py:305
|
|
159
157
|
msgid "Define at least one authorized network / address"
|
|
160
158
|
msgstr ""
|
|
161
159
|
|
|
162
|
-
#: admin/api/v2/serializers.py:
|
|
160
|
+
#: admin/api/v2/serializers.py:581
|
|
163
161
|
msgid "The left part of an email address can't be more than 64 characters."
|
|
164
162
|
msgstr ""
|
|
165
163
|
|
|
166
|
-
#: admin/api/v2/serializers.py:
|
|
164
|
+
#: admin/api/v2/serializers.py:603
|
|
167
165
|
msgid "A mailbox is required to create aliases."
|
|
168
166
|
msgstr ""
|
|
169
167
|
|
|
170
|
-
#: admin/api/v2/serializers.py:
|
|
168
|
+
#: admin/api/v2/serializers.py:772
|
|
171
169
|
#, fuzzy
|
|
172
170
|
#| msgid "Unknown"
|
|
173
171
|
msgid "Unknown status"
|
|
@@ -181,14 +179,6 @@ msgstr "Вы не имеете права доступа к этому доме
|
|
|
181
179
|
msgid "You can't delete your own domain"
|
|
182
180
|
msgstr "Вы не можете удалить собственный домен"
|
|
183
181
|
|
|
184
|
-
#: admin/api/v2/viewsets.py:407
|
|
185
|
-
msgid "No alarm ID provided"
|
|
186
|
-
msgstr ""
|
|
187
|
-
|
|
188
|
-
#: admin/api/v2/viewsets.py:411
|
|
189
|
-
msgid "Received invalid alarm id(s)"
|
|
190
|
-
msgstr ""
|
|
191
|
-
|
|
192
182
|
#: admin/app_settings.py:19 limits/app_settings.py:38 limits/constants.py:13
|
|
193
183
|
msgid "Domains"
|
|
194
184
|
msgstr "Домены"
|
|
@@ -207,8 +197,8 @@ msgstr ""
|
|
|
207
197
|
|
|
208
198
|
#: admin/app_settings.py:37
|
|
209
199
|
msgid ""
|
|
210
|
-
"A list of IP or network address every MX record should match. A warning will
|
|
211
|
-
"be sent if a record does not respect it."
|
|
200
|
+
"A list of IP or network address every MX record should match. A warning will"
|
|
201
|
+
" be sent if a record does not respect it."
|
|
212
202
|
msgstr ""
|
|
213
203
|
|
|
214
204
|
#: admin/app_settings.py:47
|
|
@@ -368,7 +358,8 @@ msgid "Automatic domain/mailbox creation"
|
|
|
368
358
|
msgstr "Домен создан"
|
|
369
359
|
|
|
370
360
|
#: admin/app_settings.py:221
|
|
371
|
-
msgid "
|
|
361
|
+
msgid ""
|
|
362
|
+
"Create a domain and a mailbox when an account is automatically created."
|
|
372
363
|
msgstr ""
|
|
373
364
|
|
|
374
365
|
#: admin/app_settings.py:230
|
|
@@ -379,7 +370,7 @@ msgstr ""
|
|
|
379
370
|
msgid "Create an alias using the old address when a mailbox is renamed."
|
|
380
371
|
msgstr ""
|
|
381
372
|
|
|
382
|
-
#: admin/app_settings.py:287 core/api/v2/viewsets.py:
|
|
373
|
+
#: admin/app_settings.py:287 core/api/v2/viewsets.py:174
|
|
383
374
|
msgid "Administration"
|
|
384
375
|
msgstr ""
|
|
385
376
|
|
|
@@ -410,7 +401,7 @@ msgstr ""
|
|
|
410
401
|
msgid "Account import failed (%s): domain does not exist"
|
|
411
402
|
msgstr "Ошибка импорта аккаунта (%s): домен должен существовать "
|
|
412
403
|
|
|
413
|
-
#: admin/handlers.py:242 admin/models/mailbox.py:
|
|
404
|
+
#: admin/handlers.py:242 admin/models/mailbox.py:342
|
|
414
405
|
#, fuzzy
|
|
415
406
|
#| msgid "Mailbox %s already exists"
|
|
416
407
|
msgid "Mailbox {} already exists"
|
|
@@ -690,7 +681,7 @@ msgstr "Требуется квота"
|
|
|
690
681
|
msgid "{}: domain quota exceeded"
|
|
691
682
|
msgstr "Домен создан"
|
|
692
683
|
|
|
693
|
-
#: admin/models/mailbox.py:
|
|
684
|
+
#: admin/models/mailbox.py:310
|
|
694
685
|
msgid "Domain does not exist"
|
|
695
686
|
msgstr "Домен не существует"
|
|
696
687
|
|
|
@@ -751,13 +742,15 @@ msgstr "Основные"
|
|
|
751
742
|
|
|
752
743
|
#: autoreply/app_settings.py:18
|
|
753
744
|
#, fuzzy
|
|
754
|
-
#| msgid "
|
|
745
|
+
#| msgid ""
|
|
746
|
+
#| "Timeout in seconds between two auto-replies to the same recipient"
|
|
755
747
|
msgid "Period between two auto-replies"
|
|
756
748
|
msgstr "Промежуток между автоматическими ответами"
|
|
757
749
|
|
|
758
750
|
#: autoreply/app_settings.py:20
|
|
759
751
|
#, fuzzy
|
|
760
|
-
#| msgid "
|
|
752
|
+
#| msgid ""
|
|
753
|
+
#| "Timeout in seconds between two auto-replies to the same recipient"
|
|
761
754
|
msgid ""
|
|
762
755
|
"Number of days to wait before sending a new auto-reply to the same recipient"
|
|
763
756
|
msgstr "Промежуток между автоматическими ответами"
|
|
@@ -861,7 +854,7 @@ msgid ""
|
|
|
861
854
|
"Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
|
|
862
855
|
msgstr ""
|
|
863
856
|
|
|
864
|
-
#: calendars/app_settings.py:89 core/api/v2/viewsets.py:
|
|
857
|
+
#: calendars/app_settings.py:89 core/api/v2/viewsets.py:195
|
|
865
858
|
msgid "Calendars"
|
|
866
859
|
msgstr ""
|
|
867
860
|
|
|
@@ -895,7 +888,7 @@ msgstr ""
|
|
|
895
888
|
msgid "Interval in seconds between 2 synchronization requests"
|
|
896
889
|
msgstr ""
|
|
897
890
|
|
|
898
|
-
#: contacts/app_settings.py:51 core/api/v2/viewsets.py:
|
|
891
|
+
#: contacts/app_settings.py:51 core/api/v2/viewsets.py:185
|
|
899
892
|
#, fuzzy
|
|
900
893
|
#| msgid "Domains"
|
|
901
894
|
msgid "Contacts"
|
|
@@ -949,12 +942,12 @@ msgstr "Ошибочный запрос"
|
|
|
949
942
|
msgid "2FA is already enabled"
|
|
950
943
|
msgstr ""
|
|
951
944
|
|
|
952
|
-
#: core/api/v1/serializers.py:
|
|
945
|
+
#: core/api/v1/serializers.py:86
|
|
953
946
|
#, python-format
|
|
954
|
-
msgid "Failed TFA settings editing attempt from '%s' as user '%s'"
|
|
947
|
+
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
|
|
955
948
|
msgstr ""
|
|
956
949
|
|
|
957
|
-
#: core/api/v1/serializers.py:91 core/api/v2/serializers.py:
|
|
950
|
+
#: core/api/v1/serializers.py:91 core/api/v2/serializers.py:445
|
|
958
951
|
#, fuzzy
|
|
959
952
|
#| msgid "Old password"
|
|
960
953
|
msgid "Invalid password"
|
|
@@ -968,44 +961,45 @@ msgstr ""
|
|
|
968
961
|
msgid "Local"
|
|
969
962
|
msgstr "Локальный"
|
|
970
963
|
|
|
971
|
-
#: core/api/v2/serializers.py:
|
|
964
|
+
#: core/api/v2/serializers.py:194 core/app_settings.py:17
|
|
972
965
|
msgid "User profile"
|
|
973
966
|
msgstr "Профиль пользователя"
|
|
974
967
|
|
|
975
|
-
#: core/api/v2/serializers.py:
|
|
976
|
-
#: core/api/v2/serializers.py:
|
|
968
|
+
#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
|
|
969
|
+
#: core/api/v2/serializers.py:228
|
|
977
970
|
msgid "Invalid syntax"
|
|
978
971
|
msgstr "Ошибка в написании"
|
|
979
972
|
|
|
980
|
-
#: core/api/v2/serializers.py:
|
|
973
|
+
#: core/api/v2/serializers.py:233
|
|
981
974
|
msgid "Invalid rounds number"
|
|
982
975
|
msgstr "Неправильное количество циклов"
|
|
983
976
|
|
|
984
|
-
#: core/api/v2/serializers.py:
|
|
977
|
+
#: core/api/v2/serializers.py:433 core/forms.py:81
|
|
985
978
|
msgid "This code is invalid"
|
|
986
979
|
msgstr ""
|
|
987
980
|
|
|
988
|
-
#: core/api/v2/serializers.py:
|
|
981
|
+
#: core/api/v2/serializers.py:503 core/views/auth.py:194
|
|
982
|
+
#: core/views/auth.py:247
|
|
989
983
|
msgid "Please use the following code to recover your Modoboa password: {}"
|
|
990
984
|
msgstr ""
|
|
991
985
|
|
|
992
|
-
#: core/api/v2/viewsets.py:
|
|
986
|
+
#: core/api/v2/viewsets.py:176
|
|
993
987
|
#, fuzzy
|
|
994
988
|
#| msgid "Administrators"
|
|
995
989
|
msgid "Administration console"
|
|
996
990
|
msgstr "Администраторы"
|
|
997
991
|
|
|
998
|
-
#: core/api/v2/viewsets.py:
|
|
999
|
-
msgid "Calendar"
|
|
1000
|
-
msgstr ""
|
|
1001
|
-
|
|
1002
|
-
#: core/api/v2/viewsets.py:181
|
|
992
|
+
#: core/api/v2/viewsets.py:187
|
|
1003
993
|
#, fuzzy
|
|
1004
994
|
#| msgid "Address"
|
|
1005
995
|
msgid "Address book"
|
|
1006
996
|
msgstr "Адрес"
|
|
1007
997
|
|
|
1008
|
-
#: core/api/v2/viewsets.py:
|
|
998
|
+
#: core/api/v2/viewsets.py:197
|
|
999
|
+
msgid "Calendar"
|
|
1000
|
+
msgstr ""
|
|
1001
|
+
|
|
1002
|
+
#: core/api/v2/viewsets.py:205 core/api/v2/viewsets.py:207
|
|
1009
1003
|
#: webmail/app_settings.py:258 webmail/app_settings.py:265
|
|
1010
1004
|
#, fuzzy
|
|
1011
1005
|
#| msgid "E-mail"
|
|
@@ -1041,8 +1035,8 @@ msgid ""
|
|
|
1041
1035
|
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
|
|
1042
1036
|
"between 1000 and 999999999, inclusive."
|
|
1043
1037
|
msgstr ""
|
|
1044
|
-
"Количество циклов (используется только для sha256crypt и sha512crypt), Может
|
|
1045
|
-
"быть от 1000 до 999999999, включительно."
|
|
1038
|
+
"Количество циклов (используется только для sha256crypt и sha512crypt), Может"
|
|
1039
|
+
" быть от 1000 до 999999999, включительно."
|
|
1046
1040
|
|
|
1047
1041
|
#: core/app_settings.py:73
|
|
1048
1042
|
msgid "Update password scheme at login"
|
|
@@ -1187,8 +1181,8 @@ msgstr "Администратор груп"
|
|
|
1187
1181
|
|
|
1188
1182
|
#: core/app_settings.py:239
|
|
1189
1183
|
msgid ""
|
|
1190
|
-
"Members of those LDAP Posix groups will be created as domain administrators.
|
|
1191
|
-
"Use ';' characters to separate groups."
|
|
1184
|
+
"Members of those LDAP Posix groups will be created as domain administrators."
|
|
1185
|
+
" Use ';' characters to separate groups."
|
|
1192
1186
|
msgstr ""
|
|
1193
1187
|
"Члены этих LDAP Posix групп должны быть созданы администратором домена. "
|
|
1194
1188
|
"Используйте ';' для как разделитель груп"
|
|
@@ -1266,8 +1260,8 @@ msgid ""
|
|
|
1266
1260
|
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
|
|
1267
1261
|
"valid, it must be enclosed in parentheses."
|
|
1268
1262
|
msgstr ""
|
|
1269
|
-
"Необязательная срока поиска (например '(objectClass=person)') Значение нужно
|
|
1270
|
-
"заключить в скобки"
|
|
1263
|
+
"Необязательная срока поиска (например '(objectClass=person)') Значение нужно"
|
|
1264
|
+
" заключить в скобки"
|
|
1271
1265
|
|
|
1272
1266
|
#: core/app_settings.py:339
|
|
1273
1267
|
msgid "User DN template"
|
|
@@ -1279,8 +1273,8 @@ msgid ""
|
|
|
1279
1273
|
"The template used to construct a user's DN. It should contain one "
|
|
1280
1274
|
"placeholder (ie. %(user)s)"
|
|
1281
1275
|
msgstr ""
|
|
1282
|
-
"Шаблон используется для построения запросов к DN Он должен содержать атрибут
|
|
1283
|
-
"например (%(user)s)"
|
|
1276
|
+
"Шаблон используется для построения запросов к DN Он должен содержать атрибут"
|
|
1277
|
+
" например (%(user)s)"
|
|
1284
1278
|
|
|
1285
1279
|
#: core/app_settings.py:350
|
|
1286
1280
|
msgid "LDAP synchronization settings"
|
|
@@ -1375,7 +1369,8 @@ msgstr ""
|
|
|
1375
1369
|
|
|
1376
1370
|
#: core/app_settings.py:506
|
|
1377
1371
|
#, fuzzy
|
|
1378
|
-
#| msgid "
|
|
1372
|
+
#| msgid ""
|
|
1373
|
+
#| "Display custom RSS feed to resellers and domain administrators"
|
|
1379
1374
|
msgid "Display custom RSS feed to super admins"
|
|
1380
1375
|
msgstr ""
|
|
1381
1376
|
"Отображать пользовательскую ленту RSS для реселлеров и администраторов "
|
|
@@ -1383,7 +1378,8 @@ msgstr ""
|
|
|
1383
1378
|
|
|
1384
1379
|
#: core/app_settings.py:509
|
|
1385
1380
|
#, fuzzy
|
|
1386
|
-
#| msgid "
|
|
1381
|
+
#| msgid ""
|
|
1382
|
+
#| "Display custom RSS feed to resellers and domain administrators"
|
|
1387
1383
|
msgid "Display custom RSS feed also to super administrators"
|
|
1388
1384
|
msgstr ""
|
|
1389
1385
|
"Отображать пользовательскую ленту RSS для реселлеров и администраторов "
|
|
@@ -1395,7 +1391,8 @@ msgstr "Спрятать виджет новых функций"
|
|
|
1395
1391
|
|
|
1396
1392
|
#: core/app_settings.py:519
|
|
1397
1393
|
msgid "Hide features widget for resellers and domain administrators"
|
|
1398
|
-
msgstr "
|
|
1394
|
+
msgstr ""
|
|
1395
|
+
"Спрятать виджет новых функций для реселлеров и администраторов доменов"
|
|
1399
1396
|
|
|
1400
1397
|
#: core/app_settings.py:531
|
|
1401
1398
|
msgid "Theme"
|
|
@@ -1505,8 +1502,8 @@ msgstr "Порог неактивного аккаунта"
|
|
|
1505
1502
|
|
|
1506
1503
|
#: core/app_settings.py:686
|
|
1507
1504
|
msgid ""
|
|
1508
|
-
"Allow the administrator to set a threshold (in days) beyond which an account
|
|
1509
|
-
"is considered inactive if the user hasn't logged in"
|
|
1505
|
+
"Allow the administrator to set a threshold (in days) beyond which an account"
|
|
1506
|
+
" is considered inactive if the user hasn't logged in"
|
|
1510
1507
|
msgstr ""
|
|
1511
1508
|
|
|
1512
1509
|
#: core/app_settings.py:695
|
|
@@ -1515,8 +1512,8 @@ msgstr "Порог неактивного аккаунта"
|
|
|
1515
1512
|
|
|
1516
1513
|
#: core/app_settings.py:698
|
|
1517
1514
|
msgid ""
|
|
1518
|
-
"An account with a last login date greater than this threshold (in days) will
|
|
1519
|
-
"be considered as inactive"
|
|
1515
|
+
"An account with a last login date greater than this threshold (in days) will"
|
|
1516
|
+
" be considered as inactive"
|
|
1520
1517
|
msgstr ""
|
|
1521
1518
|
"Аккаунт с датой последнего входа, превышающей этот порог (в днях), будет "
|
|
1522
1519
|
"считаться неактивным"
|
|
@@ -1537,21 +1534,30 @@ msgstr "Максимальный срок хранения лог записей
|
|
|
1537
1534
|
msgid "The maximum age in days of a log record"
|
|
1538
1535
|
msgstr "Срок хранения лог записей в днях "
|
|
1539
1536
|
|
|
1540
|
-
#: core/app_settings.py:
|
|
1537
|
+
#: core/app_settings.py:727
|
|
1538
|
+
msgid "Retention time in message history"
|
|
1539
|
+
msgstr ""
|
|
1540
|
+
|
|
1541
|
+
#: core/app_settings.py:730
|
|
1542
|
+
msgid "Retention time (in days) of a message in the message history section"
|
|
1543
|
+
msgstr ""
|
|
1544
|
+
|
|
1545
|
+
#: core/app_settings.py:737
|
|
1541
1546
|
msgid "Items per page"
|
|
1542
1547
|
msgstr "Элементов на странице"
|
|
1543
1548
|
|
|
1544
|
-
#: core/app_settings.py:
|
|
1549
|
+
#: core/app_settings.py:739
|
|
1545
1550
|
msgid "Number of displayed items per page"
|
|
1546
1551
|
msgstr "Количество элементов на странице"
|
|
1547
1552
|
|
|
1548
|
-
#: core/app_settings.py:
|
|
1553
|
+
#: core/app_settings.py:746
|
|
1549
1554
|
msgid "Default top redirection"
|
|
1550
1555
|
msgstr "Порог перенаправления по умолчанию"
|
|
1551
1556
|
|
|
1552
|
-
#: core/app_settings.py:
|
|
1557
|
+
#: core/app_settings.py:748
|
|
1553
1558
|
msgid "The default redirection used when no application is specified"
|
|
1554
|
-
msgstr "
|
|
1559
|
+
msgstr ""
|
|
1560
|
+
"Если приложение не указано. Используется перенаправление по умолчанию."
|
|
1555
1561
|
|
|
1556
1562
|
#: core/checks.py:15
|
|
1557
1563
|
msgid ""
|
|
@@ -1580,8 +1586,9 @@ msgstr ""
|
|
|
1580
1586
|
|
|
1581
1587
|
#: core/checks.py:34
|
|
1582
1588
|
msgid ""
|
|
1583
|
-
"Visit :
|
|
1584
|
-
"html#dovecot-
|
|
1589
|
+
"Visit : "
|
|
1590
|
+
"https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot.html#dovecot-"
|
|
1591
|
+
"oauth2"
|
|
1585
1592
|
msgstr ""
|
|
1586
1593
|
|
|
1587
1594
|
#: core/checks.py:41
|
|
@@ -1592,8 +1599,9 @@ msgstr ""
|
|
|
1592
1599
|
|
|
1593
1600
|
#: core/checks.py:45
|
|
1594
1601
|
msgid ""
|
|
1595
|
-
"Visit :
|
|
1596
|
-
"radicale.html#radicale-
|
|
1602
|
+
"Visit : "
|
|
1603
|
+
"https://modoboa.readthedocs.io/en/latest/manual_installation/radicale.html#radicale-"
|
|
1604
|
+
"oauth2"
|
|
1597
1605
|
msgstr ""
|
|
1598
1606
|
|
|
1599
1607
|
#: core/constants.py:6
|
|
@@ -2089,20 +2097,14 @@ msgstr ""
|
|
|
2089
2097
|
#: imap_migration/app_settings.py:76
|
|
2090
2098
|
msgid ""
|
|
2091
2099
|
"A comma seperated list of folders to explicitly include in sync even if "
|
|
2092
|
-
"filtered by the Folder Filter Exclusions. Example: debian.user,
|
|
2093
|
-
"personal "
|
|
2100
|
+
"filtered by the Folder Filter Exclusions. Example: debian.user, "
|
|
2101
|
+
"debian.personal "
|
|
2094
2102
|
msgstr ""
|
|
2095
2103
|
|
|
2096
2104
|
#: imap_migration/apps.py:20
|
|
2097
2105
|
msgid "IMAP Migration"
|
|
2098
2106
|
msgstr ""
|
|
2099
2107
|
|
|
2100
|
-
#: imap_migration/auth_backends.py:49 webmail/lib/imaputils.py:240
|
|
2101
|
-
#, fuzzy, python-brace-format
|
|
2102
|
-
#| msgid "Connection to MANAGESIEVE server failed, check your configuration"
|
|
2103
|
-
msgid "Connection to IMAP server failed: {error}"
|
|
2104
|
-
msgstr "Соединение с сервером MANAGESIEVE не удалось, проверьте конфигурацию"
|
|
2105
|
-
|
|
2106
2108
|
#: imap_migration/checks.py:12
|
|
2107
2109
|
msgid ""
|
|
2108
2110
|
"Automatic domain/mailbox creation is disabled which means IMAP "
|
|
@@ -2207,10 +2209,11 @@ msgstr "Синонимы доменов"
|
|
|
2207
2209
|
|
|
2208
2210
|
#: limits/app_settings.py:52
|
|
2209
2211
|
#, fuzzy
|
|
2210
|
-
#| msgid "
|
|
2212
|
+
#| msgid ""
|
|
2213
|
+
#| "Maximum number of allowed domain aliases for a new administrator"
|
|
2211
2214
|
msgid ""
|
|
2212
|
-
"Maximum number of allowed domain aliases for a new administrator. (0 to deny
|
|
2213
|
-
"any creation, -1 to allow unlimited creations)"
|
|
2215
|
+
"Maximum number of allowed domain aliases for a new administrator. (0 to deny"
|
|
2216
|
+
" any creation, -1 to allow unlimited creations)"
|
|
2214
2217
|
msgstr "Максимальное количество синонимов доменов для нового администратора"
|
|
2215
2218
|
|
|
2216
2219
|
#: limits/app_settings.py:64
|
|
@@ -2263,14 +2266,15 @@ msgstr ""
|
|
|
2263
2266
|
#| msgid ""
|
|
2264
2267
|
#| "Maximum number of allowed domain administrators for a new administrator"
|
|
2265
2268
|
msgid ""
|
|
2266
|
-
"Maximum number of allowed domain administrators for a new domain. (0 to deny
|
|
2267
|
-
"any creation, -1 to allow unlimited creations)"
|
|
2269
|
+
"Maximum number of allowed domain administrators for a new domain. (0 to deny"
|
|
2270
|
+
" any creation, -1 to allow unlimited creations)"
|
|
2268
2271
|
msgstr ""
|
|
2269
2272
|
"Максимальное количество администраторов домена для нового администратора"
|
|
2270
2273
|
|
|
2271
2274
|
#: limits/app_settings.py:126
|
|
2272
2275
|
#, fuzzy
|
|
2273
|
-
#| msgid "
|
|
2276
|
+
#| msgid ""
|
|
2277
|
+
#| "Maximum number of allowed domain aliases for a new administrator"
|
|
2274
2278
|
msgid ""
|
|
2275
2279
|
"Maximum number of allowed domain aliases for a new domain. (0 to deny any "
|
|
2276
2280
|
"creation, -1 to allow unlimited creations)"
|
|
@@ -2288,8 +2292,8 @@ msgstr "Максимальное количество почтовых ящик
|
|
|
2288
2292
|
#, fuzzy
|
|
2289
2293
|
#| msgid "Maximum number of allowed aliases for a new administrator"
|
|
2290
2294
|
msgid ""
|
|
2291
|
-
"Maximum number of allowed aliases for a new domain. (0 to deny any creation,
|
|
2292
|
-
"-1 to allow unlimited creations)"
|
|
2295
|
+
"Maximum number of allowed aliases for a new domain. (0 to deny any creation,"
|
|
2296
|
+
" -1 to allow unlimited creations)"
|
|
2293
2297
|
msgstr "Максимальное количество синонимов для нового администратора"
|
|
2294
2298
|
|
|
2295
2299
|
#: limits/apps.py:16
|
|
@@ -2487,13 +2491,13 @@ msgstr ""
|
|
|
2487
2491
|
msgid "Personal account information"
|
|
2488
2492
|
msgstr "Обновить личную информацию"
|
|
2489
2493
|
|
|
2490
|
-
#: pdfcredentials/api/v2/serializers.py:
|
|
2494
|
+
#: pdfcredentials/api/v2/serializers.py:86
|
|
2491
2495
|
#, fuzzy
|
|
2492
2496
|
#| msgid "Domain modified"
|
|
2493
2497
|
msgid "Directory is not writable"
|
|
2494
2498
|
msgstr "Домен изменен"
|
|
2495
2499
|
|
|
2496
|
-
#: pdfcredentials/api/v2/serializers.py:
|
|
2500
|
+
#: pdfcredentials/api/v2/serializers.py:114
|
|
2497
2501
|
msgid "No document available for this user"
|
|
2498
2502
|
msgstr ""
|
|
2499
2503
|
|
|
@@ -2777,8 +2781,8 @@ msgstr ""
|
|
|
2777
2781
|
|
|
2778
2782
|
#: rspamd/app_settings.py:21
|
|
2779
2783
|
msgid ""
|
|
2780
|
-
"Absolute path of the file which contains paths to DKIM private keys. Must be
|
|
2781
|
-
"readable by _rspamd group or user."
|
|
2784
|
+
"Absolute path of the file which contains paths to DKIM private keys. Must be"
|
|
2785
|
+
" readable by _rspamd group or user."
|
|
2782
2786
|
msgstr ""
|
|
2783
2787
|
|
|
2784
2788
|
#: rspamd/app_settings.py:30
|
|
@@ -2797,8 +2801,8 @@ msgstr ""
|
|
|
2797
2801
|
|
|
2798
2802
|
#: rspamd/app_settings.py:53
|
|
2799
2803
|
msgid ""
|
|
2800
|
-
"Location of the rspamd dashboard. Can either be a relative URL (eg.
|
|
2801
|
-
"rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
|
|
2804
|
+
"Location of the rspamd dashboard. Can either be a relative URL (eg. "
|
|
2805
|
+
"'/rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
|
|
2802
2806
|
"guidance on the Super-Admin dashboard."
|
|
2803
2807
|
msgstr ""
|
|
2804
2808
|
|
|
@@ -3085,8 +3089,8 @@ msgstr "Старый пароль"
|
|
|
3085
3089
|
|
|
3086
3090
|
#: templates/registration/twofactor_code_verify.html:35
|
|
3087
3091
|
msgid ""
|
|
3088
|
-
"Enter the code from the two-factor app on your mobile device. If you've lost
|
|
3089
|
-
"your device, you may enter one of your recovery codes."
|
|
3092
|
+
"Enter the code from the two-factor app on your mobile device. If you've lost"
|
|
3093
|
+
" your device, you may enter one of your recovery codes."
|
|
3090
3094
|
msgstr ""
|
|
3091
3095
|
|
|
3092
3096
|
#: templates/registration/twofactor_code_verify.html:42
|
|
@@ -3289,16 +3293,32 @@ msgstr "Тест подписи"
|
|
|
3289
3293
|
msgid "User defined email signature"
|
|
3290
3294
|
msgstr "Пользовательская подпись"
|
|
3291
3295
|
|
|
3296
|
+
#: webmail/exceptions.py:18
|
|
3297
|
+
#, fuzzy
|
|
3298
|
+
#| msgid "Server address"
|
|
3299
|
+
msgid "Server response"
|
|
3300
|
+
msgstr "Адрес сервера"
|
|
3301
|
+
|
|
3292
3302
|
#: webmail/lib/attachments.py:112
|
|
3293
3303
|
#, fuzzy
|
|
3294
3304
|
#| msgid "Failed to remove filter"
|
|
3295
3305
|
msgid "Failed to remove attachment: "
|
|
3296
3306
|
msgstr "Не удалось удалить вложение:"
|
|
3297
3307
|
|
|
3308
|
+
#: webmail/lib/imapemail.py:272
|
|
3309
|
+
msgid "wrote:"
|
|
3310
|
+
msgstr ""
|
|
3311
|
+
|
|
3298
3312
|
#: webmail/lib/imapemail.py:306
|
|
3299
3313
|
msgid "Date"
|
|
3300
3314
|
msgstr "Дата"
|
|
3301
3315
|
|
|
3316
|
+
#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
|
|
3317
|
+
#, fuzzy
|
|
3318
|
+
#| msgid "sent messages"
|
|
3319
|
+
msgid "Original message"
|
|
3320
|
+
msgstr "Все сообщения"
|
|
3321
|
+
|
|
3302
3322
|
#: webmail/lib/imaputils.py:221
|
|
3303
3323
|
msgid "Failed to retrieve hierarchy delimiter"
|
|
3304
3324
|
msgstr "Не удалось получить разделитель уровней иерархии"
|
|
@@ -3329,3 +3349,7 @@ msgstr "Корзина"
|
|
|
3329
3349
|
#, python-format
|
|
3330
3350
|
msgid "Attachment is too big (limit: %s)"
|
|
3331
3351
|
msgstr "Вложения слишком велики (лимит: %s)"
|
|
3352
|
+
|
|
3353
|
+
#, fuzzy, python-brace-format
|
|
3354
|
+
#~ msgid "Connection to IMAP server failed: {error}"
|
|
3355
|
+
#~ msgstr "Соединение с сервером MANAGESIEVE не удалось, проверьте конфигурацию"
|