{"id":123,"date":"2023-04-21T23:39:54","date_gmt":"2023-04-21T23:39:54","guid":{"rendered":"https:\/\/delimiter.online\/blog\/?p=123"},"modified":"2024-08-21T15:29:27","modified_gmt":"2024-08-21T15:29:27","slug":"how-to-build-an-smtp-server-using-virtualmin-on-centos","status":"publish","type":"post","link":"https:\/\/delimiter.online\/blog\/how-to-build-an-smtp-server-using-virtualmin-on-centos\/","title":{"rendered":"How to Build an SMTP Server using Virtualmin on CentOS?"},"content":{"rendered":"\n<p>Virtualmin is a web hosting and server management control panel designed for Unix and Linux systems. It provides a graphical user interface (GUI) to manage various aspects of web hosting, such as creating and managing domains, email accounts, FTP accounts, databases, and more. Virtualmin supports various web servers such as Apache, Nginx, and Lighttpd, and can be used to manage virtual hosts and SSL certificates.<\/p>\n\n\n\n<p>In terms of building an <a href=\"https:\/\/delimiter.online\/blog\/top-7-cloud-vps-providers-with-open-port-25-for-smtp\/\" data-type=\"post\" data-id=\"269\">SMTP server<\/a>, Virtualmin can be beneficial because it includes the option to install and configure the popular email server software, Postfix. Postfix is a powerful and flexible mail transfer agent that can handle both incoming and outgoing email for a domain.<\/p>\n\n\n\n<p>With Virtualmin, users can easily configure <a href=\"https:\/\/delimiter.online\/blog\/how-to-install-mailwizz-on-virtualmin-for-powerful-email-marketing\/\" data-type=\"post\" data-id=\"145\">Postfix<\/a> to handle mail delivery and set up email accounts for their domain. Virtualmin also provides anti-spam and anti-virus features, such as SpamAssassin and ClamAV, to help ensure that incoming email is filtered for unwanted content.<\/p>\n\n\n\n<p>Building an SMTP server using Virtualmin is a straightforward process. Here is a step-by-step guide to help you through the process:<\/p>\n\n\n\n<p>Read also: <a href=\"https:\/\/delimiter.online\/blog\/list-of-vps-hosting-providers-with-port-25-open\/\">List of VPS Hosting Providers with Port 25 Open<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Install Virtualmin on Centos?<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"How to Build an SMTP Server using Virtualmin to Send Unlimited Emails\" width=\"1000\" height=\"563\" src=\"https:\/\/www.youtube.com\/embed\/6Hx8WDKs4VI?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>If you are looking to install Virtualmin on your server, you can do so by following these steps:<\/p>\n\n\n\n<p><strong>Step 1: Update your server<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"$ sudo -i\n$ dnf update -y\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">$ sudo <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">i<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">$ dnf update <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">y<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>Step 2: Set your hostname<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"$ hostnamectl set-hostname example.com\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">$ hostnamectl set<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">hostname example<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">com<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>Step 3: Install wget<\/strong><\/p>\n\n\n\n<p>To install wget, you can use the following command:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"$ sudo yum update\n$ sudo yum install wget\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">$ sudo yum update<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">$ sudo yum install wget<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>Step 4: Download and install Virtualmin<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"$ wget http:\/\/software.virtualmin.com\/gpl\/scripts\/install.sh\n$ sudo \/bin\/sh install.sh\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">$ wget http<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #ECEFF4\">\/\/so<\/span><span style=\"color: #D8DEE9FF\">ftware<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">virtualmin<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">com<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">gpl<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">scripts<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">install<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">sh<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">$ sudo <\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">bin<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">sh install<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">sh<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Install PHP 8.1 (PHP-FPM) on CentOS<\/h3>\n\n\n\n<p>To install PHP 8.1 with PHP-FPM on CentOS, you will need to follow these steps:<\/p>\n\n\n\n<p><strong>Step 1: Install EPEL and REMI Release 9<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"$ yum install epel-release &amp;&amp; yum install remi-release\n$ dnf install https:\/\/rpms.remirepo.net\/enterprise\/remi-release-9.rpm\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">$ yum install epel<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">release <\/span><span style=\"color: #81A1C1\">&amp;&amp;<\/span><span style=\"color: #D8DEE9FF\"> yum install remi<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">release<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">$ dnf install https<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #ECEFF4\">\/\/<\/span><span style=\"color: #D8DEE9FF\">rpms<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">remirepo<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">net<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">enterprise<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">remi<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">release<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #B48EAD\">9<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">rpm<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>Step 2: Install PHP 8.1 and other required packages<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"$ dnf module list php\n$ dnf module enable php:remi-8.1\n$ dnf install php-fpm php php-bcmath php-cli php-common php-gd php-imap php-mbstring php-mcrypt php-mysql php-mysqlnd php-pdo php-soap php-tidy php-xml php-xmlrpc php-opcache php-redis php-pecl-mcrypt php-brotli php-zip\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">$ dnf <\/span><span style=\"color: #81A1C1\">module<\/span><span style=\"color: #D8DEE9FF\"> list php<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">$ dnf <\/span><span style=\"color: #81A1C1\">module<\/span><span style=\"color: #D8DEE9FF\"> enable php<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\">remi<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #B48EAD\">8.1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">$ dnf install php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">fpm php php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">bcmath php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">cli php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">common php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">gd php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">imap php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">mbstring php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">mcrypt php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">mysql php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">mysqlnd php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">pdo php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">soap php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">tidy php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">xml php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">xmlrpc php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">opcache php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">redis php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">pecl<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">mcrypt php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">brotli php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">zip<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>Step 3: Verify PHP version and enable PHP-FPM to start automatically<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"$ php -v\n$ systemctl enable php-fpm\n$ systemctl start php-fpm\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">$ php <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">v<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">$ systemctl enable php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">fpm<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">$ systemctl start php<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">fpm<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Enable PHP openssl extension<\/h3>\n\n\n\n<p>To enable the PHP openssl extension, you will need to open the php.ini file located under the PHP installation folder and search for the following line:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"extension=php_openssl.dll\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">extension<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">php_openssl<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">dll<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>If the line is not enabled (commented out), remove the semicolon (;) to enable it and save the file.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">What You Should Do After Installing Virtualmin?<\/h3>\n\n\n\n<p><strong>Log in to Virtualmin<\/strong>: After installing Virtualmin, you can access it by opening a web browser and navigating to the server&#8217;s IP address or domain name followed by the port number 10000 (e.g., https:\/\/your-server-ip:10000). Enter your server&#8217;s root credentials to log in.<\/p>\n\n\n\n<p><strong>Set up Virtual Hosts:<\/strong> Virtual hosts allow you to host multiple websites on a single server. In Virtualmin, click on <strong>&#8220;Create Virtual Server&#8221;<\/strong> and follow the prompts to create a new virtual host. You will need to specify the domain name, administrator username, and password, among other things.<\/p>\n\n\n\n<p><strong>Configure DNS:<\/strong> To point your domain name to your server, you&#8217;ll need to configure the DNS. Virtualmin includes a DNS management module that allows you to create and edit DNS records. Go to &#8220;Virtualmin &gt; System Settings &gt; Server Templates &gt; Default Settings &gt; BIND DNS Domain&#8221; and set up your DNS zone. You can then go to &#8220;Virtualmin &gt; Server Configuration &gt; DNS Records&#8221; to add or modify DNS records.<\/p>\n\n\n\n<p><strong>Set up email<\/strong>: Virtualmin includes an email server module that allows you to set up email accounts and aliases. Go to &#8220;Virtualmin &gt; Edit Virtual Server &gt; Enabled Features&#8221; and check &#8220;Mail for Domain&#8221; to enable email for the virtual host. You can then create email accounts, set up email forwarding, and manage spam filters and antivirus protection.<\/p>\n\n\n\n<p><strong>Install SSL certificate:<\/strong> To secure your website with SSL, you&#8217;ll need to install an SSL certificate. Virtualmin includes a Let&#8217;s Encrypt module that allows you to easily obtain and install a free SSL certificate. Go to &#8220;Virtualmin &gt; Server Configuration &gt; SSL Certificate&#8221; and click &#8220;Let&#8217;s Encrypt&#8221; to generate a certificate.<\/p>\n\n\n\n<p><strong>Configure backups:<\/strong> Backups are important to ensure that you can recover from data loss or server failure. Virtualmin includes a backup module that allows you to schedule and manage backups. Go to &#8220;Virtualmin &gt; Backup and Restore&#8221; to configure backups.<\/p>\n\n\n\n<p>These are just a few of the steps you can take after installing Virtualmin. Depending on your needs, you may also want to install additional modules or software, such as a web server or database server. Virtualmin provides a comprehensive control panel to manage your server and web hosting needs.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>here&#8217;s a step-by-step guide on what to do after installing Virtualmin to build an SMTP server:<\/strong><\/p>\n\n\n\n<p><strong>Install Postfix: <\/strong>Virtualmin includes a module to install and configure Postfix, which is a popular SMTP server. Go to &#8220;Virtualmin &gt; System Settings &gt; Features and Plugins&#8221; and make sure that &#8220;Mail server&#8221; is enabled. Then, go to &#8220;Virtualmin &gt; System Settings &gt; Re-Check Configuration&#8221; to ensure that all necessary packages are installed. Finally, go to &#8220;Virtualmin &gt; Install Scripts&#8221; and click &#8220;Install Scripts&#8221; next to &#8220;Postfix Mail Server&#8221; to install Postfix.<\/p>\n\n\n\n<p><strong>Configure Postfix:<\/strong> Once Postfix is installed, you&#8217;ll need to configure it to receive and send emails. Go to &#8220;Virtualmin &gt; Edit Virtual Server &gt; Enabled Features&#8221; and check &#8220;Mail for Domain&#8221; to enable email for the virtual host. Then, go to &#8220;Virtualmin &gt; Edit Virtual Server &gt; Enabled Features &gt; Postfix Mail Server&#8221; and configure the options, such as the email quota and mailbox format. You can also set up email aliases and forwarders.<\/p>\n\n\n\n<p><strong>Set up SMTP authentication:<\/strong> To prevent unauthorized users from using your SMTP server to send spam, you&#8217;ll want to set up SMTP authentication. Go to &#8220;Virtualmin &gt; Edit Virtual Server &gt; Enabled Features &gt; Postfix Mail Server&#8221; and check &#8220;SMTP Authentication.&#8221; Then, go to &#8220;Virtualmin &gt; Edit Virtual Server &gt; Mail Aliases&#8221; and create a new alias for the email address you want to use for SMTP authentication. Finally, configure your email client to use SMTP authentication when sending emails.<\/p>\n\n\n\n<p><strong>Set up spam filtering:<\/strong> To prevent spam emails from reaching your mailbox, you&#8217;ll want to set up spam filtering. Virtualmin includes a module to configure SpamAssassin, which is a popular spam filtering tool. Go to &#8220;Virtualmin &gt; Edit Virtual Server &gt; Enabled Features &gt; Spam Filtering&#8221; and check &#8220;SpamAssassin.&#8221; Then, configure the options, such as the spam score threshold and email quarantine settings.<\/p>\n\n\n\n<p><strong>Test your SMTP server:<\/strong> To ensure that your SMTP server is working correctly, you can test it by sending a test email to yourself or to another email address. You can use an email client, such as Microsoft Outlook or Mozilla Thunderbird, to send and receive emails using your SMTP server.<\/p>\n\n\n\n<p>These are just a few of the steps you can take after installing Virtualmin to build an SMTP server. Depending on your needs, you may also want to configure email forwarding, set up antivirus protection, or install additional email software. Virtualmin provides a comprehensive control panel to manage your server and email hosting needs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Virtualmin is a web hosting and server management control panel designed for Unix and Linux systems. It provides a graphical user interface (GUI) to manage various aspects of web hosting, such as creating and managing domains, email accounts, FTP accounts, databases, and more. Virtualmin supports various web servers such as Apache, Nginx, and Lighttpd, and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":377,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[108,123],"tags":[112,25,113,111,109,110],"class_list":["post-123","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-smtp","category-servers","tag-build-an-smtp-server","tag-delimiter","tag-install-virtualmin","tag-postfix","tag-smtp","tag-virtualmin"],"_links":{"self":[{"href":"https:\/\/delimiter.online\/blog\/wp-json\/wp\/v2\/posts\/123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/delimiter.online\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/delimiter.online\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/delimiter.online\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/delimiter.online\/blog\/wp-json\/wp\/v2\/comments?post=123"}],"version-history":[{"count":7,"href":"https:\/\/delimiter.online\/blog\/wp-json\/wp\/v2\/posts\/123\/revisions"}],"predecessor-version":[{"id":378,"href":"https:\/\/delimiter.online\/blog\/wp-json\/wp\/v2\/posts\/123\/revisions\/378"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/delimiter.online\/blog\/wp-json\/wp\/v2\/media\/377"}],"wp:attachment":[{"href":"https:\/\/delimiter.online\/blog\/wp-json\/wp\/v2\/media?parent=123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/delimiter.online\/blog\/wp-json\/wp\/v2\/categories?post=123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/delimiter.online\/blog\/wp-json\/wp\/v2\/tags?post=123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}