# cPanel API 2 Functions - Email::setmxcheck Warning: The cPanel API 2 system is deprecated. We **strongly** recommend that you use [UAPI](/cpanel/introduction) instead of cPanel API 2. ## Description This function modifies a mail exchanger's type. For more information about MX record settings, read our [Email Routing Configuration](https://docs.cpanel.net/whm/dns-functions/email-routing-configuration/) documentation. div Notes: br - This function **only** affects the cPanel configuration. You must configure the mail exchanger's DNS entry separately. - This function is similar to the cPanel API 2 `Email::setalwaysaccept` function, but hooks and custom event handlers parse them as unique calls. br Warning: We **strongly** recommend that you use [UAPI](/cpanel/introduction/) instead of cPanel API 2. However, no equivalent UAPI function exists. div Important: br When you disable the [*Receive Mail* role](https://docs.cpanel.net/knowledge-base/general-systems-administration/how-to-use-server-profiles/#roles), the system **disables** this function. br ## Examples WHM API (JSON) ```undefined syntaxhighlighter-pre https://hostname.example.com:2087/cpsess##########/json-api/cpanel?cpanel_jsonapi_user=user&cpanel_jsonapi_apiversion=2&cpanel_jsonapi_module=Email&cpanel_jsonapi_func=setmxcheck&domain="example.com"&mxcheck="auto" ``` div Note: br For more information, read our [Calls from the WHM API](/whm/use-whm-api-to-call-cpanel-api-and-uapi) documentation. br LiveAPI PHP Class ```undefined syntaxhighlighter-pre $cpanel = new CPANEL(); // Connect to cPanel - only do this once. // Change example.com's mx type to local. $set_mx_type = $cpanel->api2( 'Email', 'setmxcheck', array( 'domain' => 'example.com', 'mxcheck' => 'local', ) ); ``` div Note: br For more information, read our [Guide to the LiveAPI System](/guides/guide-to-the-liveapi-system/#guide-to-the-liveapi-system). br LiveAPI Perl Module ```undefined syntaxhighlighter-pre my $cpliveapi = Cpanel::LiveAPI->new(); # Connect to cPanel - only do this once. # Change example.com's mx type to local. my $set_mx_type = $cpliveapi->api2( 'Email', 'setmxcheck', { 'domain' => 'example.com', 'mxcheck' => 'local', } ); ``` div Note: br For more information, read our [Guide to the LiveAPI System](/guides/guide-to-the-liveapi-system/#guide-to-the-liveapi-system). br cPanel Tag System (deprecated) div Warnings: br - cPanel tags are **deprecated**. We **strongly** recommend that you **only** use the [LiveAPI](/guides/guide-to-the-liveapi-system) system to call the cPanel APIs. Examples are **only** present in order to help developers move from the old cPanel tag system to our [LiveAPI](/guides/guide-to-the-liveapi-system). - cPanel API 2 calls that use cPanel tags vary in code syntax and in their output. - For more information, read our [Deprecated cPanel Tag Usage](/cpanel-api-2/cpanel-api-2-deprecate-cpanel-tag-usage/) documentation. br Command Line ```undefined syntaxhighlighter-pre cpapi2 --user=username Email setmxcheck domain=example.com mxcheck=local ``` div Notes: br - You **must** URI-encode values. - `username` represents your account-level username. - You **must** run the `--user=username` command. - For more information and additional output options, read our [Guide to cPanel API 2](/cpanel-api-2/) documentation or run the `cpapi2 --help` command. - If you run CloudLinux™, you **must** use the full path of the `cpapi2` command: ```undefined syntaxhighlighter-pre /usr/local/cpanel/bin/cpapi2 ``` br Output (JSON) ```undefined syntaxhighlighter-pre { "cpanelresult": { "apiversion": 2, "func": "setmxcheck", "data": [ { "statusmsg": "Set Always Accept Status to: local", "status": 1, "checkmx": { "warnings": [ ], "issecondary": 0, "local": 1, "detected": "local", "remote": 0, "isprimary": 1, "changed": 1, "secondary": 0, "mxcheck": "local" }, "local": 1, "remote": 0, "detected": "local", "mxcheck": "local", "secondary": 0, "results": "Set Always Accept Status to: local" } ], "event": { "result": 1 }, "module": "Email" } } ``` div Note: br Use cPanel's *[API Shell](https://docs.cpanel.net/cpanel/advanced/api-shell-for-cpanel)* interface (*cPanel >> Home >> Advanced >> API Shell*) to directly test cPanel API calls. br ## Parameters table colgroup col col col col col thead tr th strong Parameter th strong Type th strong Description th strong Possible values th strong Example tbody tr td code domain td em string td p strong Required p The mail exchanger's domain. td p A valid domain on the cPanel account. td code example.com br tr td code mxcheck td em string td p strong Required p The mail exchanger type. p br td ul li code auto — Allow cPanel to determine the appropriate role. li code local — Always accept the domain's mail. li code secondary — Accept mail until a higher priority mail server is available. li code remote — Do strong not accept mail. td code auto ## Returns table thead tr th strong Return th strong Type th strong Description th strong Possible values th strong Example tbody tr td code statusmsg td em string td A message of success or a reason for failure. td ul li A message of success that includes the new type. li A string that describes an error. td code Set Always Accept Status to: local tr td code status td em Boolean td Whether the function succeeded. td ul li code 1 — The function succeeded. li code 0 — The function failed. td code 1 tr td code checkmx td em hash td A hash of the mail exchanger's data. td This hash contains the code warnings array and the code issecondary , code local , code detected , code remote , code isprimary , code changed , code secondary , and code mxcheck returns. td br tr td p code warnings td em array td p An array of warning messages, if any exist. p The function returns this array in the code checkmx hash. td One or more warning messages. td div code Auto Detect of MX configuration not possible due to non-resolving MX entries. Defaulting to last known setting: local. tr td p code issecondary td p em Boolean td p Whether the mail exchanger is a secondary exchanger. p The function returns this value in the code checkmx hash. td ul li code 1 — Secondary. li code 0 — strong Not secondary. td p code 0 tr td p code local td em Boolean td p Whether the mail exchanger is a local exchanger. p The function returns this value in the code checkmx hash. td ul li code 1 — Local. li code 0 — strong Not local. td code 0 tr td p code detected td em string td p The mail exchanger type. p The function returns this value in the code checkmx hash. td ul li code auto li code local li code secondary li code remote td code auto tr td p code remote td em Boolean td p Whether the mail exchanger is a remote exchanger. p The function returns this value in the code checkmx hash. td ul li code 1 — Remote. li code 0 — strong Not remote. td code 0 tr td p code isprimary td em Boolean td p Whether the mail exchanger is the primary mail exchanger. p The function returns this value in the code checkmx hash. td ul li code 1 — Primary. li code 0 — strong Not primary. td code 0 tr td p code changed td em Boolean td p Whether a change occurred during the function. p The function returns this value in the code checkmx hash. td ul li code 1 — Change occurred. li code 0 — strong No change. td code 1 tr td p code secondary td em Boolean td p Whether the mail exchanger is a secondary exchanger. p The function returns this value in the code checkmx hash. td ul li code 1 — Secondary. li code 0 — strong Not secondary. td p code 0 tr td p code mxcheck td em string td p The mail exchanger type. p The function returns this value in the code checkmx hash. td ul li code auto li code local li code secondary li code remote td code auto tr td code local td em Boolean td Whether the mail exchanger is a local exchanger. td ul li code 1 — Local. li code 0 — strong Not local. td code 0 tr td code remote td em Boolean td p Whether the mail exchanger is a remote exchanger. td ul li code 1 — Remote. li code 0 — strong Not remote. td code 0 tr td code detected td em string td p The mail exchanger type. td ul li code auto li code local li code secondary li code remote td code auto tr td code mxcheck td em string td p The mail exchanger type. td ul li code auto li code local li code secondary li code remote td code auto tr td code secondary td em Boolean td p Whether the mail exchanger is a secondary exchanger. td ul li code 1 — Secondary. li code 0 — Not secondary. td p code 0 tr td code results td em string td A message of success or a reason for failure. td ul li A message of success that includes the new type. li A string that describes an error. td code Set Always Accept Status to: local tr td code reason td em string td div p A reason for failure. p div Note: br p This function only returns a code reason value if it failed. br td p A string that describes the error. td code This is an error message. tr td code result td em Boolean td p Whether the function succeeded. td ul li code 1 — The function succeeded. li code 0 — The function failed. td code 1