Submit
Path:
~
/
/
usr
/
local
/
psa
/
admin
/
cp
/
public
/
javascript
/
views
/
server
/
File Content:
mail.js.map
{"version":3,"file":"javascript/views/server/mail.js?ae0597ce341c1feb4e06","mappings":"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","sources":["webpack:///./components/List.js","webpack:///./components/formFields/FormFieldDate.js","webpack:///./components/forms/AddBlackListedDomainForm.js","webpack:///./components/forms/AddWhiteListedNetworkForm.js","webpack:///./components/forms/ServerMailAntivirusForm.js","webpack:///./components/forms/ServerMailSettingsForm/AutoReplyHeaders.js","webpack:///./components/forms/ServerMailSettingsForm/Autodiscover.js","webpack:///./components/forms/ServerMailSettingsForm/GeneralSettings.js","webpack:///./components/forms/ServerMailSettingsForm/MailmanSettings.js","webpack:///./components/forms/ServerMailSettingsForm/OutgoingLimit.js","webpack:///./components/forms/ServerMailSettingsForm/OutgoingMessages.js","webpack:///./components/forms/ServerMailSettingsForm/Pop3Names.js","webpack:///./components/forms/ServerMailSettingsForm/Relay.js","webpack:///./components/forms/ServerMailSettingsForm/SpamFilter.js","webpack:///./components/forms/ServerMailSettingsForm/index.js","webpack:///./components/forms/ServerMailSmarthostForm/ServerMailSmarthostForm.js","webpack:///./components/forms/ServerMailSmarthostForm/SmarthostConfigurationSection.js","webpack:///./components/forms/ServerMailSmarthostForm/SmarthostSettingsSection.js","webpack:///./components/forms/ServerMailSpamFilterForm.js","webpack:///./components/lists/ServerMailBlackList.js","webpack:///./components/lists/ServerMailWhiteList.js","webpack:///./components/pages/ServerMailAntivirusPage.js","webpack:///./components/pages/ServerMailBlackListPage.js","webpack:///./components/pages/ServerMailSettingsPage.js","webpack:///./components/pages/ServerMailSmarthostPage.js","webpack:///./components/pages/ServerMailSpamFilterPage.js","webpack:///./components/pages/ServerMailStatisticsPage/ServerMailStatisticsPage.js","webpack:///./components/pages/ServerMailStatisticsPage/ServerMailStatisticsSpamRecipientsList.js","webpack:///./components/pages/ServerMailStatisticsPage/ServerMailStatisticsSummary.js","webpack:///./components/pages/ServerMailStatisticsPage/ServerMailStatisticsToolbar.js","webpack:///./components/pages/ServerMailStatisticsPage/ServerMailStatisticsVirusRecipientsList.js","webpack:///./components/pages/ServerMailStatisticsPage/ServerMailStatisticsVirusVirusesList.js","webpack:///./components/pages/ServerMailWhiteListPage.js","webpack:///./components/tabs/ServerMailTabs.js","webpack:///./queries/ServerMailVirusRecipientsStatistics.graphql","webpack:///./queries/ServerMailVirusVirusesStatistics.graphql"],"sourcesContent":["// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { List as BaseList, Pagination, SearchBar, Toolbar, ToolbarGroup, ToolbarExpander, ListEmptyView } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\n\nconst listLocale = Locale.getSection('components.list');\n\nexport const SORT_ASC = 'ASC';\nexport const SORT_DESC = 'DESC';\nconst ALL_ITEMS_PER_PAGE = 'all';\n\nconst getRowKey = (row, key) => {\n if (typeof key === 'function') {\n return key(row);\n }\n return row[key];\n};\n\nconst storage = {\n set(key, data) {\n localStorage.setItem(key, JSON.stringify(data));\n },\n get(key) {\n const data = localStorage.getItem(key);\n return JSON.parse(data);\n },\n};\n\nconst getSortListName = id => `list-sort_${id}`;\nconst getPageListName = id => `list-page_${id}`;\n\nconst useSortState = (id, {\n sortColumn: defaultColumn,\n sortDirection: defaultDirection,\n}) => {\n const [{\n sortColumn,\n sortDirection,\n }, setState] = useState({\n sortColumn: storage.get(getSortListName(id))?.sortColumn ?? defaultColumn,\n sortDirection: storage.get(getSortListName(id))?.sortDirection ?? defaultDirection,\n });\n\n const setSortState = props => {\n setState(state => ({\n ...state,\n ...props,\n }));\n\n storage.set(getSortListName(id), {\n ...storage.get(getSortListName(id)),\n ...props,\n });\n };\n\n return { sortColumn, sortDirection, setSortState };\n};\n\nconst usePageState = (id, {\n itemsPerPage: defaultItemsPerPage,\n}, useStorage = true) => {\n const state = useStorage ? {\n page: storage.get(getPageListName(id))?.page,\n itemsPerPage: storage.get(getPageListName(id))?.itemsPerPage,\n searchPattern: storage.get(getPageListName(id))?.searchPattern,\n } : {};\n\n const [{\n page,\n itemsPerPage,\n searchPattern,\n }, setState] = useState({\n page: state.page ?? 1,\n itemsPerPage: state.itemsPerPage ?? defaultItemsPerPage,\n searchPattern: state.searchPattern ?? '',\n });\n\n const setPageState = props => {\n setState(state => ({\n ...state,\n ...props,\n }));\n\n if (useStorage) {\n storage.set(getPageListName(id), {\n ...storage.get(getPageListName(id)),\n ...props,\n });\n }\n };\n\n return { page, itemsPerPage, searchPattern, setPageState };\n};\n\nconst List = ({\n id,\n data,\n columns,\n itemsPerPage: defaultItemsPerPage = 25,\n itemsPerPageOptions = [10, 25, 100, ALL_ITEMS_PER_PAGE],\n sortColumn: defaultSortColumn = undefined,\n sortDirection: defaultSortDirection = SORT_ASC,\n searchField = undefined,\n locale = {},\n emptyView = undefined,\n emptyFilteredView = undefined,\n toolbar = undefined,\n selection = [],\n onSelectionChange = undefined,\n searchBarInputProps = undefined,\n rowKey = 'key',\n useStorage = true,\n ...props\n}) => {\n const { sortColumn, sortDirection, setSortState } = useSortState(id, {\n sortColumn: defaultSortColumn ?? columns.find(({ sortable }) => sortable)?.key,\n sortDirection: defaultSortDirection,\n });\n const { page, itemsPerPage, searchPattern, setPageState } = usePageState(id, {\n itemsPerPage: itemsPerPageOptions.includes(defaultItemsPerPage) ? defaultItemsPerPage : itemsPerPageOptions[0],\n }, useStorage);\n\n const listEmptyView = useMemo(() => {\n if (searchPattern) {\n return emptyFilteredView ?? (\n <ListEmptyView\n reason=\"filtered\"\n data-testid=\"list-empty-view-filtered\"\n />\n );\n }\n\n return emptyView ?? (\n <ListEmptyView />\n );\n }, [searchPattern, emptyView, emptyFilteredView]);\n\n const columnsData = useMemo(() => columns.map(({ sortDataField, ...column }) => column), [columns]);\n\n const filteredData = useMemo(() => {\n if (!searchField || !searchPattern) {\n return data;\n }\n\n return data.filter(row => (Array.isArray(searchField) ? searchField : [searchField])\n .some(field => row[field] && String(row[field]).toLowerCase().includes(searchPattern.toLowerCase())));\n }, [data, searchPattern, searchField]);\n\n const sortedData = useMemo(() => {\n if (!sortColumn) {\n return filteredData;\n }\n\n const sortDataField = columns.find(({ key }) => key === sortColumn)?.sortDataField ?? sortColumn;\n const defaultCompare = (a, b) => {\n if (a[sortDataField] < b[sortDataField]) {\n return -1;\n }\n if (a[sortDataField] > b[sortDataField]) {\n return 1;\n }\n return 0;\n };\n const compare = columns.find(({ key }) => key === sortColumn)?.sort ?? defaultCompare;\n return [...filteredData].sort((a, b) => SORT_ASC === sortDirection ? compare(a, b) : compare(b, a));\n }, [filteredData, sortColumn, sortDirection, columns]);\n\n const displayData = useMemo(() => {\n if (itemsPerPage === ALL_ITEMS_PER_PAGE) {\n return sortedData;\n }\n\n const from = itemsPerPage * (page - 1);\n const to = from + itemsPerPage;\n return sortedData.slice(from, to);\n }, [page, sortedData, itemsPerPage]);\n\n const handleSearchPatternChange = useCallback(term => {\n setPageState({ searchPattern: term });\n if (term !== searchPattern) {\n setPageState({ page: 1 });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchPattern]);\n\n const handleItemsPerPageChange = useCallback(itemsPerPage => {\n setPageState({ itemsPerPage });\n const countPages = itemsPerPage === ALL_ITEMS_PER_PAGE ? 1 : Math.ceil(filteredData.length / itemsPerPage);\n if (countPages < page) {\n setPageState({ page: 1 });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filteredData.length, page]);\n\n useEffect(() => {\n if (typeof onSelectionChange === 'function' && selection.length) {\n const newSelection = filteredData\n .map(item => getRowKey(item, rowKey))\n .filter(key => selection.includes(key));\n onSelectionChange(newSelection);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filteredData]);\n\n return (\n <BaseList\n pagination={\n <Pagination\n current={page}\n total={itemsPerPage === ALL_ITEMS_PER_PAGE ? 1 : Math.ceil(filteredData.length / itemsPerPage)}\n onSelect={page => setPageState({ page })}\n itemsPerPage={itemsPerPage}\n itemsPerPageOptions={itemsPerPageOptions}\n onItemsPerPageChange={handleItemsPerPageChange}\n />\n }\n toolbar={(toolbar || searchField) && (\n <Toolbar>\n {toolbar}\n {searchField && (\n <>\n <ToolbarExpander />\n <ToolbarGroup title=\"\">\n <SearchBar\n inputProps={{\n placeholder: listLocale.lmsg('searchPlaceholder'),\n 'data-testid': 'list-searchbar',\n value: searchPattern,\n ...(searchBarInputProps ?? {}),\n }}\n onTyping={handleSearchPatternChange}\n />\n </ToolbarGroup>\n </>\n )}\n </Toolbar>\n )}\n totalRows={filteredData.length}\n sortColumn={sortColumn}\n sortDirection={sortDirection}\n onSortChange={setSortState}\n columns={columnsData}\n data={displayData}\n filtered={!!searchPattern}\n locale={{\n totalRows: ({ totalRows: total }) => listLocale.formatMessage('recordsTotal', { total }),\n ...locale,\n }}\n emptyView={listEmptyView}\n onSelectionChange={onSelectionChange}\n selection={selection}\n rowKey={rowKey}\n {...props}\n />\n );\n};\n\nList.propTypes = {\n id: PropTypes.string.isRequired,\n data: PropTypes.array.isRequired,\n columns: PropTypes.array.isRequired,\n itemsPerPage: PropTypes.number,\n itemsPerPageOptions: PropTypes.array,\n sortColumn: PropTypes.string,\n sortDirection: PropTypes.string,\n searchField: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string.isRequired),\n ]),\n locale: PropTypes.object,\n emptyView: PropTypes.node,\n emptyFilteredView: PropTypes.node,\n toolbar: PropTypes.node,\n onSelectionChange: PropTypes.func,\n selection: PropTypes.array,\n rowKey: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n searchBarInputProps: PropTypes.object,\n useStorage: PropTypes.bool,\n};\n\nexport default List;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { FormField, Input, Select, SelectOption } from '@plesk/ui-library';\nimport { PropTypes } from 'prop-types';\nimport { Locale } from 'jsw';\n\nconst locale = Locale.getSection('smb.components.months');\n\nconst daysInMonth = (year, month) => new Date(year, month, 0).getDate();\nconst normalizeDay = (day, month, year) => Math.min(day, daysInMonth(year, month));\nconst isNumber = str => /^\\d+$/.test(str);\nconst currentDate = new Date();\nconst currentDay = currentDate.getDate();\nconst currentMonth = currentDate.getMonth() + 1;\nconst currentYear = currentDate.getFullYear();\n\nconst FormFieldDate = ({ years = undefined, ...props }) => (\n <FormField {...props}>\n {({ getId, getValue, getName, setValue, isDisabled }) => {\n const { day, month, year } = getValue();\n\n const handleEmptyValue = () => {\n if (!day || !month || !year) {\n const handledDay = day || currentDay;\n const handledMonth = month || currentMonth;\n const handledYear = year || currentYear;\n\n setValue({\n day: normalizeDay(handledDay, handledMonth, handledYear),\n month: handledMonth,\n year: handledYear,\n });\n }\n };\n\n const changeDayIfValid = ({ target: { value: day } }) => {\n if (day === '') {\n setValue({ day, month, year });\n } else if (isNumber(day) && day > 0 && day <= daysInMonth(year, month)) {\n setValue({ day: Number(day), month, year });\n }\n };\n\n const changeYearIfValid = ({ target: { value: year } }) => {\n if (year === '') {\n setValue({ day, month, year });\n } else if (isNumber(year) && year > 0 && year <= 2100) {\n setValue({ day: normalizeDay(day, month, year), month, year: Number(year) });\n }\n };\n\n return (\n <>\n <Input\n id={`${getId()}Day`}\n name={`${getName()}[day]`}\n value={day}\n onChange={changeDayIfValid}\n onBlur={handleEmptyValue}\n disabled={isDisabled()}\n size=\"sm\"\n />\n {' - '}\n <Select\n id={`${getId()}Month`}\n name={`${getName()}[month]`}\n value={month}\n onChange={month => setValue({ day: normalizeDay(day, month, year), month, year })}\n disabled={isDisabled()}\n size=\"sm\"\n >\n <SelectOption value={1}>{locale.lmsg('1')}</SelectOption>\n <SelectOption value={2}>{locale.lmsg('2')}</SelectOption>\n <SelectOption value={3}>{locale.lmsg('3')}</SelectOption>\n <SelectOption value={4}>{locale.lmsg('4')}</SelectOption>\n <SelectOption value={5}>{locale.lmsg('5')}</SelectOption>\n <SelectOption value={6}>{locale.lmsg('6')}</SelectOption>\n <SelectOption value={7}>{locale.lmsg('7')}</SelectOption>\n <SelectOption value={8}>{locale.lmsg('8')}</SelectOption>\n <SelectOption value={9}>{locale.lmsg('9')}</SelectOption>\n <SelectOption value={10}>{locale.lmsg('10')}</SelectOption>\n <SelectOption value={11}>{locale.lmsg('11')}</SelectOption>\n <SelectOption value={12}>{locale.lmsg('12')}</SelectOption>\n </Select>\n {' - '}\n {\n years ? (\n <Select\n id={`${getId()}Year`}\n name={`${getName()}[year]`}\n value={year}\n onChange={year => setValue({ day: normalizeDay(day, month, year), month, year })}\n disabled={isDisabled()}\n size=\"sm\"\n >\n {years.map(year => <SelectOption key={year} value={year}>{String(year)}</SelectOption>)}\n </Select>\n ) : (\n <Input\n id={`${getId()}Year`}\n name={`${getName()}[year]`}\n value={year}\n onChange={changeYearIfValid}\n onBlur={handleEmptyValue}\n disabled={isDisabled()}\n size=\"sm\"\n />\n )\n }\n </>\n );\n }}\n </FormField>\n);\n\nFormFieldDate.propTypes = {\n years: PropTypes.arrayOf(PropTypes.number),\n};\n\nexport default FormFieldDate;\n\nexport const getTimestampFromDateSelector = ({ day, month, year }) => {\n const date = new Date();\n date.setDate(day);\n date.setMonth(month - 1);\n date.setFullYear(year);\n return date.getTime();\n};\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { PropTypes } from 'prop-types';\nimport { Drawer, FormFieldText, FormFieldRadioButtons } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport { useState, useEffect } from 'react';\nimport { gql, useMutation } from '@apollo/client';\nimport { addToast } from 'helpers/toasts';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-black-list');\nconst ButtonsTranslate = Locale.getTranslate('components.buttons');\n\nconst ADD_BLACK_LISTED_DOMAIN = gql`\n mutation AddBlackListedDomain($input: AddBlackListedDomainInput!) {\n addBlackListedDomain(input: $input) {\n errors\n }\n }\n`;\n\nconst AddBlackListedDomainForm = ({ isWindows = false, isOpen = false, onClose }) => {\n const [values, setValues] = useState(null);\n const [formState, setFormState] = useState(null);\n const [formErrors, setFormErrors] = useState({});\n\n useEffect(() => {\n setValues({\n name: [''],\n action: isWindows ? 'DELETE' : null,\n });\n setFormState(null);\n setFormErrors({});\n }, [isOpen, isWindows]);\n\n const [addBlackListedDomain] = useMutation(ADD_BLACK_LISTED_DOMAIN, {\n refetchQueries: [{ query: require('queries/ServerMailBlackListPage.graphql') }],\n awaitRefetchQueries: true,\n });\n\n const handleSubmit = async ({ name, action }) => {\n setFormState('submit');\n setFormErrors({});\n\n const { data: { addBlackListedDomain: { errors } } } = await addBlackListedDomain({\n variables: {\n input: {\n name: name.map(value => (value ?? '').trim()),\n action,\n },\n },\n });\n\n setFormState(null);\n if (errors) {\n setFormErrors({ name: errors });\n } else {\n addToast({\n intent: 'success',\n message: <Translate content=\"success\" />,\n });\n onClose();\n }\n };\n\n return (\n <Drawer\n data-type=\"add-black-listed-domain\"\n title={<Translate content=\"title\" />}\n isOpen={isOpen}\n onClose={onClose}\n size=\"sm\"\n form={{\n state: formState,\n errors: formErrors,\n applyButton: false,\n onSubmit: handleSubmit,\n values,\n submitButton: {\n id: 'btn-ok',\n name: 'ok',\n children: <ButtonsTranslate content=\"save\" />,\n },\n cancelButton: {\n id: 'btn-cancel',\n name: 'cancel',\n children: <ButtonsTranslate content=\"cancel\" />,\n onClick: onClose,\n },\n }}\n >\n <FormFieldText\n label={<Translate content={isWindows ? 'emailAddress' : 'domainName'} />}\n description={isWindows && <Translate content=\"emailAddressHint\" />}\n name=\"name\"\n size=\"md\"\n multi\n required\n />\n {isWindows && (\n <FormFieldRadioButtons\n label={<Translate content=\"action\" />}\n name=\"action\"\n options={[\n { value: 'DELETE', label: <Translate content=\"actionDelete\" /> },\n { value: 'SPAM', label: <Translate content=\"actionSpam\" /> },\n ]}\n />\n )}\n </Drawer>\n );\n};\n\nAddBlackListedDomainForm.propTypes = {\n isWindows: PropTypes.bool,\n isOpen: PropTypes.bool,\n onClose: PropTypes.func.isRequired,\n};\n\nexport default AddBlackListedDomainForm;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { PropTypes } from 'prop-types';\nimport { Drawer, FormFieldText } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport { useState, useEffect } from 'react';\nimport { gql, useMutation } from '@apollo/client';\nimport { addToast } from 'helpers/toasts';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-white-list');\nconst ButtonsTranslate = Locale.getTranslate('components.buttons');\n\nconst ADD_WHITE_LISTED_NETWORK = gql`\n mutation AddWhiteListedNetwork($input: AddWhiteListedNetworkInput!) {\n addWhiteListedNetwork(input: $input) {\n errors\n }\n }\n`;\n\nconst AddWhiteListedNetworkForm = ({\n isWindows = false,\n mailServer: {\n isSmtpWhiteListSupported,\n isSmtpWhiteListWithWildcardSupported,\n isSmtpWhiteListWithCIDRSupported,\n },\n isOpen = false,\n onClose,\n}) => {\n const [values, setValues] = useState(null);\n const [formState, setFormState] = useState(null);\n const [formErrors, setFormErrors] = useState({});\n\n useEffect(() => {\n setValues({\n name: [''],\n });\n setFormState(null);\n setFormErrors({});\n }, [isOpen, isWindows]);\n\n const [addWhiteListedNetwork] = useMutation(ADD_WHITE_LISTED_NETWORK, {\n refetchQueries: [{ query: require('queries/ServerMailWhiteListPage.graphql') }],\n awaitRefetchQueries: true,\n });\n\n const handleSubmit = async ({ name }) => {\n setFormState('submit');\n setFormErrors({});\n\n const { data: { addWhiteListedNetwork: { errors } } } = await addWhiteListedNetwork({\n variables: {\n input: {\n name: name.map(value => (value ?? '').trim()),\n },\n },\n });\n\n setFormState(null);\n if (errors) {\n setFormErrors({ name: errors });\n } else {\n addToast({\n intent: 'success',\n message: <Translate content=\"success\" />,\n });\n onClose();\n }\n };\n\n return (\n <Drawer\n data-type=\"add-white-listed-network\"\n title={<Translate content=\"title\" />}\n isOpen={isOpen}\n onClose={onClose}\n size=\"sm\"\n form={{\n state: formState,\n errors: formErrors,\n applyButton: false,\n onSubmit: handleSubmit,\n values,\n submitButton: {\n id: 'btn-ok',\n name: 'ok',\n children: <ButtonsTranslate content=\"save\" />,\n },\n cancelButton: {\n id: 'btn-cancel',\n name: 'cancel',\n children: <ButtonsTranslate content=\"cancel\" />,\n onClick: onClose,\n },\n }}\n >\n {isWindows && (\n <p>\n <Translate content=\"descEmailAddress\" />\n {isSmtpWhiteListSupported && (\n <>\n <br />\n <Translate content=\"descIpAddress\" />\n </>\n )}\n </p>\n )}\n <FormFieldText\n label={<Translate content={isWindows ? (isSmtpWhiteListSupported ? 'emailAddressOrIp' : 'emailAddress') : 'ipAddress'} />}\n description={\n <>\n <Translate content={isWindows ? 'emailAddressHint' : 'ipAddressHint'} />\n {isWindows && isSmtpWhiteListSupported && isSmtpWhiteListWithWildcardSupported && (\n <>\n {' '}\n <Translate content=\"wildcardPattern\" />\n </>\n )}\n {isWindows && isSmtpWhiteListSupported && isSmtpWhiteListWithCIDRSupported && (\n <>\n {' '}\n <Translate content=\"cidrPattern\" />\n </>\n )}\n </>\n }\n name=\"name\"\n size=\"md\"\n multi\n required\n />\n </Drawer>\n );\n};\n\nAddWhiteListedNetworkForm.propTypes = {\n isWindows: PropTypes.bool,\n mailServer: PropTypes.shape({\n isSmtpWhiteListSupported: PropTypes.bool.isRequired,\n isSmtpWhiteListWithWildcardSupported: PropTypes.bool.isRequired,\n isSmtpWhiteListWithCIDRSupported: PropTypes.bool.isRequired,\n }).isRequired,\n isOpen: PropTypes.bool,\n onClose: PropTypes.func.isRequired,\n};\n\nexport default AddWhiteListedNetworkForm;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { FormFieldSelect, FormField, FormFieldCheckbox, setIn, getIn, useTranslate, FormFieldRadioButtons } from '@plesk/ui-library';\nimport Form from 'components/Form';\nimport { useState, useEffect } from 'react';\nimport { Locale } from 'jsw';\nimport Link from 'components/common/Link';\nimport PropTypes from 'prop-types';\nimport { gql, useMutation } from '@apollo/client';\nimport { useNavigate } from 'react-router-dom';\nimport { addToast } from 'helpers/toasts';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-antivirus');\nconst ButtonsTranslate = Locale.getTranslate('components.buttons');\n\nconst UPDATE_SERVER_MAIL_ANTIVIRUS = gql`\n mutation UpdateServerMailAntivirus($input: UpdateServerMailAntivirusInput!) {\n updateServerMailAntivirus(input: $input) {\n query {\n serverMail {\n antivirus {\n key\n name\n isActive\n }\n antivirusPolicy {\n policy\n isAppliedToIncoming\n isAppliedToOutgoing\n }\n }\n }\n }\n }\n`;\n\nconst ServerMailAntivirusForm = ({ serverMail: { antivirus: options, antivirusPolicy } }) => {\n const navigate = useNavigate();\n const [updateServerMailAntivirus] = useMutation(UPDATE_SERVER_MAIL_ANTIVIRUS);\n const translate = useTranslate('admin.components.forms.server-mail-antivirus');\n const returnUrl = '/admin/server/tools';\n const [values, setValues] = useState({});\n\n useEffect(() => {\n setValues({\n antivirus: options.length === 0 ? null : (options.find(({ isActive }) => isActive)?.key ?? ''),\n policy: antivirusPolicy?.policy,\n isAppliedToIncoming: antivirusPolicy?.isAppliedToIncoming,\n isAppliedToOutgoing: antivirusPolicy?.isAppliedToOutgoing,\n });\n }, [options, antivirusPolicy]);\n\n const handleSuccess = (_, isApply) => {\n addToast({\n intent: 'success',\n message: <Translate content=\"success\" />,\n });\n\n if (isApply) {\n navigate(window.location.pathname, { replace: true });\n } else {\n navigate(returnUrl);\n }\n };\n\n return (\n <Form\n id=\"server-mail-antivirus\"\n mutation={updateServerMailAntivirus}\n values={values}\n onFieldChange={(name, value) => setValues(values => setIn(values, name, value))}\n submitButton={{\n id: 'buttonid-ok',\n name: 'ok',\n children: <ButtonsTranslate content=\"save\" />,\n }}\n applyButton={{\n id: 'buttonid-apply',\n name: 'apply',\n children: <ButtonsTranslate content=\"apply\" />,\n }}\n cancelButton={{\n id: 'buttonid-cancel',\n name: 'cancel',\n children: <ButtonsTranslate content=\"cancel\" />,\n component: Link,\n to: returnUrl,\n }}\n onSuccess={handleSuccess}\n >\n {options.length === 1 && (\n <FormField\n label={<Translate content=\"used\" />}\n >\n {options[0].name}\n </FormField>\n )}\n {options.length > 1 && (\n <FormFieldRadioButtons\n label={<Translate content=\"used\" />}\n name=\"antivirus\"\n options={options.map(({ key, name }) => ({ value: key, label: name }))}\n />\n )}\n {antivirusPolicy && (\n <>\n <FormFieldSelect\n label={<Translate content=\"policy\" />}\n name=\"policy\"\n >\n <option value=\"any\">{translate('policyAny')}</option>\n <option value=\"from\">{translate('policyFrom')}</option>\n <option value=\"to\">{translate('policyTo')}</option>\n <option value=\"\">{translate('policyOff')}</option>\n </FormFieldSelect>\n <FormField\n label={<Translate content=\"allowPersonalSettings\" />}\n description={<Translate content=\"allowPersonalSettingsDesc\" />}\n >\n <FormFieldCheckbox\n label={<Translate content=\"incoming\" />}\n name=\"isAppliedToIncoming\"\n disabled={getIn(values, 'isAppliedToIncoming') === null}\n />\n <FormFieldCheckbox\n label={<Translate content=\"outgoing\" />}\n name=\"isAppliedToOutgoing\"\n disabled={getIn(values, 'isAppliedToOutgoing') === null}\n />\n </FormField>\n </>\n )}\n </Form>\n );\n};\n\nServerMailAntivirusForm.propTypes = {\n serverMail: PropTypes.shape({\n antivirus: PropTypes.array.isRequired,\n antivirusPolicy: PropTypes.shape({\n policy: PropTypes.string.isRequired,\n isAppliedToIncoming: PropTypes.bool,\n isAppliedToOutgoing: PropTypes.bool,\n }),\n }).isRequired,\n};\n\nexport default ServerMailAntivirusForm;\n\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { FormField, Input, Section } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport PropTypes from 'prop-types';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-settings.auto-reply-headers');\n\nconst AutoReplyHeaders = ({ isMailUiDisabled = false }) => (\n <Section title={<Translate content=\"title\" />}>\n <p>\n <Translate content=\"description\" />\n </p>\n <FormField\n label={<Translate content=\"extra\" />}\n name=\"settings[autoReplyHeaders]\"\n multi={{ max: 10 }}\n className=\"server-mail-settings-form-field-multi\"\n disabled={isMailUiDisabled}\n >\n {({ getValue, setValue, getName }) => {\n const { name, value } = getValue({ name: '', value: '' });\n return (\n <>\n <Input\n name={`${getName()}[name]`}\n size=\"lg\"\n value={name}\n onChange={({ target }) => setValue({ name: target.value, value })}\n maxLength=\"75\"\n disabled={isMailUiDisabled}\n />\n {' : '}\n <Input\n name={`${getName()}[value]`}\n value={value}\n onChange={({ target }) => setValue({ name, value: target.value })}\n maxLength=\"75\"\n disabled={isMailUiDisabled}\n />\n </>\n );\n }}\n </FormField>\n </Section>\n);\n\nAutoReplyHeaders.propTypes = {\n isMailUiDisabled: PropTypes.bool,\n};\n\nexport default AutoReplyHeaders;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { FormFieldCheckbox, FormFieldText, Link, Section, getIn } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport PropTypes from 'prop-types';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-settings.autodiscover');\n\nconst Autodiscover = ({\n isMailUiDisabled = false,\n values,\n isEnabled = false,\n customServer,\n isDnsEnabled = true,\n}) => {\n const isReconfigureDnsEnabled = () => getIn(values, 'autodiscover[isEnabled]') && (\n getIn(values, 'autodiscover[isEnabled]') !== isEnabled || getIn(values, 'autodiscover[customServer]') !== customServer\n );\n\n return (\n <Section title={<Translate content=\"title\" />}>\n <p>\n <Translate\n content=\"description\"\n params={{ link: (<Link href=\"https://support.plesk.com/hc/en-us/articles/12387742719639\" target=\"_blank\"><Translate content=\"link\" /></Link>) }}\n />\n </p>\n <FormFieldCheckbox\n label={<Translate content=\"enabled\" />}\n name=\"autodiscover[isEnabled]\"\n description={<Translate content=\"enabledHint\" />}\n disabled={isMailUiDisabled}\n />\n <FormFieldText\n label={<Translate content=\"customServer\" />}\n name=\"autodiscover[customServer]\"\n description={\n <>\n <Translate component=\"div\" content=\"customServerHint\" />\n <Translate component=\"div\" content=\"customServerCertHint\" />\n </>\n }\n size=\"xl\"\n disabled={isMailUiDisabled || !getIn(values, 'autodiscover[isEnabled]')}\n />\n {isDnsEnabled && (\n <FormFieldCheckbox\n label={<Translate content=\"reconfigureDns\" />}\n name=\"autodiscover[reconfigureDns]\"\n description={<Translate content=\"reconfigureDnsHint\" />}\n disabled={isMailUiDisabled || !isReconfigureDnsEnabled()}\n />\n )}\n </Section>\n );\n};\n\nAutodiscover.propTypes = {\n isMailUiDisabled: PropTypes.bool,\n values: PropTypes.object.isRequired,\n isEnabled: PropTypes.bool,\n customServer: PropTypes.string.isRequired,\n isDnsEnabled: PropTypes.bool,\n};\n\nexport default Autodiscover;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport {\n FormField,\n FormFieldCheckbox,\n FormFieldRadioButtons,\n Input, getIn,\n Link, Section,\n Select, SelectOption,\n useTranslate,\n} from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport PropTypes from 'prop-types';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-settings.general');\n\nconst GeneralSettings = ({\n isMailUiDisabled = false,\n values,\n mailServerName,\n imapServerName,\n isWindows = false,\n ipAddresses,\n isMaxLetterSizeChangeable = false,\n isMessageSubmissionDedicatedIPSupported = false,\n isMessageSubmissionAllIPSupported = false,\n handleFieldChange,\n}) => {\n const translate = useTranslate('admin.components.forms.server-mail-settings.general');\n const serverChangeUrl = isWindows ? '/cp/server/components/default/mailserver' : '/admin/update/add-components';\n\n const ipV4Addresses = ipAddresses.filter(({ isIPv6 }) => !isIPv6);\n const ipV6Addresses = ipAddresses.filter(({ isIPv6 }) => isIPv6);\n\n return (\n <Section title={<Translate content=\"title\" />}>\n <FormFieldCheckbox\n label={<Translate content=\"mailUiEnabled\" />}\n name=\"settings[isMailUiEnabled]\"\n />\n <FormField\n label={<Translate content=\"serverName\" />}\n description={\n <Translate\n content=\"changeServerHint\"\n params={{ serverChangeLink: (<Link href={serverChangeUrl} target=\"_blank\"><Translate content=\"changeServerName\" /></Link>) }}\n />\n }\n >\n {mailServerName}\n </FormField>\n {imapServerName && imapServerName !== mailServerName && (\n <FormField\n label={<Translate content=\"imapServerName\" />}\n description={\n <Translate\n content=\"changeServerHint\"\n params={{ serverChangeLink: (<Link href={serverChangeUrl} target=\"_blank\"><Translate content=\"changeImapServerName\" /></Link>) }}\n />\n }\n >\n {imapServerName}\n </FormField>\n )}\n {getIn(values, 'settings[maxMessageSize]') !== null && (\n <>\n <FormFieldCheckbox\n name=\"settings[maxMessageSizeEnabled]\"\n label={<Translate content=\"maxMessageSize\" />}\n disabled={isMailUiDisabled || !isMaxLetterSizeChangeable}\n />\n {getIn(values, 'settings[maxMessageSizeEnabled]') && (\n <FormField\n label={null}\n name=\"settings[maxMessageSize]\"\n description={\n <Translate\n content=\"maxMessageSizeHint\"\n params={{ kbLink: (\n <Link\n href={'https://support.plesk.com/hc/en-us/articles/12377276881559'}\n target=\"_blank\"\n >\n <Translate content=\"maxMessageSizeHintLink\" />\n </Link>\n ) }}\n />\n }\n >\n {({ getValue, setValue, getName }) => (\n <>\n <Input\n name={getName()}\n size={8}\n value={getValue()}\n onChange={e => setValue(e.target.value)}\n maxLength=\"7\"\n disabled={isMailUiDisabled || !isMaxLetterSizeChangeable}\n />\n {'\\u00A0 '}\n <Translate content=\"kbytes\" />\n </>\n )}\n </FormField>\n )}\n </>\n )}\n {getIn(values, 'settings[maxConnections]') !== null && (\n <FormField\n name=\"settings[maxConnections]\"\n label={<Translate content=\"maxConnections\" />}\n description={<Translate content={`maxConnectionsHint${imapServerName}`} />}\n >\n {({ getValue, setValue, getName }) => (\n <Input\n name={getName()}\n size={8}\n value={getValue()}\n onChange={e => setValue(e.target.value)}\n maxLength=\"10\"\n disabled={isMailUiDisabled}\n />\n )}\n </FormField>\n )}\n {getIn(values, 'settings[maxConnectionsPerIp]') !== null && (\n <FormField\n name=\"settings[maxConnectionsPerIp]\"\n label={<Translate content={`maxConnectionsPerIp${imapServerName}`} />}\n description={<Translate content={`maxConnectionsPerIpHint${imapServerName}`} />}\n >\n {({ getValue, setValue, getName }) => (\n <Input\n name={getName()}\n size={8}\n value={getValue()}\n onChange={e => setValue(e.target.value)}\n maxLength=\"10\"\n disabled={isMailUiDisabled}\n />\n )}\n </FormField>\n )}\n {getIn(values, 'settings[outgoingEmailMode]') !== null && (\n <FormFieldRadioButtons\n label={<Translate content=\"outgoingEmailMode\" />}\n name=\"settings[outgoingEmailMode]\"\n disabled={isMailUiDisabled}\n options={[\n { value: 'domain-ip', label: <Translate content=\"outgoingEmailModeDomainIp\" /> },\n { value: 'domain-name', label: <Translate content=\"outgoingEmailModeDomainName\" /> },\n {\n value: 'explicit-ip',\n label: <Translate content=\"outgoingEmailModeExplicitIp\" />,\n indentFields: [\n ipV4Addresses.length && (\n <div style={{ marginBlockStart: '8px' }}>\n <Translate content=\"outgoingEmailModeExplicitIpV4\" />{'\\u00A0'}\n <Select\n name=\"settings[outgoingEmailModeIpV4]\"\n id=\"settings-outgoingEmailModeIpV4\"\n size=\"sm\"\n value={getIn(values, 'settings[outgoingEmailModeIpV4]')}\n onChange={value => handleFieldChange('settings[outgoingEmailModeIpV4]', value)}\n disabled={isMailUiDisabled || getIn(values, 'settings[outgoingEmailMode]') !== 'explicit-ip'}\n >\n <SelectOption value=\"\">{translate('outgoingEmailModeExplicitIpNone')}</SelectOption>\n {ipV4Addresses.map(({ ipAddress }) => (\n <SelectOption key={ipAddress} value={ipAddress}>{ipAddress}</SelectOption>\n ))}\n </Select>\n </div>\n ),\n ipV6Addresses.length && (\n <div style={{ marginBlockStart: '8px' }}>\n <Translate content=\"outgoingEmailModeExplicitIpV6\" />{'\\u00A0'}\n <Select\n name=\"settings[outgoingEmailModeIpV6]\"\n id=\"settings-outgoingEmailModeIpV6\"\n size=\"sm\"\n value={getIn(values, 'settings[outgoingEmailModeIpV6]')}\n onChange={value => handleFieldChange('settings[outgoingEmailModeIpV6]', value)}\n disabled={isMailUiDisabled || getIn(values, 'settings[outgoingEmailMode]') !== 'explicit-ip'}\n >\n <SelectOption value=\"\">{translate('outgoingEmailModeExplicitIpNone')}</SelectOption>\n {ipV6Addresses.map(({ ipAddress }) => (\n <SelectOption key={ipAddress} value={ipAddress}>{ipAddress}</SelectOption>\n ))}\n </Select>\n </div>\n ),\n ].filter(Boolean),\n },\n ]}\n />\n )}\n {getIn(values, 'settings[isMessageSubmissionEnabled]') !== null && (\n <>\n <FormFieldCheckbox\n label={<Translate content={isMessageSubmissionDedicatedIPSupported ? 'messageSubmission' : 'messageSubmissionOnAllIp'} />}\n name=\"settings[isMessageSubmissionEnabled]\"\n disabled={isMailUiDisabled}\n />\n {getIn(values, 'settings[isMessageSubmissionEnabled]') && isMessageSubmissionDedicatedIPSupported && (\n <Section collapsible>\n <Translate content=\"messageSubmissionBindTo\" />{'\\u00A0'}\n <Select\n name=\"settings[messageSubmissionIp]\"\n value={getIn(values, 'settings[messageSubmissionIp]')}\n disabled={isMailUiDisabled}\n onChange={value => handleFieldChange('settings[messageSubmissionIp]', value)}\n >\n {isMessageSubmissionAllIPSupported && (\n <SelectOption value=\"\">{translate('messageSubmissionAllIpAddresses')}</SelectOption>\n )}\n {ipAddresses.map(({ ipAddress }) => (\n <SelectOption key={ipAddress} value={ipAddress}>{ipAddress}</SelectOption>\n ))}\n </Select>\n </Section>\n )}\n </>\n )}\n {getIn(values, 'settings[isEmailSubaddressingEnabled]') !== null && (\n <FormFieldCheckbox\n label={<Translate content=\"subaddressing\" />}\n name=\"settings[isEmailSubaddressingEnabled]\"\n description={\n <Translate\n content=\"subaddressingHint\"\n params={{\n verpStyleLink: (\n <Link href={'https://en.wikipedia.org/wiki/Variable_envelope_return_path'} target=\"_blank\">\n <Translate content=\"verpStyleLink\" />\n </Link>\n ),\n }}\n />\n }\n disabled={isMailUiDisabled}\n />\n )}\n {getIn(values, 'settings[isMboxQuotaWarningEnabled]') !== null && (\n <FormFieldCheckbox\n label={<Translate content=\"mboxQuotaWarning\" />}\n name=\"settings[isMboxQuotaWarningEnabled]\"\n description={\n <>\n <Translate content=\"mboxQuotaWarningHint\" />\n <br />\n <Link href=\"/admin/mail-settings/customize-mailbox-quota-warning\">\n <Translate content=\"mboxQuotaWarningChange\" />\n </Link>\n </>\n }\n disabled={isMailUiDisabled}\n />\n )}\n {getIn(values, 'settings[isFixSenderEnabled]') !== null && (\n <FormFieldCheckbox\n label={<Translate content=\"fixSender\" />}\n name=\"settings[isFixSenderEnabled]\"\n description={<Translate content=\"fixSenderHint\" />}\n disabled={isMailUiDisabled}\n />\n )}\n </Section>\n );\n};\n\nGeneralSettings.propTypes = {\n isMailUiDisabled: PropTypes.bool,\n values: PropTypes.object.isRequired,\n mailServerName: PropTypes.string.isRequired,\n imapServerName: PropTypes.string.isRequired,\n isWindows: PropTypes.bool,\n ipAddresses: PropTypes.array.isRequired,\n isMaxLetterSizeChangeable: PropTypes.bool,\n isMessageSubmissionDedicatedIPSupported: PropTypes.bool,\n isMessageSubmissionAllIPSupported: PropTypes.bool,\n handleFieldChange: PropTypes.func.isRequired,\n};\n\nexport default GeneralSettings;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { FormFieldCheckbox, Section, StatusMessage } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport PropTypes from 'prop-types';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-settings.mailman');\n\nconst MailmanSettings = ({\n isMailUiDisabled = false,\n hasLocalhostRelayingAddressesIpV4 = false,\n hasLocalhostRelayingAddressesIpV6 = false,\n}) => (\n <Section title={<Translate content=\"title\" />}>\n {!hasLocalhostRelayingAddressesIpV4 && !hasLocalhostRelayingAddressesIpV6 && (\n <StatusMessage intent=\"warning\"><Translate content=\"noLocalhost\" /></StatusMessage>\n )}\n {!hasLocalhostRelayingAddressesIpV4 && hasLocalhostRelayingAddressesIpV6 && (\n <StatusMessage intent=\"warning\"><Translate content=\"noLocalhostIpv4\" /></StatusMessage>\n )}\n {hasLocalhostRelayingAddressesIpV4 && !hasLocalhostRelayingAddressesIpV6 && (\n <StatusMessage intent=\"warning\"><Translate content=\"noLocalhostIpv6\" /></StatusMessage>\n )}\n <FormFieldCheckbox\n label={<Translate content=\"secureLinks\" />}\n name=\"settings[isListSecureLinksEnabled]\"\n description={<Translate content=\"secureLinksHint\" />}\n disabled={isMailUiDisabled}\n />\n </Section>\n);\n\nMailmanSettings.propTypes = {\n isMailUiDisabled: PropTypes.bool,\n hasLocalhostRelayingAddressesIpV4: PropTypes.bool,\n hasLocalhostRelayingAddressesIpV6: PropTypes.bool,\n};\n\nexport default MailmanSettings;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { Checkbox, FormField, Input, Status } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-settings.outgoing');\n\nconst OutgoingLimit = ({ value, name, isUnlimited, warnings = [], isDisabled = false }) => {\n const [limit, setLimit] = useState('');\n\n useEffect(() => {\n setLimit(isUnlimited(value) ? '' : value);\n }, [value, isUnlimited]);\n\n return (\n <FormField\n label={<Translate content={name} />}\n name={`outgoingMessages[${name}]`}\n >\n {({ getValue, setValue }) => (\n <>\n <div\n className=\"server-mail-settings-form-field-complex\"\n style={{ gap: 8 }}\n >\n <Input\n name={`outgoingMessages[${name}]`}\n size={8}\n value={limit}\n onChange={e => {\n setValue(e.target.value);\n setLimit(e.target.value);\n }}\n maxLength=\"9\"\n disabled={isDisabled || isUnlimited(getValue())}\n />\n <Checkbox\n name={`outgoingMessages[${name}Unlimited]`}\n checked={isUnlimited(getValue())}\n onChange={enabled => enabled ? setValue(-1) : setValue(limit)}\n disabled={isDisabled}\n >\n <Translate content=\"unlimited\" />\n </Checkbox>\n </div>\n {warnings.map(warning => (<Status key={warning} intent=\"warning\">{warning}</Status>))}\n </>\n )}\n </FormField>\n );\n};\n\nOutgoingLimit.propTypes = {\n value: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n isUnlimited: PropTypes.func.isRequired,\n warnings: PropTypes.array,\n isDisabled: PropTypes.bool,\n};\n\nexport default OutgoingLimit;\n\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { FormFieldCheckbox, FormFieldSelect, getIn, Section, useTranslate, StatusMessage, Link } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport { useEffect, useState, useCallback } from 'react';\nimport OutgoingLimit from './OutgoingLimit';\nimport PropTypes from 'prop-types';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-settings.outgoing');\n\nconst OutgoingMessages = ({ isMailUiDisabled = false, values, allowedReportPeriods, allowedNotificationPeriods }) => {\n const translate = useTranslate('admin.components.forms.server-mail-settings.outgoing');\n const isEnabled = !isMailUiDisabled && getIn(values, 'outgoingMessages[isEnabled]');\n const [mailboxLimitWarnings, setMailboxLimitWarnings] = useState([]);\n const [domainLimitWarnings, setDomainLimitWarnings] = useState([]);\n\n const mailboxLimit = getIn(values, 'outgoingMessages[mailboxLimit]');\n const domainLimit = getIn(values, 'outgoingMessages[domainLimit]');\n const subscriptionLimit = getIn(values, 'outgoingMessages[subscriptionLimit]');\n\n const isUnlimited = useCallback(value => value === -1, []);\n\n useEffect(() => {\n const getValue = value => isUnlimited(value) ? (<Translate content=\"unlimited\" />) : +value;\n const isDefined = value => value !== null && value !== '';\n const mailboxLimitWarnings = [];\n const domainLimitWarnings = [];\n\n if (isEnabled) {\n if (isDefined(mailboxLimit) && isDefined(domainLimit) && !isUnlimited(domainLimit) && (+mailboxLimit > +domainLimit || isUnlimited(mailboxLimit))) {\n mailboxLimitWarnings.push(\n <Translate\n content=\"mailboxLimitExceedsDomainLimit\"\n params={{ value: getValue(mailboxLimit), highLevelLimitValue: getValue(domainLimit) }}\n />,\n );\n }\n if (isDefined(mailboxLimit) && isDefined(subscriptionLimit) && !isUnlimited(subscriptionLimit) && (+mailboxLimit > +subscriptionLimit || isUnlimited(mailboxLimit))) {\n mailboxLimitWarnings.push(\n <Translate\n content=\"mailboxLimitExceedsSubscriptionLimit\"\n params={{ value: getValue(mailboxLimit), highLevelLimitValue: getValue(subscriptionLimit) }}\n />,\n );\n }\n if (isDefined(domainLimit) && isDefined(subscriptionLimit) && !isUnlimited(subscriptionLimit) && (+domainLimit > +subscriptionLimit || isUnlimited(domainLimit))) {\n domainLimitWarnings.push(\n <Translate\n content=\"domainLimitExceedsSubscriptionLimit\"\n params={{ value: getValue(domainLimit), highLevelLimitValue: getValue(subscriptionLimit) }}\n />,\n );\n }\n }\n\n setMailboxLimitWarnings(mailboxLimitWarnings);\n setDomainLimitWarnings(domainLimitWarnings);\n }, [isEnabled, mailboxLimit, domainLimit, subscriptionLimit, isUnlimited]);\n\n return (\n <Section title={<Translate content=\"title\" />}>\n {isEnabled && (getIn(values, 'relay[noRelayNetworks]') ?? []).length !== 0 && (\n <StatusMessage intent=\"warning\"><Translate content=\"whiteListNotEmpty\" /></StatusMessage>\n )}\n {isEnabled && getIn(values, 'relay[type]') === 'open' && (\n <StatusMessage intent=\"warning\"><Translate content=\"relayIsOpen\" /></StatusMessage>\n )}\n <p>\n <Translate\n content=\"description\"\n params={{ link: (\n <Link\n href=\"/smb/help/redirect/controller-name/mail-settings/action-name/outgoing-messages\"\n target=\"_blank\"\n >\n <Translate content=\"learnMore\" />\n </Link>\n ) }}\n />\n </p>\n <FormFieldCheckbox\n label={<Translate content=\"enabled\" />}\n name=\"outgoingMessages[isEnabled]\"\n disabled={isMailUiDisabled}\n />\n {getIn(values, 'outgoingMessages[isCountRecipientsEnabled]') !== null && (\n <FormFieldCheckbox\n label={<Translate content=\"countRecipients\" />}\n name=\"outgoingMessages[isCountRecipientsEnabled]\"\n description={<Translate content=\"countRecipientsHint\" />}\n disabled={!isEnabled}\n />\n )}\n {mailboxLimit !== null && (\n <OutgoingLimit\n value={mailboxLimit}\n name=\"mailboxLimit\"\n isUnlimited={isUnlimited}\n warnings={mailboxLimitWarnings}\n isDisabled={!isEnabled}\n />\n )}\n {domainLimit !== null && (\n <OutgoingLimit\n value={domainLimit}\n name=\"domainLimit\"\n isUnlimited={isUnlimited}\n warnings={domainLimitWarnings}\n isDisabled={!isEnabled}\n />\n )}\n {subscriptionLimit !== null && (\n <OutgoingLimit\n value={subscriptionLimit}\n name=\"subscriptionLimit\"\n isUnlimited={isUnlimited}\n isDisabled={!isEnabled}\n />\n )}\n {getIn(values, 'outgoingMessages[isSendmailEnabled]') !== null && (\n <FormFieldCheckbox\n label={<Translate content=\"sendmail\" />}\n name=\"outgoingMessages[isSendmailEnabled]\"\n description={<Translate content=\"sendmailHint\" />}\n disabled={!isEnabled}\n />\n )}\n <FormFieldSelect\n label={<Translate content=\"reportPeriod\" />}\n name=\"outgoingMessages[reportPeriod]\"\n description={<Translate content=\"reportPeriodHint\" />}\n size=\"sm\"\n disabled={!isEnabled}\n >\n {allowedReportPeriods.map(period => (\n <option key={period} value={period}>{translate(`period${period}`)}</option>\n ))}\n </FormFieldSelect>\n <FormFieldSelect\n label={<Translate content=\"notificationPeriod\" />}\n name=\"outgoingMessages[notificationPeriod]\"\n description={<Translate content=\"notificationPeriodHint\" />}\n size=\"sm\"\n disabled={!isEnabled}\n >\n {allowedNotificationPeriods.map(period => (\n <option key={period} value={period}>{translate(`period${period}`)}</option>\n ))}\n </FormFieldSelect>\n </Section>\n );\n};\n\nOutgoingMessages.propTypes = {\n isMailUiDisabled: PropTypes.bool,\n values: PropTypes.object.isRequired,\n allowedReportPeriods: PropTypes.array.isRequired,\n allowedNotificationPeriods: PropTypes.array.isRequired,\n};\n\nexport default OutgoingMessages;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { FormFieldRadioButtons, Section } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport PropTypes from 'prop-types';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-settings.pop3-names');\n\nconst Pop3Names = ({ isMailUiDisabled = false }) => (\n <Section title={<Translate content=\"title\" />}>\n <FormFieldRadioButtons\n label={null}\n name=\"settings[isShortPop3NameEnabled]\"\n disabled={isMailUiDisabled}\n options={[\n { value: 'true', label: <Translate content=\"enabled\" /> },\n { value: 'false', label: <Translate content=\"disabled\" /> },\n ]}\n />\n </Section>\n);\n\nPop3Names.propTypes = {\n isMailUiDisabled: PropTypes.bool,\n};\n\nexport default Pop3Names;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport {\n Checkbox,\n FormField,\n FormFieldCheckbox,\n FormFieldRadioButtons,\n FormFieldText,\n Input,\n Link,\n Section,\n getIn,\n Status,\n} from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport PropTypes from 'prop-types';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-settings.relay');\n\nconst Relay = ({\n isMailUiDisabled = false,\n values,\n isOpenRelayAllowed = false,\n isWindows = false,\n isRelayLockTimeSupported = false,\n isRelayTypeOpenSupported = false,\n isRelayTypeClosedSupported = false,\n isRelayTypeAuthSupported = false,\n isRelayTypeAuthPop3Supported = false,\n isRelayTypeAuthSmtpSupported = false,\n isRelayTypeAuthBothSupported = false,\n handleFieldChange,\n}) => {\n const isValid = (isPopAuthEnabled, isSmtpAuthEnabled) => (isRelayTypeAuthBothSupported && isPopAuthEnabled && isSmtpAuthEnabled)\n || (isRelayTypeAuthPop3Supported && isPopAuthEnabled && !isSmtpAuthEnabled)\n || (isRelayTypeAuthSmtpSupported && !isPopAuthEnabled && isSmtpAuthEnabled);\n\n const handlePopAuth = value => {\n const isSmtpAuthEnabled = getIn(values, 'relay[isSmtpAuthEnabled]');\n if (isValid(value, isSmtpAuthEnabled)) {\n handleFieldChange('relay[isPopAuthEnabled]', value);\n return;\n }\n if (!isSmtpAuthEnabled && !value) {\n if (isValid(value, true)) {\n handleFieldChange('relay[isSmtpAuthEnabled]', true);\n handleFieldChange('relay[isPopAuthEnabled]', value);\n return;\n }\n }\n\n handleFieldChange('relay[isPopAuthEnabled]', !value);\n };\n\n const handleSmtpAuth = value => {\n const isPopAuthEnabled = getIn(values, 'relay[isPopAuthEnabled]');\n if (isValid(isPopAuthEnabled, value)) {\n handleFieldChange('relay[isSmtpAuthEnabled]', value);\n return;\n }\n if (!isPopAuthEnabled && !value) {\n if (isValid(true, value)) {\n handleFieldChange('relay[isPopAuthEnabled]', true);\n handleFieldChange('relay[isSmtpAuthEnabled]', value);\n return;\n }\n }\n handleFieldChange('relay[isSmtpAuthEnabled]', !value);\n };\n\n return (\n <Section title={<Translate content=\"title\" />}>\n <FormFieldRadioButtons\n label={<Translate content=\"type\" />}\n name=\"relay[type]\"\n disabled={isMailUiDisabled}\n description={getIn(values, 'relay[type]') === 'open' && (\n <Status intent=\"danger\"><Translate content=\"openSpamWarning\" /><br /><Translate content=\"openSpamChange\" /></Status>\n )}\n options={[\n isOpenRelayAllowed && {\n value: 'open',\n label: (\n <>\n <Translate content=\"open\" />\n {!isRelayTypeOpenSupported && (\n <>{'\\u00A0'}{'('}<Translate content=\"notSupported\" />{')'}</>\n )}\n </>\n ),\n disabled: !isRelayTypeOpenSupported,\n },\n {\n value: 'closed',\n label: (\n <>\n <Translate content=\"closed\" />\n {!isRelayTypeClosedSupported && (\n <>{'\\u00A0'}{'('}<Translate content=\"notSupported\" />{')'}</>\n )}\n </>\n ),\n disabled: !isRelayTypeClosedSupported,\n description: isWindows && (\n <Translate\n content=\"change\"\n params={{ changeLink: <Link href=\"/admin/mail-gate\"><Translate content=\"changeLink\" /></Link> }}\n />\n ),\n },\n {\n value: 'auth',\n label: (\n <>\n <Translate content=\"auth\" />\n {!isRelayTypeAuthSupported && (\n <>{'\\u00A0'}{'('}<Translate content=\"notSupported\" />{')'}</>\n )}\n </>\n ),\n disabled: !isRelayTypeAuthSupported,\n indentFields: [\n <FormField\n key=\"popAuth\"\n label={null}\n style={{ marginBlockEnd: 0 }}\n >\n <div className=\"server-mail-settings-form-field-complex\">\n <Checkbox\n name=\"relay[isPopAuthEnabled]\"\n checked={getIn(values, 'relay[isPopAuthEnabled]')}\n onChange={handlePopAuth}\n disabled={\n isMailUiDisabled ||\n getIn(values, 'relay[type]') !== 'auth' ||\n !(isRelayTypeAuthPop3Supported || isRelayTypeAuthBothSupported)\n }\n >\n <Translate content=\"pop3\" />\n </Checkbox>\n <Translate content=\"lockTime\" />\n <Input\n name=\"relay[lockTime]\"\n size=\"sm\"\n value={getIn(values, 'relay[lockTime]')}\n onChange={e => handleFieldChange('relay[lockTime]', e.target.value)}\n maxLength=\"5\"\n disabled={\n isMailUiDisabled ||\n getIn(values, 'relay[type]') !== 'auth' ||\n !getIn(values, 'relay[isPopAuthEnabled]') ||\n !isRelayLockTimeSupported ||\n !(isRelayTypeAuthPop3Supported || isRelayTypeAuthBothSupported)\n }\n />\n <Translate content=\"min\" />\n </div>\n </FormField>,\n <FormFieldCheckbox\n key=\"smtp\"\n label={<Translate content=\"smtp\" />}\n name=\"relay[isSmtpAuthEnabled]\"\n onChange={handleSmtpAuth}\n disabled={isMailUiDisabled || !(isRelayTypeAuthSmtpSupported || isRelayTypeAuthBothSupported)}\n />,\n ],\n },\n ].filter(Boolean)}\n />\n {isWindows && values?.relay?.noRelayNetworks && (\n <FormFieldText\n label={<Translate content=\"noRelayNetworks\" />}\n name=\"relay[noRelayNetworks]\"\n multi\n size=\"xl\"\n description={<Translate content=\"noRelayNetworksHint\" />}\n disabled={isMailUiDisabled}\n />\n )}\n </Section>\n );\n};\n\nRelay.propTypes = {\n isMailUiDisabled: PropTypes.bool,\n values: PropTypes.object.isRequired,\n isOpenRelayAllowed: PropTypes.bool,\n isWindows: PropTypes.bool,\n isRelayLockTimeSupported: PropTypes.bool,\n isRelayTypeOpenSupported: PropTypes.bool,\n isRelayTypeClosedSupported: PropTypes.bool,\n isRelayTypeAuthSupported: PropTypes.bool,\n isRelayTypeAuthPop3Supported: PropTypes.bool,\n isRelayTypeAuthSmtpSupported: PropTypes.bool,\n isRelayTypeAuthBothSupported: PropTypes.bool,\n handleFieldChange: PropTypes.func.isRequired,\n};\n\nexport default Relay;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport {\n FormFieldCheckbox,\n FormFieldSelect,\n FormFieldText,\n Section,\n getIn,\n useTranslate,\n Input,\n FormField,\n} from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport PropTypes from 'prop-types';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-settings.spam-filter');\n\nconst SpamFilter = ({ isMailUiDisabled = false, values, isRBLInstalled = false }) => {\n const translate = useTranslate('admin.components.forms.server-mail-settings.spam-filter');\n\n const isDmarcSupported = getIn(values, 'spamFilter[isDmarcEnabled]') !== null;\n const isDkimSupported = getIn(values, 'spamFilter[isSigningOutgoingMailEnabled]') !== null;\n const isSpfSupported = getIn(values, 'spamFilter[isSpfEnabled]') !== null;\n\n return (\n <>\n {isDmarcSupported && (\n <Section title={<Translate content=\"dmarc\" />}>\n <FormFieldCheckbox\n label={<Translate content=\"dmarcEnabled\" />}\n name=\"spamFilter[isDmarcEnabled]\"\n description={isDkimSupported && isSpfSupported && (<Translate content=\"dmarcHint\" />)}\n disabled={\n isMailUiDisabled ||\n false === getIn(values, 'spamFilter[isVerifyingIncomingMailEnabled]') ||\n false === getIn(values, 'spamFilter[isSpfEnabled]')\n }\n />\n </Section>\n )}\n {isDkimSupported && (\n <Section title={<Translate content=\"dkim\" />}>\n <FormFieldCheckbox\n label={<Translate content=\"singOutgoing\" />}\n name=\"spamFilter[isSigningOutgoingMailEnabled]\"\n disabled={isMailUiDisabled}\n />\n {isDmarcSupported && (\n <FormFieldCheckbox\n label={<Translate content=\"verifyIncoming\" />}\n name=\"spamFilter[isVerifyingIncomingMailEnabled]\"\n description={<Translate content=\"verifyIncomingHint\" />}\n disabled={isMailUiDisabled || getIn(values, 'spamFilter[isDmarcEnabled]')}\n />\n )}\n </Section>\n )}\n {isSpfSupported && (\n <Section title={<Translate content=\"spf\" />}>\n <FormFieldCheckbox\n label={<Translate content=\"spfEnabled\" />}\n name=\"spamFilter[isSpfEnabled]\"\n description={isDmarcSupported && (<Translate content=\"spfEnabledHint\" />)}\n disabled={isMailUiDisabled || getIn(values, 'spamFilter[isDmarcEnabled]')}\n />\n <FormFieldCheckbox\n label={<Translate content=\"ignoreErrors\" />}\n name=\"spamFilter[isErrorIgnored]\"\n description={<Translate content=\"ignoreErrorsHint\" />}\n disabled={isMailUiDisabled || !getIn(values, 'spamFilter[isSpfEnabled]') || +getIn(values, 'spamFilter[behavior]') <= 2}\n />\n <FormFieldSelect\n label={<Translate content=\"behavior\" />}\n name=\"spamFilter[behavior]\"\n description={<Translate content=\"behaviorHint\" />}\n disabled={isMailUiDisabled || !getIn(values, 'spamFilter[isSpfEnabled]')}\n >\n <option value=\"1\">{translate('behaviorCreateHeadersNoBlock')}</option>\n <option value=\"2\">{translate('behaviorUseTmpErrors')}</option>\n <option value=\"3\">{translate('behaviorRejectIfFail')}</option>\n <option value=\"4\">{translate('behaviorRejectIfSoftfail')}</option>\n <option value=\"5\">{translate('behaviorRejectIfNeutral')}</option>\n <option value=\"6\">{translate('behaviorRejectIfNoPass')}</option>\n </FormFieldSelect>\n <FormField\n label={<Translate content=\"localRules\" />}\n name=\"spamFilter[localRules]\"\n >\n {({ getValue, setValue, getName }) => (\n <Input\n name={getName()}\n size={50}\n value={getValue()}\n onChange={e => setValue(e.target.value)}\n maxLength=\"255\"\n disabled={isMailUiDisabled || !getIn(values, 'spamFilter[isSpfEnabled]')}\n />\n )}\n </FormField>\n <FormField\n label={<Translate content=\"guessRules\" />}\n name=\"spamFilter[guessRules]\"\n >\n {({ getValue, setValue, getName }) => (\n <Input\n name={getName()}\n size={50}\n value={getValue()}\n onChange={e => setValue(e.target.value)}\n maxLength=\"255\"\n disabled={isMailUiDisabled || !getIn(values, 'spamFilter[isSpfEnabled]')}\n />\n )}\n </FormField>\n <FormField\n label={<Translate content=\"explanationText\" />}\n name=\"spamFilter[explanationText]\"\n >\n {({ getValue, setValue, getName }) => (\n <Input\n name={getName()}\n size={50}\n value={getValue()}\n onChange={e => setValue(e.target.value)}\n maxLength=\"255\"\n disabled={isMailUiDisabled || !getIn(values, 'spamFilter[isSpfEnabled]')}\n />\n )}\n </FormField>\n </Section>\n )}\n {getIn(values, 'spamFilter[isRblEnabled]') !== null && (\n <Section\n title={<Translate content=\"rbl\" />}\n >\n <FormFieldCheckbox\n label={<Translate content=\"rblEnabled\" />}\n name=\"spamFilter[isRblEnabled]\"\n disabled={isMailUiDisabled || !isRBLInstalled}\n />\n <FormFieldText\n label={<Translate content=\"rblServer\" />}\n name=\"spamFilter[rblServer]\"\n size=\"xl\"\n description={<Translate content=\"rblServerHint\" />}\n disabled={isMailUiDisabled || !isRBLInstalled || !getIn(values, 'spamFilter[isRblEnabled]')}\n />\n </Section>\n )}\n </>\n );\n};\n\nSpamFilter.propTypes = {\n isMailUiDisabled: PropTypes.bool,\n values: PropTypes.object.isRequired,\n isRBLInstalled: PropTypes.bool,\n};\n\nexport default SpamFilter;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useCallback, useState, useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { getIn, setIn } from '@plesk/ui-library';\nimport Form from 'components/Form';\nimport GeneralSettings from './GeneralSettings';\nimport Autodiscover from './Autodiscover';\nimport Relay from './Relay';\nimport OutgoingMessages from './OutgoingMessages';\nimport MailmanSettings from './MailmanSettings';\nimport SpamFilter from './SpamFilter';\nimport AutoReplyHeaders from './AutoReplyHeaders';\nimport Pop3Names from './Pop3Names';\nimport PropTypes from 'prop-types';\nimport { gql, useMutation } from '@apollo/client';\nimport { addToast } from 'helpers/toasts';\nimport Link from 'components/common/Link';\nimport { Locale } from 'jsw';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-settings');\nconst ButtonsTranslate = Locale.getTranslate('components.buttons');\n\nconst UPDATE_SERVER_MAIL = gql`\n mutation UpdateServerMail($input: UpdateServerMailInput!) {\n updateServerMail(input: $input) {\n warnings\n }\n }\n\n`;\n\nconst toString = value => value === null ? null : `${value}`;\nconst toNumber = value => value === null || `${value}`.trim() === '' ? null : +value;\n\nconst ServerMailSettingsForm = ({\n serverMail: { isMailUiEnabled, settings, autodiscover, relay, outgoingMessages, spamFilter },\n os: { isWindows },\n capability: {\n mailServer: {\n isMaxLetterSizeChangeable,\n isMessageSubmissionDedicatedIPSupported,\n isMessageSubmissionAllIPSupported,\n isRelayLockTimeSupported,\n isRelayTypeOpenSupported,\n isRelayTypeClosedSupported,\n isRelayTypeAuthSupported,\n isRelayTypeAuthPop3Supported,\n isRelayTypeAuthSmtpSupported,\n isRelayTypeAuthBothSupported,\n },\n packages: { isRBLInstalled },\n },\n server: {\n ipAddresses: {\n nodes: ipAddresses,\n },\n },\n}) => {\n const navigate = useNavigate();\n const [updateServerMail] = useMutation(UPDATE_SERVER_MAIL, {\n refetchQueries: [{ query: require('queries/ServerMailSettingsPage.graphql') }],\n awaitRefetchQueries: true,\n });\n const returnUrl = '/admin/server/tools';\n\n const [values, setValues] = useState({});\n\n useEffect(() => {\n const { mailServerName, imapServerName, outgoingEmailModeIps, hasLocalhostRelayingAddressesIpV4, hasLocalhostRelayingAddressesIpV6, ...settingsValues } = settings || {};\n const { isDnsEnabled, ...autodiscoverValues } = autodiscover || {};\n const { isOpenRelayAllowed, ...relayValues } = relay || {};\n const { allowedReportPeriods, allowedNotificationPeriods, ...outgoingMessagesValues } = outgoingMessages || {};\n\n setValues({\n settings: settings ? {\n ...settingsValues,\n isMailUiEnabled,\n maxMessageSizeEnabled: !!settings.maxMessageSize,\n maxMessageSize: settings.maxMessageSize === null ? null : Math.max(Math.ceil(settings.maxMessageSize / 1024), 0),\n messageSubmissionIp: isMessageSubmissionDedicatedIPSupported ? (settings.messageSubmissionIp?.ipAddress ?? '') : null,\n outgoingEmailModeIpV4: outgoingEmailModeIps?.find(({ isIPv6 }) => !isIPv6)?.ipAddress ?? '',\n outgoingEmailModeIpV6: outgoingEmailModeIps?.find(({ isIPv6 }) => isIPv6)?.ipAddress ?? '',\n isShortPop3NameEnabled: toString(settings.isShortPop3NameEnabled),\n } : null,\n autodiscover: autodiscover ? autodiscoverValues : null,\n relay: relay ? relayValues : null,\n outgoingMessages: outgoingMessages ? outgoingMessagesValues : null,\n spamFilter: spamFilter ? {\n ...spamFilter,\n behavior: toString(spamFilter.behavior),\n } : null,\n });\n }, [isMailUiEnabled, settings, autodiscover, relay, outgoingMessages, spamFilter, isMessageSubmissionDedicatedIPSupported]);\n\n const handleFieldChange = useCallback((name, value) => setValues(values => setIn(values, name, value)), []);\n const isMailUiDisabled = settings ? getIn(values, 'settings[isMailUiEnabled]') === false : !isMailUiEnabled;\n\n const handleSubmit = data => Object.entries(data).reduce((obj, [key, value]) => {\n if (value !== null && typeof value === 'object') {\n const { __typename, ...strippedValue } = value;\n switch (key) {\n case 'settings': {\n const { maxMessageSizeEnabled, ...settings } = strippedValue;\n return ({\n ...obj,\n settings: {\n ...settings,\n maxMessageSize: maxMessageSizeEnabled ? toNumber(strippedValue.maxMessageSize) : 0,\n maxConnections: toNumber(strippedValue.maxConnections),\n maxConnectionsPerIp: toNumber(strippedValue.maxConnectionsPerIp),\n isShortPop3NameEnabled: strippedValue.isShortPop3NameEnabled === null ? null : strippedValue.isShortPop3NameEnabled === 'true',\n autoReplyHeaders: strippedValue.autoReplyHeaders === null ? null : strippedValue.autoReplyHeaders.map(header => {\n if (!header) {\n return null;\n }\n const { name, value } = header;\n return { name, value };\n }),\n },\n });\n }\n case 'relay':\n return ({\n ...obj,\n relay: {\n ...strippedValue,\n lockTime: toNumber(strippedValue.lockTime),\n },\n });\n case 'outgoingMessages':\n return ({\n ...obj,\n outgoingMessages: {\n ...strippedValue,\n mailboxLimit: strippedValue.mailboxLimit === '' ? null : toNumber(strippedValue.mailboxLimit),\n domainLimit: strippedValue.domainLimit === '' ? null : toNumber(strippedValue.domainLimit),\n subscriptionLimit: strippedValue.subscriptionLimit === '' ? null : toNumber(strippedValue.subscriptionLimit),\n },\n });\n case 'spamFilter':\n return ({\n ...obj,\n spamFilter: {\n ...strippedValue,\n behavior: strippedValue.behavior === null ? null : +strippedValue.behavior,\n },\n });\n }\n return ({ ...obj, [key]: strippedValue });\n }\n return ({ ...obj, [key]: value });\n }, {});\n\n const handleSuccess = ({ updateServerMail: { warnings } }, isApply) => {\n warnings.forEach(message => addToast({ intent: 'warning', message }));\n addToast({\n intent: 'success',\n message: <Translate content=\"success\" />,\n });\n\n if (isApply) {\n navigate(window.location.pathname, { replace: true });\n } else {\n navigate(returnUrl);\n }\n };\n\n return (\n <Form\n id=\"main-settings-content\"\n mutation={updateServerMail}\n values={values}\n onFieldChange={handleFieldChange}\n submitButton={{\n id: 'buttonid-ok',\n name: 'ok',\n children: <ButtonsTranslate content=\"save\" />,\n }}\n applyButton={{\n id: 'buttonid-apply',\n name: 'apply',\n children: <ButtonsTranslate content=\"apply\" />,\n }}\n cancelButton={{\n id: 'buttonid-cancel',\n name: 'cancel',\n children: <ButtonsTranslate content=\"cancel\" />,\n component: Link,\n to: returnUrl,\n }}\n onSubmit={handleSubmit}\n onSuccess={handleSuccess}\n >\n {settings && (\n <GeneralSettings\n {...settings}\n isMailUiDisabled={isMailUiDisabled}\n values={values}\n isWindows={isWindows}\n ipAddresses={ipAddresses}\n isMaxLetterSizeChangeable={isMaxLetterSizeChangeable}\n isMessageSubmissionDedicatedIPSupported={isMessageSubmissionDedicatedIPSupported}\n isMessageSubmissionAllIPSupported={isMessageSubmissionAllIPSupported}\n handleFieldChange={handleFieldChange}\n />\n )}\n {autodiscover && (<Autodiscover {...autodiscover} isMailUiDisabled={isMailUiDisabled} values={values} />)}\n {relay && (\n <Relay\n {...relay}\n isMailUiDisabled={isMailUiDisabled}\n values={values}\n isWindows={isWindows}\n isRelayLockTimeSupported={isRelayLockTimeSupported}\n isRelayTypeOpenSupported={isRelayTypeOpenSupported}\n isRelayTypeClosedSupported={isRelayTypeClosedSupported}\n isRelayTypeAuthSupported={isRelayTypeAuthSupported}\n isRelayTypeAuthPop3Supported={isRelayTypeAuthPop3Supported}\n isRelayTypeAuthSmtpSupported={isRelayTypeAuthSmtpSupported}\n isRelayTypeAuthBothSupported={isRelayTypeAuthBothSupported}\n handleFieldChange={handleFieldChange}\n />\n )}\n {outgoingMessages && (\n <OutgoingMessages\n {...outgoingMessages}\n isMailUiDisabled={isMailUiDisabled}\n values={values}\n />\n )}\n {(settings?.isListSecureLinksEnabled ?? null) !== null && (<MailmanSettings {...settings} isMailUiDisabled={isMailUiDisabled} />)}\n {spamFilter && (<SpamFilter isMailUiDisabled={isMailUiDisabled} values={values} isRBLInstalled={isRBLInstalled} />)}\n {(settings?.autoReplyHeaders ?? null) !== null && (<AutoReplyHeaders isMailUiDisabled={isMailUiDisabled} />)}\n {(settings?.isShortPop3NameEnabled ?? null) !== null && (<Pop3Names isMailUiDisabled={isMailUiDisabled} />)}\n </Form>\n );\n};\n\nServerMailSettingsForm.propTypes = {\n serverMail: PropTypes.shape({\n isMailUiEnabled: PropTypes.bool.isRequired,\n settings: PropTypes.object,\n autodiscover: PropTypes.object,\n relay: PropTypes.object,\n outgoingMessages: PropTypes.object,\n spamFilter: PropTypes.object,\n }).isRequired,\n os: PropTypes.shape({\n isWindows: PropTypes.bool.isRequired,\n }).isRequired,\n capability: PropTypes.shape({\n mailServer: PropTypes.object.isRequired,\n packages: PropTypes.object.isRequired,\n }).isRequired,\n server: PropTypes.shape({\n ipAddresses: PropTypes.shape({\n nodes: PropTypes.array.isRequired,\n }).isRequired,\n }).isRequired,\n};\n\nexport default ServerMailSettingsForm;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport Form from 'components/Form';\nimport SmarthostSettingsSection from './SmarthostSettingsSection';\nimport SmarthostConfigurationSection from './SmarthostConfigurationSection';\nimport PropTypes from 'prop-types';\nimport { useEffect, useState } from 'react';\nimport { Locale } from 'jsw';\nimport { gql, useMutation } from '@apollo/client';\nimport { setIn, getIn } from '@plesk/ui-library';\nimport Link from 'components/common/Link';\nimport { addToast } from 'helpers/toasts';\nimport { useNavigate } from 'react-router-dom';\n\nconst UPDATE_SMARTHOST = gql`\n mutation UpdateSmarthost($input: UpdateSmarthostInput!) {\n updateSmarthost(input: $input) {\n success\n message\n }\n }\n`;\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-smarthost');\nconst ButtonsTranslate = Locale.getTranslate('components.buttons');\n\nconst ServerMailSmarthostForm = ({\n serverMail: {\n smarthost: {\n smarthostEncryptionOptions,\n isServerEnabled,\n host,\n port,\n isAuthenticationRequired,\n username,\n encryption,\n },\n },\n os: {\n isWindows,\n },\n}) => {\n const navigate = useNavigate();\n const [updateSmarthost, { loading }] = useMutation(UPDATE_SMARTHOST, {\n refetchQueries: [{ query: require('queries/ServerMailSmarthostPage.graphql') }],\n awaitRefetchQueries: true,\n });\n const [values, setValues] = useState({});\n const [errors, setErrors] = useState({});\n const returnUrl = '/admin/server/tools';\n\n const handleFieldChange = (name, value) => {\n setValues(values => setIn(values, name, value));\n };\n\n const onDryRun = async () => {\n try {\n setErrors({});\n const { data: { updateSmarthost: { success, message } } } = await updateSmarthost({ variables: { input: { ...values, checkConnection: true } }, refetchQueries: [] });\n addToast({\n intent: success ? 'success' : 'danger',\n message: success ? <Translate content=\"configuration.checkConnection.success\" /> : message,\n });\n } catch (error) {\n const { graphQLErrors } = error;\n\n if (graphQLErrors[0]?.extensions?.category === 'validate') {\n const errors = graphQLErrors[0].extensions.messages;\n setErrors(errors);\n } else {\n addToast({\n intent: 'danger',\n message: graphQLErrors[0].extensions?.debugMessage || graphQLErrors[0].message,\n });\n }\n }\n };\n\n const handleSuccess = (updateSmarthost, isApply) => {\n addToast({\n intent: 'success',\n message: <Translate content=\"success\" />,\n });\n\n if (!isApply) {\n navigate(returnUrl);\n }\n };\n\n useEffect(() => {\n setValues({\n settings: {\n isServerEnabled,\n },\n configuration: {\n host,\n port: port.toString(),\n username,\n isAuthenticationRequired,\n password: '',\n encryption,\n },\n });\n }, [isServerEnabled, host, port, isAuthenticationRequired, username, encryption]);\n\n return (\n <Form\n id=\"smarthost-form\"\n mutation={updateSmarthost}\n values={values}\n errors={errors}\n onFieldChange={handleFieldChange}\n onSuccess={handleSuccess}\n submitButton={{\n id: 'buttonid-ok',\n name: 'ok',\n children: <ButtonsTranslate content=\"save\" />,\n disabled: loading,\n }}\n applyButton={{\n id: 'buttonid-apply',\n name: 'apply',\n children: <ButtonsTranslate content=\"apply\" />,\n disabled: loading,\n }}\n cancelButton={{\n id: 'buttonid-cancel',\n name: 'cancel',\n children: <ButtonsTranslate content=\"cancel\" />,\n component: Link,\n to: returnUrl,\n disabled: loading,\n }}\n >\n <SmarthostSettingsSection\n disabled={loading}\n />\n <SmarthostConfigurationSection\n encryptionOptions={smarthostEncryptionOptions}\n isWindows={isWindows}\n isAuthenticationRequired={getIn(values, 'configuration[isAuthenticationRequired]')}\n onDryRun={onDryRun}\n disabled={loading || !getIn(values, 'settings[isServerEnabled]')}\n />\n </Form>\n );\n};\n\nServerMailSmarthostForm.propTypes = {\n serverMail: PropTypes.shape({\n smarthost: PropTypes.shape({\n smarthostEncryptionOptions: PropTypes.array.isRequired,\n isServerEnabled: PropTypes.bool.isRequired,\n host: PropTypes.string.isRequired,\n port: PropTypes.number.isRequired,\n isAuthenticationRequired: PropTypes.bool.isRequired,\n username: PropTypes.string.isRequired,\n encryption: PropTypes.string,\n }).isRequired,\n }).isRequired,\n os: PropTypes.shape({\n isWindows: PropTypes.bool.isRequired,\n }).isRequired,\n};\n\nexport default ServerMailSmarthostForm;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { Locale } from 'jsw';\nimport {\n FormFieldRadioButtons,\n FormFieldPassword,\n FormFieldText, Button,\n Section, FormFieldCheckbox, FormField, Input,\n} from '@plesk/ui-library';\nimport PropTypes from 'prop-types';\nimport { useState } from 'react';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-smarthost.configuration');\n\nconst SmarthostConfigurationSection = ({\n encryptionOptions,\n isWindows,\n isAuthenticationRequired,\n onDryRun,\n disabled,\n}) => {\n const os = isWindows ? 'Windows' : 'Unix';\n\n const [isConfigurationCheck, setIsConfigurationCheck] = useState(false);\n\n const onCheckConnectionClick = async () => {\n setIsConfigurationCheck(true);\n await onDryRun();\n setIsConfigurationCheck(false);\n };\n\n return (\n <Section title={<Translate content=\"title\" />}>\n <FormField\n name=\"configuration[host]\"\n label={<Translate content=\"hostnameOrIP\" />}\n required\n description={!isWindows ? <Translate content=\"hostnameOrIP.unixHint\" /> : ''}\n >\n {({ getValue, setValue, getName }) => (\n <>\n <Input\n name={getName()}\n id=\"configuration-host\"\n size={45}\n value={getValue()}\n onChange={e => setValue(e.target.value)}\n disabled={disabled}\n />\n {'\\u00A0 '}\n <Button\n size=\"md\"\n state={isConfigurationCheck ? 'loading' : null}\n id=\"checkConnection\"\n onClick={onCheckConnectionClick}\n disabled={disabled}\n >\n <Translate content=\"checkConnection\" />\n </Button>\n </>\n )}\n </FormField>\n <FormFieldText\n name=\"configuration[port]\"\n label={<Translate content=\"port\" />}\n inputProps={{ size: 5 }}\n required\n disabled={disabled}\n />\n <FormFieldCheckbox\n name=\"configuration[isAuthenticationRequired]\"\n label={<Translate content=\"authRequired\" />}\n disabled={disabled}\n />\n <Section collapsible>\n <FormFieldText\n name=\"configuration[username]\"\n label={<Translate content=\"username\" />}\n size=\"md\"\n disabled={!isAuthenticationRequired || disabled}\n />\n <FormFieldPassword\n name=\"configuration[password]\"\n label={<Translate content=\"password\" />}\n size=\"md\"\n hideGenerateButton\n hidePasswordMeter\n disabled={!isAuthenticationRequired || disabled}\n />\n </Section>\n {encryptionOptions.length > 0 && (\n <FormFieldRadioButtons\n name=\"configuration[encryption]\"\n label={<Translate content=\"encryption\" />}\n options={encryptionOptions.map(key => ({ value: key, label: <Translate content={`encryption.${os}.${key}`} /> }))}\n disabled={disabled}\n />\n )}\n </Section>\n );\n};\n\nSmarthostConfigurationSection.propTypes = {\n encryptionOptions: PropTypes.array.isRequired,\n isWindows: PropTypes.bool.isRequired,\n isAuthenticationRequired: PropTypes.bool.isRequired,\n onDryRun: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired,\n};\n\nexport default SmarthostConfigurationSection;\n\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { Locale } from 'jsw';\nimport {\n FormFieldCheckbox,\n Section, StatusMessage,\n} from '@plesk/ui-library';\nimport PropTypes from 'prop-types';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-smarthost.settings');\n\nconst SmarthostSettingsSection = ({\n disabled,\n}) => (\n <Section title={<Translate content=\"title\" />}>\n <StatusMessage\n intent=\"warning\"\n >\n {\n <Translate\n content=\"note\"\n params={{\n title: (<b><Translate content=\"noteTitle\" /></b>),\n link: (\n <a href=\"https://docs.plesk.com/en-US/obsidian/administrator-guide/mail/configuring-a-smarthost-or-relayhost.80030\">\n <Translate content=\"noteLinkTitle\" />\n </a>\n ),\n }}\n />\n }\n </StatusMessage>\n <FormFieldCheckbox\n label={<Translate content=\"useSmarthost\" />}\n name=\"settings[isServerEnabled]\"\n disabled={disabled}\n />\n </Section>\n);\n\nSmarthostSettingsSection.propTypes = {\n disabled: PropTypes.bool.isRequired,\n};\n\nexport default SmarthostSettingsSection;\n\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useState, useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { gql, useMutation } from '@apollo/client';\nimport {\n Select,\n FormFieldText,\n SelectOption,\n FormField,\n FormFieldCheckbox,\n Section,\n Checkbox,\n Input,\n InputNumber,\n setIn,\n} from '@plesk/ui-library';\nimport PropTypes from 'prop-types';\nimport { Locale } from 'jsw';\n\nimport Form from 'components/Form';\nimport Link from 'components/common/Link';\nimport { addToast } from 'helpers/toasts';\n\nconst Translate = Locale.getTranslate('admin.components.forms.server-mail-spam-filter');\nconst ButtonsTranslate = Locale.getTranslate('components.buttons');\n\nconst UPDATE_SPAM_ASSASSIN = gql`\n mutation UpdateSpamAssassin($input: UpdateSpamAssassinInput!) {\n updateSpamAssassin(input: $input) {\n result\n }\n }\n`;\n\nconst ServerMailSpamFilterForm = ({\n serverMail: {\n spamAssassin: {\n settings: {\n isEnabled,\n isUserSettingsEnabled,\n isUserSettingsAllowed,\n requiredHits,\n maxMailLimit,\n maxThreadsLimit,\n tag,\n alarmMessage,\n languages,\n locales,\n isGreylistingProtectionEnabled,\n maxChildren,\n maxChildrenLimit,\n },\n },\n },\n capability: {\n mailServer: {\n isUserSettingsSupported,\n },\n },\n os: {\n isWindows,\n },\n}) => {\n const navigate = useNavigate();\n const returnUrl = '/admin/server/tools';\n const [updateSpamAssassin] = useMutation(UPDATE_SPAM_ASSASSIN, {\n refetchQueries: [{ query: require('queries/ServerMailSpamFilterPage.graphql') }],\n awaitRefetchQueries: true,\n });\n const [values, setValues] = useState({});\n\n const [maxMailLimitValue, setMaxMailLimitValue] = useState('');\n\n const isUserSettingsDisabled = isWindows && (!isUserSettingsSupported || !isUserSettingsAllowed);\n const isUnix = !isWindows;\n\n useEffect(() => {\n setValues({\n isEnabled,\n isUserSettingsEnabled,\n isGreylistingProtectionEnabled,\n maxChildren,\n requiredHits: requiredHits === null ? null : `${requiredHits}`,\n maxMailLimit: maxMailLimit === null ? null : `${maxMailLimit}`,\n maxThreadsLimit,\n alarmMessage,\n tag,\n languages: languages.filter(({ isTrusted }) => isTrusted).map(({ key }) => key),\n locales: locales.filter(({ isTrusted }) => isTrusted).map(({ key }) => key),\n });\n }, [\n isEnabled,\n isUserSettingsEnabled,\n isGreylistingProtectionEnabled,\n maxChildren,\n requiredHits,\n maxMailLimit,\n maxThreadsLimit,\n tag,\n alarmMessage,\n languages,\n locales,\n ]);\n\n const isSpamAssassInInstalled = values.isEnabled !== null;\n\n useEffect(() => {\n setMaxMailLimitValue(maxMailLimit ?? '');\n }, [maxMailLimit]);\n\n const handleSuccess = (_, isApply) => {\n addToast({\n intent: 'success',\n message: <Translate content=\"success\" />,\n });\n\n if (isApply) {\n navigate(window.location.pathname, { replace: true });\n } else {\n navigate(returnUrl);\n }\n };\n\n let isUserSettingsEnabledDescription = null;\n if (isUserSettingsDisabled) {\n isUserSettingsEnabledDescription = <Translate content=\"isUserSettingsEnabledHint\" />;\n } else if (isUnix && !isSpamAssassInInstalled) {\n isUserSettingsEnabledDescription = <Translate content=\"notInstalled\" />;\n }\n\n return (\n <Form\n id=\"server-mail-spam-assassin\"\n mutation={updateSpamAssassin}\n values={values}\n onFieldChange={(name, value) => setValues(values => setIn(values, name, value))}\n submitButton={{\n id: 'buttonid-ok',\n name: 'ok',\n children: <ButtonsTranslate content=\"save\" />,\n }}\n applyButton={{\n id: 'buttonid-apply',\n name: 'apply',\n children: <ButtonsTranslate content=\"apply\" />,\n }}\n cancelButton={{\n id: 'buttonid-cancel',\n name: 'cancel',\n children: <ButtonsTranslate content=\"cancel\" />,\n component: Link,\n to: returnUrl,\n }}\n onSuccess={handleSuccess}\n >\n <Section title={<Translate content=\"general\" />}>\n <FormFieldCheckbox\n label={<Translate content=\"isEnabled\" />}\n name=\"isEnabled\"\n disabled={!isSpamAssassInInstalled}\n description={isUnix && !isSpamAssassInInstalled ? <Translate content=\"notInstalled\" /> : ''}\n />\n {isUnix && (\n <FormFieldCheckbox\n label={<Translate content=\"greylistingSpamProtection\" />}\n name=\"isGreylistingProtectionEnabled\"\n />\n )}\n <FormFieldCheckbox\n label={<Translate content=\"isUserSettingsEnabled\" />}\n name=\"isUserSettingsEnabled\"\n disabled={isUserSettingsDisabled || !isSpamAssassInInstalled}\n description={isUserSettingsEnabledDescription}\n />\n </Section>\n {isSpamAssassInInstalled && (\n <Section title={<Translate content=\"settings\" />}>\n {isUnix && (\n <FormField\n label={<Translate content=\"maxChildrenTitle\" />}\n description={<Translate content=\"maxChildrenDescription\" />}\n name=\"maxChildren\"\n >\n {({ getValue, setValue, getName, isDisabled }) => (\n <InputNumber\n name={getName()}\n value={getValue()}\n onChange={setValue}\n min={1}\n max={maxChildrenLimit}\n disabled={isDisabled()}\n data-cy-limit={maxChildrenLimit}\n />\n )}\n </FormField>\n )}\n <FormField\n label={<Translate content=\"requiredHitsTitle\" />}\n description={<Translate content=\"requiredHitsDescription\" />}\n name=\"requiredHits\"\n required\n >\n {({ getValue, setValue, getName, isDisabled }) => (\n <Input\n name={getName()}\n value={getValue() ?? ''}\n onChange={e => setValue(e.target.value)}\n size=\"sm\"\n maxLength=\"4\"\n disabled={isDisabled()}\n />\n )}\n </FormField>\n {isWindows && (\n <FormField\n label={<Translate content=\"maxMailLimit\" />}\n name=\"maxMailLimit\"\n >\n {({ getValue, setValue, getName, isDisabled }) => (\n <div\n className=\"server-mail-spam-filter-form-field-complex\"\n >\n <Checkbox\n name={`${getName()}Enabled`}\n checked={getValue() !== null}\n onChange={checked => setValue(checked ? maxMailLimitValue : null)}\n disabled={isDisabled()}\n >\n <Translate content=\"maxMailLimitText\" />\n </Checkbox>\n <Input\n name={getName()}\n value={maxMailLimitValue}\n onChange={e => {\n setMaxMailLimitValue(e.target.value);\n setValue(e.target.value);\n }}\n size={10}\n maxLength=\"9\"\n disabled={getValue() === null || isDisabled()}\n />\n <Translate content=\"kbytes\" />\n </div>\n )}\n </FormField>\n )}\n {maxThreadsLimit !== null && (\n <FormField\n label={<Translate content=\"maxThreadsLimit\" />}\n name=\"maxThreadsLimit\"\n >\n {({ getValue, setValue, getName, isDisabled }) => (\n <InputNumber\n name={getName()}\n value={getValue()}\n onChange={setValue}\n min={1}\n max={32}\n disabled={isDisabled()}\n />\n )}\n </FormField>\n )}\n <FormFieldText\n label={<Translate content=\"tagTitle\" />}\n description={<Translate content=\"tagDescription\" />}\n name=\"tag\"\n size=\"xl\"\n inputProps={{ maxLength: '50' }}\n />\n {isWindows && alarmMessage !== null && (\n <FormFieldText\n label={<Translate content=\"alarmMessage\" />}\n name=\"alarmMessage\"\n multiline\n size=\"xl\"\n />\n )}\n </Section>\n )}\n {isWindows && (\n <FormField\n label={<Translate content=\"languages\" />}\n name=\"languages\"\n >\n {({ getValue, setValue, getName, isDisabled }) => (\n <Select\n name={getName()}\n multiple\n searchable\n value={getValue()}\n onChange={setValue}\n size=\"xl\"\n disabled={isDisabled()}\n >\n {languages.map(({ key, name }) => (<SelectOption key={key} value={key}>{name}</SelectOption>))}\n </Select>\n )}\n </FormField>\n )}\n {isWindows && (\n <FormField\n label={<Translate content=\"locales\" />}\n name=\"locales\"\n >\n {({ getValue, setValue, getName, isDisabled }) => (\n <Select\n name={getName()}\n multiple\n searchable\n value={getValue()}\n onChange={setValue}\n size=\"xl\"\n disabled={isDisabled()}\n >\n {locales.map(({ key, name }) => (<SelectOption key={key} value={key}>{name}</SelectOption>))}\n </Select>\n )}\n </FormField>\n )}\n </Form>\n );\n};\n\nServerMailSpamFilterForm.propTypes = {\n serverMail: PropTypes.shape({\n spamAssassin: PropTypes.shape({\n settings: PropTypes.shape({\n isEnabled: PropTypes.bool.isRequired,\n isUserSettingsEnabled: PropTypes.bool.isRequired,\n isUserSettingsAllowed: PropTypes.bool.isRequired,\n requiredHits: PropTypes.number.isRequired,\n maxMailLimit: PropTypes.number,\n maxThreadsLimit: PropTypes.number,\n maxChildren: PropTypes.number,\n maxChildrenLimit: PropTypes.number,\n tag: PropTypes.string.isRequired,\n alarmMessage: PropTypes.string,\n languages: PropTypes.array.isRequired,\n locales: PropTypes.array.isRequired,\n isGreylistingProtectionEnabled: PropTypes.bool,\n }),\n }).isRequired,\n }).isRequired,\n capability: PropTypes.shape({\n mailServer: PropTypes.shape({\n isUserSettingsSupported: PropTypes.bool.isRequired,\n }).isRequired,\n packages: PropTypes.shape({\n isSpamAssassinInstalled: PropTypes.bool.isRequired,\n }).isRequired,\n }).isRequired,\n os: PropTypes.shape({\n isWindows: PropTypes.bool,\n }).isRequired,\n};\n\nexport default ServerMailSpamFilterForm;\n\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { PropTypes } from 'prop-types';\nimport { Button, ToolbarGroup, ListEmptyView, StatusMessage, ListOperation } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport List from '../List';\nimport { useMemo, useState } from 'react';\nimport { gql, useMutation } from '@apollo/client';\nimport { addToast } from 'helpers/toasts';\n\nconst Translate = Locale.getTranslate('admin.components.lists.servermailblacklist');\nconst ButtonsTranslate = Locale.getTranslate('components.buttons');\nconst locale = Locale.getSection('admin.components.lists.servermailblacklist');\n\nconst REMOVE_BLACK_LISTED_DOMAIN = gql`\n mutation DeleteBlackListedDomain($ids: [ID!]!) {\n deleteBlackListedDomain(input: { ids: $ids }) {\n ids\n }\n }\n`;\n\nconst ServerMailBlackList = ({ blackList, showDisabledWarning = false, isWindows = false, onAddDomain }) => {\n const [selection, setSelection] = useState([]);\n const [loadingRows, setLoadingRows] = useState([]);\n const selectedRows = useMemo(() => blackList.filter(({ id }) => selection.includes(id)), [blackList, selection]);\n\n const [deleteBlackListedDomain] = useMutation(REMOVE_BLACK_LISTED_DOMAIN, {\n refetchQueries: [{ query: require('queries/ServerMailBlackListPage.graphql') }],\n awaitRefetchQueries: true,\n });\n\n const handleRemove = async () => {\n setLoadingRows(selection);\n try {\n const { data: { deleteBlackListedDomain: { ids } } } = await deleteBlackListedDomain({ variables: { ids: selection } });\n\n if (ids.length > 0) {\n addToast({\n intent: 'success',\n message: <Translate content=\"removeSuccess\" />,\n });\n }\n } catch ({ graphQLErrors }) {\n graphQLErrors.forEach(({ message, debugMessage }) => {\n addToast({\n intent: 'danger',\n message: debugMessage || message,\n });\n });\n } finally {\n setSelection([]);\n setLoadingRows([]);\n }\n };\n\n return (\n <>\n {showDisabledWarning && (\n <StatusMessage intent=\"warning\"><Translate content=\"spamAssassinDisabled\" /></StatusMessage>\n )}\n <List\n id=\"server-mail-black-list\"\n toolbar={(\n <>\n <ToolbarGroup title={locale.lmsg('groupAdd')}>\n <Button\n id=\"addBlackListedDomain\"\n intent=\"primary\"\n icon=\"plus\"\n tooltip={locale.lmsg('buttonAddHint')}\n tooltipAsLabel\n onClick={onAddDomain}\n />\n </ToolbarGroup>\n <ToolbarGroup title={locale.lmsg('groupActions')}>\n <ListOperation\n critical\n noSelectionText={<Translate content=\"removeEmptySelection\" />}\n confirmationText={locale.formatMessage('removeConfirmation', {\n name: <b>{selectedRows[0]?.name}</b>,\n count: selectedRows.length,\n })}\n actionButtonText={<ButtonsTranslate content=\"yesRemove\" />}\n cancelButtonText={<ButtonsTranslate content=\"cancel\" />}\n >\n <Button\n id=\"removeBlackListedDomain\"\n onClick={handleRemove}\n >\n <Translate content=\"buttonRemove\" />\n </Button>\n </ListOperation>\n </ToolbarGroup>\n </>\n )}\n columns={[\n {\n key: 'name',\n title: <Translate content=\"entries\" />,\n type: 'title',\n sortable: true,\n },\n isWindows && {\n key: 'action',\n title: <Translate content=\"action\" />,\n sortable: true,\n render: ({ action }) => locale.lmsg(`${action.toLowerCase()}Action`),\n },\n ].filter(Boolean)}\n rowKey=\"id\"\n data={blackList}\n searchField=\"name\"\n selection={selection}\n onSelectionChange={selection => setSelection(selection)}\n loadingRows={loadingRows}\n emptyView={\n <ListEmptyView\n actions={\n <Button\n id=\"addBlackListedDomain\"\n intent=\"primary\"\n tooltip={<Translate content=\"buttonAddHint\" />}\n onClick={onAddDomain}\n >\n <Translate content=\"buttonAdd\" />\n </Button>\n }\n />\n }\n />\n </>\n );\n};\n\nServerMailBlackList.propTypes = {\n blackList: PropTypes.array.isRequired,\n showDisabledWarning: PropTypes.bool,\n isWindows: PropTypes.bool,\n onAddDomain: PropTypes.func.isRequired,\n};\n\nexport default ServerMailBlackList;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { PropTypes } from 'prop-types';\nimport { Button, ToolbarGroup, ListEmptyView, StatusMessage, ListOperation } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport List from '../List';\nimport { useMemo, useState } from 'react';\nimport { gql, useMutation } from '@apollo/client';\nimport { addToast } from 'helpers/toasts';\n\nconst Translate = Locale.getTranslate('admin.components.lists.servermailwhitelist');\nconst ButtonsTranslate = Locale.getTranslate('components.buttons');\nconst locale = Locale.getSection('admin.components.lists.servermailwhitelist');\n\nconst REMOVE_WHITE_LISTED_NETWORK = gql`\n mutation DeleteWhiteListedNetwork($ids: [ID!]!) {\n deleteWhiteListedNetwork(input: { ids: $ids }) {\n ids\n }\n }\n`;\n\nconst ServerMailWhiteList = ({\n whiteList,\n outgoingMessages = undefined,\n relay = undefined,\n isWindows = false,\n onAddNetwork,\n}) => {\n const [selection, setSelection] = useState([]);\n const [loadingRows, setLoadingRows] = useState([]);\n const selectedRows = useMemo(() => whiteList.filter(({ id }) => selection.includes(id)), [whiteList, selection]);\n const selectedRowsUsedForWebmail = useMemo(() => selectedRows.filter(({ name }) => {\n if (isWindows) {\n return false;\n }\n const [ipAddress, mask] = name.split('/');\n return ipAddress.substring(0, 3) === '127' && +mask >= 8;\n }).map(({ name }) => name), [selectedRows, isWindows]);\n\n const [deleteWhiteListedNetwork] = useMutation(REMOVE_WHITE_LISTED_NETWORK, {\n refetchQueries: [{ query: require('queries/ServerMailWhiteListPage.graphql') }],\n awaitRefetchQueries: true,\n });\n\n const handleRemove = async () => {\n setLoadingRows(selection);\n try {\n const { data: { deleteWhiteListedNetwork: { ids } } } = await deleteWhiteListedNetwork({ variables: { ids: selection } });\n\n if (ids.length > 0) {\n addToast({\n intent: 'success',\n message: <Translate content=\"removeSuccess\" />,\n });\n }\n } catch ({ graphQLErrors }) {\n graphQLErrors.forEach(({ message, debugMessage }) => {\n addToast({\n intent: 'danger',\n message: debugMessage || message,\n });\n });\n } finally {\n setSelection([]);\n setLoadingRows([]);\n }\n };\n\n return (\n <>\n {outgoingMessages?.isEnabled && (relay?.noRelayNetworks ?? []).length !== 0 && (\n <StatusMessage intent=\"warning\"><Translate content=\"whiteListNotEmpty\" /></StatusMessage>\n )}\n <List\n id=\"server-mail-white-list\"\n toolbar={(\n <>\n <ToolbarGroup title={locale.lmsg('groupAdd')}>\n <Button\n id=\"addWhiteListedNetwork\"\n intent=\"primary\"\n icon=\"plus\"\n tooltip={locale.lmsg('buttonAddHint')}\n tooltipAsLabel\n onClick={onAddNetwork}\n />\n </ToolbarGroup>\n <ToolbarGroup title={locale.lmsg('groupActions')}>\n <ListOperation\n critical\n noSelectionText={<Translate content=\"removeEmptySelection\" />}\n confirmationText={\n <>\n {selectedRowsUsedForWebmail.length ? (\n <StatusMessage intent=\"warning\">\n {locale.formatMessage(selectedRows.length === 1 ? 'webmailAffectedSingle' : 'webmailAffected', {\n count: selectedRowsUsedForWebmail.length,\n list: selectedRowsUsedForWebmail.join(', '),\n })}\n </StatusMessage>\n ) : null}\n {locale.formatMessage('removeConfirmation', {\n name: <b>{selectedRows[0]?.name}</b>,\n count: selectedRows.length,\n })}\n </>\n }\n actionButtonText={<ButtonsTranslate content=\"yesRemove\" />}\n cancelButtonText={<ButtonsTranslate content=\"cancel\" />}\n >\n <Button\n id=\"removeWhiteListedNetwork\"\n onClick={handleRemove}\n >\n <Translate content=\"buttonRemove\" />\n </Button>\n </ListOperation>\n </ToolbarGroup>\n </>\n )}\n columns={[\n {\n key: 'name',\n title: <Translate content=\"entries\" />,\n type: 'title',\n sortable: true,\n },\n ]}\n rowKey=\"id\"\n data={whiteList}\n searchField=\"name\"\n selection={selection}\n onSelectionChange={selection => setSelection(selection)}\n loadingRows={loadingRows}\n emptyView={\n <ListEmptyView\n actions={\n <Button\n id=\"addWhiteListedNetwork\"\n intent=\"primary\"\n tooltip={<Translate content=\"buttonAddHint\" />}\n onClick={onAddNetwork}\n >\n <Translate content=\"buttonAdd\" />\n </Button>\n }\n />\n }\n />\n </>\n );\n};\n\nServerMailWhiteList.propTypes = {\n whiteList: PropTypes.array.isRequired,\n outgoingMessages: PropTypes.shape({\n isEnabled: PropTypes.bool,\n }),\n relay: PropTypes.shape({\n noRelayNetworks: PropTypes.array,\n }),\n isWindows: PropTypes.bool,\n onAddNetwork: PropTypes.func.isRequired,\n};\n\nexport default ServerMailWhiteList;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { lazy, Suspense } from 'react';\nimport { Locale } from 'jsw';\nimport { Skeleton } from '@plesk/ui-library';\nimport pageData from 'helpers/pageData';\nimport { withPageLayout } from 'components/layouts/PageLayout';\nimport ServerMailAntivirusForm from '../forms/ServerMailAntivirusForm';\nimport { withServerMailTabs } from '../tabs/ServerMailTabs';\nimport { useQuery } from '@apollo/client';\n\nimport SERVER_MAIL_ANTIVIRUS_PAGE_QUERY from 'queries/ServerMailAntivirusPage.graphql';\n\nconst ServerMailAntivirusPromo = lazy(() => import(/* webpackChunkName: \"components/common/ServerMailAntivirusPromo\" */'components/common/ServerMailAntivirusPromo'));\n\nconst ServerMailAntivirusPage = () => {\n const { data } = useQuery(SERVER_MAIL_ANTIVIRUS_PAGE_QUERY);\n const { serverMail } = data;\n\n if (serverMail.antivirus.length <= 1 && !serverMail.antivirusPolicy) {\n return <Suspense fallback={<Skeleton height={100} />}><ServerMailAntivirusPromo /></Suspense>;\n }\n\n return (\n <ServerMailAntivirusForm {...data} />\n );\n};\n\nexport default withPageLayout(withServerMailTabs(ServerMailAntivirusPage), () => {\n const { showFrames, pageHeader, pageSidebar } = pageData();\n\n return {\n showFrames,\n pageHeader: {\n ...pageHeader,\n helpMenu: {\n ...pageHeader.helpMenu,\n helpContext: 'mail_antivirus',\n },\n },\n pageSidebar,\n pageContentHeader: {\n breadcrumbs: [\n pageSidebar.isPowerUserPanel ? null : {\n title: Locale.getSection('components.pages.home').lmsg('title'),\n href: '/admin/home',\n },\n {\n title: Locale.getSection('admin.controllers.server.tools').lmsg('title'),\n href: '/admin/server/tools',\n },\n {\n title: Locale.getSection('admin.controllers.mail-settings.index').lmsg('title'),\n href: '/cp/server/mail',\n },\n {\n title: Locale.getSection('components.pages.server-mail-antivirus').lmsg('title'),\n href: '/cp/server/mail/antivirus',\n },\n ].filter(Boolean),\n tabs: [],\n tabsHasRootPage: true,\n },\n };\n});\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useState } from 'react';\nimport { Locale } from 'jsw';\nimport pageData from 'helpers/pageData';\nimport { withPageLayout } from 'components/layouts/PageLayout';\nimport ServerMailBlackList from '../lists/ServerMailBlackList';\nimport AddBlackListedDomainForm from '../forms/AddBlackListedDomainForm';\nimport { withServerMailTabs } from '../tabs/ServerMailTabs';\nimport { useQuery } from '@apollo/client';\n\nimport SERVER_MAIL_BLACK_LIST_PAGE_QUERY from 'queries/ServerMailBlackListPage.graphql';\n\nconst ServerMailBlackListPage = () => {\n const [isAddDomainOpen, setIsAddDomainOpen] = useState(false);\n const {\n data: {\n serverMail: {\n blackList,\n spamAssassin: { settings },\n },\n os: { isWindows },\n },\n } = useQuery(SERVER_MAIL_BLACK_LIST_PAGE_QUERY);\n\n return (\n <>\n <AddBlackListedDomainForm isWindows={isWindows} isOpen={isAddDomainOpen} onClose={() => setIsAddDomainOpen(false)} />\n <ServerMailBlackList\n isWindows={isWindows}\n blackList={blackList}\n showDisabledWarning={isWindows && settings && !settings.isEnabled}\n onAddDomain={() => setIsAddDomainOpen(true)}\n />\n </>\n );\n};\n\nexport default withPageLayout(withServerMailTabs(ServerMailBlackListPage), () => {\n const { showFrames, pageHeader, pageSidebar } = pageData();\n\n return {\n showFrames,\n pageHeader: {\n ...pageHeader,\n helpMenu: {\n ...pageHeader.helpMenu,\n helpContext: 'mail_blocked_domains',\n },\n },\n pageSidebar,\n pageContentHeader: {\n breadcrumbs: [\n pageSidebar.isPowerUserPanel ? null : {\n title: Locale.getSection('components.pages.home').lmsg('title'),\n href: '/admin/home',\n },\n {\n title: Locale.getSection('admin.controllers.server.tools').lmsg('title'),\n href: '/admin/server/tools',\n },\n {\n title: Locale.getSection('admin.controllers.mail-settings.index').lmsg('title'),\n href: '/cp/server/mail',\n },\n {\n title: Locale.getSection('components.pages.server-mail-black-list').lmsg('title'),\n href: '/cp/server/mail/black-list',\n },\n ].filter(Boolean),\n tabs: [],\n tabsHasRootPage: true,\n },\n };\n});\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { Locale } from 'jsw';\nimport pageData from 'helpers/pageData';\nimport { withPageLayout } from 'components/layouts/PageLayout';\nimport ServerMailSettingsForm from '../forms/ServerMailSettingsForm';\nimport { withServerMailTabs } from '../tabs/ServerMailTabs';\nimport { useQuery } from '@apollo/client';\n\nimport SERVER_MAIL_SETTINGS_PAGE_QUERY from 'queries/ServerMailSettingsPage.graphql';\n\nconst ServerMailSettingsPage = () => {\n const { data } = useQuery(SERVER_MAIL_SETTINGS_PAGE_QUERY);\n return (\n <ServerMailSettingsForm {...data} />\n );\n};\n\nexport default withPageLayout(withServerMailTabs(ServerMailSettingsPage), () => {\n const { showFrames, pageHeader, pageSidebar } = pageData();\n\n return {\n showFrames,\n pageHeader: {\n ...pageHeader,\n helpMenu: {\n ...pageHeader.helpMenu,\n helpContext: 'mail',\n },\n },\n pageSidebar,\n pageContentHeader: {\n breadcrumbs: [\n pageSidebar.isPowerUserPanel ? null : {\n title: Locale.getSection('components.pages.home').lmsg('title'),\n href: '/admin/home',\n },\n {\n title: Locale.getSection('admin.controllers.server.tools').lmsg('title'),\n href: '/admin/server/tools',\n },\n {\n title: Locale.getSection('admin.controllers.mail-settings.index').lmsg('title'),\n href: '/cp/server/mail',\n },\n {\n title: Locale.getSection('components.pages.server-mail-settings').lmsg('title'),\n url: '/cp/server/mail/settings',\n },\n ].filter(Boolean),\n tabs: [],\n tabsHasRootPage: true,\n },\n };\n});\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { Locale } from 'jsw';\nimport pageData from 'helpers/pageData';\nimport { withPageLayout } from 'components/layouts/PageLayout';\nimport { withServerMailTabs } from '../tabs/ServerMailTabs';\nimport ServerMailSmarthostForm from '../forms/ServerMailSmarthostForm';\nimport { useQuery } from '@apollo/client';\n\nimport SERVER_MAIL_SMARTHOST_PAGE_QUERY from 'queries/ServerMailSmarthostPage.graphql';\n\nconst ServerMailSmarthostPage = () => {\n const { data } = useQuery(SERVER_MAIL_SMARTHOST_PAGE_QUERY);\n\n return (\n <ServerMailSmarthostForm {...data} />\n );\n};\n\nexport default withPageLayout(withServerMailTabs(ServerMailSmarthostPage), () => {\n const { showFrames, pageHeader, pageSidebar } = pageData();\n\n return {\n showFrames,\n pageHeader: {\n ...pageHeader,\n helpMenu: {\n ...pageHeader.helpMenu,\n helpContext: 'mail_smarthost',\n },\n },\n pageSidebar,\n pageContentHeader: {\n breadcrumbs: [\n pageSidebar.isPowerUserPanel ? null : {\n title: Locale.getSection('components.pages.home').lmsg('title'),\n href: '/admin/home',\n },\n {\n title: Locale.getSection('admin.controllers.server.tools').lmsg('title'),\n href: '/admin/server/tools',\n },\n {\n title: Locale.getSection('admin.controllers.mail-settings.index').lmsg('title'),\n href: '/cp/server/mail',\n },\n {\n title: Locale.getSection('components.pages.server-mail-smarthost').lmsg('title'),\n href: '/cp/server/mail/smarthost',\n },\n ].filter(Boolean),\n tabs: [],\n tabsHasRootPage: true,\n },\n };\n});\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { Locale } from 'jsw';\nimport pageData from 'helpers/pageData';\nimport { withPageLayout } from 'components/layouts/PageLayout';\nimport ServerMailSpamFilterForm from '../forms/ServerMailSpamFilterForm';\nimport { withServerMailTabs } from '../tabs/ServerMailTabs';\nimport { useQuery } from '@apollo/client';\n\nimport SERVER_MAIL_SPAM_FILTER_PAGE_QUERY from 'queries/ServerMailSpamFilterPage.graphql';\n\nconst ServerMailSpamFilterPage = () => {\n const { data } = useQuery(SERVER_MAIL_SPAM_FILTER_PAGE_QUERY);\n return (\n <ServerMailSpamFilterForm {...data} />\n );\n};\n\nexport default withPageLayout(withServerMailTabs(ServerMailSpamFilterPage), () => {\n const { showFrames, pageHeader, pageSidebar } = pageData();\n\n return {\n showFrames,\n pageHeader: {\n ...pageHeader,\n helpMenu: {\n ...pageHeader.helpMenu,\n helpContext: 'spamassassin',\n },\n },\n pageSidebar,\n pageContentHeader: {\n breadcrumbs: [\n pageSidebar.isPowerUserPanel ? null : {\n title: Locale.getSection('components.pages.home').lmsg('title'),\n href: '/admin/home',\n },\n {\n title: Locale.getSection('admin.controllers.server.tools').lmsg('title'),\n href: '/admin/server/tools',\n },\n {\n title: Locale.getSection('admin.controllers.mail-settings.index').lmsg('title'),\n href: '/cp/server/mail',\n },\n {\n title: Locale.getSection('components.pages.server-mail-spam-filter').lmsg('title'),\n href: '/cp/server/mail/spam-filter',\n },\n ].filter(Boolean),\n tabs: [],\n tabsHasRootPage: true,\n },\n };\n});\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useState } from 'react';\nimport { useSearchParams } from 'react-router-dom';\n\n\nimport { withPageLayout } from 'components/layouts/PageLayout';\nimport pageData from 'helpers/pageData';\nimport { Locale } from 'jsw';\nimport { withServerMailTabs } from '../../tabs/ServerMailTabs';\nimport './ServerMailStatisticsPage.less';\nimport { ServerMailStatisticsSpamRecipientsList } from './ServerMailStatisticsSpamRecipientsList';\nimport { getDatesFromPeriod, PERIOD_KEYS, STATISTIC_TYPE_KEYS } from './ServerMailStatisticsToolbar';\nimport { ServerMailStatisticsVirusRecipientsList } from './ServerMailStatisticsVirusRecipientsList';\nimport { ServerMailStatisticsVirusVirusesList } from './ServerMailStatisticsVirusVirusesList';\n\nexport const ServerMailStatisticsPage = () => {\n const [dateValues, setDateValues] = useState(() => getDatesFromPeriod(PERIOD_KEYS.TODAY));\n\n const [currentPeriod, setPeriod] = useState(PERIOD_KEYS.TODAY);\n\n const [searchParams, setSearchParams] = useSearchParams();\n\n const statisticsType = searchParams.get('statisticsType') ?? STATISTIC_TYPE_KEYS.SPAM;\n\n const setStatisticsType = newStatisticsType => {\n searchParams.set('statisticsType', newStatisticsType);\n setSearchParams(searchParams);\n };\n\n return (\n <>\n {statisticsType === STATISTIC_TYPE_KEYS.SPAM &&\n <ServerMailStatisticsSpamRecipientsList\n dateValues={dateValues}\n setDateValues={setDateValues}\n currentPeriod={currentPeriod}\n setPeriod={setPeriod}\n statisticsType={statisticsType}\n setStatisticsType={setStatisticsType}\n />}\n {statisticsType === STATISTIC_TYPE_KEYS.VIRUS_RECIPIENTS &&\n <ServerMailStatisticsVirusRecipientsList\n dateValues={dateValues}\n setDateValues={setDateValues}\n currentPeriod={currentPeriod}\n setPeriod={setPeriod}\n statisticsType={statisticsType}\n setStatisticsType={setStatisticsType}\n />}\n {statisticsType === STATISTIC_TYPE_KEYS.VIRUS_VIRUSES &&\n <ServerMailStatisticsVirusVirusesList\n dateValues={dateValues}\n setDateValues={setDateValues}\n currentPeriod={currentPeriod}\n setPeriod={setPeriod}\n statisticsType={statisticsType}\n setStatisticsType={setStatisticsType}\n />}\n </ >\n );\n};\n\nexport default withPageLayout(withServerMailTabs(ServerMailStatisticsPage), () => {\n const { showFrames, pageHeader, pageSidebar } = pageData();\n\n return {\n showFrames,\n pageHeader: {\n ...pageHeader,\n helpMenu: {\n ...pageHeader.helpMenu,\n helpContext: 'server.mail.statistics',\n },\n },\n pageSidebar,\n pageContentHeader: {\n breadcrumbs: [\n pageSidebar.isPowerUserPanel ? null : {\n title: Locale.getSection('components.pages.home').lmsg('title'),\n href: '/admin/home',\n },\n {\n title: Locale.getSection('admin.controllers.server.tools').lmsg('title'),\n href: '/admin/server/tools',\n },\n {\n title: Locale.getSection('admin.controllers.mail-settings.index').lmsg('title'),\n href: '/cp/server/mail',\n },\n {\n title: Locale.getSection('components.pages.server-mail-statistics').lmsg('title'),\n url: '/cp/server/mail/statistics',\n },\n ].filter(Boolean),\n tabs: [],\n tabsHasRootPage: true,\n },\n };\n});\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport {\n List,\n ProgressBar,\n} from '@plesk/ui-library';\nimport { useDebounce } from 'common/hooks';\nimport PropTypes from 'prop-types';\nimport { useMemo, useState } from 'react';\n\nimport { useList } from 'hooks';\n\nimport { useQuery } from '@apollo/client';\nimport {\n getEndOfDay,\n getStartOfDay,\n toPhpDate,\n} from 'helpers/dates';\nimport { Locale } from 'jsw';\nimport SERVER_MAIL_SPAM_STATISTICS from 'queries/ServerMailSpamStatistics.graphql';\n\nimport './ServerMailStatisticsPage.less';\nimport { ServerMailStatisticsSummary } from './ServerMailStatisticsSummary';\nimport { getTimestampFromDateSelector } from 'components/formFields/FormFieldDate';\nimport { ServerMailStatisticsToolbar } from './ServerMailStatisticsToolbar';\n\nconst Translate = Locale.getTranslate('admin.components.lists.serverMailStatistics.SpamRecipients');\n\nconst LIST_COLUMNS = [\n {\n key: 'email',\n title: <Translate content=\"email\" />,\n sortable: true,\n },\n {\n key: 'count',\n title: <Translate content=\"count\" />,\n align: 'right',\n sortable: true,\n },\n {\n key: 'ratio',\n title: <Translate content=\"ratio\" />,\n render: ({ ratio }) => (\n <div className=\"server-mail-statistics-page-progressbar-container\">\n <span>{`${(ratio * 100).toFixed(2)}%`}</span>\n <ProgressBar className=\"server-mail-statistics-page-stats-progressbar\" progress={ratio * 100} />\n </div>\n ),\n },\n];\n\nexport const ServerMailStatisticsSpamRecipientsList = ({ dateValues, ...props }) => {\n const [listParams, setListParams] = useState({\n pagination: { page: 0, itemsPerPage: 25 },\n orderBy: { email: 'DESC' },\n });\n\n const queryVariables = useMemo(() => ({\n ...listParams,\n from: toPhpDate(getStartOfDay(getTimestampFromDateSelector(dateValues.from)).getTime()),\n to: toPhpDate(getEndOfDay(getTimestampFromDateSelector(dateValues.to)).getTime()),\n }), [listParams, dateValues]);\n\n const debouncedVariables = useDebounce(queryVariables, 300);\n\n const { data: { emailStatistics: { spamSummary, spamRecipients } = {} } = {}, loading, refetch } = useQuery(SERVER_MAIL_SPAM_STATISTICS, {\n variables: debouncedVariables,\n });\n\n const orderKey = Object.keys(listParams.orderBy)[0];\n\n const totalPage = Math.ceil(\n (spamRecipients?.totalRows ?? 0) / listParams.pagination.itemsPerPage,\n );\n\n const {\n renderPagination,\n sortParams,\n handleReload,\n } = useList({\n onReload: refetch,\n pagination: {\n current: listParams.pagination.page,\n totalPage,\n itemsPerPage: listParams.pagination.itemsPerPage,\n onPageChange(page) {\n setListParams(\n previousVariables => ({\n ...previousVariables,\n pagination: { ...previousVariables.pagination, page: page - 1 },\n }));\n },\n onChangeItemsPerPage(itemsPerPage) {\n setListParams(\n previousVariables => ({\n ...previousVariables,\n pagination: { ...previousVariables.pagination, itemsPerPage },\n }));\n },\n },\n sort: {\n direction: listParams.orderBy[orderKey],\n column: orderKey,\n onChange({ sortColumn, sortDirection }) {\n setListParams(\n previousVariables => ({\n ...previousVariables,\n orderBy: { [sortColumn]: sortDirection },\n }));\n },\n },\n });\n\n return (\n <div>\n <ServerMailStatisticsToolbar {...props} dateValues={dateValues} onRefresh={handleReload} />\n <ServerMailStatisticsSummary\n cleanCount={spamSummary?.clean}\n infectedCount={spamSummary?.infected}\n protectedCount={spamSummary?.protected}\n skippedCount={spamSummary?.skipped}\n />\n <List\n loading={loading}\n totalRows={spamRecipients?.totalRows}\n pagination={renderPagination()}\n {...sortParams}\n data={spamRecipients?.rows ?? []}\n columns={LIST_COLUMNS}\n />\n </div>\n );\n};\n\n\nServerMailStatisticsSpamRecipientsList.propTypes = {\n dateValues: PropTypes.object.isRequired,\n setDateValues: PropTypes.func.isRequired,\n currentPeriod: PropTypes.string.isRequired,\n setPeriod: PropTypes.func.isRequired,\n statisticsType: PropTypes.string.isRequired,\n setStatisticsType: PropTypes.func.isRequired,\n};\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport {\n ContentLoader,\n Grid,\n GridCol,\n Heading,\n Panel,\n} from '@plesk/ui-library';\nimport PropTypes from 'prop-types';\nimport { Locale } from 'jsw';\n\nimport './ServerMailStatisticsPage.less';\n\nconst locale = Locale.getSection('admin.components.lists.serverMailStatistics.summary');\n\nconst StatsPanel = ({ value = null, title }) => (\n <Panel title={title} >\n <div className=\"server-mail-statistics-page-stats-container\">\n {typeof value === 'number' ? <Heading level={2}>{value} </Heading> : <ContentLoader />}\n </div>\n </Panel>\n);\n\nStatsPanel.propTypes = {\n value: PropTypes.number,\n title: PropTypes.string.isRequired,\n};\n\nexport const ServerMailStatisticsSummary = ({\n cleanCount,\n infectedCount,\n protectedCount,\n skippedCount,\n} = {}) => (\n <Grid sm={4} gap=\"lg\">\n <GridCol>\n <StatsPanel value={cleanCount} title={locale.lmsg('cleanTitle')} />\n </GridCol>\n <GridCol>\n <StatsPanel value={infectedCount} title={locale.lmsg('infectedTitle')} />\n </GridCol>\n <GridCol>\n <StatsPanel value={protectedCount} title={locale.lmsg('protectedTitle')} />\n </GridCol>\n <GridCol>\n <StatsPanel value={skippedCount} title={locale.lmsg('skippedTitle')} />\n </GridCol>\n </Grid>\n);\n\n\nServerMailStatisticsSummary.propTypes = {\n cleanCount: PropTypes.number,\n infectedCount: PropTypes.number,\n protectedCount: PropTypes.number,\n skippedCount: PropTypes.number,\n\n};\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { gql, useMutation } from '@apollo/client';\nimport {\n Button,\n Select,\n SelectOption,\n SelectOptionGroup,\n setIn,\n Toolbar,\n ToolbarExpander,\n ToolbarGroup,\n} from '@plesk/ui-library';\n\nimport { addToast } from 'helpers/toasts';\nimport PropTypes from 'prop-types';\n\nimport FormFieldDate from 'components/formFields/FormFieldDate';\n\nimport Form from 'components/Form';\nimport {\n addDays,\n getDaysInPreviousMonth,\n getEndOfMonth,\n getEndOfWeek,\n getStartOfMonth,\n getStartOfWeek,\n} from 'helpers/dates';\nimport { Locale } from 'jsw';\nimport './ServerMailStatisticsPage.less';\n\nconst locale = Locale.getSection('admin.components.lists.serverMailStatistics');\n\n\nconst RELOAD_EMAIL_STATISTICS = gql`\n mutation ReloadEmailStatistics {\n reloadEmailStatistics {\n success\n message\n }\n }\n`;\n\nexport const PERIOD_KEYS = {\n TODAY: 'today',\n YESTERDAY: 'yesterday',\n LAST_WEEK: 'lastWeek',\n PREV_WEEK: 'prevWeek',\n LAST_MONTH: 'lastMonth',\n PREV_MONTH: 'prevMonth',\n ALL: 'all',\n CUSTOM: 'custom',\n};\n\nconst PERIOD_VALUES = Object.values(PERIOD_KEYS);\n\nexport const STATISTIC_TYPE_KEYS = {\n SPAM: 'spam',\n VIRUS_RECIPIENTS: 'virusRecipients',\n VIRUS_VIRUSES: 'viruses',\n};\n\nexport const getDatesFromPeriod = period => {\n let dateFrom = new Date();\n let dateTo = new Date();\n switch (period) {\n case PERIOD_KEYS.YESTERDAY: {\n dateFrom = addDays(-1);\n dateTo = addDays(-1);\n\n break;\n }\n case PERIOD_KEYS.LAST_WEEK: {\n dateFrom = getStartOfWeek(Date.now());\n dateTo = getEndOfWeek(Date.now());\n\n break;\n }\n case PERIOD_KEYS.PREV_WEEK: {\n dateFrom = getStartOfWeek(addDays(-7));\n dateTo = getEndOfWeek(addDays(-7));\n\n break;\n }\n case PERIOD_KEYS.LAST_MONTH: {\n dateFrom = getStartOfMonth(addDays(-7));\n break;\n }\n case PERIOD_KEYS.PREV_MONTH: {\n const substractDays = getDaysInPreviousMonth(Date.now());\n dateFrom = getStartOfMonth(addDays(-substractDays));\n dateTo = getEndOfMonth(addDays(-substractDays));\n break;\n }\n case PERIOD_KEYS.ALL: {\n dateFrom = new Date(0);\n break;\n }\n }\n\n const dayFrom = dateFrom.getDate();\n const monthFrom = dateFrom.getMonth() + 1;\n const yearFrom = dateFrom.getFullYear();\n\n const dayTo = dateTo.getDate();\n const monthTo = dateTo.getMonth() + 1;\n const yearTo = dateTo.getFullYear();\n\n return {\n from: {\n day: dayFrom,\n month: monthFrom,\n year: yearFrom,\n },\n to: {\n day: dayTo,\n month: monthTo,\n year: yearTo,\n },\n };\n};\n\nexport const ServerMailStatisticsToolbar = ({\n dateValues,\n setDateValues,\n currentPeriod,\n setPeriod,\n statisticsType,\n setStatisticsType,\n onRefresh,\n}) => {\n const handleChangePeriod = newPeriod => {\n setPeriod(newPeriod);\n if (newPeriod !== PERIOD_KEYS.CUSTOM) {\n setDateValues(getDatesFromPeriod(newPeriod));\n }\n };\n\n const changeField = (name, value) => setDateValues(setIn(dateValues, name, value));\n\n const [reloadStatistics] = useMutation(RELOAD_EMAIL_STATISTICS, {\n onCompleted: ({ reloadEmailStatistics: { success } }) => {\n addToast({\n intent: success ? 'success' : 'danger',\n message: success ? locale.lmsg('statisticsRefreshed') : locale.lmsg('statisticsRefreshFailed'),\n });\n onRefresh();\n },\n });\n\n return (\n <Toolbar>\n <ToolbarGroup>\n <Button data-testid=\"refresh-button\" onClick={() => reloadStatistics()}>{locale.lmsg('refresh')}</Button>\n </ToolbarGroup>\n <ToolbarGroup groupable={false}>\n <Select size=\"md\" value={statisticsType} onChange={setStatisticsType}>\n <SelectOptionGroup label={locale.lmsg('statisticsTypeSpamCategory')}>\n <SelectOption value={STATISTIC_TYPE_KEYS.SPAM}>{locale.lmsg('statisticsTypeSpam')}</SelectOption>\n </SelectOptionGroup>\n <SelectOptionGroup label={locale.lmsg('statisticsTypeVirusesCategory')}>\n <SelectOption value={STATISTIC_TYPE_KEYS.VIRUS_RECIPIENTS}>{locale.lmsg('statisticsTypeVirusRecipients')}</SelectOption>\n <SelectOption value={STATISTIC_TYPE_KEYS.VIRUS_VIRUSES}>{locale.lmsg('statisticsTypeVirusViruses')}</SelectOption>\n </SelectOptionGroup>\n </Select>\n </ToolbarGroup>\n <ToolbarExpander />\n <ToolbarGroup groupable={false}>\n <Select size=\"md\" value={currentPeriod} onChange={handleChangePeriod}>\n {PERIOD_VALUES.map(period => <SelectOption key={period} value={period}>{locale.lmsg(`period.${period}`)}</SelectOption>)}\n </Select>\n {currentPeriod === 'custom' &&\n <Form\n values={dateValues}\n applyButton={false}\n cancelButton={false}\n submitButton={false}\n onFieldChange={changeField}\n vertical={false}\n footerClassName=\"server-mail-statistics-page-footer\"\n >\n <div className=\"server-mail-statistics-page-form-container\">\n <FormFieldDate name=\"from\" label={null} />\n {' - '}\n <FormFieldDate name=\"to\" label={null} />\n </div>\n </Form>}\n </ToolbarGroup>\n </Toolbar>\n );\n};\n\n\nServerMailStatisticsToolbar.propTypes = {\n dateValues: PropTypes.object.isRequired,\n setDateValues: PropTypes.func.isRequired,\n currentPeriod: PropTypes.string.isRequired,\n setPeriod: PropTypes.func.isRequired,\n statisticsType: PropTypes.string.isRequired,\n setStatisticsType: PropTypes.func.isRequired,\n onRefresh: PropTypes.func.isRequired,\n};\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport {\n List,\n ProgressBar,\n} from '@plesk/ui-library';\nimport { useDebounce } from 'common/hooks';\nimport PropTypes from 'prop-types';\nimport { useMemo, useState } from 'react';\nimport { useList } from 'hooks';\nimport { useQuery } from '@apollo/client';\nimport {\n getEndOfDay,\n getStartOfDay,\n toPhpDate,\n} from 'helpers/dates';\nimport { Locale } from 'jsw';\nimport SERVER_MAIL_VIRUS_RECIPIENTS_STATISTICS from 'queries/ServerMailVirusRecipientsStatistics.graphql';\n\nimport './ServerMailStatisticsPage.less';\nimport { ServerMailStatisticsSummary } from './ServerMailStatisticsSummary';\nimport { getTimestampFromDateSelector } from 'components/formFields/FormFieldDate';\nimport { ServerMailStatisticsToolbar } from './ServerMailStatisticsToolbar';\n\nconst Translate = Locale.getTranslate('admin.components.lists.serverMailStatistics.VirusRecipients');\n\nconst LIST_COLUMNS = [\n {\n key: 'email',\n title: <Translate content=\"email\" />,\n sortable: true,\n },\n {\n key: 'count',\n title: <Translate content=\"count\" />,\n align: 'right',\n sortable: true,\n },\n {\n key: 'ratio',\n title: <Translate content=\"ratio\" />,\n render: ({ ratio }) => (\n <div className=\"server-mail-statistics-page-progressbar-container\">\n <span>{`${(ratio * 100).toFixed(2)}%`}</span>\n <ProgressBar className=\"server-mail-statistics-page-stats-progressbar\" progress={ratio * 100} />\n </div>\n ),\n },\n];\n\nexport const ServerMailStatisticsVirusRecipientsList = ({ dateValues, ...props }) => {\n const [listParams, setListParams] = useState({\n pagination: { page: 0, itemsPerPage: 25 },\n orderBy: { email: 'DESC' },\n });\n\n const queryVariables = useMemo(() => ({\n ...listParams,\n from: toPhpDate(getStartOfDay(getTimestampFromDateSelector(dateValues.from)).getTime()),\n to: toPhpDate(getEndOfDay(getTimestampFromDateSelector(dateValues.to)).getTime()),\n }), [listParams, dateValues]);\n\n const debouncedVariables = useDebounce(queryVariables, 300);\n\n const {\n data: { emailStatistics: { virusSummary, virusRecipients } = {} } = {},\n loading,\n refetch,\n } = useQuery(SERVER_MAIL_VIRUS_RECIPIENTS_STATISTICS, {\n variables: debouncedVariables,\n });\n\n const orderKey = Object.keys(listParams.orderBy)[0];\n\n const totalPage = Math.ceil(\n (virusRecipients?.totalRows ?? 0) / listParams.pagination.itemsPerPage,\n );\n\n const {\n renderPagination,\n sortParams,\n handleReload,\n } = useList({\n onReload: refetch,\n pagination: {\n current: listParams.pagination.page,\n totalPage,\n itemsPerPage: listParams.pagination.itemsPerPage,\n onPageChange(page) {\n setListParams(\n previousVariables => ({\n ...previousVariables,\n pagination: { ...previousVariables.pagination, page: page - 1 },\n }));\n },\n onChangeItemsPerPage(itemsPerPage) {\n setListParams(\n previousVariables => ({\n ...previousVariables,\n pagination: { ...previousVariables.pagination, itemsPerPage },\n }));\n },\n },\n sort: {\n direction: listParams.orderBy[orderKey],\n column: orderKey,\n onChange({ sortColumn, sortDirection }) {\n setListParams(\n previousVariables => ({\n ...previousVariables,\n orderBy: { [sortColumn]: sortDirection },\n }));\n },\n },\n });\n\n return (\n <div>\n <ServerMailStatisticsToolbar {...props} dateValues={dateValues} onRefresh={handleReload} />\n <ServerMailStatisticsSummary\n cleanCount={virusSummary?.clean}\n infectedCount={virusSummary?.infected}\n protectedCount={virusSummary?.protected}\n skippedCount={virusSummary?.skipped}\n />\n <List\n loading={loading}\n totalRows={virusRecipients?.totalRows}\n pagination={renderPagination()}\n {...sortParams}\n data={virusRecipients?.rows ?? []}\n columns={LIST_COLUMNS}\n />\n </div>\n );\n};\n\n\nServerMailStatisticsVirusRecipientsList.propTypes = {\n dateValues: PropTypes.object.isRequired,\n setDateValues: PropTypes.func.isRequired,\n currentPeriod: PropTypes.string.isRequired,\n setPeriod: PropTypes.func.isRequired,\n statisticsType: PropTypes.string.isRequired,\n setStatisticsType: PropTypes.func.isRequired,\n};\n\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport {\n List,\n ProgressBar,\n} from '@plesk/ui-library';\nimport { useDebounce } from 'common/hooks';\nimport PropTypes from 'prop-types';\nimport { useMemo, useState } from 'react';\nimport { useList } from 'hooks';\nimport { useQuery } from '@apollo/client';\nimport {\n getEndOfDay,\n getStartOfDay,\n toPhpDate,\n} from 'helpers/dates';\nimport { Locale } from 'jsw';\nimport SERVER_MAIL_VIRUS_VIRUSES_STATISTICS from 'queries/ServerMailVirusVirusesStatistics.graphql';\n\nimport './ServerMailStatisticsPage.less';\nimport { ServerMailStatisticsSummary } from './ServerMailStatisticsSummary';\nimport { getTimestampFromDateSelector } from 'components/formFields/FormFieldDate';\nimport { ServerMailStatisticsToolbar } from './ServerMailStatisticsToolbar';\n\nconst Translate = Locale.getTranslate('admin.components.lists.serverMailStatistics.VirusViruses');\n\nconst LIST_COLUMNS = [\n {\n key: 'name',\n title: <Translate content=\"name\" />,\n sortable: true,\n },\n {\n key: 'count',\n title: <Translate content=\"count\" />,\n align: 'right',\n sortable: true,\n },\n {\n key: 'ratio',\n title: <Translate content=\"ratio\" />,\n render: ({ ratio }) => (\n <div className=\"server-mail-statistics-page-progressbar-container\">\n <span>{`${(ratio * 100).toFixed(2)}%`}</span>\n <ProgressBar className=\"server-mail-statistics-page-stats-progressbar\" progress={ratio * 100} />\n </div>\n ),\n },\n];\n\nexport const ServerMailStatisticsVirusVirusesList = ({ dateValues, ...props }) => {\n const [listParams, setListParams] = useState({\n pagination: { page: 0, itemsPerPage: 25 },\n orderBy: { name: 'DESC' },\n });\n\n const queryVariables = useMemo(() => ({\n ...listParams,\n from: toPhpDate(getStartOfDay(getTimestampFromDateSelector(dateValues.from)).getTime()),\n to: toPhpDate(getEndOfDay(getTimestampFromDateSelector(dateValues.to)).getTime()),\n }), [listParams, dateValues]);\n\n const debouncedVariables = useDebounce(queryVariables, 300);\n\n const {\n data: { emailStatistics: { virusSummary, viruses } = {} } = {},\n loading,\n refetch,\n } = useQuery(SERVER_MAIL_VIRUS_VIRUSES_STATISTICS, {\n variables: debouncedVariables,\n });\n\n const orderKey = Object.keys(listParams.orderBy)[0];\n\n const totalPage = Math.ceil(\n (viruses?.totalRows ?? 0) / listParams.pagination.itemsPerPage,\n );\n\n const {\n renderPagination,\n sortParams,\n handleReload,\n } = useList({\n onReload: refetch,\n pagination: {\n current: listParams.pagination.page,\n totalPage,\n itemsPerPage: listParams.pagination.itemsPerPage,\n onPageChange(page) {\n setListParams(\n previousVariables => ({\n ...previousVariables,\n pagination: { ...previousVariables.pagination, page: page - 1 },\n }));\n },\n onChangeItemsPerPage(itemsPerPage) {\n setListParams(\n previousVariables => ({\n ...previousVariables,\n pagination: { ...previousVariables.pagination, itemsPerPage },\n }));\n },\n },\n sort: {\n direction: listParams.orderBy[orderKey],\n column: orderKey,\n onChange({ sortColumn, sortDirection }) {\n setListParams(\n previousVariables => ({\n ...previousVariables,\n orderBy: { [sortColumn]: sortDirection },\n }));\n },\n },\n });\n\n return (\n <div>\n <ServerMailStatisticsToolbar {...props} dateValues={dateValues} onRefresh={handleReload} />\n <ServerMailStatisticsSummary\n cleanCount={virusSummary?.clean}\n infectedCount={virusSummary?.infected}\n protectedCount={virusSummary?.protected}\n skippedCount={virusSummary?.skipped}\n />\n <List\n loading={loading}\n totalRows={viruses?.totalRows}\n pagination={renderPagination()}\n {...sortParams}\n data={viruses?.rows ?? []}\n columns={LIST_COLUMNS}\n />\n </div>\n );\n};\n\n\nServerMailStatisticsVirusVirusesList.propTypes = {\n dateValues: PropTypes.object.isRequired,\n setDateValues: PropTypes.func.isRequired,\n currentPeriod: PropTypes.string.isRequired,\n setPeriod: PropTypes.func.isRequired,\n statisticsType: PropTypes.string.isRequired,\n setStatisticsType: PropTypes.func.isRequired,\n};\n\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useState } from 'react';\nimport { Locale } from 'jsw';\nimport pageData from 'helpers/pageData';\nimport { withPageLayout } from 'components/layouts/PageLayout';\nimport ServerMailWhiteList from '../lists/ServerMailWhiteList';\nimport AddWhiteListedNetworkForm from '../forms/AddWhiteListedNetworkForm';\nimport { withServerMailTabs } from '../tabs/ServerMailTabs';\nimport { useQuery } from '@apollo/client';\n\nimport SERVER_MAIL_WHITE_LIST_PAGE_QUERY from 'queries/ServerMailWhiteListPage.graphql';\n\nconst ServerMailWhiteListPage = () => {\n const [isAddNetworkOpen, setIsAddNetworkOpen] = useState(false);\n const { data: { serverMail, os: { isWindows }, capability } } = useQuery(SERVER_MAIL_WHITE_LIST_PAGE_QUERY);\n\n return (\n <>\n <AddWhiteListedNetworkForm {...capability} isWindows={isWindows} isOpen={isAddNetworkOpen} onClose={() => setIsAddNetworkOpen(false)} />\n <ServerMailWhiteList {...serverMail} isWindows={isWindows} onAddNetwork={() => setIsAddNetworkOpen(true)} />\n </>\n );\n};\n\nexport default withPageLayout(withServerMailTabs(ServerMailWhiteListPage), () => {\n const { showFrames, pageHeader, pageSidebar } = pageData();\n\n return {\n showFrames,\n pageHeader: {\n ...pageHeader,\n helpMenu: {\n ...pageHeader.helpMenu,\n helpContext: 'mail_white_list',\n },\n },\n pageSidebar,\n pageContentHeader: {\n breadcrumbs: [\n pageSidebar.isPowerUserPanel ? null : {\n title: Locale.getSection('components.pages.home').lmsg('title'),\n href: '/admin/home',\n },\n {\n title: Locale.getSection('admin.controllers.server.tools').lmsg('title'),\n href: '/admin/server/tools',\n },\n {\n title: Locale.getSection('admin.controllers.mail-settings.index').lmsg('title'),\n href: '/cp/server/mail',\n },\n {\n title: Locale.getSection('components.pages.server-mail-white-list').lmsg('title'),\n href: '/cp/server/mail/white-list',\n },\n ].filter(Boolean),\n tabs: [],\n tabsHasRootPage: true,\n },\n };\n});\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { useMemo } from 'react';\nimport { matchPath, useLocation } from 'react-router-dom';\nimport { useQuery } from '@apollo/client';\nimport { Tabs, Tab } from '@plesk/ui-library';\nimport { Locale } from 'jsw';\nimport useNavigate from 'hooks/useNavigate';\n\nimport SERVER_MAIL_TABS_QUERY from 'queries/ServerMailTabs.graphql';\n\nconst ServerMailTabs = () => {\n const { pathname } = useLocation();\n const navigate = useNavigate();\n const { data: {\n viewer: {\n permissions: {\n manageServerMail,\n manageServerVirusProtection,\n manageServerSpamFilter,\n manageServerMailAutodiscover,\n manageServerMailBlackWhiteLists,\n },\n },\n capability: {\n mailServer: {\n isDomainsBlacklistSupported,\n isSmtpWhiteListSupported,\n isSmarthostAvailable,\n isLocal,\n },\n packages: {\n isAntiVirusInstalled,\n isSpamAssassinInstalled,\n },\n },\n os: { isWindows },\n primaryKey: { keyDrWeb, keyQmailQueue },\n } } = useQuery(SERVER_MAIL_TABS_QUERY);\n\n const tabs = useMemo(() => [\n (manageServerMail || manageServerSpamFilter || manageServerMailAutodiscover) && {\n title: Locale.getSection('components.pages.server-mail-settings').lmsg('title'),\n url: '/cp/server/mail/settings',\n id: 'tabSettings',\n },\n isWindows && manageServerSpamFilter && isSpamAssassinInstalled && {\n title: Locale.getSection('components.pages.server-mail-spam-filter').lmsg('title'),\n url: '/cp/server/mail/spam-filter',\n id: 'tabSpamFilter',\n },\n isLocal && manageServerVirusProtection && {\n title: Locale.getSection('components.pages.server-mail-antivirus').lmsg('title'),\n url: '/cp/server/mail/antivirus',\n id: 'tabAntivirus',\n },\n manageServerMailBlackWhiteLists && isDomainsBlacklistSupported && {\n title: Locale.getSection('components.pages.server-mail-black-list').lmsg('title'),\n url: '/cp/server/mail/black-list',\n id: 'tabBlackList',\n },\n manageServerMailBlackWhiteLists && (!isWindows || isSpamAssassinInstalled || isSmtpWhiteListSupported) && {\n title: Locale.getSection('components.pages.server-mail-white-list').lmsg('title'),\n url: '/cp/server/mail/white-list',\n id: 'tabWhiteList',\n },\n !isWindows && manageServerMail && keyQmailQueue && {\n title: Locale.getSection('components.pages.server-mail-queue').lmsg('title'),\n url: '/admin/mail-settings/queue',\n id: 'tabQueue',\n },\n isWindows && manageServerMail && (\n (manageServerSpamFilter && isSpamAssassinInstalled) ||\n (manageServerVirusProtection && isAntiVirusInstalled && keyDrWeb)\n ) && {\n title: Locale.getSection('components.pages.server-mail-statistics').lmsg('title'),\n url: '/cp/server/mail/statistics/',\n id: 'tabStatisticsNew',\n },\n isSmarthostAvailable && {\n title: Locale.getSection('components.pages.server-mail-smarthost').lmsg('title'),\n url: '/cp/server/mail/smarthost',\n id: 'tabSmarthost',\n },\n ].filter(Boolean), [\n manageServerMail, manageServerVirusProtection, manageServerSpamFilter, manageServerMailAutodiscover, manageServerMailBlackWhiteLists,\n isSpamAssassinInstalled, isAntiVirusInstalled, keyDrWeb, keyQmailQueue, isDomainsBlacklistSupported, isSmtpWhiteListSupported, isWindows,\n isSmarthostAvailable, isLocal,\n ]);\n\n const active = useMemo(() => tabs.findIndex(({ url }) => matchPath(url, pathname)) + 1, [tabs, pathname]);\n\n return (\n <Tabs active={active}>\n {tabs.map(({ url, ...props }) => (\n <Tab\n key={url}\n onActivate={() => navigate(url)}\n {...props}\n />\n ))}\n </Tabs>\n );\n};\n\nexport const withServerMailTabs = Component => {\n const Wrapper = props => (\n <>\n <ServerMailTabs />\n <Component {...props} />\n </>\n );\n Wrapper.displayName = `withServerMailTabs(${Component.displayName || Component.name || 'Component'})`;\n Wrapper.WrappedComponent = Component;\n\n return Wrapper;\n};\n\nexport default ServerMailTabs;\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"ServerMailVirusRecipientsStatistics\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"from\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"to\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pagination\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PaginationInput\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"EmailStatisticsRecipientsSortingInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"emailStatistics\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"virusSummary\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"from\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"from\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"to\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"to\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"clean\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"infected\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"protected\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"skipped\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"virusRecipients\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"from\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"from\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"to\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"to\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"pagination\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pagination\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rows\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"email\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ratio\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalRows\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":559}};\n doc.loc.source = {\"body\":\"query ServerMailVirusRecipientsStatistics(\\n $from: String!\\n $to: String!\\n $pagination: PaginationInput!\\n $orderBy: EmailStatisticsRecipientsSortingInput!\\n) {\\n emailStatistics {\\n virusSummary(from: $from, to: $to) {\\n clean\\n infected\\n protected\\n skipped\\n }\\n virusRecipients(from: $from, to: $to, pagination: $pagination, orderBy: $orderBy) {\\n rows {\\n email\\n count\\n ratio\\n }\\n totalRows\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"ServerMailVirusRecipientsStatistics\"] = oneQuery(doc, \"ServerMailVirusRecipientsStatistics\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"ServerMailVirusVirusesStatistics\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"from\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"to\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pagination\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PaginationInput\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"EmailStatisticsVirusesSortingInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"emailStatistics\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"virusSummary\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"from\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"from\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"to\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"to\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"clean\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"infected\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"protected\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"skipped\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"viruses\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"from\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"from\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"to\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"to\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"pagination\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pagination\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rows\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ratio\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalRows\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":544}};\n doc.loc.source = {\"body\":\"query ServerMailVirusVirusesStatistics(\\n $from: String!\\n $to: String!\\n $pagination: PaginationInput!\\n $orderBy: EmailStatisticsVirusesSortingInput!\\n) {\\n emailStatistics {\\n virusSummary(from: $from, to: $to) {\\n clean\\n infected\\n protected\\n skipped\\n }\\n viruses(from: $from, to: $to, pagination: $pagination, orderBy: $orderBy) {\\n rows {\\n name\\n count\\n ratio\\n }\\n totalRows\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"ServerMailVirusVirusesStatistics\"] = oneQuery(doc, \"ServerMailVirusVirusesStatistics\");\n \n"],"names":["listLocale","Locale","getSection","SORT_ASC","SORT_DESC","ALL_ITEMS_PER_PAGE","storage","set","key","data","localStorage","setItem","JSON","stringify","get","getItem","parse","getSortListName","id","getPageListName","List","columns","itemsPerPage","defaultItemsPerPage","itemsPerPageOptions","sortColumn","defaultSortColumn","sortDirection","defaultSortDirection","searchField","locale","emptyView","emptyFilteredView","toolbar","selection","onSelectionChange","searchBarInputProps","rowKey","useStorage","props","setSortState","useSortState","defaultColumn","defaultDirection","setState","useState","state","find","sortable","page","searchPattern","setPageState","usePageState","includes","listEmptyView","useMemo","_jsx","ListEmptyView","reason","columnsData","map","sortDataField","column","filteredData","filter","row","Array","isArray","some","field","String","toLowerCase","sortedData","compare","sort","defaultCompare","a","b","displayData","from","to","slice","handleSearchPatternChange","useCallback","term","handleItemsPerPageChange","Math","ceil","length","useEffect","newSelection","item","getRowKey","BaseList","pagination","Pagination","current","total","onSelect","onItemsPerPageChange","_jsxs","Toolbar","children","_Fragment","ToolbarExpander","ToolbarGroup","title","SearchBar","inputProps","placeholder","lmsg","value","onTyping","totalRows","onSortChange","filtered","formatMessage","propTypes","PropTypes","isRequired","daysInMonth","year","month","Date","getDate","normalizeDay","day","min","isNumber","str","test","currentDate","currentDay","currentMonth","getMonth","currentYear","getFullYear","FormFieldDate","years","FormField","getId","getValue","getName","setValue","isDisabled","handleEmptyValue","handledMonth","handledYear","Input","name","onChange","changeDayIfValid","target","Number","onBlur","disabled","size","Select","SelectOption","changeYearIfValid","arrayOf","number","getTimestampFromDateSelector","date","setDate","setMonth","setFullYear","getTime","Translate","getTranslate","ButtonsTranslate","ADD_BLACK_LISTED_DOMAIN","gql","AddBlackListedDomainForm","isWindows","isOpen","onClose","values","setValues","formState","setFormState","formErrors","setFormErrors","action","addBlackListedDomain","useMutation","refetchQueries","query","require","awaitRefetchQueries","Drawer","content","form","errors","applyButton","onSubmit","async","variables","input","trim","addToast","intent","message","submitButton","cancelButton","onClick","FormFieldText","label","description","multi","required","FormFieldRadioButtons","options","bool","func","ADD_WHITE_LISTED_NETWORK","AddWhiteListedNetworkForm","mailServer","isSmtpWhiteListSupported","isSmtpWhiteListWithWildcardSupported","isSmtpWhiteListWithCIDRSupported","addWhiteListedNetwork","shape","UPDATE_SERVER_MAIL_ANTIVIRUS","ServerMailAntivirusForm","serverMail","antivirus","antivirusPolicy","navigate","useNavigate","updateServerMailAntivirus","translate","useTranslate","returnUrl","isActive","policy","isAppliedToIncoming","isAppliedToOutgoing","Form","mutation","onFieldChange","setIn","component","Link","onSuccess","handleSuccess","_","isApply","window","location","pathname","replace","FormFieldSelect","FormFieldCheckbox","getIn","AutoReplyHeaders","isMailUiDisabled","Section","max","className","maxLength","Autodiscover","isEnabled","customServer","isDnsEnabled","params","link","href","GeneralSettings","mailServerName","imapServerName","ipAddresses","isMaxLetterSizeChangeable","isMessageSubmissionDedicatedIPSupported","isMessageSubmissionAllIPSupported","handleFieldChange","serverChangeUrl","ipV4Addresses","isIPv6","ipV6Addresses","serverChangeLink","kbLink","e","indentFields","style","marginBlockStart","ipAddress","Boolean","collapsible","verpStyleLink","MailmanSettings","hasLocalhostRelayingAddressesIpV4","hasLocalhostRelayingAddressesIpV6","StatusMessage","OutgoingLimit","isUnlimited","warnings","limit","setLimit","gap","Checkbox","checked","enabled","warning","Status","OutgoingMessages","allowedReportPeriods","allowedNotificationPeriods","mailboxLimitWarnings","setMailboxLimitWarnings","domainLimitWarnings","setDomainLimitWarnings","mailboxLimit","domainLimit","subscriptionLimit","isDefined","push","highLevelLimitValue","period","Pop3Names","Relay","isOpenRelayAllowed","isRelayLockTimeSupported","isRelayTypeOpenSupported","isRelayTypeClosedSupported","isRelayTypeAuthSupported","isRelayTypeAuthPop3Supported","isRelayTypeAuthSmtpSupported","isRelayTypeAuthBothSupported","isValid","isPopAuthEnabled","isSmtpAuthEnabled","changeLink","marginBlockEnd","relay","noRelayNetworks","SpamFilter","isRBLInstalled","isDmarcSupported","isDkimSupported","isSpfSupported","UPDATE_SERVER_MAIL","toString","toNumber","ServerMailSettingsForm","isMailUiEnabled","settings","autodiscover","outgoingMessages","spamFilter","os","capability","packages","server","nodes","updateServerMail","outgoingEmailModeIps","settingsValues","autodiscoverValues","relayValues","outgoingMessagesValues","maxMessageSizeEnabled","maxMessageSize","messageSubmissionIp","outgoingEmailModeIpV4","outgoingEmailModeIpV6","isShortPop3NameEnabled","behavior","Object","entries","reduce","obj","__typename","strippedValue","maxConnections","maxConnectionsPerIp","autoReplyHeaders","header","lockTime","forEach","isListSecureLinksEnabled","UPDATE_SMARTHOST","ServerMailSmarthostForm","smarthost","smarthostEncryptionOptions","isServerEnabled","host","port","isAuthenticationRequired","username","encryption","updateSmarthost","loading","setErrors","configuration","password","SmarthostSettingsSection","SmarthostConfigurationSection","encryptionOptions","onDryRun","success","checkConnection","error","graphQLErrors","extensions","category","messages","debugMessage","isConfigurationCheck","setIsConfigurationCheck","onCheckConnectionClick","Button","FormFieldPassword","hideGenerateButton","hidePasswordMeter","UPDATE_SPAM_ASSASSIN","ServerMailSpamFilterForm","spamAssassin","isUserSettingsEnabled","isUserSettingsAllowed","requiredHits","maxMailLimit","maxThreadsLimit","tag","alarmMessage","languages","locales","isGreylistingProtectionEnabled","maxChildren","maxChildrenLimit","isUserSettingsSupported","updateSpamAssassin","maxMailLimitValue","setMaxMailLimitValue","isUserSettingsDisabled","isUnix","isTrusted","isSpamAssassInInstalled","isUserSettingsEnabledDescription","InputNumber","multiline","multiple","searchable","isSpamAssassinInstalled","REMOVE_BLACK_LISTED_DOMAIN","ServerMailBlackList","blackList","showDisabledWarning","onAddDomain","setSelection","loadingRows","setLoadingRows","selectedRows","deleteBlackListedDomain","icon","tooltip","tooltipAsLabel","ListOperation","critical","noSelectionText","confirmationText","count","actionButtonText","cancelButtonText","ids","type","render","actions","array","REMOVE_WHITE_LISTED_NETWORK","ServerMailWhiteList","whiteList","onAddNetwork","selectedRowsUsedForWebmail","mask","split","substring","deleteWhiteListedNetwork","list","join","ServerMailAntivirusPromo","lazy","withPageLayout","withServerMailTabs","ServerMailAntivirusPage","useQuery","SERVER_MAIL_ANTIVIRUS_PAGE_QUERY","Suspense","fallback","Skeleton","height","showFrames","pageHeader","pageSidebar","pageData","helpMenu","helpContext","pageContentHeader","breadcrumbs","isPowerUserPanel","tabs","tabsHasRootPage","ServerMailBlackListPage","isAddDomainOpen","setIsAddDomainOpen","SERVER_MAIL_BLACK_LIST_PAGE_QUERY","ServerMailSettingsPage","SERVER_MAIL_SETTINGS_PAGE_QUERY","url","ServerMailSmarthostPage","SERVER_MAIL_SMARTHOST_PAGE_QUERY","ServerMailSpamFilterPage","SERVER_MAIL_SPAM_FILTER_PAGE_QUERY","ServerMailStatisticsPage","dateValues","setDateValues","getDatesFromPeriod","PERIOD_KEYS","TODAY","currentPeriod","setPeriod","searchParams","setSearchParams","useSearchParams","statisticsType","STATISTIC_TYPE_KEYS","SPAM","setStatisticsType","newStatisticsType","ServerMailStatisticsSpamRecipientsList","VIRUS_RECIPIENTS","ServerMailStatisticsVirusRecipientsList","VIRUS_VIRUSES","ServerMailStatisticsVirusVirusesList","LIST_COLUMNS","align","ratio","toFixed","ProgressBar","progress","listParams","setListParams","orderBy","email","queryVariables","toPhpDate","getStartOfDay","getEndOfDay","debouncedVariables","useDebounce","emailStatistics","spamSummary","spamRecipients","refetch","SERVER_MAIL_SPAM_STATISTICS","orderKey","keys","totalPage","renderPagination","sortParams","handleReload","useList","onReload","onPageChange","previousVariables","onChangeItemsPerPage","direction","ServerMailStatisticsToolbar","onRefresh","ServerMailStatisticsSummary","cleanCount","clean","infectedCount","infected","protectedCount","protected","skippedCount","skipped","rows","StatsPanel","Panel","Heading","level","ContentLoader","Grid","sm","GridCol","RELOAD_EMAIL_STATISTICS","YESTERDAY","LAST_WEEK","PREV_WEEK","LAST_MONTH","PREV_MONTH","ALL","CUSTOM","PERIOD_VALUES","dateFrom","dateTo","addDays","getStartOfWeek","now","getEndOfWeek","getStartOfMonth","substractDays","getDaysInPreviousMonth","getEndOfMonth","reloadStatistics","onCompleted","reloadEmailStatistics","groupable","SelectOptionGroup","newPeriod","changeField","vertical","footerClassName","virusSummary","virusRecipients","SERVER_MAIL_VIRUS_RECIPIENTS_STATISTICS","viruses","SERVER_MAIL_VIRUS_VIRUSES_STATISTICS","ServerMailWhiteListPage","isAddNetworkOpen","setIsAddNetworkOpen","SERVER_MAIL_WHITE_LIST_PAGE_QUERY","ServerMailTabs","useLocation","viewer","permissions","manageServerMail","manageServerVirusProtection","manageServerSpamFilter","manageServerMailAutodiscover","manageServerMailBlackWhiteLists","isDomainsBlacklistSupported","isSmarthostAvailable","isLocal","isAntiVirusInstalled","primaryKey","keyDrWeb","keyQmailQueue","SERVER_MAIL_TABS_QUERY","active","findIndex","matchPath","Tabs","Tab","onActivate","Component","Wrapper","displayName","WrappedComponent","doc","loc","source","collectFragmentReferences","node","refs","kind","add","selectionSet","selections","variableDefinitions","def","definitions","definitionRefs","findOperation","i","element","Set","module","exports","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","prevRefs","has","childRef","op","oneQuery"],"sourceRoot":""}
Edit
Rename
Chmod
Delete
FILE
FOLDER
INFO
Name
Size
Permission
Action
db.js
64188 bytes
0644
db.js.map
201709 bytes
0644
mail.js
90677 bytes
0644
mail.js.map
286717 bytes
0644
N4ST4R_ID | Naxtarrr