{"id":49146,"date":"2025-04-22T11:02:12","date_gmt":"2025-04-22T11:02:12","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=49146"},"modified":"2025-04-22T11:02:12","modified_gmt":"2025-04-22T11:02:12","slug":"sending-emails-from-godaddy-vps-with-cpanel-whm","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/sending-emails-from-godaddy-vps-with-cpanel-whm\/","title":{"rendered":"Sending Emails from GoDaddy VPS with cPanel + WHM"},"content":{"rendered":"\n<p>Absolutely! Here&#8217;s a <strong>comprehensive tutorial and troubleshooting guide<\/strong> for sending email from a <strong>GoDaddy VPS Server<\/strong> with <strong>cPanel + WHM<\/strong>. This includes PHP <code>mail()<\/code>, SMTP setup, logs, DNS settings, and common issues with solutions.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83d\udce7 <strong>Sending Emails from GoDaddy VPS with cPanel + WHM<\/strong><\/h1>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\udde9 <strong>1. How Email Sending Works on a cPanel VPS<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Component<\/th><th>Role<\/th><\/tr><\/thead><tbody><tr><td><strong>Exim<\/strong><\/td><td>The default Mail Transfer Agent (MTA)<\/td><\/tr><tr><td><strong>PHP<\/strong><\/td><td>Uses Exim via <code>\/usr\/sbin\/sendmail<\/code> for <code>mail()<\/code><\/td><\/tr><tr><td><strong>WHM<\/strong><\/td><td>Manages global email delivery, logs, limits<\/td><\/tr><tr><td><strong>cPanel<\/strong><\/td><td>Manages email accounts and per-domain settings<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>2. Send Email Using PHP\u2019s <code>mail()<\/code> Function<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 Step 1: Create a PHP Script<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n$to = <span class=\"hljs-string\">\"your@email.com\"<\/span>;\n$subject = <span class=\"hljs-string\">\"Test Email from GoDaddy VPS\"<\/span>;\n$message = <span class=\"hljs-string\">\"This is a test email sent using PHP.\"<\/span>;\n$headers = <span class=\"hljs-string\">\"From: noreply@yourdomain.com\"<\/span>;\n\n<span class=\"hljs-keyword\">if<\/span> (mail($to, $subject, $message, $headers)) {\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\u2705 Email sent successfully.\"<\/span>;\n} <span class=\"hljs-keyword\">else<\/span> {\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\u274c Email sending failed.\"<\/span>;\n}\n<span class=\"hljs-meta\">?&gt;<\/span><\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Save this as <code>mailcheck.php<\/code> inside your website&#8217;s public_html folder.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 Step 2: Access in Browser<\/h3>\n\n\n\n<p>Visit:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">https:<span class=\"hljs-comment\">\/\/yourdomain.com\/mailcheck.php<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>You should see &#8220;\u2705 Email sent successfully.&#8221;<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd0d <strong>3. Check Email Logs<\/strong><\/h2>\n\n\n\n<p>SSH into the VPS:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">sudo tail -f \/<span class=\"hljs-keyword\">var<\/span>\/log\/exim_mainlog\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Other useful logs:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>\/var\/log\/exim_paniclog<\/code> \u2013 for fatal errors<\/li>\n\n\n\n<li><code>\/var\/log\/exim_rejectlog<\/code> \u2013 for rejected messages<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2699\ufe0f <strong>4. Configure SPF, DKIM, and DMARC (Important for Delivery)<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714\ufe0f SPF &amp; DKIM<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>WHM > Email > Email Deliverability<\/strong><\/li>\n\n\n\n<li>Choose your domain<\/li>\n\n\n\n<li>Click <strong>&#8220;Repair&#8221;<\/strong> if SPF or DKIM are missing<\/li>\n\n\n\n<li>Copy the suggested DNS records to your <strong>GoDaddy DNS<\/strong><\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714\ufe0f DMARC (Optional but Recommended)<\/h3>\n\n\n\n<p>Add this TXT record in DNS:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"HTTP\" data-shcb-language-slug=\"http\"><span><code class=\"hljs language-http\"><span class=\"hljs-attribute\">Name<\/span>: _dmarc.yourdomain.com\n<span class=\"hljs-attribute\">Type<\/span>: TXT\n<span class=\"hljs-attribute\">Value<\/span>: v=DMARC1; p=none; rua=mailto:you@yourdomain.com\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTTP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">http<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2709\ufe0f <strong>5. Send Email via SMTP (More Reliable)<\/strong><\/h2>\n\n\n\n<p>Use this when sending emails from contact forms, apps, or Laravel\/WordPress.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 Create an Email Account<\/h3>\n\n\n\n<p>In <strong>cPanel &gt; Email Accounts<\/strong>, create:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Email: <code>info@yourdomain.com<\/code><\/li>\n\n\n\n<li>Password: <code>your_password<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 Use PHPMailer (Example)<\/h3>\n\n\n\n<p>Install:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">composer <span class=\"hljs-built_in\">require<\/span> phpmailer\/phpmailer\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Code:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">PHPMailer<\/span>\\<span class=\"hljs-title\">PHPMailer<\/span>\\<span class=\"hljs-title\">PHPMailer<\/span>;\n\n$mail = <span class=\"hljs-keyword\">new<\/span> PHPMailer();\n$mail-&gt;isSMTP();\n$mail-&gt;Host = <span class=\"hljs-string\">'mail.yourdomain.com'<\/span>;\n$mail-&gt;SMTPAuth = <span class=\"hljs-keyword\">true<\/span>;\n$mail-&gt;Username = <span class=\"hljs-string\">'info@yourdomain.com'<\/span>;\n$mail-&gt;Password = <span class=\"hljs-string\">'your_password'<\/span>;\n$mail-&gt;SMTPSecure = <span class=\"hljs-string\">'tls'<\/span>;\n$mail-&gt;Port = <span class=\"hljs-number\">587<\/span>;\n\n$mail-&gt;setFrom(<span class=\"hljs-string\">'info@yourdomain.com'<\/span>, <span class=\"hljs-string\">'Your Name'<\/span>);\n$mail-&gt;addAddress(<span class=\"hljs-string\">'recipient@example.com'<\/span>);\n$mail-&gt;Subject = <span class=\"hljs-string\">'SMTP Test Email'<\/span>;\n$mail-&gt;Body = <span class=\"hljs-string\">'This email is sent using SMTP and PHPMailer.'<\/span>;\n\n<span class=\"hljs-keyword\">if<\/span> ($mail-&gt;send()) {\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'\u2705 Mail sent!'<\/span>;\n} <span class=\"hljs-keyword\">else<\/span> {\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'\u274c Mail failed: '<\/span> . $mail-&gt;ErrorInfo;\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udee0\ufe0f <strong>6. Common Issues &amp; Troubleshooting<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Problem<\/th><th>Solution<\/th><\/tr><\/thead><tbody><tr><td><code>mail()<\/code> fails silently<\/td><td>Check <code>\/var\/log\/exim_mainlog<\/code><\/td><\/tr><tr><td>Mail lands in spam<\/td><td>Setup SPF\/DKIM\/DMARC correctly<\/td><\/tr><tr><td>Mail delivery delays<\/td><td>Check WHM &gt; Mail Queue Manager<\/td><\/tr><tr><td>PHP can&#8217;t find sendmail<\/td><td>Ensure <code>\/usr\/sbin\/sendmail<\/code> exists (default in WHM)<\/td><\/tr><tr><td>SMTP auth fails<\/td><td>Double-check credentials, port 587 with TLS<\/td><\/tr><tr><td>GoDaddy blocking ports<\/td><td>VPS is usually open, but shared hosting blocks SMTP ports<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd10 <strong>7. Tips for Deliverability<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use a real domain and valid &#8220;From&#8221; address (avoid <code>noreply@localhost<\/code>)<\/li>\n\n\n\n<li>Keep your IP clean (avoid spamming)<\/li>\n\n\n\n<li>Use <code>List-Unsubscribe<\/code> headers for bulk email<\/li>\n\n\n\n<li>Monitor bounces and complaints<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\uddea <strong>8. Bonus: Webmail Testing<\/strong><\/h2>\n\n\n\n<p>You can also send test emails from:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Webmail<\/strong>: Access via <code>https:\/\/yourdomain.com\/webmail<\/code><\/li>\n\n\n\n<li>Login with the email you created in cPanel<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\uddf0 Tools Recap<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Tool\/Feature<\/th><th>Where<\/th><\/tr><\/thead><tbody><tr><td>Email Accounts<\/td><td>cPanel<\/td><\/tr><tr><td>Mail Logs<\/td><td><code>\/var\/log\/exim_mainlog<\/code><\/td><\/tr><tr><td>DNS Settings<\/td><td>WHM &gt; Email Deliverability<\/td><\/tr><tr><td>Webmail Access<\/td><td><code>https:\/\/yourdomain.com\/webmail<\/code><\/td><\/tr><tr><td>Mail Queue<\/td><td>WHM &gt; Mail Queue Manager<\/td><\/tr><tr><td>SMTP Credentials<\/td><td>cPanel &gt; Email Accounts<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Absolutely! Here&#8217;s a comprehensive tutorial and troubleshooting guide for sending email from a GoDaddy VPS Server with cPanel + WHM. This includes PHP mail(), SMTP setup, logs, DNS settings, and&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-49146","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49146","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=49146"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49146\/revisions"}],"predecessor-version":[{"id":49147,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49146\/revisions\/49147"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=49146"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=49146"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=49146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}