<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Email Server &#8211; Andromedabay Store</title>
	<atom:link href="https://andromedabay.ddns.net/category/my-topics/it-infrastructure-systems/email-server/feed/" rel="self" type="application/rss+xml" />
	<link>https://andromedabay.ddns.net</link>
	<description>Your source of Technical Insight and Interesting Stuff</description>
	<lastBuildDate>Thu, 02 Oct 2025 05:01:22 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://andromedabay.ddns.net/wp-content/uploads/2015/08/cropped-myicon-32x32.png</url>
	<title>Email Server &#8211; Andromedabay Store</title>
	<link>https://andromedabay.ddns.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Experiments with IaC &#8211; WebNode</title>
		<link>https://andromedabay.ddns.net/experiments-with-iac-automation/</link>
					<comments>https://andromedabay.ddns.net/experiments-with-iac-automation/#respond</comments>
		
		<dc:creator><![CDATA[Hammad Rauf]]></dc:creator>
		<pubDate>Fri, 19 Apr 2024 02:23:57 +0000</pubDate>
				<category><![CDATA[Apache2]]></category>
		<category><![CDATA[Cost Effective Website]]></category>
		<category><![CDATA[Dovecot]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Email Server]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[IT Infrastructure Systems]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MariaDB/MySQL]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Ansible]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[IaC]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Terraform]]></category>
		<category><![CDATA[Vagrant]]></category>
		<guid isPermaLink="false">https://andromedabay.ddns.net/?p=2844</guid>

					<description><![CDATA[&#8220;WebNode&#8221; is a IaC script to quickly build and deploy a PHP WordPress WebServer and Email Relay Host on a virtualized server and possibly copied]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>6 Minute, 11 Second                </div>

            </div><p>&#8220;WebNode&#8221; is a IaC script to quickly build and deploy a PHP WordPress WebServer and Email Relay Host on a virtualized server and possibly copied over to an actual Physical Hard Disk. It is a work in progress&#8230;as I write these lines.</p>
<h3>IaC</h3>
<p>&#8216;Infrastructure as Code&#8217; or IaC is the process of managing and deploying System infrastructure on virtualized environments. In simple words it is a fancy name given to creating and editing Virtual Machines (and system services) using scripts and code.</p>
<p>IaC has some benefits and some limitations. Benefits include the fact that all this code can be saved in repositories and replayed automatically when needed. One limitation is that if some physical work is involved, that can not be expressed as code.</p>
<p>I started on my Ansible journey impressed by the work done by Jeff Geerling in Ansible (A system for automating repititive tasks as code) and also his Video Series on teaching Ansible. I forked his Packer-boxes Github repository to provide some latest Vagrant images for VirtualBox. Then learning from his Ansible videos, book, and other Ansible books, I am creating another Github repository that will create VirtualBox (and Cloud &#8211; Linode.com, Azure etc.) image named WebNode. WebNode will be a server that has Apache, MariaDB, PHP3, WordPress, and Postfix/Dovecot Email Relay software installed on it. Plus you will be able to bring your own WordPress Database into this node. It is still a work in progress.</p>
<h3>Usefulness of Generic CI/CD System</h3>
<p>CI/CD stands for Continuous Integration/Continuous Delivery. It refers to the concept of automating integration of minor developmental changes automatically into the bigger system along with automated testing. It also provides this successfully tested overall system ready for deployment to the end user, automatically deploying also if configured like so.</p>
<p>Terraform by itself is not a complete CI/CD tool. Any large scale deployment of Terraform/Ansible/Vagrant can not undermine the usefulness of generic CI/CD tools like Jenkins. Jenkins can provide the missing glue in your automated pipeline.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto">
<h3 class="zeroclipboard-container">Using the WebNode Project</h3>
<p><em><strong>Note about Platform</strong>:</em> The instructions given here have been tested on host Ubuntu 22.04 and Windows 11 (with WSL2). The same instructions , with little or no modifications, should also work on MacOS. The virtual machine image can be based on Debian or RHEL based Operating systems.</p>
<p>Make sure you have Git Version control software installed on your computer. Clone the Git project from <a href="https://github.com/build-boxes/webnode.git" target="_blank" rel="noopener">https://github.com/build-boxes/webnode.git</a></p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">git clone https://github.com/build-boxes/webnode.git
cd webnode
</pre>
</div>
<div class="markdown-heading" dir="auto">
<h5 class="heading-element" dir="auto" tabindex="-1">Local Images Creation &#8211; On VirtualBox</h5>
</div>
<p dir="auto">It can be used in Windows 10/11 (a bit difficult to setup), or you can use Debian/Ubuntu host environemnt.</p>
<ol dir="auto">
<li>Install VirtualBox</li>
<li>Install Vagrant, Ansible (Use Windows Subsystem for Linux 2)</li>
<li>Install some plugins in WSL2 to allow Ansible and Vagrant to access Windows VirtualBox (Google Search, <a href="https://slavid.github.io/2021/11/28/running-vagrant-ansible-windows-through-wsl2/#configuration" target="_blank" rel="noopener">related link</a>).</li>
<li>Change into the project root folder.</li>
<li>Download required roles with the following command:
<div class="snippet-clipboard-content notranslate position-relative overflow-auto">
<pre class="notranslate"><code>rm -rf ~/.ansible/roles/</code><code>
ansible-galaxy install --force -r ./roles/requirements.yml </code></pre>
</div>
</li>
<li>Run:
<div class="snippet-clipboard-content notranslate position-relative overflow-auto">
<pre class="notranslate"><code>vagrant up
OR
vagrant up debian</code></pre>
</div>
</li>
<li>Now you can ssh into your Virtual server.
<div class="snippet-clipboard-content notranslate position-relative overflow-auto">
<pre class="notranslate"><code>vagrant ssh
</code></pre>
</div>
</li>
<li>Get the Local Network IP Address.
<div class="snippet-clipboard-content notranslate position-relative overflow-auto">
<pre class="notranslate"><code>ip a
</code></pre>
</div>
</li>
<li style="list-style-type: none;"></li>
<li>Open the IP Address in Browser.
<p><figure id="attachment_2868" aria-describedby="caption-attachment-2868" style="width: 1013px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2024/05/WebNode-default-apache-page-2-1.png"><img fetchpriority="high" decoding="async" class="wp-image-2868 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2024/05/WebNode-default-apache-page-2-1.png" alt="WebNode default apache page" width="1013" height="737" srcset="https://andromedabay.ddns.net/wp-content/uploads/2024/05/WebNode-default-apache-page-2-1.png 1013w, https://andromedabay.ddns.net/wp-content/uploads/2024/05/WebNode-default-apache-page-2-1-600x437.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2024/05/WebNode-default-apache-page-2-1-300x218.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2024/05/WebNode-default-apache-page-2-1-768x559.png 768w" sizes="(max-width: 1013px) 100vw, 1013px" /></a><figcaption id="caption-attachment-2868" class="wp-caption-text">WebNode default apache page</figcaption></figure></li>
<li>There is not much to see or test in the WebNode project itself, at this time, other than the page in previuos step. It is a work in progress. Follow the Github repository listed above for uptodate status.</li>
<li>To shutdown the VM, run:
<div class="snippet-clipboard-content notranslate position-relative overflow-auto">
<pre class="notranslate"><code>vagrant halt
OR
vagrant halt debian</code></pre>
</div>
</li>
<li>To Destroy the VM,  run:
<div class="snippet-clipboard-content notranslate position-relative overflow-auto">
<pre class="notranslate"><code>vagrant destroy -f
OR
vagrant destroy debian -f</code></pre>
</div>
</li>
</ol>
<div class="markdown-heading" dir="auto">
<h5 class="heading-element" dir="auto" tabindex="-1">Cloud Image Creation &#8211; On Linode, Azure, AWS or GCP</h5>
</div>
<p dir="auto">It can be used in Windows 10/11 (a bit difficult to setup), or you can use Debian/Ubuntu host environment.</p>
<ol>
<li dir="auto">Install Ansible, Terraform (Use Windows Subsystem for Linux 2)</li>
<li dir="auto">Install some plugins in WSL2 for Ansible (Google Search, <a href="https://slavid.github.io/2021/11/28/running-vagrant-ansible-windows-through-wsl2/#configuration" target="_blank" rel="noopener">related link</a>)</li>
<li dir="auto">Change into the project root folder.</li>
<li dir="auto">Download required roles with the following command:
<div class="snippet-clipboard-content notranslate position-relative overflow-auto">
<pre class="notranslate"><code>rm -rf ~/.ansible/roles/
ansible-galaxy install --force -r ./roles/requirements.yml</code></pre>
</div>
</li>
<li dir="auto">Change into one of the&#8221;tf-linode*&#8221; or &#8220;tf-azure*&#8221; subfolders</li>
<li dir="auto">Run:
<div class="snippet-clipboard-content notranslate position-relative overflow-auto">
<pre class="notranslate"><code>terraform init
terraform plan
terraform apply -auto-approve</code></pre>
</div>
</li>
<li dir="auto">To Destroy run:
<div class="snippet-clipboard-content notranslate position-relative overflow-auto">
<pre class="notranslate"><code>terraform destroy -auto-approve</code></pre>
</div>
</li>
</ol>
<h3>Using the VirtualBox Images</h3>
<p dir="auto">Apart for use in the WebNode project above, the VirtualBox images can be used for other tasks also. Make sure Vagrant and Oracle VirtualBox are installed. Start by obtaing the Vagrantfile automatically as follows:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ vargrant init raufhammad/centos9

OR

C:\&gt; vargrant init raufhammad/centos9</pre>
<p>This will show output like below:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">C:\Users\XYZ&gt;mkdir temp

C:\Users\XYZ&gt;cd temp

C:\Users\XYZ\temp&gt;vagrant init raufhammad/centos9
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

</pre>
<p dir="auto">Once the Vagrantfile is downloaded, you may modify this file as per your needs, before the next step.</p>
<p dir="auto">From the same box directory, run the following command after the Vagrantfile has been downloaded:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto">
<pre class="notranslate"><code>$ vagrant up
</code></pre>
<div class="zeroclipboard-container">Test that the box works correctly, then tear it down with:</div>
</div>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto">
<pre class="notranslate"><code>$ vagrant destroy -f
</code></pre>
<h3>Addition of Ansible-Roles</h3>
<div>At the time of this update (May 11, 2024), two ansible-roles have replaced many of the Playbook steps. Reference to the project page of these ansible-roles is given below. The README.md page of these projects provides clues on how to use these re-usable Automation components in other projects.</div>
</div>
<h3>References</h3>
<ol>
<li>The WebNode project repository (Work in progress&#8230;), <a href="https://github.com/build-boxes/webnode" target="_blank" rel="noopener">https://github.com/build-boxes/webnode</a> , Date Accessed: April 18, 2024</li>
<li>Jeff Geerlings original Packer-Boxes Github Repository, <a href="https://github.com/geerlingguy/packer-boxes" target="_blank" rel="noopener">https://github.com/geerlingguy/packer-boxes</a> , Date Accessed: April 18, 2024</li>
<li>My fork from the above with updated Packer-Boxes, <a href="https://github.com/build-boxes/packer-boxes" target="_blank" rel="noopener">https://github.com/build-boxes/packer-boxes</a> , Date Accessed: April 18, 2024</li>
<li>Ready built VagrantUp.com (Vagrant boxes) repository, <a href="https://app.vagrantup.com/raufhammad">https://app.vagrantup.com/raufhammad</a> , Date Accessed: April 18, 2024</li>
<li>Install Oracle VirtualBox Link, <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank" rel="noopener">https://www.virtualbox.org/wiki/Downloads</a> , Date Accessed: April 18, 2024</li>
<li>Install Vagrant link (Install in wsl2 in Windows) , <a href="https://developer.hashicorp.com/vagrant/install" target="_blank" rel="noopener">https://developer.hashicorp.com/vagrant/install</a> , Date Accessed: April 18, 2024</li>
<li>Install Terraform link, <a href="https://developer.hashicorp.com/terraform/install" target="_blank" rel="noopener">https://developer.hashicorp.com/terraform/install</a> , Date Accessed: April 18, 2024</li>
<li>Install Ansible guide link, <a href="https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html" target="_blank" rel="noopener">https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html</a> , Date Accessed: April 18, 2024</li>
<li>Install Ansible in WSL2, <a href="https://4sysops.com/archives/install-ansible-on-windows/" target="_blank" rel="noopener">https://4sysops.com/archives/install-ansible-on-windows/</a> , Date Accessed: April 18, 2024</li>
<li>Using Windows VirtualBox from Ansible in WSL2 &#8211; Tricks, <a href="https://slavid.github.io/2021/11/28/running-vagrant-ansible-windows-through-wsl2/#configuration" target="_blank" rel="noopener">https://slavid.github.io/2021/11/28/running-vagrant-ansible-windows-through-wsl2/#configuration</a> , Date Accessed: April 18, 2024</li>
<li>Book &#8211; Ansible: Up and Running (3rd Edition), Bas Meijer, Lorin Hochstein, and Rene Moser, Published by O&#8217;Reilly Media Inc, July 2022. Website: <a href="https://www.oreilly.com/library/view/ansible-up-and/9781098109141/" target="_blank" rel="noopener">https://www.oreilly.com/library/view/ansible-up-and/9781098109141/</a>, <a href="https://www.ansiblebook.com/" target="_blank" rel="noopener">https://www.ansiblebook.com/</a></li>
<li>Jeff Geerling (GeerlingGuy) Ansible Video Series, <a href="https://www.youtube.com/playlist?list=PL2_OBreMn7FqZkvMYt6ATmgC0KAGGJNAN" target="_blank" rel="noopener">https://www.youtube.com/playlist?list=PL2_OBreMn7FqZkvMYt6ATmgC0KAGGJNAN</a> , Date Accessed: April 18, 2024</li>
<li>Custom Ansible Roles:
<ul>
<li><a href="https://www.redhat.com/en/topics/automation/what-is-an-ansible-role" target="_blank" rel="noopener">What are Ansible-Roles?</a> Date Accessed: May 11, 2024</li>
<li>hammadrauf.sudousers &#8211; <a href="https://github.com/hammadrauf/sudousers/tree/main" target="_blank" rel="noopener">https://github.com/hammadrauf/sudousers/tree/main</a> &#8211; Date Accessed: May 11, 2024</li>
<li>hammadrauf.apache2 &#8211; <a href="https://github.com/hammadrauf/apache2">https://github.com/hammadrauf/apache2</a> &#8211; Date Accessed: May 11, 2024
<ol>
<li>hammadrauf.apache_vhosts &#8211; <a href="https://github.com/hammadrauf/apache_vhosts" target="_blank" rel="noopener">https://github.com/hammadrauf/apache_vhosts</a></li>
</ol>
</li>
</ul>
</li>
<li>Jenkins Tutorial, <a href="https://www.jenkins.io/doc/tutorials/" target="_blank" rel="noopener">https://www.jenkins.io/doc/tutorials/</a>, Date Accessed: July 12, 2024</li>
</ol>


		<div class=" twp-social-share  booster-clear">

						    <header class="twp-plugin-title twp-share-title">
			        <h2>Share</h2>
			    </header>
			
		    <div class="twp-share-container">
				<div class="twp-social-icons twp-social-facebook">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'https://www.facebook.com/sharer/sharer.php?u=http://andromedabay.ddns.net/experiments-with-iac-automation/'); "  href="https://www.facebook.com/sharer/sharer.php?u=http://andromedabay.ddns.net/experiments-with-iac-automation/" >
			                                <span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>												<span class="twp-share-media">

													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M22.675 0h-21.35c-.732 0-1.325.593-1.325 1.325v21.351c0 .731.593 1.324 1.325 1.324h11.495v-9.294h-3.128v-3.622h3.128v-2.671c0-3.1 1.893-4.788 4.659-4.788 1.325 0 2.463.099 2.795.143v3.24l-1.918.001c-1.504 0-1.795.715-1.795 1.763v2.313h3.587l-.467 3.622h-3.12v9.293h6.116c.73 0 1.323-.593 1.323-1.325v-21.35c0-.732-.593-1.325-1.325-1.325z" /></svg></span>
				                                        <span class="twp-label-title">
				                                            Facebook				                                        </span>
				                                    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-twitter">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'https://twitter.com/intent/tweet?text=Experiments%20with%20IaC%20&#8211;%20WebNode&#038;url=http://andromedabay.ddns.net/experiments-with-iac-automation/'); "  href="https://twitter.com/intent/tweet?text=Experiments%20with%20IaC%20&#8211;%20WebNode&#038;url=http://andromedabay.ddns.net/experiments-with-iac-automation/" >
			                                <span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>												<span class="twp-share-media">
													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path></svg></span>
				                                        <span class="twp-label-title">
				                                            Twitter				                                        </span>
												    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-pinterest">										<a class="twp-icon-holder" rel="nofollow" href="javascript:twp_be_pinterest()">
											<span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>				                                <span class="twp-share-media">
													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M12.289,2C6.617,2,3.606,5.648,3.606,9.622c0,1.846,1.025,4.146,2.666,4.878c0.25,0.111,0.381,0.063,0.439-0.169 c0.044-0.175,0.267-1.029,0.365-1.428c0.032-0.128,0.017-0.237-0.091-0.362C6.445,11.911,6.01,10.75,6.01,9.668 c0-2.777,2.194-5.464,5.933-5.464c3.23,0,5.49,2.108,5.49,5.122c0,3.407-1.794,5.768-4.13,5.768c-1.291,0-2.257-1.021-1.948-2.277 c0.372-1.495,1.089-3.112,1.089-4.191c0-0.967-0.542-1.775-1.663-1.775c-1.319,0-2.379,1.309-2.379,3.059 c0,1.115,0.394,1.869,0.394,1.869s-1.302,5.279-1.54,6.261c-0.405,1.666,0.053,4.368,0.094,4.604 c0.021,0.126,0.167,0.169,0.25,0.063c0.129-0.165,1.699-2.419,2.142-4.051c0.158-0.59,0.817-2.995,0.817-2.995 c0.43,0.784,1.681,1.446,3.013,1.446c3.963,0,6.822-3.494,6.822-7.833C20.394,5.112,16.849,2,12.289,2"></path></svg></span>
				                                        <span class="twp-label-title">
				                                            Pinterest				                                        </span>
				                                    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-linkedin">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'http://www.linkedin.com/shareArticle?mini=true&#038;title=Experiments%20with%20IaC%20&#8211;%20WebNode&#038;url=http://andromedabay.ddns.net/experiments-with-iac-automation/'); "  href="http://www.linkedin.com/shareArticle?mini=true&#038;title=Experiments%20with%20IaC%20&#8211;%20WebNode&#038;url=http://andromedabay.ddns.net/experiments-with-iac-automation/" >
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg>				                                    </span>
													<span class="twp-share-label twp-label-title">
				                                        LinkedIn				                                    </span>
												</span>
																					</a>
										</div><div class="twp-social-icons twp-social-email">										<a class="twp-icon-holder" rel="nofollow"  href="mailto:?subject=:&amp;body= Experiments with IaC &#8211; WebNode http://andromedabay.ddns.net/experiments-with-iac-automation/">
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M0 3v18h24v-18h-24zm6.623 7.929l-4.623 5.712v-9.458l4.623 3.746zm-4.141-5.929h19.035l-9.517 7.713-9.518-7.713zm5.694 7.188l3.824 3.099 3.83-3.104 5.612 6.817h-18.779l5.513-6.812zm9.208-1.264l4.616-3.741v9.348l-4.616-5.607z" /></svg>				                                    </span>
				                                    <span class="twp-share-label twp-label-title">
				                                        Email				                                    </span>
												</span>
																					</a>
										</div><div class="twp-social-icons twp-social-vk">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'http://vk.com/share.php?url=http://andromedabay.ddns.net/experiments-with-iac-automation/&#038;caption=Experiments%20with%20IaC%20&#8211;%20WebNode'); "  href="http://vk.com/share.php?url=http://andromedabay.ddns.net/experiments-with-iac-automation/&#038;caption=Experiments%20with%20IaC%20&#8211;%20WebNode" >
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M22,7.1c0.2,0.4-0.4,1.5-1.6,3.1c-0.2,0.2-0.4,0.5-0.7,0.9c-0.5,0.7-0.9,1.1-0.9,1.4c-0.1,0.3-0.1,0.6,0.1,0.8 c0.1,0.1,0.4,0.4,0.8,0.9h0l0,0c1,0.9,1.6,1.7,2,2.3c0,0,0,0.1,0.1,0.1c0,0.1,0,0.1,0.1,0.3c0,0.1,0,0.2,0,0.4 c0,0.1-0.1,0.2-0.3,0.3c-0.1,0.1-0.4,0.1-0.6,0.1l-2.7,0c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.4-0.1-0.5-0.2l-0.2-0.1 c-0.2-0.1-0.5-0.4-0.7-0.7s-0.5-0.6-0.7-0.8c-0.2-0.2-0.4-0.4-0.6-0.6C14.8,15,14.6,15,14.4,15c0,0,0,0-0.1,0c0,0-0.1,0.1-0.2,0.2 c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.1-0.1,0.3-0.2,0.5c-0.1,0.2-0.1,0.5-0.1,0.8c0,0.1,0,0.2,0,0.3c0,0.1-0.1,0.2-0.1,0.2l0,0.1 c-0.1,0.1-0.3,0.2-0.6,0.2h-1.2c-0.5,0-1,0-1.5-0.2c-0.5-0.1-1-0.3-1.4-0.6s-0.7-0.5-1.1-0.7s-0.6-0.4-0.7-0.6l-0.3-0.3 c-0.1-0.1-0.2-0.2-0.3-0.3s-0.4-0.5-0.7-0.9s-0.7-1-1.1-1.6c-0.4-0.6-0.8-1.3-1.3-2.2C2.9,9.4,2.5,8.5,2.1,7.5C2,7.4,2,7.3,2,7.2 c0-0.1,0-0.1,0-0.2l0-0.1c0.1-0.1,0.3-0.2,0.6-0.2l2.9,0c0.1,0,0.2,0,0.2,0.1S5.9,6.9,5.9,7L6,7c0.1,0.1,0.2,0.2,0.3,0.3 C6.4,7.7,6.5,8,6.7,8.4C6.9,8.8,7,9,7.1,9.2l0.2,0.3c0.2,0.4,0.4,0.8,0.6,1.1c0.2,0.3,0.4,0.5,0.5,0.7s0.3,0.3,0.4,0.4 c0.1,0.1,0.3,0.1,0.4,0.1c0.1,0,0.2,0,0.3-0.1c0,0,0,0,0.1-0.1c0,0,0.1-0.1,0.1-0.2c0.1-0.1,0.1-0.3,0.1-0.5c0-0.2,0.1-0.5,0.1-0.8 c0-0.4,0-0.8,0-1.3c0-0.3,0-0.5-0.1-0.8c0-0.2-0.1-0.4-0.1-0.5L9.6,7.6C9.4,7.3,9.1,7.2,8.7,7.1C8.6,7.1,8.6,7,8.7,6.9 C8.9,6.7,9,6.6,9.1,6.5c0.4-0.2,1.2-0.3,2.5-0.3c0.6,0,1,0.1,1.4,0.1c0.1,0,0.3,0.1,0.3,0.1c0.1,0.1,0.2,0.1,0.2,0.3 c0,0.1,0.1,0.2,0.1,0.3s0,0.3,0,0.5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.7c0,0.3,0,0.6,0,0.9c0,0.1,0,0.2,0,0.4c0,0.2,0,0.4,0,0.5 c0,0.1,0,0.3,0,0.4s0.1,0.3,0.1,0.4c0.1,0.1,0.1,0.2,0.2,0.3c0.1,0,0.1,0,0.2,0c0.1,0,0.2,0,0.3-0.1c0.1-0.1,0.2-0.2,0.4-0.4 s0.3-0.4,0.5-0.7c0.2-0.3,0.5-0.7,0.7-1.1c0.4-0.7,0.8-1.5,1.1-2.3c0-0.1,0.1-0.1,0.1-0.2c0-0.1,0.1-0.1,0.1-0.1l0,0l0.1,0 c0,0,0,0,0.1,0s0.2,0,0.2,0l3,0c0.3,0,0.5,0,0.7,0S21.9,7,21.9,7L22,7.1z"></path></svg>				                                    </span>
													<span class="twp-share-label twp-label-title">
				                                        VK				                                    </span>
												</span>
																					</a>
										</div>			</div>
		</div>

	]]></content:encoded>
					
					<wfw:commentRss>https://andromedabay.ddns.net/experiments-with-iac-automation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Home Email Server Setup with Personal Domain</title>
		<link>https://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/</link>
					<comments>https://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/#respond</comments>
		
		<dc:creator><![CDATA[Hammad Rauf]]></dc:creator>
		<pubDate>Sat, 12 Aug 2023 00:06:01 +0000</pubDate>
				<category><![CDATA[Apache2]]></category>
		<category><![CDATA[Cost Effective Website]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Dovecot]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Email Server]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[home email]]></category>
		<category><![CDATA[self hosted email]]></category>
		<category><![CDATA[small business email]]></category>
		<category><![CDATA[smtp server]]></category>
		<category><![CDATA[step by step guide]]></category>
		<guid isPermaLink="false">https://andromedabay.ddns.net/?p=1335</guid>

					<description><![CDATA[You can have a personal Home Email Server Setup without breaking the bank. It can also be used by small businesses. You will have total]]></description>
			<script>console.log("CSV DATA (RAW):", `<br />
Item,Description,Estimated Cost,Cost Period<br />
Hardware,&#8221;It can be Raspberry-Pi, or any other Single Board Computer. Choose a computer that consumes less Electrical Power and makes less noise. It will remain turned On, 24 hours a day 7 days a week.&#8221;,CAD$ 50 to 250,One time<br />
Internet Connection,&#8221;Internet connection from a provider like Rogers, Bell, or Others. Also known as your Internet Service Provider (ISP).&#8221;,Varying,monthly<br />
Domain Name Registration,&#8221;Registration of a custom Domain Name of your choice. For example &#8220;&#8221;mybusines.com&#8221;&#8221;, or &#8220;&#8221;myfamily.ca&#8221;&#8221;. Email addresses will be using this domain name like, for example: &#8220;&#8221;abe.lincoln@mybusiness.com&#8221;&#8221;, &#8220;&#8221;sarah@myfamily.ca&#8221;&#8221;, etc. Domain Names are translated into matching IP Address when a DNS lookup is performed. So this way we do not need to remember IP Address but only remember the domain name of a site, or email address.&#8221;,CAD$ 10 to 30,Yearly<br />
Dynamic DNS Resolution,&#8221;ISPs provide your home router with different IP Addresses over a period of a year. The IP Address can also change anytime. Dynamic DNS Resolution allows your domain name to always have the correct IP address, even when your ISP changes the IP Address. This is also known as DDNS. There are free DDNS services, but when using a custom DNS name DDNS service may also need to be purchased.&#8221;,CAD$ 0 to 13,Yearly<br />
DNS Records Editing Capability/Service,&#8221;Domain name registration by default creates a DNS A-Type record. But for email setup, we need several other DNS record types, in addition to the A-Type record. Your DNS/DDNS provider may charge extra for providing these additional DNS Records.&#8221;,CAD$ 0 to 13,Yearly<br />
Email Store-Forward Service,&#8221;Most ISP block the relevant ports to receive email from the Internet. We will need to pay for this store-forward service from a third party vendor, which should be more economical as compared to getting this service from your ISP.&#8221;,CAD$ 13 to 22,Yearly<br />
Email (SMTP) Outbound Relay Service,&#8221;Most ISP block the relevant ports to send outbound email to the Internet. We will need to pay for this SMTP Protocol relay service from a third party vendor, which should be more economical as compared to getting this service from your ISP.&#8221;,CAD$ 13 to 22,Yearly<br />`);</script><script>console.log("processed data:", [{"value":"Item","colspan":1,"rowspan":1},{"value":"Description","colspan":1,"rowspan":1},{"value":"Estimated Cost","colspan":1,"rowspan":1},{"value":"Cost Period<br \/>","colspan":1,"rowspan":1}]);</script><script>console.log("CSV DATA (RAW):", `<br />
Name,Status,Protocols,Internal port,External port,Local IP address / Device name,Description<br />
&nbsp;,&nbsp;,&nbsp;,&nbsp;,&nbsp;,&nbsp;,<br />
HTTP,Enabled,TCP,80,80,192.168.0.6 ( or Target Server Host-Name),<br />
HTTPS,Enabled,TCP,443,443,192.168.0.6 ( or Target Server Host-Name),<br />
Postfix-SMTP,Enabled,TCP,25,25,192.168.0.6 ( or Target Server Host-Name),<br />
Postfix-SMTPS,Enabled,TCP,465,465,192.168.0.6 ( or Target Server Host-Name),<br />
Postfix-MSA,Enabled,TCP,587,587,192.168.0.6 ( or Target Server Host-Name),Mail Submission Agent<br />
Postfix-SMTP,Enabled,TCP,2525,2525,192.168.0.6 ( or Target Server Host-Name),<br />
IMAP-login,Enabled,TCP,143,143,192.168.0.6 ( or Target Server Host-Name),<br />
dovecot-POP3,Enabled,TCP,110,110,192.168.0.6 ( or Target Server Host-Name),<br />
IMAP-login,Enabled,TCP,993,993,192.168.0.6 ( or Target Server Host-Name),<br />
dovecot-POP3,Enabled,TCP,995,995,192.168.0.6 ( or Target Server Host-Name)<br />`);</script><script>console.log("processed data:", [{"value":"Name","colspan":1,"rowspan":1},{"value":"Status","colspan":1,"rowspan":1},{"value":"Protocols","colspan":1,"rowspan":1},{"value":"Internal port","colspan":1,"rowspan":1},{"value":"External port","colspan":1,"rowspan":1},{"value":"Local IP address \/ Device name","colspan":1,"rowspan":1},{"value":"Description<br \/>","colspan":1,"rowspan":1}]);</script><script>console.log("CSV DATA (RAW):", `<br />
Test URL,Description<br />
http://192.168.0.6     Or <br /> http://&#8211;IP Address of Target Server&#8211;,Test URL on your local area network.<br />
http://somewhere.com   Or <br /> http://&#8211;Your Domain Name&#8211;,&#8221;Test URL from outside your Local area network. (Use your cell phone, with Wifi turned off, and data enabled).&#8221;<br />`);</script><script>console.log("processed data:", [{"value":"Test URL","colspan":1,"rowspan":1},{"value":"Description<br \/>","colspan":1,"rowspan":1}]);</script>							<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>50 Minute, 26 Second                </div>

            </div><p>You can have a personal Home Email Server Setup without breaking the bank. It can also be used by small businesses. You will have total control over it. You can create as many email post boxes as you like (Limited by your server capabilities). This post will document the steps and commands used for this purpose. It can be implemented on Raspberry Pi (or similar Single Board Computers), using Debian (Linux), Postfix, Dovecot, etc. as discussed below. You will be paying for the personal Domain Name, Email Store Forward service, and a SMTP Relay Host &#8211; the cost of these 3 should be between US$ 20 to US $ 50 per year, depending on the service provider you choose. The benefit is that all family members or small business employees get email post boxes on your server, you do not pay anything more. You can have unlimited email post boxes limited only by the size of your hard disk on your email server.</p>
<p>Many Internet Service Providers (ISPs) like Rogers, Bell and others block the default port for sending and receiving email directly on your home network. Why they do that, security or pure commercial reason is a separate debate, I will not delve into that here. The ISPs also keep changing your Router/Gateway&#8217;s public IP Address, ie., it is not a static IP Address and can change at any time. In this post we will see ways of over coming these constraints in a budget friendly way.</p>
<p><em><strong>Disclaimer:</strong> Opening ones Internet Router to additional traffic and installing Web Server and Email Server Software in your home computers can expose you to potentially malicious traffic and users and bots on the Internet. These instructions are primarily designed to document the general process, these may not be written with fool proof security in mind. The author assumes no responsibility of security, nor functionality. Follow these instructions at your own risk only. If you continue, you are agreeing to this disclaimer.</em></p>
<p><em><strong>Attribution</strong>: Free Email Icon used attribution: <a title="email icons" href="https://www.flaticon.com/free-icons/email">Email icons created by Smashicons &#8211; Flaticon</a></em></p>
<p>In particular we will be discussing the following topics in this post.</p>
<div id="mycontents"><strong>Contents:</strong></div>
<p><a href="#pre-requisites">Inventory and Cost Estimates</a><br />
<a href="#hardware">Hardware</a><br />
<a href="#domain-name">Domain Name Registration</a><br />
<a href="#dynamic-dns-registration">Dynamic DNS Service</a><br />
<a href="#operating-system">Operating System</a><br />
<a href="#fixed-ip-address">Static Fixed IP Address</a><br />
<a href="#dynamic-dns-update-client-software">Dynamic DNS Update Client Software</a><br />
<a href="#port-forwarding">Port Forwarding on Home Router</a><br />
<a href="#installation-web-server">Installation of Apache Web Server</a><br />
<a href="#configuration-website">Configuration of Website</a><br />
<a href="#ssl-certificate">Free SSL Certificate for Website and Email Server</a><br />
<a href="#installation-postfix-dovecot">Installation of Email Server Software (Postfix and Dovecot)</a><br />
<a href="#configure-email">Configuration of your Email Server</a><br />
<a href="#configure-relay">Configuration of Email Relay Provider &#8211; Incoming and Outgoing</a><br />
<a href="#dns-records">DNS Records for Email</a><br />
<a href="#testing-email-setup">Testing Email Setup</a><br />
<a href="#add-user-post-box">Adding a New User Email Post Box</a><br />
<a href="#connect-android">Connecting to your Email from Android Device</a><br />
<a href="#connect-pc">Connecting to your Email from PC &#8211; Windows Mail</a><br />
<a href="#further-reading">Further Reading</a></p>
<h2 class="Top-Heading">Inventory and Cost Estimates</h2>
<p>You will need the following items in the duration of this setup.</p>
    <style>
    /* Scoped styles for this table instance */
    #data-table-69d54953cca83 thead th {
        background-color: #4CAF50 !important;
        color: #fff;
    }
    #data-table-69d54953cca83 tbody tr:nth-child(even) {
        background-color: #f2f2f2;
    }
    #data-table-69d54953cca83 tbody tr:nth-child(odd) {
        background-color: #ffffff;
    }
    #data-table-69d54953cca83 th:first-child,
    #data-table-69d54953cca83 td:first-child {
        background-color: #f9f9f9;
    }
    </style>
    <div id="table-container">
        <table id="data-table-69d54953cca83" class="data-table">
            <thead>
                                <tr>
                                                                        <th>Item</th>
                                                                                                <th>Description</th>
                                                                                                <th>Estimated Cost</th>
                                                                                                <th>Cost Period<br /></th>
                                                            </tr>
                            </thead>
            <tbody>
                                    <tr>
                                                                                    <td>Hardware</td>
                                                                                                                <td>It can be Raspberry-Pi, or any other Single Board Computer. Choose a computer that consumes less Electrical Power and makes less noise. It will remain turned On, 24 hours a day 7 days a week.</td>
                                                                                                                <td>CAD$ 50 to 250</td>
                                                                                                                <td>One time<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Internet Connection</td>
                                                                                                                <td>Internet connection from a provider like Rogers, Bell, or Others. Also known as your Internet Service Provider (ISP).</td>
                                                                                                                <td>Varying</td>
                                                                                                                <td>monthly<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Domain Name Registration</td>
                                                                                                                <td>Registration of a custom Domain Name of your choice. For example "mybusines.com", or "myfamily.ca". Email addresses will be using this domain name like, for example: "abe.lincoln@mybusiness.com", "sarah@myfamily.ca", etc. Domain Names are translated into matching IP Address when a DNS lookup is performed. So this way we do not need to remember IP Address but only remember the domain name of a site, or email address.</td>
                                                                                                                <td>CAD$ 10 to 30</td>
                                                                                                                <td>Yearly<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Dynamic DNS Resolution</td>
                                                                                                                <td>ISPs provide your home router with different IP Addresses over a period of a year. The IP Address can also change anytime. Dynamic DNS Resolution allows your domain name to always have the correct IP address, even when your ISP changes the IP Address. This is also known as DDNS. There are free DDNS services, but when using a custom DNS name DDNS service may also need to be purchased.</td>
                                                                                                                <td>CAD$ 0 to 13</td>
                                                                                                                <td>Yearly<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>DNS Records Editing Capability/Service</td>
                                                                                                                <td>Domain name registration by default creates a DNS A-Type record. But for email setup, we need several other DNS record types, in addition to the A-Type record. Your DNS/DDNS provider may charge extra for providing these additional DNS Records.</td>
                                                                                                                <td>CAD$ 0 to 13</td>
                                                                                                                <td>Yearly<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Email Store-Forward Service</td>
                                                                                                                <td>Most ISP block the relevant ports to receive email from the Internet. We will need to pay for this store-forward service from a third party vendor, which should be more economical as compared to getting this service from your ISP.</td>
                                                                                                                <td>CAD$ 13 to 22</td>
                                                                                                                <td>Yearly<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Email (SMTP) Outbound Relay Service</td>
                                                                                                                <td>Most ISP block the relevant ports to send outbound email to the Internet. We will need to pay for this SMTP Protocol relay service from a third party vendor, which should be more economical as compared to getting this service from your ISP.</td>
                                                                                                                <td>CAD$ 13 to 22</td>
                                                                                                                <td>Yearly<br /></td>
                                                                        </tr>
                            </tbody>
        </table>
    </div>
    
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="hardware" class="Top-Heading">Hardware</h2>
<p>You will need a small computer that can remain turned on 24 hours a day 7 days a week. This is because if you turn it off, your incoming email can be lost forever. Ideally it should consume very low electrical power, and should be low noise device. I would recommend on the minimum a 4 core CPU device. <a href="https://www.raspberrypi.com/products/raspberry-pi-4-model-b/" target="_blank" rel="noopener">Raspberry Pi</a> or <a href="https://beebom.com/best-raspberry-pi-4-alternatives/" target="_blank" rel="noopener">similar form device</a> may be ideal. Another possibility is using a <a href="https://www.ebay.ca/sch/i.html?_nkw=thin+client" target="_blank" rel="noopener">used thin client device</a> or one of the many <a href="https://www.aliexpress.com/item/1005004905826390.html" target="_blank" rel="noopener">Intel  J4125/N5095/J6426 based mini PC</a>. Storage (Hard Disk/SSD) can be a minimum of 256 GB. At minimum the device should have 1 ethernet port, the faster the better. It can be ARM Based CPU or Intel/AMD CPU. I would prefer a passive cooling, fan-less device, that radiates extra heat using metal fins, so it can be extra low noise. Atleaset 2 GB on board RAM is the minimum recommended amount for Debian 12. I am using 8 GB RAM in my setup. We will refer to this computer as the &#8220;target hardware&#8221; or &#8220;your email server&#8221; in the rest of this article.</p>
<p>In this article I will be installing on Intel/AMD architecture based machine.</p>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="domain-name" class="Top-Heading">Domain Name Registration</h2>
<p>There are free Domain Name services but for an email server setup you need to own your own Domain Name. You can choose a Domain Name Registrar that allows you to change the DNS servers list for your Domain Name. One such service is <a href="https://www.godaddy.com/en-ca/domains" target="_blank" rel="noopener">GoDaddy.com</a>. You may also explore the option of Registering your Domain Name directly with the Dynamic DNS Service Provider (see next section), if they offer this service. Almost all Domain Name Registration services offer Top Level Domain (TLD) Names like *.com, *.net, and *.org but you may need to find specialized Domain Registrar&#8217;s for specific TLD&#8217;s like *.uk, *.ca, *.pk, *.in, *.cn. Usually it should cost you from US$ 10 to US$20 for 1 year of registration. Sometimes there may be a promotion or discounted offer for lower first year price.</p>
<p>Usually Domain Name Registration means that an A-Type record will be created in the DNS Server database of your  domain registrar. An A-Type record is simply an &#8220;(IP) Address&#8221; record. If you do not have a website initially, it can be pointing to a parking web-server page provided by the registrar. You will be able to change this IP address since you have paid for this custom Domain Name. Please note that for this article&#8217;s purpose we need a Domain registrar, that allows us to even change the primary Name-Server (database) for this Domain Name. We would like our DNS Name Server&#8217;s database to be hosted at a Dynamic DNS Service provider (see next section).</p>
<p>For the purpose of this article we will assume that we have registered a personal Domain Name of &#8220;somewhere.com&#8221; at GoDaddy.com. The following screen shot shows the Go-Daddy.com website console for managing your domain. In particular it is showing the Name-Servers tab, after the Name servers were changed to point to Dynamic DNS Service Name-servers.</p>
<figure id="attachment_1465" aria-describedby="caption-attachment-1465" style="width: 1776px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers.png"><img decoding="async" class="wp-image-1465 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers.png" alt="Godaddy.com Name-servers Tab" width="1776" height="992" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers.png 1776w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers-600x335.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers-300x168.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers-1024x572.png 1024w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers-768x429.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers-1536x858.png 1536w" sizes="(max-width: 1776px) 100vw, 1776px" /></a><figcaption id="caption-attachment-1465" class="wp-caption-text">Godaddy.com Name-servers Tab</figcaption></figure>
<div><a href="#mycontents">Back to Contents List</a></div>
<h2></h2>
<h2 id="dynamic-dns-registration" class="Top-Heading">Dynamic DNS Service</h2>
<p>When we get Internet Connection from an Internet Service Provider (ISP), they usually give us a router/gateway device through which we connect to the Public Internet. This Router itself has a public IP address on the Internet. If at any time I know this IP address, then I can connect to my home router from outside networks. For email and web server that is hosted in my home, this is a desired capability, because then I can bind my custom Domain Name to this IP address. But usually ISP&#8217;s keep this IP address as a dynamic IP address and it frequently changes.</p>
<p>A Dynamic DNS service either assigns you a Dynamic DNS Name or lets you bring your custom DNS name and link it with a Dynamic IP Tracking Service. This service constantly monitors your home router Public IP address and updates your DNS Name Record to point to the correct IP address at all times. You can get a free Dynamic DNS name also from them for testing it out. You need to enable a part of this system on your home network. Sometimes the customer side part is either Dynamic DNS capability in your home router, or a small Application running on any computer in your local network. We will discuss more on how to install this small utility application on your target hardware in <a href="#dynamic-dns-update-client-software">a later section</a>.</p>
<p>Some examples of Dynamic DNS (DDNS) service providers are <a href="https://www.noip.com/" target="_blank" rel="noopener">No-ip.com</a> , <a href="https://account.dyn.com/" target="_blank" rel="noopener">DynDNS</a> and <a href="https://www.dynu.com/" target="_blank" rel="noopener">Dynu.com</a>.</p>
<p>In this article we will be using Dynu.com&#8217;s Dynamic DNS Service. Please register for a free service <a href="https://www.dynu.com/" target="_blank" rel="noopener">Dynu.com</a>, later on when you are comfortable and you need it, you may upgrade to a paid service.</p>
<p>Following is a screen shot from Dynu.com control panel showing the status of Dynamic DNS service. It is showing the currently assigned Public IP address to the home router and also when this entry was automatically updated. Note: Additional configuration for this service will be performed in <a href="#dynamic-dns-update-client-software">a later section</a>.</p>
<figure id="attachment_1467" aria-describedby="caption-attachment-1467" style="width: 1650px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service.png"><img decoding="async" class="wp-image-1467 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service.png" alt="DDNS Service Control panel page" width="1650" height="519" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service.png 1650w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service-600x189.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service-300x94.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service-1024x322.png 1024w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service-768x242.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service-1536x483.png 1536w" sizes="(max-width: 1650px) 100vw, 1650px" /></a><figcaption id="caption-attachment-1467" class="wp-caption-text">DDNS Service Control panel page</figcaption></figure>
<p>Following is another screen shot from Dynu.com control panel, this time showing a list of Name Servers. Values from this list are used to modify the Domain Registrar&#8217;s Name Server list (GoDaddy in this article).</p>
<figure id="attachment_1468" aria-describedby="caption-attachment-1468" style="width: 1414px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Dynu-DDNS-Name-Servers-Page.png"><img loading="lazy" decoding="async" class="wp-image-1468 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Dynu-DDNS-Name-Servers-Page.png" alt="Dynu.com Name Servers list" width="1414" height="963" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Dynu-DDNS-Name-Servers-Page.png 1414w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Dynu-DDNS-Name-Servers-Page-600x409.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Dynu-DDNS-Name-Servers-Page-300x204.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Dynu-DDNS-Name-Servers-Page-1024x697.png 1024w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Dynu-DDNS-Name-Servers-Page-768x523.png 768w" sizes="auto, (max-width: 1414px) 100vw, 1414px" /></a><figcaption id="caption-attachment-1468" class="wp-caption-text">Dynu.com Name Servers list</figcaption></figure>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="operating-system" class="Top-Heading">Operating System (OS)</h2>
<p>The operating system on the device will need to be a Linux based Operating System. Linux is an open-source and usually free Operating System. The instructions in this article have been tested on AMD-64 based <a href="https://www.debian.org/CD/netinst/" target="_blank" rel="noopener">Debian</a> 12 &#8220;Bookworm&#8221; Linux. Since Raspbian, Ubuntu, Mint, etc. are based on Debian, these should mostly work on these OSes also. Follow your <a href="https://wiki.debian.org/RaspberryPi4#Boot_and_Installing_Debian_on_the_Raspberry_PI_4" target="_blank" rel="noopener">Hardware specific instructions</a> to install Debian 12 or any other similar operating system on your device.</p>
<p>Installation of a Linux Graphical User Interface (GUI) Desktop is not necessary for this email server setup (If you are comfortable using command line only), but having a GUI Desktop like GNOME, KDE Plasma, may make it easy for you to use the computer. Installing a GUI Desktop otherwise makes some difference performance wise. But with our hardware specification the performance gain of a Non-GUI Server may be insignificant. The only other thing with GUI installation is the OS size on disk will become large. Note that almost all instructions in the tutorial will be based on Command Line Interface(CLI) and GUI may not be used at all. But having a GUI will make it fun to use afterwards, if you wish to use this server for other purposes also.</p>
<p>Following steps document the OS Installation process using the Installer at this link <a href="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.1.0-amd64-netinst.iso" target="_blank" rel="noopener">debian-12.1.0-amd64-netinst.iso</a>. You have to choose the correct *.iso file based on your target Hardware specific CPU architecture. You can download this installation software CD image file (*.iso) on your PC, MAC or Linux Desktop or Laptop. Then you need to burn this onto an Installation Media like USB Thumb Drive or External DVD, that you will use to boot the target Hardware for the first time. If using a USB Thumb Drive, then you may use <a href="https://etcher.balena.io/#download-etcher" target="_blank" rel="noopener">Balena Etcher</a> or some other similar tool to prepare the USB from the Downloaded *.iso file.</p>
<p>Let us start with the Installation steps. Connect your USB Thumb Drive (Or external DVD) to the target hardware, and boot from the installation USB Thumb Drive. For Installation using this download you will need an active (Ethernet) Internet connection to your computer. Starting the installation can be done using Graphical Install or Standard (Non-Graphical) Install. &#8220;Graphical Install&#8221; means that you want the <span style="text-decoration: underline;"><em>installation-task</em></span> done using Windows and Mouse &#8211; Decision of whether you choose to <span style="text-decoration: underline;"><em>install/deploy</em></span> the GUI Desktop software on the hard disk will be done later on.</p>
<figure id="attachment_1386" aria-describedby="caption-attachment-1386" style="width: 637px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-001.png"><img loading="lazy" decoding="async" class="wp-image-1386 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-001.png" alt="Debian 12 Install screen 001" width="637" height="478" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-001.png 637w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-001-600x450.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-001-300x225.png 300w" sizes="auto, (max-width: 637px) 100vw, 637px" /></a><figcaption id="caption-attachment-1386" class="wp-caption-text">Debian 12 Install screen 001</figcaption></figure>
<p>If we use Graphical Install option, then the next choices are &#8220;Select a language&#8221;, &#8220;Select your location&#8221;,  &#8220;Configure the Keyboard&#8221;, and then &#8220;Configure the network&#8221; screen appears. Here you can specify the &#8220;Hostname&#8221; for your email server. I recommend using &#8220;mail&#8221; as the host name.</p>
<figure id="attachment_1391" aria-describedby="caption-attachment-1391" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-002.png"><img loading="lazy" decoding="async" class="wp-image-1391 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-002.png" alt="Debian Install Screen Hostname" width="793" height="602" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-002.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-002-600x455.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-002-300x228.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-002-768x583.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1391" class="wp-caption-text">Debian Install Screen Hostname</figcaption></figure>
<p>Then in the next screen provide the &#8220;Domain name&#8221;, this should be the same Domain name that you have registered previously.</p>
<figure id="attachment_1393" aria-describedby="caption-attachment-1393" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Domain-Name.png"><img loading="lazy" decoding="async" class="wp-image-1393 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Domain-Name.png" alt="Debian Install Screen - Domain Name" width="793" height="597" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Domain-Name.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Domain-Name-600x452.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Domain-Name-300x226.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Domain-Name-768x578.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1393" class="wp-caption-text">Debian Install Screen &#8211; Domain Name</figcaption></figure>
<p>Then the next screen will be for &#8220;Set up users and passwords&#8221;. Choose a root password on this screen. Next screen will be &#8220;Set up users and passwords&#8221;. In this screen you have to create a user account for non-administrative activities. I will assume this user name to be &#8220;User One&#8221;.</p>
<figure id="attachment_1395" aria-describedby="caption-attachment-1395" style="width: 792px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-User-name.png"><img loading="lazy" decoding="async" class="wp-image-1395 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-User-name.png" alt="Debian Install Screen - User name" width="792" height="600" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-User-name.png 792w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-User-name-600x455.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-User-name-300x227.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-User-name-768x582.png 768w" sizes="auto, (max-width: 792px) 100vw, 792px" /></a><figcaption id="caption-attachment-1395" class="wp-caption-text">Debian Install Screen &#8211; User name</figcaption></figure>
<p>Then the next screen is &#8220;Username for your account:&#8221;, this is the login id for the &#8220;User One&#8221; user. I will choose &#8220;user01&#8221; as the login ID.</p>
<figure id="attachment_1398" aria-describedby="caption-attachment-1398" style="width: 792px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Login-ID.png"><img loading="lazy" decoding="async" class="wp-image-1398 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Login-ID.png" alt="Debian Install Screen - Username - Login ID" width="792" height="600" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Login-ID.png 792w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Login-ID-600x455.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Login-ID-300x227.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Login-ID-768x582.png 768w" sizes="auto, (max-width: 792px) 100vw, 792px" /></a><figcaption id="caption-attachment-1398" class="wp-caption-text">Debian Install Screen &#8211; Username &#8211; Login ID</figcaption></figure>
<p>Next screen is for &#8220;Choose a password for the new user&#8221;, fill it with appropriate password value. Next screen is for &#8220;Configure the clock&#8221; where you select the time zone. The next screen will be displayed after the Installation software detects your Hard Disk/SSD Storage Device. It is titled as &#8220;Partition disks&#8221;. Unless you have a reason to choose another option, choose the &#8220;Partition method:&#8221; to be &#8211; &#8220;Guided &#8211; use entire disk&#8221;.</p>
<figure id="attachment_1399" aria-describedby="caption-attachment-1399" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Method.png"><img loading="lazy" decoding="async" class="wp-image-1399 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Method.png" alt="Debian Install Screen - Partition Method" width="793" height="596" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Method.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Method-600x451.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Method-300x225.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Method-768x577.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1399" class="wp-caption-text">Debian Install Screen &#8211; Partition Method</figcaption></figure>
<p>On the next screen, it will show you the detected Disk Controller and Disk Name (and capacity) where the Operating System will be installed. If you have more then one hard-disk/SSD then make sure you choose the correct drive in this screen. On the next screen it will ask for the &#8220;Partitioning scheme:&#8221; to use for the selected disk. You can choose &#8220;All files in one partition (recommended for new users)&#8221; option. Next screen will be a confirmation of all the choices you made for Partitioning of disks, before the disk changes are actually written to the disk.</p>
<figure id="attachment_1401" aria-describedby="caption-attachment-1401" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Disk-Confirmation.png"><img loading="lazy" decoding="async" class="wp-image-1401 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Disk-Confirmation.png" alt="Debian Install Screen - Partition Disk Confirmation" width="793" height="597" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Disk-Confirmation.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Disk-Confirmation-600x452.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Disk-Confirmation-300x226.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Disk-Confirmation-768x578.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1401" class="wp-caption-text">Debian Install Screen &#8211; Partition Disk Confirmation</figcaption></figure>
<p>The next screen will be a reconfirmation before the disk is actually Partitioned and old data is erased. Select &#8220;Yes&#8221; to answer the question &#8220;Write the changes to disks?&#8221; and click continue. After the Partitioning of the disk, the Installer will copy the base Operating system files (Excluding the GUI Desktop) onto the hard disk. Let it install the base system.</p>
<p>After the base system is installed, Installer will show you a screen for &#8220;Configure the package manager&#8221; and ask you if you have other downloaded media/CD/DVD for Debian &#8211; &#8220;Scan extra installation media?&#8221;. You can choose no here. Package Manager in Linux is a software utility application that lets you search for and install other software in Linux, once the base OS is installed, but it needs to be configured once. The Default package manager in Debian is called &#8220;apt&#8221;.</p>
<figure id="attachment_1404" aria-describedby="caption-attachment-1404" style="width: 795px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Scan-Extra-Install-Media.png"><img loading="lazy" decoding="async" class="wp-image-1404 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Scan-Extra-Install-Media.png" alt="Debian Install Screen - Scan Extra Install Media" width="795" height="596" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Scan-Extra-Install-Media.png 795w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Scan-Extra-Install-Media-600x450.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Scan-Extra-Install-Media-300x225.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Scan-Extra-Install-Media-768x576.png 768w" sizes="auto, (max-width: 795px) 100vw, 795px" /></a><figcaption id="caption-attachment-1404" class="wp-caption-text">Debian Install Screen &#8211; Scan Extra Install Media</figcaption></figure>
<p>On the next screen of &#8220;Configure the package manager&#8221; it will ask you to choose &#8220;Debian archive mirror country:&#8221;. Here you should choose a country name close to your location. Then on the next screen it will ask you to choose &#8220;Debian archive mirror:&#8221;. The choice actually makes little difference. I will choose University of Waterloo &#8211; CS Club Mirror, since it is pretty close to my location.</p>
<figure id="attachment_1405" aria-describedby="caption-attachment-1405" style="width: 794px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Mirror-Archive-2.png"><img loading="lazy" decoding="async" class="wp-image-1405 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Mirror-Archive-2.png" alt="Debian Install Screen - Mirror Archive 2" width="794" height="597" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Mirror-Archive-2.png 794w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Mirror-Archive-2-600x451.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Mirror-Archive-2-300x226.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Mirror-Archive-2-768x577.png 768w" sizes="auto, (max-width: 794px) 100vw, 794px" /></a><figcaption id="caption-attachment-1405" class="wp-caption-text">Debian Install Screen &#8211; Mirror Archive 2</figcaption></figure>
<p>In the next screen, it will ask for &#8220;HTTP proxy information (blank for none):&#8221;. Usually it should be left empty and click continue.</p>
<p>The next screen of the Installer asks you if you wish to &#8220;Participate in the package usage survey&#8221;. A Package in Debian is a software that can be downloaded and installed using Package Manager. You can choose Yes or No. I will choose &#8220;No&#8221; for now. The next screen is for selecting the Software to be added to your base OS installation. This screen is titled &#8220;Software Selection&#8221;. Here you can choose if you want to install the any GUI Desktop systems like:</p>
<ul>
<li>GNOME,</li>
<li>Xfce,</li>
<li>GNOME Flashback,</li>
<li>KDE Plasma,</li>
<li>Cinnamon,</li>
<li>MATE,</li>
<li>LXDE and,</li>
<li>LXQt.</li>
</ul>
<p>The Default selected option is GNOME but I feel more comfortable with Microsoft Windows Styled &#8211; KDE Plasma or Cinnamon. You may also choose a light weight LXDE or LXQt, which will give you a GUI and not consume too much hard disk space. If you are comfortable with Command Line only OS, then you may uncheck &#8220;Debian desktop environment&#8221; and uncheck all Desktop software from this list &#8211; GNOME, Xfce, GNOME Flashback, KDE Plasma, Cinnamon, MATE, LXDE and LXQt. I will like to install KDE Plasma for this tutorial. One additional software I choose from this list is &#8220;SSH Server&#8221;. I will be installing a Web Server also but not in this screen. My final choices look like below screen.</p>
<figure id="attachment_1408" aria-describedby="caption-attachment-1408" style="width: 791px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Software-Selection-Choices.png"><img loading="lazy" decoding="async" class="wp-image-1408 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Software-Selection-Choices.png" alt="Debian Install Screen - Software Selection Choices" width="791" height="595" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Software-Selection-Choices.png 791w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Software-Selection-Choices-600x451.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Software-Selection-Choices-300x226.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Software-Selection-Choices-768x578.png 768w" sizes="auto, (max-width: 791px) 100vw, 791px" /></a><figcaption id="caption-attachment-1408" class="wp-caption-text">Debian Install Screen &#8211; Software Selection Choices</figcaption></figure>
<p>The Installer will then Download the selected software and install it. It may take several minutes, depending on your network speed. Once done, the next screen will be titled &#8220;Install the GRUB boot loader&#8221;. It is recommended to install this piece of software, otherwise your computer may fail to boot.</p>
<figure id="attachment_1416" aria-describedby="caption-attachment-1416" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Install-GRUB-Boot-Loader.png"><img loading="lazy" decoding="async" class="wp-image-1416 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Install-GRUB-Boot-Loader.png" alt="Debian Install Screen - Install GRUB Boot Loader" width="793" height="598" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Install-GRUB-Boot-Loader.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Install-GRUB-Boot-Loader-600x452.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Install-GRUB-Boot-Loader-300x226.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Install-GRUB-Boot-Loader-768x579.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1416" class="wp-caption-text">Debian Install Screen &#8211; Install GRUB Boot Loader</figcaption></figure>
<p>On the next screen choose &#8220;Device for boot loader installation&#8221;. Click on your primary hard disk.</p>
<figure id="attachment_1418" aria-describedby="caption-attachment-1418" style="width: 791px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-GRUB-Boot-Disk.png"><img loading="lazy" decoding="async" class="wp-image-1418 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-GRUB-Boot-Disk.png" alt="Debian Install Screen - GRUB Boot Disk" width="791" height="596" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-GRUB-Boot-Disk.png 791w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-GRUB-Boot-Disk-600x452.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-GRUB-Boot-Disk-300x226.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-GRUB-Boot-Disk-768x579.png 768w" sizes="auto, (max-width: 791px) 100vw, 791px" /></a><figcaption id="caption-attachment-1418" class="wp-caption-text">Debian Install Screen &#8211; GRUB Boot Disk</figcaption></figure>
<p>That is it. You OS has been installed. The last screen advises you to remove the installation media (USB  Thumb Drive or DVD) and then reboot the computer.</p>
<figure id="attachment_1420" aria-describedby="caption-attachment-1420" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-Last-Reboot-Screen.png"><img loading="lazy" decoding="async" class="wp-image-1420 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-Last-Reboot-Screen.png" alt="Debian Install Screen - Last Reboot Screen" width="793" height="595" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-Last-Reboot-Screen.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-Last-Reboot-Screen-600x450.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-Last-Reboot-Screen-300x225.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-Last-Reboot-Screen-768x576.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1420" class="wp-caption-text">Debian Install Screen &#8211; Last Reboot Screen</figcaption></figure>
<p>After reboot, if you let it boot automatically you should see a screen similar to the following after all boot steps are completed.</p>
<figure id="attachment_1422" aria-describedby="caption-attachment-1422" style="width: 796px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian-Install-Screen-Completed-First-Login-Screen.png"><img loading="lazy" decoding="async" class="wp-image-1422 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian-Install-Screen-Completed-First-Login-Screen.png" alt="Debian Install Screen - Completed - First Login Screen" width="796" height="598" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian-Install-Screen-Completed-First-Login-Screen.png 796w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian-Install-Screen-Completed-First-Login-Screen-600x451.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian-Install-Screen-Completed-First-Login-Screen-300x225.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian-Install-Screen-Completed-First-Login-Screen-768x577.png 768w" sizes="auto, (max-width: 796px) 100vw, 796px" /></a><figcaption id="caption-attachment-1422" class="wp-caption-text">Debian Install Screen &#8211; Completed &#8211; First Login Screen</figcaption></figure>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="fixed-ip-address" class="Top-Heading">Static Fixed IP Address</h2>
<p>Login to the target hardware. For this first session and the commands given in this section, make sure that you are actually logged in to the target computer via keyboard and Display Monitor and not via SSH connection.</p>
<h4>Add user01 to sudo Group (CLI and GUI &#8211; KDE Plasma Installation)</h4>
<p>First we will add the default user account &#8220;user01&#8221; into &#8220;sudo&#8221; group, so that we can run Root privileged commands easily.  Start a Terminal session.</p>
<figure id="attachment_1447" aria-describedby="caption-attachment-1447" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Start-Terminal-Session.png"><img loading="lazy" decoding="async" class="wp-image-1447 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Start-Terminal-Session.png" alt="Start Terminal Session" width="793" height="597" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Start-Terminal-Session.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Start-Terminal-Session-600x452.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Start-Terminal-Session-300x226.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Start-Terminal-Session-768x578.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1447" class="wp-caption-text">Start Terminal Session</figcaption></figure>
<p>In the Terminal session command line, first add the user to SUDO group by typing the following commands:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">$ su -
Password: (enter here the password of the root user that you specified during your Debian installation, and press Enter)

# apt install sudo

# adduser user01 sudo

# exit

$ exit</pre>
<figure id="attachment_1448" aria-describedby="caption-attachment-1448" style="width: 800px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-add-user01-to-sudo-group.png"><img loading="lazy" decoding="async" class="wp-image-1448 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-add-user01-to-sudo-group.png" alt="Terminal session - add user01 to sudo group" width="800" height="595" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-add-user01-to-sudo-group.png 800w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-add-user01-to-sudo-group-600x446.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-add-user01-to-sudo-group-300x223.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-add-user01-to-sudo-group-768x571.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a><figcaption id="caption-attachment-1448" class="wp-caption-text">Terminal session &#8211; add user01 to sudo group</figcaption></figure>
<p>You have to exit (end the Terminal session) and log-out of the Server once, for changes to take effect. Login again and start a new Terminal session again, this time user01 will be member of sudo group. We will also add a NO-PASSWORD directive in the &#8220;/etc/sudoers&#8221; file so that we are not prompted for password every time we use the &#8220;sudo&#8221; prefix. Type the following command in the new Terminal session.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">$ sudo nano /etc/sudoers
[sudo] password for user01: (Enter the password for user01 you entered during installation and login)</pre>
<p>Nano text editor will open, scroll down to near the bottom of the file and update the 2 lines as shown in the below screen shot. What we have done is comment out one line and added another one in its place.</p>
<figure id="attachment_1449" aria-describedby="caption-attachment-1449" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-2-Edit-sudoers-file.png"><img loading="lazy" decoding="async" class="wp-image-1449 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-2-Edit-sudoers-file.png" alt="Terminal session 2 - Edit /etc/sudoers file" width="793" height="594" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-2-Edit-sudoers-file.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-2-Edit-sudoers-file-600x449.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-2-Edit-sudoers-file-300x225.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-2-Edit-sudoers-file-768x575.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1449" class="wp-caption-text">Terminal session 2 &#8211; Edit /etc/sudoers file</figcaption></figure>
<p>Press CTRL+O to write the changes to disk, then press CTRL+X to exit Nano editor. You now need to log off one more time. Then log in again for SUDO changes to take effect.</p>
<h4>Assign Fixed Static IP (GUI &#8211; KDE Plasma Installation)</h4>
<p>Before assigning a fixed IP to the target computer make sure your Internet Router DHCP settings (DHCP is the system that assigns automatic IP addresses to devices on your local network), are set to issue IP Addresses in a range that allows fixed IP address outside that range. For example: DHCP range can be from 192.168.0.40 to 192.168.0.250, this leaves the range 192.168.0.2 to 192.168.0.39 for fixed IP addresses.</p>
<p>Open a terminal session. In a GUI Desktop (KDE plasma) based installation of Debian 12, Network connections are managed by Network Manager, which has a nice GUI Interface for changing IP addresses. But we can also set a static IP using Network Manager CLI &#8220;nmcli&#8221; utility. Over here I will document how use &#8220;nmcli&#8221; to set static IP address. Type the following commands to list the Network Connections:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">$ nmcli connection show</pre>
<p>You will see output showing you the connections. Important thing to note here is the NAME of the ethernet connection.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">user01@mail:~$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  f01afddc-9c89-40c4-b95e-6ad9d8888e02  ethernet  enp0s3
lo                  4ba750cf-38e5-4a1e-b45d-fd423458125a  loopback  lo
user01@mail:~$</pre>
<p>You can also check the current status of the connection with the following:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">$ nmcli dev status
$ nmcli con mod 'Wired connection 1' ipv4.address 192.168.0.6/24
$ nmcli con mod 'Wired connection 1' ipv4.gateway 192.168.0.1
$ nmcli con mod 'Wired connection 1' ipv4.dns "8.8.8.8"
$ nmcli con mod 'Wired connection 1' ipv4.method manual
$ nmcli con up 'Wired connection 1'
$ ip addr</pre>
<p>A complete session showing the all the commands you need to set static IP Address is given below. Your input commands are highlighted:</p>
<div>
<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="eclipse" data-enlighter-highlight="1,5,18,19-22,24" data-enlighter-lineoffset="1">user01@mail:~$ nmcli dev status
DEVICE  TYPE      STATE                   CONNECTION
enp0s3  ethernet  connected               Wired connection 1
lo      loopback  connected (externally)  lo

user01@mail:~$ ip addr
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:be:f6:58 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.192/24 brd 192.168.0.255 scope global dynamic noprefixroute enp0s3
       valid_lft 3121sec preferred_lft 3121sec
    inet6 fe80::a00:27ff:febe:f658/64 scope link noprefixroute
       valid_lft forever preferred_lft forever


user01@mail:~$ nmcli con mod 'Wired connection 1' ipv4.address 192.168.0.6/24
user01@mail:~$ nmcli con mod 'Wired connection 1' ipv4.gateway 192.168.0.1
user01@mail:~$ nmcli con mod 'Wired connection 1' ipv4.dns "8.8.8.8"
user01@mail:~$ nmcli con mod 'Wired connection 1' ipv4.method manual


user01@mail:~$ nmcli con up 'Wired connection 1'
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)


user01@mail:~$ ip addr
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:be:f6:58 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.6/24 brd 192.168.0.255 scope global noprefixroute enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:febe:f658/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
user01@mail:~$
</pre>
<h4>Assign Fixed Static IP (CLI Installation)</h4>
<p>On Command Line Installation of Debian 12 there is no Network Manager application, but the ordinary Networking Service only. So the commands in the CLI setup will be as follows:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ ip address
$ ip -c link show
$ sudo ls -l /etc/network/interfaces
$ sudo cat /etc/network/interfaces
$ sudo nano /etc/network/interfaces
{ Comment out the line.....#iface enp0s3 inet dhcp
And add the following lines.......
iface enp0s3 inet static
address 192.168.0.7    (Or choose what ever static IP address you want in your LAN)
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.8.8
}
$ sudo systemctl restart networking
$ ip address
</pre>
<p>&nbsp;</p>
<p>When typed on an interactive session, the session can look like follows:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">user01@mail:~$ ip address
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:93:7b:1f brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.193/24 brd 192.168.0.255 scope global dynamic enp0s3
       valid_lft 3263sec preferred_lft 3263sec
    inet6 fe80::a00:27ff:fe93:7b1f/64 scope link
       valid_lft forever preferred_lft forever

user01@mail:~$ ip -c link show
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:93:7b:1f brd ff:ff:ff:ff:ff:ff
user01@mail:~$ ip -c address show enp0s3
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:93:7b:1f brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.193/24 brd 192.168.0.255 scope global dynamic enp0s3
       valid_lft 3130sec preferred_lft 3130sec
    inet6 fe80::a00:27ff:fe93:7b1f/64 scope link
       valid_lft forever preferred_lft forever

user01@mail:~$ sudo ls -l /etc/network/interfaces
-rw-r--r-- 1 root root 317 Aug 13 20:53 /etc/network/interfaces

user01@mail:~$ sudo cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet dhcp


user01@mail:~$ sudo nano /etc/network/interfaces
user01@mail:~$ sudo cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
#iface enp0s3 inet dhcp
iface enp0s3 inet static
address 192.168.0.7
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.8.8

user01@mail:~$ sudo systemctl restart networking


user01@mail:~$ ip address
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:93:7b:1f brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.7/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe93:7b1f/64 scope link
       valid_lft forever preferred_lft forever

user01@mail:~$</pre>
<p>&nbsp;</p>
<h4>Disable IPv6 (GUI &#8211; KDE Plasma Installation)</h4>
</div>
<div>We will also disable IPv6, so that it does not interfere in Port Forwarding later on. The following commands will be used to disable IPv6:</div>
<div>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">$ nmcli connection show
$ ip address show enp0s3
$ nmcli connection modify 'Wired connection 1' ipv6.method "disabled"
$ nmcli connection up 'Wired connection 1'
$ ip address show enp0s3
</pre>
<p>When type in the terminal session the output looks like that shown below:</p>
<figure id="attachment_1456" aria-describedby="caption-attachment-1456" style="width: 930px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-Session-Disable-IPv6-Output.png"><img loading="lazy" decoding="async" class="wp-image-1456 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-Session-Disable-IPv6-Output.png" alt="Terminal Session - Disable IPv6 Output" width="930" height="491" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-Session-Disable-IPv6-Output.png 930w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-Session-Disable-IPv6-Output-600x317.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-Session-Disable-IPv6-Output-300x158.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-Session-Disable-IPv6-Output-768x405.png 768w" sizes="auto, (max-width: 930px) 100vw, 930px" /></a><figcaption id="caption-attachment-1456" class="wp-caption-text">Terminal Session &#8211; Disable IPv6 Output</figcaption></figure>
<h4>Set DNS Servers in /etc/resolv.conf</h4>
<p>Depending on your setup you may need to edit /etc/resolve.conf file to look like the following:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">user01@mail:~$ sudo cat /etc/resolv.conf
nameserver 192.168.0.1
nameserver 8.8.8.8

user01@mail:~$</pre>
<p>&nbsp;</p>
<h4>Disable IPv6 (CLI Installation)</h4>
<p>On Command Line Installation of Debian 12 there is no Network Manager, so the method of disabling IPv6 is also different than GUI version. Use the following commands to disable IPv6 on the CLI installation of Debian 12:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ ip address
$ sudo ls -l /etc/sysctl.conf
$ sudo cat /etc/sysctl.conf

$ sudo nano /etc/sysctl.conf
{ Add the following lines at the bottom of the file .........
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.tun0.disable_ipv6 = 1
}

$ sudo cat /etc/sysctl.conf
$ sudo reboot -h now
.....
$ ip address
</pre>
<p>&nbsp;</p>
<p>On an interactive session these commands can look like follows:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">user01@mail:~$ ip address
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:93:7b:1f brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.7/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe93:7b1f/64 scope link
       valid_lft forever preferred_lft forever

user01@mail:~$ sudo ls -l /etc/sysctl.conf
-rw-r--r-- 1 root root 2355 Dec 19  2022 /etc/sysctl.conf

user01@mail:~$ sudo cat /etc/sysctl.conf
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
# See sysctl.conf (5) for information.
#

#kernel.domainname = example.com

# Uncomment the following to stop low-level messages on console
#kernel.printk = 3 4 1 3

###################################################################
# Functions previously found in netbase
#

# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note: This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1


###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Do not accept ICMP redirects (prevent MITM attacks)
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#

###################################################################
# Magic system request Key
# 0=disable, 1=enable all, &gt;1 bitmask of sysrq functions
# See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html
# for what other values do
#kernel.sysrq=438




user01@mail:~$ sudo nano /etc/sysctl.conf
user01@mail:~$ sudo cat /etc/sysctl.conf
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
# See sysctl.conf (5) for information.
#

#kernel.domainname = example.com

# Uncomment the following to stop low-level messages on console
#kernel.printk = 3 4 1 3

###################################################################
# Functions previously found in netbase
#

# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note: This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1


###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Do not accept ICMP redirects (prevent MITM attacks)
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#

###################################################################
# Magic system request Key
# 0=disable, 1=enable all, &gt;1 bitmask of sysrq functions
# See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html
# for what other values do
#kernel.sysrq=438

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.tun0.disable_ipv6 = 1


user01@mail:~$ sudo reboot -h now

.....


user01@mail:~$ ip address
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:93:7b:1f brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.7/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever


user01@mail:~$ ip -c address show enp0s3
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:93:7b:1f brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.7/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
user01@mail:~$</pre>
<p>&nbsp;</p>
</div>
<div></div>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="dynamic-dns-update-client-software" class="Top-Heading">Dynamic DNS Update Client Software</h2>
<p>Dynamic DNS Provider service works best with either a Router based DDNS Update client or a target Computer installed DDNS client. In this article we will be installing Dynu.com&#8217;s DDNS Client on our target computer.</p>
<p>To install the DDNS Update Client Software for Dynu.com we will use the following commands:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo apt-get install -y ddclient
(Complete interactive configuration with default choices)

$ sudo systemctl status ddclient
$ sudo ls -l /etc/ddclient.conf
$ sudo cat /etc/ddclient.conf
(Examine the contents of Default configuration)



$ sudo cp /etc/ddclient.conf /etc/ddclient.conf_original
$ sudo nano /etc/ddclient.conf
(Modify the default configuration, as per your particulars)
$ sudo cat /etc/ddclient.conf
(Examine the modified configuration)



$ sudo systemctl stop ddclient
$ sudo systemctl start ddclient
$ sudo systemctl status ddclient
$ sudo journalctl -u ddclient -f
(Press CTRL+C to stop following journalctl logs)

(Each of the above sections is further described in detail below).</pre>
<p>Interactive Configuration with default choices can look like following screen shots (Screen shots from GUI &#8211; KDE Plasma Desktop, CLI screens shots will be quite similar):</p>
<p>1.</p>
<figure id="attachment_1471" aria-describedby="caption-attachment-1471" style="width: 915px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-service-provider.png"><img loading="lazy" decoding="async" class="wp-image-1471 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-service-provider.png" alt="Install ddclient 01 select service provider" width="915" height="486" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-service-provider.png 915w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-service-provider-600x319.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-service-provider-300x159.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-service-provider-768x408.png 768w" sizes="auto, (max-width: 915px) 100vw, 915px" /></a><figcaption id="caption-attachment-1471" class="wp-caption-text">Install ddclient 01 select service provider</figcaption></figure>
<p>2.</p>
<figure id="attachment_1472" aria-describedby="caption-attachment-1472" style="width: 921px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-protocol.png"><img loading="lazy" decoding="async" class="size-full wp-image-1472" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-protocol.png" alt="Install ddclient 02 select protocol" width="921" height="491" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-protocol.png 921w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-protocol-600x320.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-protocol-300x160.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-protocol-768x409.png 768w" sizes="auto, (max-width: 921px) 100vw, 921px" /></a><figcaption id="caption-attachment-1472" class="wp-caption-text">Install ddclient 02 select protocol</figcaption></figure>
<p>3.</p>
<figure id="attachment_1473" aria-describedby="caption-attachment-1473" style="width: 920px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-ddns-server.png"><img loading="lazy" decoding="async" class="size-full wp-image-1473" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-ddns-server.png" alt="Install ddclient 03 select ddns server" width="920" height="487" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-ddns-server.png 920w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-ddns-server-600x318.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-ddns-server-300x159.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-ddns-server-768x407.png 768w" sizes="auto, (max-width: 920px) 100vw, 920px" /></a><figcaption id="caption-attachment-1473" class="wp-caption-text">Install ddclient 03 select ddns server</figcaption></figure>
<p>4.</p>
<figure id="attachment_1474" aria-describedby="caption-attachment-1474" style="width: 921px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-username.png"><img loading="lazy" decoding="async" class="size-full wp-image-1474" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-username.png" alt="Install ddclient 04 provide username" width="921" height="489" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-username.png 921w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-username-600x319.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-username-300x159.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-username-768x408.png 768w" sizes="auto, (max-width: 921px) 100vw, 921px" /></a><figcaption id="caption-attachment-1474" class="wp-caption-text">Install ddclient 04 provide username</figcaption></figure>
<p>5.</p>
<figure id="attachment_1475" aria-describedby="caption-attachment-1475" style="width: 918px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-password.png"><img loading="lazy" decoding="async" class="size-full wp-image-1475" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-password.png" alt="Install ddclient 05 provide password" width="918" height="487" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-password.png 918w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-password-600x318.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-password-300x159.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-password-768x407.png 768w" sizes="auto, (max-width: 918px) 100vw, 918px" /></a><figcaption id="caption-attachment-1475" class="wp-caption-text">Install ddclient 05 provide password</figcaption></figure>
<p>6.</p>
<figure id="attachment_1476" aria-describedby="caption-attachment-1476" style="width: 918px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method.png"><img loading="lazy" decoding="async" class="size-full wp-image-1476" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method.png" alt="Install ddclient 06 read about Methods" width="918" height="487" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method.png 918w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-600x318.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-300x159.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-768x407.png 768w" sizes="auto, (max-width: 918px) 100vw, 918px" /></a><figcaption id="caption-attachment-1476" class="wp-caption-text">Install ddclient 06 read about Methods</figcaption></figure>
<p>7.</p>
<figure id="attachment_1477" aria-describedby="caption-attachment-1477" style="width: 920px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-choices.png"><img loading="lazy" decoding="async" class="size-full wp-image-1477" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-choices.png" alt="Install ddclient 07 select Method" width="920" height="490" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-choices.png 920w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-choices-600x320.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-choices-300x160.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-choices-768x409.png 768w" sizes="auto, (max-width: 920px) 100vw, 920px" /></a><figcaption id="caption-attachment-1477" class="wp-caption-text">Install ddclient 07 select Method</figcaption></figure>
<p>8.</p>
<figure id="attachment_1478" aria-describedby="caption-attachment-1478" style="width: 922px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-hostnames.png"><img loading="lazy" decoding="async" class="size-full wp-image-1478" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-hostnames.png" alt="Install ddclient 08 provide registered Domain Name" width="922" height="488" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-hostnames.png 922w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-hostnames-600x318.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-hostnames-300x159.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-hostnames-768x406.png 768w" sizes="auto, (max-width: 922px) 100vw, 922px" /></a><figcaption id="caption-attachment-1478" class="wp-caption-text">Install ddclient 08 provide registered Domain Name</figcaption></figure>
<p>After Default configuration with default values &#8220;/etc/ddclient.conf&#8221; file can look like following:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo cat /etc/ddclient.conf

# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf

protocol=dyndns2 \
use=web, web=ipify-ipv4 \
login= \
password='' \
somewhere.com
</pre>
<p>Then when we edit the file with &#8216;nano&#8217; editor to introduce dynu.com&#8217;s user account details, it can look like following:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo cat /etc/ddclient.conf

# /etc/ddclient.conf
daemon=900                                      # Check every 900 seconds (15 minutes).
syslog=yes                                      # Log update msgs to syslog.
mail=root                                       # Mail all msgs to root.
mail-failure=root                               # Mail failed update msgs to root.
pid=/var/run/ddclient.pid                       # Record PID in file.
ssl=yes                                         # Use ssl-support.  Works with ssl-library .
#use=if, if=eth0                                 # Get ip from hardware interface.
use=web, web=checkip.dynu.com/, web=ipify-ipv4
server=api.dynu.com                             # IP update server.
protocol=dyndns2
login=YOUR-REGISTERED-USERNAME_AT-DYNU.COM
password='YOUR-PASSWORD'
somewhere.com
mail.somewhere.com
</pre>
<p>&#8220;ddclient&#8221; default settings are stored at /etc/default/ddclient. You can edit it with the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo nano /etc/default/ddclient
</pre>
<p>The &#8220;daemon_interval&#8221; value has been modified to &#8220;15m&#8221; for 15 minutes. After edit this file contents look like following:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic"># Configuration for ddclient scripts
# generated from debconf on Tue 01 Aug 2023 02:27:09 PM EDT
#
# /etc/default/ddclient

# Set to "true" if ddclient should be run every time DHCP client ('dhclient'
# from package isc-dhcp-client) updates the systems IP address.
run_dhclient="false"

# Set to "true" if ddclient should be run every time a new ppp connection is
# established. This might be useful, if you are using dial-on-demand.
run_ipup="false"

# Set the time interval between the updates of the dynamic DNS name in seconds.
# This option only takes effect if the ddclient runs in daemon mode.
daemon_interval="15m"
</pre>
<p>Then you can restart the DDNS Client software as follows:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo systemctl stop ddclient
$ sudo systemctl start ddclient</pre>
<p>To examine &#8220;ddclient&#8217; logs use the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo journalctl -u ddclient -f

(Press CTRL+C to stop following the logs)</pre>
<p>&nbsp;</p>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="port-forwarding" class="Top-Heading">Port Forwarding on Home Router</h2>
<p>This setting will be done in a slightly different way for each Internet Service Provider (ISP) because they all use different routers/gateway devices. But the important thing is that the following ports be opened. Note that these ports will be enabled in later sections, when we install Apache, enable SSL, and when we install Postfix and Dovecot.</p>
<p>    <style>
    /* Scoped styles for this table instance */
    #data-table-69d54953cda61 thead th {
        background-color: #4CAF50 !important;
        color: #fff;
    }
    #data-table-69d54953cda61 tbody tr:nth-child(even) {
        background-color: #f2f2f2;
    }
    #data-table-69d54953cda61 tbody tr:nth-child(odd) {
        background-color: #ffffff;
    }
    #data-table-69d54953cda61 th:first-child,
    #data-table-69d54953cda61 td:first-child {
        background-color: #f9f9f9;
    }
    </style>
    <div id="table-container">
        <table id="data-table-69d54953cda61" class="data-table">
            <thead>
                                <tr>
                                                                        <th>Name</th>
                                                                                                <th>Status</th>
                                                                                                <th>Protocols</th>
                                                                                                <th>Internal port</th>
                                                                                                <th>External port</th>
                                                                                                <th>Local IP address / Device name</th>
                                                                                                <th>Description<br /></th>
                                                            </tr>
                            </thead>
            <tbody>
                                    <tr>
                                                                                    <td> </td>
                                                                                                                <td> </td>
                                                                                                                <td> </td>
                                                                                                                <td> </td>
                                                                                                                <td> </td>
                                                                                                                <td> </td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>HTTP</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>80</td>
                                                                                                                <td>80</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>HTTPS</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>443</td>
                                                                                                                <td>443</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Postfix-SMTP</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>25</td>
                                                                                                                <td>25</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Postfix-SMTPS</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>465</td>
                                                                                                                <td>465</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Postfix-MSA</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>587</td>
                                                                                                                <td>587</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td>Mail Submission Agent<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Postfix-SMTP</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>2525</td>
                                                                                                                <td>2525</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>IMAP-login</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>143</td>
                                                                                                                <td>143</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>dovecot-POP3</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>110</td>
                                                                                                                <td>110</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>IMAP-login</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>993</td>
                                                                                                                <td>993</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>dovecot-POP3</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>995</td>
                                                                                                                <td>995</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)<br /></td>
                                                                                                                <td></td>
                                                                        </tr>
                            </tbody>
        </table>
    </div>
    <br />
&nbsp;</p>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="installation-web-server" class="Top-Heading">Installation of Apache Web Server</h2>
<p>You may be wondering, why we are installing Web Server when we actually only need an email-server. The primary reason is that email-server uses SSL certificates to assert its identity to other servers on the internet (including your e-mail relay, and other public email servers like yahoo.com, gmail.com, outlook.com etc.). We will be using &#8220;Let&#8217;s Encrypt&#8221; SSL Certificates, that are free and are renewed automatically. &#8220;Let&#8217;s Encrypt&#8221; renewal software robot (bot) needs a web server. Another benefit of having the Web server is that we can install a Web Application like WordPress, or Joomla. However, please note that in this article we will just use a simple HTML page as a placeholder and only content of the website.</p>
<p>Installation of Apache Web Server in Debian is really very simple. After completing this section you will have the default Apache page visible on port 80 of your Target Server. Since you have already setup port forwarding (in a previous section), the web page should also be visible from outside your home.</p>
<p>To install the Apache web server simply type the following command.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">$ sudo apt install apache2</pre>
<p>Once the Apache2 Web server is installed make sure that it is set to auto start on reboot, and start it.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">$ sudo systemctl enable apache2
$ sudo systemctl restart apache2</pre>
<p>Check that the default Apache page is visible on the following Hyper-links.</p>
<p>    <style>
    /* Scoped styles for this table instance */
    #data-table-69d54953ce8c3 thead th {
        background-color: #d3bb33ff !important;
        color: #fff;
    }
    #data-table-69d54953ce8c3 tbody tr:nth-child(even) {
        background-color: #f2f2f2;
    }
    #data-table-69d54953ce8c3 tbody tr:nth-child(odd) {
        background-color: #ffffff;
    }
    #data-table-69d54953ce8c3 th:first-child,
    #data-table-69d54953ce8c3 td:first-child {
        background-color: #f9f9f9;
    }
    </style>
    <div id="table-container">
        <table id="data-table-69d54953ce8c3" class="data-table">
            <thead>
                                <tr>
                                                                        <th>Test URL</th>
                                                                                                <th>Description<br /></th>
                                                            </tr>
                            </thead>
            <tbody>
                                    <tr>
                                                                                    <td>http://192.168.0.6     Or <br /> http://–IP Address of Target Server–</td>
                                                                                                                <td>Test URL on your local area network.<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>http://somewhere.com   Or <br /> http://–Your Domain Name–</td>
                                                                                                                <td>Test URL from outside your Local area network. (Use your cell phone, with Wifi turned off, and data enabled).<br /></td>
                                                                        </tr>
                            </tbody>
        </table>
    </div>
    <br />
&nbsp;</p>
<div>We will be doing important Apache configuration in the next section. The default apache2 page looks like the following screen shot.</div>
<div>
<figure id="attachment_1550" aria-describedby="caption-attachment-1550" style="width: 640px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Apache2-Default-Page.png"><img loading="lazy" decoding="async" class="wp-image-1550 size-large" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Apache2-Default-Page-1024x874.png" alt="Apache2 default page in Firefox browser." width="640" height="546" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Apache2-Default-Page-1024x874.png 1024w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Apache2-Default-Page-600x512.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Apache2-Default-Page-300x256.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Apache2-Default-Page-768x655.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Apache2-Default-Page.png 1049w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a><figcaption id="caption-attachment-1550" class="wp-caption-text">Apache2 default page in Firefox browser.</figcaption></figure>
</div>
<div>Next step (next 2 sections) will be to create a simple placeholder web page as the only content of this web site. Plus we will also configure SSL, first with self-signed SSL certificates, then use &#8220;Let&#8217;s Encrypt&#8221; Software Bot to install and use actual Certificate Authority SSL Certificates.</div>
<p>&nbsp;</p>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="configuration-website" class="Top-Heading">Configuration of Website</h2>
<p>We will configure the Apache2 web server to serve a plain and simple placeholder page in this post. If required, it can be used to hold a professional looking website like WordPress or Joomla, but we will not be doing that over here.</p>
<p>We already have a simple Default page showing after the installation of Apache2 in the previous section. We will disable that and add our own simple page, in the following steps.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ cd /var/www/html
$ sudo mv index.html index.html.bak
$ sudo nano index.html
</pre>
<p>Then in the &#8220;nano&#8221; editor type or paste the following HTML code.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="html">&lt;html&gt;
&lt;head&gt;&lt;title&gt;My Site Home Page&lt;/title&gt;&lt;/head&gt;
&lt;body&gt;
&lt;h2&gt;My Site Home Page&lt;/h2&gt;
&lt;p&gt;Your content goes here...&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Press CTRL+O to save, and CTRL+X to exit nano editor. Then on the bash command prompt type the following to set correct permissions for the /var/www/html folder:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic"> $ cd /var/www
$ sudo chown -R root:www-data ./html
</pre>
<p>Now we will change the Apache2 server configuration to disable the default site, and show the new page/site we have saved above. Please type in the following commands.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ cd /etc/apache2/sites-available
$ sudo nano somewhere.com.conf
</pre>
<p>Then in the &#8220;nano&#8221; text editor type/copy-paste the following content:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="enlighter">&lt;VirtualHost somewhere.com:80&gt;
    Protocols http/1.1
    ServerAdmin webmaster@localhost
    ServerName somewhere.com
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/somewhere-com_error.log
    CustomLog ${APACHE_LOG_DIR}/somewhere-com_access.log combined
&lt;/VirtualHost&gt;
</pre>
<p>Press CTRL+O to save the file, then press CTRL+X to exit nano. Then at the Bash command prompt type the following commands:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo bash -c 'echo "192.168.0.6 somewhere.com" &gt;&gt; /etc/hosts'
$ sudo a2ensite somewhere.com.conf
$ sudo systemctl restart apache2
$ sudo a2dissite 000-default.conf
$ sudo systemctl restart apache2
$ sudo mv 000-default.conf 000-default.conf_disable
</pre>
<p>&nbsp;</p>
<p>In the code box above use your domain name instead of &#8220;somewhere.com&#8221;. Also use your local network IP address of the target server in line number 1. Line 1 is adding an entry for your domain name in &#8220;/etc/hosts&#8221; file. Use your local LAN IP Address of the Target Server on line1, do not use localhost or 127.0.0.1. Line 2 and 3 enables this new site configuration. Line 4 and 5 disable the default site configuration, then line 6 renames the default configuration also, so that it can not be used by mistake.</p>
<p>Your page should look like the following screen shot.</p>
<figure id="attachment_2751" aria-describedby="caption-attachment-2751" style="width: 724px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Site-Placeholder-Page.png"><img loading="lazy" decoding="async" class="wp-image-2751 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Site-Placeholder-Page.png" alt="Site Placeholder Page in Browser" width="724" height="738" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Site-Placeholder-Page.png 724w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Site-Placeholder-Page-600x612.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Site-Placeholder-Page-294x300.png 294w" sizes="auto, (max-width: 724px) 100vw, 724px" /></a><figcaption id="caption-attachment-2751" class="wp-caption-text">Site Placeholder Page in Browser</figcaption></figure>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="ssl-certificate" class="Top-Heading">Free SSL Certificate for Website and Email Server</h2>
<p>Secure communication channels on public Internet that use full channel encryption need an SSL Certificate. Enabling SSL connections to a Web Server, also known as enabling HTTPS protocol, requires that we install SSL Certificates issued by some well-known and trusted Certification Authority (CA). Our email server software will also use these same SSL Certifcates to assert its identity to peer email servers like Gmail, Yahoo or Outlook.com. Traditionally SSL Certificates are issued after paying a fee ranging from CAD$ 100 to CAD$ 300 for 1 certificate. But <a href="https://letsencrypt.org/" target="_blank" rel="noopener">&#8220;Let&#8217;s Encrypt&#8221;</a> and a few other services provide free SSL certificates, the only down side is that these are valid for a few months only. Fortunately for us the process of renewing these &#8220;Let&#8217;s Encrypt&#8221; certificates can be automated by installing a software robotic agent (Bot) on the target computer.</p>
<p>In this section we will first configure Apache2 to use a temporary Self Signed SSL Certificate for HTTPS connections. Then we will install the &#8220;Let&#8217;s Encrypt&#8221; certificate renewal software bot, and use it to get a genuine CA issued SSL certificate valid for 3 months. We can rest assured that before the expiry of this 3 month period, the software bot will automatically renew and re-install it. Self Signed SSL Certificate gives a secure HTTPS connection but suffer from the problem that no well known CA has issued it. For this reason, all modern browsers complain and give security warnings to the visitors of your web site. This is not the case with the &#8220;Let&#8217;s Encrypt&#8221; issued certificate since &#8220;Let&#8217;s Encrypt&#8221; CA is trusted by modern browsers.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ cd /etc/apache2/sites-available
$ sudo nano somewhere.com.ssl.conf
</pre>
<div>Then in the &#8220;nano&#8221; editor type/copy-paste the following text and save it. This configuration is using a dummy self-signed SSL Certificate for now, which gets installed with Apache and OpenSSL:</div>
<div>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">&lt;IfModule mod_ssl.c&gt;
&lt;VirtualHost somewhere.com:443&gt;
       Protocols http/1.1

       ServerAdmin webmaster@localhost
       ServerName somewhere.com
       DocumentRoot /var/www/html

       ErrorLog ${APACHE_LOG_DIR}/somewhere-com_error.log
       CustomLog ${APACHE_LOG_DIR}/somewhere-com_access.log combined

       SSLEngine on

       SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
       SSLCertificateKeyFile   /etc/ssl/private/ssl-cert-snakeoil.key

&lt;/VirtualHost&gt;
&lt;/IfModule&gt;
</pre>
<p>Then press CTRL+O to save the file, then press CTRL+X to exit nano editor. Then type the following commands in bash command line prompt:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo a2enmod ssl
$ sudo systemctl restart apache2
$ sudo a2ensite somewhere.com.ssl.conf
$ sudo systemctl restart apache2
$ sudo a2enmod headers
$ sudo systemctl restart apache2</pre>
<p>Line number 1 will enable SSL Module in Apache2 configuration. Line 2 will simply restart Apache2. Lines 3 and 4 enable the Self-Signed SSL Configuration for our website. We will see steps to use a genuine &#8220;Let&#8217;s Encrypt&#8221; SSL certificate in a the next paragraphs. If you open the site in browser now, then both URLs should be working, HTTP URL <strong><span style="text-decoration: underline;">http://somewhere.com</span></strong>, and HTTPS URL <span style="text-decoration: underline;"><strong>https://somewhere.com</strong></span> (HTTPS URL will currently show security alerts in Browser, until we fix the SSL in next paragraph). Please note that you should replace &#8220;somewhere.com&#8221; with the domain name you have registered in earlier steps. To visually check the current SSL Certificate use the steps shown in the following 6 screen shots.</p>
<figure id="attachment_2767" aria-describedby="caption-attachment-2767" style="width: 300px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-with-self-signed-ssl.png"><img loading="lazy" decoding="async" class="size-medium wp-image-2767" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-with-self-signed-ssl-300x255.png" alt="Browser page with self signed ssl - Showing alerts for now" width="300" height="255" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-with-self-signed-ssl-300x255.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-with-self-signed-ssl-600x510.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-with-self-signed-ssl-768x653.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-with-self-signed-ssl.png 968w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-2767" class="wp-caption-text">Browser page with self signed ssl &#8211; Showing alerts for now</figcaption></figure>
<figure id="attachment_2768" aria-describedby="caption-attachment-2768" style="width: 300px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-03.png"><img loading="lazy" decoding="async" class="size-medium wp-image-2768" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-03-300x255.png" alt="browser page - check ssl cert - step 03" width="300" height="255" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-03-300x255.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-03-600x510.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-03-768x653.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-03.png 968w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-2768" class="wp-caption-text">browser page &#8211; check ssl cert &#8211; step 03</figcaption></figure>
<figure id="attachment_2769" aria-describedby="caption-attachment-2769" style="width: 300px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-04.png"><img loading="lazy" decoding="async" class="size-medium wp-image-2769" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-04-300x255.png" alt="browser page - check ssl cert - step 04" width="300" height="255" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-04-300x255.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-04-600x510.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-04-768x653.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-04.png 968w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-2769" class="wp-caption-text">browser page &#8211; check ssl cert &#8211; step 04</figcaption></figure>
</div>
<div></div>
<div>
<figure id="attachment_2770" aria-describedby="caption-attachment-2770" style="width: 300px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-05.png"><img loading="lazy" decoding="async" class="size-medium wp-image-2770" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-05-300x255.png" alt="browser page - check ssl cert - step 05" width="300" height="255" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-05-300x255.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-05-600x510.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-05-768x653.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-05.png 968w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-2770" class="wp-caption-text">browser page &#8211; check ssl cert &#8211; step 05</figcaption></figure>
<figure id="attachment_2771" aria-describedby="caption-attachment-2771" style="width: 300px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-06.png"><img loading="lazy" decoding="async" class="size-medium wp-image-2771" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-06-300x255.png" alt="browser page - check ssl cert - step 06" width="300" height="255" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-06-300x255.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-06-600x510.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-06-768x653.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-06.png 968w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-2771" class="wp-caption-text">browser page &#8211; check ssl cert &#8211; step 06</figcaption></figure>
<figure id="attachment_2772" aria-describedby="caption-attachment-2772" style="width: 300px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-Last-Cert-Details.png"><img loading="lazy" decoding="async" class="size-medium wp-image-2772" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-Last-Cert-Details-300x255.png" alt="browser page - check ssl cert - step Last - Cert Details" width="300" height="255" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-Last-Cert-Details-300x255.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-Last-Cert-Details-600x510.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-Last-Cert-Details-768x653.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-Last-Cert-Details.png 968w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-2772" class="wp-caption-text">browser page &#8211; check ssl cert &#8211; step Last &#8211; Cert Details</figcaption></figure>
</div>
<div>To install &#8220;Let&#8217;s Encrypt&#8221; SSL Certificates it is important that your home/office router ports 80 and 443 are open and port-forwarding configured as mentioned in the previous section. You can verify that your simple web page is visible on the public internet by using your cell phone (Disable Wifi in your cell phone and use Cellular Data to browse to your domain name Example http://somewhere.com).</div>
<div>First you will need to install &#8220;certbot&#8221;, which is a software agent that runs in the background and can install and renew certificates automatically. Use the following command to install it and read some basic help about it:</div>
<div>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo apt install -y certbot python3-certbot-apache
$ sudo certbot --help</pre>
<p>To let certbot obtain a new SSL and also install it in your apache configuration use the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo certbot --apache</pre>
<p>Following is a sample interactive session output for your reference.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">user01@somewhere:/etc/apache2/sites-available$ sudo certbot --apache
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): your.email@youremail.provider.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
Account registered.

Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: somewhere.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1
Requesting a certificate for somewhere.com


----- (FOLLOWING IS FAILURE OUTPUT WHEN YOU DO NOT HAVE A WORKING DOMAIN NAME SETUP) ------
----- (YOUR OUTPUT WILL BE DIFFERENT AND SUCCESFULL - IF ALL PREVIOUS STEPS WERE SETUP CORRECTLY) ------

Certbot failed to authenticate some domains (authenticator: apache). The Certificate Authority reported these problems:
  Domain: somewhere.com
  Type:   dns
  Detail: no valid A records found for somewhere.com; no valid AAAA records found for somewhere.com

Hint: The Certificate Authority failed to verify the temporary Apache configuration changes made by Certbot. Ensure that the listed domains point to this Apache server and that it is accessible from the internet.

Some challenges have failed.
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.
user01@somewhere:/etc/apache2/sites-available$</pre>
<p>When Certbot has succesfully installed the certifcate you can check in the SSL Configuration the location of where the 3 months valid SSL Certificate is stored. To see that just use the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">user01@somewhere:/etc/apache2/sites-available$ sudo cat sigmaone.ddns.net-le-ssl.conf
&lt;IfModule mod_ssl.c&gt;
&lt;VirtualHost somewhere.com:443&gt;
    Protocols http/1.1

    ServerAdmin webmaster@localhost
    ServerName somewhere.com
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/somewhere_error.log
    CustomLog ${APACHE_LOG_DIR}/somewhere_access.log combined

    SSLEngine on

   ### SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
   ### SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

    SSLCertificateFile /etc/letsencrypt/live/somewhere.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/somewhere.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
&lt;/VirtualHost&gt;
&lt;/IfModule&gt;
user01@somewhere:/etc/apache2/sites-available$
</pre>
<p>You can also browse to the URL https://somewhere.com</p>
</div>
<div>Now since you have a working SSL website, you can force a non SSL Connection to your website to switch to a secure SSL Connection. For this you will need to edit your <strong>/etc/apache2/sites-available/somewhere.com.conf</strong> file, like shown below:</div>
<div>
<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-highlight="10-15">&lt;VirtualHost somewhere.com:80&gt;
    Protocols http/1.1
    ServerAdmin webmaster@localhost
    ServerName somewhere.com
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/somewhere-com_error.log
    CustomLog ${APACHE_LOG_DIR}/somewhere-com_access.log combined
    
    RedirectMatch permanent ^/(.*)$ https://somewhere.com/$1
        
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =somewhere.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    
&lt;/VirtualHost&gt;</pre>
<p>&nbsp;</p>
</div>
<div></div>
<div></div>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="installation-postfix-dovecot" class="Top-Heading">Installation of Email Server Software (Postfix and Dovecot)</h2>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="configure-email" class="Top-Heading">Configuration of your Email Server</h2>
<p>To check postfix log messages with our configurations, use the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo journalctl -u postfix@-.service -f</pre>
<p>Press CTRL+C to stop following the logs, or do not use -f in the above command. To show only the log entries since the day before use the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo journalctl -u postfix@-.service -S yesterday</pre>
<p>To save the log entries in a text file, use the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo journalctl -u postfix@-.service -S yesterday &gt; /path/to/folder/postfix_log_excrept.log</pre>
<p>To view Dovecot logs use the command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo journalctl -u dovecot -f</pre>
<p>&nbsp;</p>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="configure-relay" class="Top-Heading">Configuration of Email Relay Provider &#8211; Incoming and Outgoing</h2>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="dns-records" class="Top-Heading">DNS Records for Email</h2>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="testing-email-setup" class="Top-Heading">Testing Email Setup</h2>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="add-user-post-box" class="Top-Heading">Adding a New User Email Post Box</h2>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="connect-android" class="Top-Heading">Connecting to your Email from Android Device</h2>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="connect-pc" class="Top-Heading">Connection to your Email from PC &#8211; Windows Mail</h2>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="further-reading" class="Top-Heading">Further Reading</h2>
<p><a href="https://upcloud.com/resources/tutorials/secure-postfix-using-lets-encrypt" target="_blank" rel="noopener">How to secure Postfix using Let’s Encrypt &#8211; UpCloud </a> &#8211;  <a href="https://upcloud.com/resources/tutorials/secure-postfix-using-lets-encrypt" target="_blank" rel="noopener">https://upcloud.com/resources/tutorials/secure-postfix-using-lets-encrypt</a>, Date Visited: August 1, 2023.</p>
<p><a href="https://www.linuxbabe.com/mail-server/install-dovecot-imap-server-debian" target="_blank" rel="noopener">Part 2: Install Dovecot IMAP server on Debian &amp; Enable TLS Encryption &#8211; LinuxBabe</a> &#8211; <a href="https://www.linuxbabe.com/mail-server/install-dovecot-imap-server-debian" target="_blank" rel="noopener">https://www.linuxbabe.com/mail-server/install-dovecot-imap-server-debian</a> , Date Visited: August 1, 2023</p>
<p><a href="https://tecadmin.net/install-dovecot-on-debian-10/" target="_blank" rel="noopener">How to Install Dovecot (POP/IMAP) on Debian 10 – TecAdmin</a> &#8211; <a href="https://tecadmin.net/install-dovecot-on-debian-10/" target="_blank" rel="noopener">https://tecadmin.net/install-dovecot-on-debian-10/</a> , Date Visited: August 1, 2023</p>
<p><a href="https://www.linuxbabe.com/mail-server/postfixadmin-create-virtual-mailboxes-debian">PostfixAdmin – Create Virtual Mailboxes on Debian 11/10 Mail Server (linuxbabe.com)</a> &#8211; <a href="https://www.linuxbabe.com/mail-server/postfixadmin-create-virtual-mailboxes-debian" target="_blank" rel="noopener">https://www.linuxbabe.com/mail-server/postfixadmin-create-virtual-mailboxes-debian</a> , Date Visited: August 21, 2024. Create Mail Boxes in MySQL/MariaDB</p>
<p><a href="https://www.youtube.com/watch?v=P5NeyiRPYiY" target="_blank" rel="noopener">Video &#8211; How to Install and Configure a Postfix Mail Server with Dovecot on Linux Ubuntu &#8211; YouTube</a> &#8211; <a href="https://www.youtube.com/watch?v=P5NeyiRPYiY" target="_blank" rel="noopener">https://www.youtube.com/watch?v=P5NeyiRPYiY</a> , Date Visited: August 1, 2023</p>
<p><a href="https://hetmanrecovery.com/recovery_news/how-to-install-and-configure-postfix-mail-server-with-dovecot-on-linux-ubuntu.htm" target="_blank" rel="noopener">Article &#8211; How to Install and Configure a Postfix Mail Server with Dovecot on Linux Ubuntu (hetmanrecovery.com)</a> &#8211; <a href="https://hetmanrecovery.com/recovery_news/how-to-install-and-configure-postfix-mail-server-with-dovecot-on-linux-ubuntu.htm" target="_blank" rel="noopener">https://hetmanrecovery.com/recovery_news/how-to-install-and-configure-postfix-mail-server-with-dovecot-on-linux-ubuntu.htm</a> , Date Visited: August 1, 2023</p>
<p><a href="https://opensource.apple.com/source/postfix/postfix-259/postfix/proto/STANDARD_CONFIGURATION_README.html" target="_blank" rel="noopener">Postfix Standard Configuration Examples (apple.com)</a> &#8211; <a href="https://opensource.apple.com/source/postfix/postfix-259/postfix/proto/STANDARD_CONFIGURATION_README.html" target="_blank" rel="noopener">https://opensource.apple.com/source/postfix/postfix-259/postfix/proto/STANDARD_CONFIGURATION_README.html</a> , Date Visited: August 1, 2023</p>
<p><a href="https://www.sbarjatiya.com/notes_wiki/index.php/Basics_of_postfix_server_configuration" target="_blank" rel="noopener">Basics of postfix server configuration &#8211; Notes_Wiki (sbarjatiya.com)</a> &#8211; <a href="https://www.sbarjatiya.com/notes_wiki/index.php/Basics_of_postfix_server_configuration" target="_blank" rel="noopener">https://www.sbarjatiya.com/notes_wiki/index.php/Basics_of_postfix_server_configuration</a> , Date Visited: August 1, 2023</p>
<p><a href="https://serverfault.com/questions/1026078/sending-and-receiving-mails-using-postfix-dovecot" target="_blank" rel="noopener">email &#8211; Sending and receiving mails using Postfix/Dovecot &#8211; Server Fault</a> &#8211; <a href="https://serverfault.com/questions/1026078/sending-and-receiving-mails-using-postfix-dovecot" target="_blank" rel="noopener">https://serverfault.com/questions/1026078/sending-and-receiving-mails-using-postfix-dovecot</a> , Date Visited: August 1, 2023</p>
<p><a href="https://www.serverwatch.com/guides/adding-users-and-aliases-for-postfix/" target="_blank" rel="noopener">How to Add Users and Aliases in Postfix | ServerWatch</a> &#8211; <a href="https://www.serverwatch.com/guides/adding-users-and-aliases-for-postfix/" target="_blank" rel="noopener">https://www.serverwatch.com/guides/adding-users-and-aliases-for-postfix/</a> , Date Visited: August 8, 2023</p>
<h3>Tools for Testing:</h3>
<p><a href="https://www.wormly.com/test-smtp-server" target="_blank" rel="noopener">Online Tool for testing SMTP Settings (wormly.com</a>) &#8211; <a href="https://www.wormly.com/test-smtp-server" target="_blank" rel="noopener">https://www.wormly.com/test-smtp-server</a> , Date Visited: August 1, 2023</p>
<p><a href="https://www.wormly.com/test-pop3-mail-server" target="_blank" rel="noopener">Online Tool for testing SSL POP3 Settings (wormly.com)</a> &#8211; <a href="https://www.wormly.com/test-pop3-mail-server" target="_blank" rel="noopener">https://www.wormly.com/test-pop3-mail-server</a> , Date Visited: August 1, 2023</p>
<p><a href="https://dmarcian.com/dkim-inspector/" target="_blank" rel="noopener">Online tool for inspecting DKIM Record (dmarcian.com)</a> &#8211; <a href="https://dmarcian.com/dkim-inspector/" target="_blank" rel="noopener">https://dmarcian.com/dkim-inspector/</a> , Date Visited: August 1, 2023</p>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>


		<div class=" twp-social-share  booster-clear">

						    <header class="twp-plugin-title twp-share-title">
			        <h2>Share</h2>
			    </header>
			
		    <div class="twp-share-container">
				<div class="twp-social-icons twp-social-facebook">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'https://www.facebook.com/sharer/sharer.php?u=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/'); "  href="https://www.facebook.com/sharer/sharer.php?u=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/" >
			                                <span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>												<span class="twp-share-media">

													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M22.675 0h-21.35c-.732 0-1.325.593-1.325 1.325v21.351c0 .731.593 1.324 1.325 1.324h11.495v-9.294h-3.128v-3.622h3.128v-2.671c0-3.1 1.893-4.788 4.659-4.788 1.325 0 2.463.099 2.795.143v3.24l-1.918.001c-1.504 0-1.795.715-1.795 1.763v2.313h3.587l-.467 3.622h-3.12v9.293h6.116c.73 0 1.323-.593 1.323-1.325v-21.35c0-.732-.593-1.325-1.325-1.325z" /></svg></span>
				                                        <span class="twp-label-title">
				                                            Facebook				                                        </span>
				                                    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-twitter">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'https://twitter.com/intent/tweet?text=Home%20Email%20Server%20Setup%20with%20Personal%20Domain&#038;url=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/'); "  href="https://twitter.com/intent/tweet?text=Home%20Email%20Server%20Setup%20with%20Personal%20Domain&#038;url=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/" >
			                                <span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>												<span class="twp-share-media">
													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path></svg></span>
				                                        <span class="twp-label-title">
				                                            Twitter				                                        </span>
												    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-pinterest">										<a class="twp-icon-holder" rel="nofollow" href="javascript:twp_be_pinterest()">
											<span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>				                                <span class="twp-share-media">
													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M12.289,2C6.617,2,3.606,5.648,3.606,9.622c0,1.846,1.025,4.146,2.666,4.878c0.25,0.111,0.381,0.063,0.439-0.169 c0.044-0.175,0.267-1.029,0.365-1.428c0.032-0.128,0.017-0.237-0.091-0.362C6.445,11.911,6.01,10.75,6.01,9.668 c0-2.777,2.194-5.464,5.933-5.464c3.23,0,5.49,2.108,5.49,5.122c0,3.407-1.794,5.768-4.13,5.768c-1.291,0-2.257-1.021-1.948-2.277 c0.372-1.495,1.089-3.112,1.089-4.191c0-0.967-0.542-1.775-1.663-1.775c-1.319,0-2.379,1.309-2.379,3.059 c0,1.115,0.394,1.869,0.394,1.869s-1.302,5.279-1.54,6.261c-0.405,1.666,0.053,4.368,0.094,4.604 c0.021,0.126,0.167,0.169,0.25,0.063c0.129-0.165,1.699-2.419,2.142-4.051c0.158-0.59,0.817-2.995,0.817-2.995 c0.43,0.784,1.681,1.446,3.013,1.446c3.963,0,6.822-3.494,6.822-7.833C20.394,5.112,16.849,2,12.289,2"></path></svg></span>
				                                        <span class="twp-label-title">
				                                            Pinterest				                                        </span>
				                                    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-linkedin">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'http://www.linkedin.com/shareArticle?mini=true&#038;title=Home%20Email%20Server%20Setup%20with%20Personal%20Domain&#038;url=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/'); "  href="http://www.linkedin.com/shareArticle?mini=true&#038;title=Home%20Email%20Server%20Setup%20with%20Personal%20Domain&#038;url=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/" >
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg>				                                    </span>
													<span class="twp-share-label twp-label-title">
				                                        LinkedIn				                                    </span>
												</span>
																					</a>
										</div><div class="twp-social-icons twp-social-email">										<a class="twp-icon-holder" rel="nofollow"  href="mailto:?subject=:&amp;body= Home Email Server Setup with Personal Domain http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/">
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M0 3v18h24v-18h-24zm6.623 7.929l-4.623 5.712v-9.458l4.623 3.746zm-4.141-5.929h19.035l-9.517 7.713-9.518-7.713zm5.694 7.188l3.824 3.099 3.83-3.104 5.612 6.817h-18.779l5.513-6.812zm9.208-1.264l4.616-3.741v9.348l-4.616-5.607z" /></svg>				                                    </span>
				                                    <span class="twp-share-label twp-label-title">
				                                        Email				                                    </span>
												</span>
																					</a>
										</div><div class="twp-social-icons twp-social-vk">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'http://vk.com/share.php?url=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/&#038;caption=Home%20Email%20Server%20Setup%20with%20Personal%20Domain'); "  href="http://vk.com/share.php?url=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/&#038;caption=Home%20Email%20Server%20Setup%20with%20Personal%20Domain" >
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M22,7.1c0.2,0.4-0.4,1.5-1.6,3.1c-0.2,0.2-0.4,0.5-0.7,0.9c-0.5,0.7-0.9,1.1-0.9,1.4c-0.1,0.3-0.1,0.6,0.1,0.8 c0.1,0.1,0.4,0.4,0.8,0.9h0l0,0c1,0.9,1.6,1.7,2,2.3c0,0,0,0.1,0.1,0.1c0,0.1,0,0.1,0.1,0.3c0,0.1,0,0.2,0,0.4 c0,0.1-0.1,0.2-0.3,0.3c-0.1,0.1-0.4,0.1-0.6,0.1l-2.7,0c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.4-0.1-0.5-0.2l-0.2-0.1 c-0.2-0.1-0.5-0.4-0.7-0.7s-0.5-0.6-0.7-0.8c-0.2-0.2-0.4-0.4-0.6-0.6C14.8,15,14.6,15,14.4,15c0,0,0,0-0.1,0c0,0-0.1,0.1-0.2,0.2 c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.1-0.1,0.3-0.2,0.5c-0.1,0.2-0.1,0.5-0.1,0.8c0,0.1,0,0.2,0,0.3c0,0.1-0.1,0.2-0.1,0.2l0,0.1 c-0.1,0.1-0.3,0.2-0.6,0.2h-1.2c-0.5,0-1,0-1.5-0.2c-0.5-0.1-1-0.3-1.4-0.6s-0.7-0.5-1.1-0.7s-0.6-0.4-0.7-0.6l-0.3-0.3 c-0.1-0.1-0.2-0.2-0.3-0.3s-0.4-0.5-0.7-0.9s-0.7-1-1.1-1.6c-0.4-0.6-0.8-1.3-1.3-2.2C2.9,9.4,2.5,8.5,2.1,7.5C2,7.4,2,7.3,2,7.2 c0-0.1,0-0.1,0-0.2l0-0.1c0.1-0.1,0.3-0.2,0.6-0.2l2.9,0c0.1,0,0.2,0,0.2,0.1S5.9,6.9,5.9,7L6,7c0.1,0.1,0.2,0.2,0.3,0.3 C6.4,7.7,6.5,8,6.7,8.4C6.9,8.8,7,9,7.1,9.2l0.2,0.3c0.2,0.4,0.4,0.8,0.6,1.1c0.2,0.3,0.4,0.5,0.5,0.7s0.3,0.3,0.4,0.4 c0.1,0.1,0.3,0.1,0.4,0.1c0.1,0,0.2,0,0.3-0.1c0,0,0,0,0.1-0.1c0,0,0.1-0.1,0.1-0.2c0.1-0.1,0.1-0.3,0.1-0.5c0-0.2,0.1-0.5,0.1-0.8 c0-0.4,0-0.8,0-1.3c0-0.3,0-0.5-0.1-0.8c0-0.2-0.1-0.4-0.1-0.5L9.6,7.6C9.4,7.3,9.1,7.2,8.7,7.1C8.6,7.1,8.6,7,8.7,6.9 C8.9,6.7,9,6.6,9.1,6.5c0.4-0.2,1.2-0.3,2.5-0.3c0.6,0,1,0.1,1.4,0.1c0.1,0,0.3,0.1,0.3,0.1c0.1,0.1,0.2,0.1,0.2,0.3 c0,0.1,0.1,0.2,0.1,0.3s0,0.3,0,0.5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.7c0,0.3,0,0.6,0,0.9c0,0.1,0,0.2,0,0.4c0,0.2,0,0.4,0,0.5 c0,0.1,0,0.3,0,0.4s0.1,0.3,0.1,0.4c0.1,0.1,0.1,0.2,0.2,0.3c0.1,0,0.1,0,0.2,0c0.1,0,0.2,0,0.3-0.1c0.1-0.1,0.2-0.2,0.4-0.4 s0.3-0.4,0.5-0.7c0.2-0.3,0.5-0.7,0.7-1.1c0.4-0.7,0.8-1.5,1.1-2.3c0-0.1,0.1-0.1,0.1-0.2c0-0.1,0.1-0.1,0.1-0.1l0,0l0.1,0 c0,0,0,0,0.1,0s0.2,0,0.2,0l3,0c0.3,0,0.5,0,0.7,0S21.9,7,21.9,7L22,7.1z"></path></svg>				                                    </span>
													<span class="twp-share-label twp-label-title">
				                                        VK				                                    </span>
												</span>
																					</a>
										</div>			</div>
		</div>

	]]></content:encoded>
					
					<wfw:commentRss>https://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Lazy Loading (feed)

Served from: andromedabay.ddns.net @ 2026-04-07 14:13:39 by W3 Total Cache
-->