Difference between revisions of "OPS335 Email Lab"

From CDOT Wiki
Jump to: navigation, search
(Created page with ' OPEN SERVER ADMINISTRATION Lab #03 FOCUS: Domain Name System In this lab you will configure a Linux host to be a DNS server for the rest of the machines in your intranet.…')
 
 
(52 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
[[Category:OPS335]][[Category:OPS335 Labs]]
 +
==Basic Mail (Postfix) Setup==
 +
This lab will show you how to set up a Postfix email server using a Fedora 20 installation.
 +
*You will need at least two systems to do this lab. If for some reason you have not set up your virtual machines, do so before continuing.
 +
{{Admon/important|Prerequistites|Ensure all machines have been updated and that the clocks are set to the correct date and time.}}
 +
=== Testing your network ===
 +
*Start Firefox on your host and authenticate yourself on Senenet with your Seneca account.
 +
*Ensure you can surf the web on your host machine.  As your host should be using VM 1 as its DNS server, you will need to start it as well.
 +
*Ensure you can access the web on your VM2 (you can use wget or lynx for that). NOTE: you should not have to authenticate yourself on the guest.
  
 +
=== Reviewing the mail command ===
  
 
 
  
OPEN SERVER ADMINISTRATION
 
  
Lab #03
+
===Install and configure Postfix on a VM===
 +
*On Vm 2 do the following:
 +
**Check the status of the sendmail service.  If it show up as running or enabled, stop and disable it.
 +
**Install Postfix and mail
 +
yum install postfix mailx
 +
**While that is installing, you may wish to read the mail manual page to remind yourself how it works.
 +
**Edit the Postfix configuration file, /etc/postfix/main.cf, and change the following parameters:
 +
  mydomain = <senecaID>.org
 +
  myorigin = $mydomain
 +
  mynetworks = 127.0.0.0/8, 192.168.X.0/24
 +
  relay_domains =
 +
  inet_interfaces=all
  
FOCUS: Domain Name System
+
{{Admon/important|Warning|Make sure there are no other uncommented copies of these parameters in the file.}}
In this lab you will configure a Linux host to be a DNS server for the rest of the machines in your intranet. You'll use example.org as your domain with IP addresses in the range 192.168.X.1 - 192.168.X.254. The server will handle all queries for names in the example.org domain and all reverse lookups for addresses in the given range of local IP numbers. The server will pass DNS queries for other names and addresses out to the Internet (i.e. to Seneca's DNS server).
 
  
You're going to populate your server with the following records:
+
**Create the database file of mail aliases
 +
  postalias hash:/etc/aliases
  
Fully Qualified Domain Name
+
**Start and enable Postfix:
IP Address
+
systemctl start postfix.service
 +
systemctl enable postfix.service
  
f13.example.org
+
**Check your /var/log/messages file to see that your postfix servers started without error.
192.168.X.1
+
***If there are any errors, correct them before continuing.
  
vm01.example.org
+
===Testing mail with the internet===
192.168.X.2
+
*Test email from your machine by sending an email to your Seneca account.  
 +
mail -s "PART C3" <Your Seneca email address>
 +
Note:  <Your  Seneca email address> is your Seneca email address.<br />
 +
Note: after you type in your letter, enter a period in the first column on the last line and hit the ENTER key.
 +
*Check your learn email to see if you got the email (note that it may take a few minutes to arrive, so you may also wish to try an alternate email account if you have one). When you do receive that email make a note of the return address.
 +
*If you did not receive the mail, check the mail logs on your machine to determine what the error is.
 +
*Test email from the host by sending an email to your Seneca account.
 +
mail -s "PART C4" -r hacker@evil.com <Your Seneca email address><br />
 +
Note: after you type in your letter, enter a period in the first column on the last line and hit the ENTER key.
 +
*Check your Seneca email to see if you got the email. If you did make a note of the return address.
 +
*Repeat the steps for 'Install and Configure Postfix on a vm'  on your VM 3.
  
vm02.example.org
+
===Testing email using IP Addresses===
192.168.X.3
+
*Adjust your firewall to allow traffic to port 25 on both VMs.
 +
**Also check your /var/log/maillog file to see the log entries that get created when mail is sent and received, and when something goes wrong.
 +
*Try sending an email from vm2 to your vm3.
 +
mail -s "PART E2" yyyyyy@[192.168.X.4]
 +
Note: yyyyyy is your Seneca ID<br />
 +
Note: the square brackets around the host IP address
 +
*Try sending an email from your vm3 to vm2.  
 +
mail -s "PART E3" root@[192.168.X.3]
  
vm03.example.org
+
===Test email using host names===
192.168.X.4
+
*Use the host and hostname commands to check that each of your machines has the same hostname that the DNS service says they have.
 +
**Restart postfix if you change the hostname on either mail server.
  
NOTE: For those of you using Fedora 13 installed on one removable HD and used as a host for one or more guest VMs, X will default to 122. You need at least two machines to do this lab (one host and one guest). The first will be set up as your gateway/firewall and DNS server. The others will be client hosts inside the intranet.
+
Now try sending mail to yourself on both machines. For example, as <senecaID> on VM 3, use the command:
 +
$ mail <senecaID>@vm2.<yourdomain>.org
 +
the machine will prompt for a subject: enter "testing" without the quotes.
  
Here's what your network will look like:
+
*Now enter the body of your letter. When you're done, enter a period (.) in column 1 on the last line of your letter. This will signal end-of-file and your letter will be mailed. You should end up back at the $ prompt. If you mess up use CTRL-C to cancel the email, DO NOT USE CTRL-Z.
Part A: Perform these steps on your gateway/firewall/DNS machine.
 
Start up your Fedora 13 PC, login as joker, open a terminal window and "su -" to root. This PC will be f13. It will be your gateway/firewall as well as the domain name server for your intranet.
 
Ensure you are connected to the Internet. Use firefox to authenticate yourself so you can surf the web outside of the Seneca domain.
 
Use yum to update your system if necessary.
 
yum update
 
  
Use yum to install the DNS server.  
+
*Use the mailq command on both machines (you will need to be root) to view the mail queue.
 +
Use the mail command to check if you have mail.
  
yum install bind
+
==Completing the Lab==
 +
Upon completion of this lab you should have postfix mail servers running on two machines, and starting automatically when they do.  These servers must have sent email both ways between each other (from VM 2 to VM 3, and from VM 3 to VM 2), and to your seneca email (or other external mail server).
  
Also start your ssh server.
+
Exploration questions:
 
+
#What did changing the relay_domains parameter do?
service sshd start
+
#What firewall rule or rules, if any, did you have to enter so that email between your VMs would work?
 
+
#What is the meaning of the square brackets surrounding the IP address in the examples?
Set your hostname to f13.
+
#What were the results of sending email between the VMs? Show log segments to verify your answers.
 
 
hostname f13
 
 
 
Set your domainname to example.org.
 
 
 
domainname example.org
 
 
 
Edit the file /etc/named.conf and enter the following: But use your own X value where applicable. If no file exists, create one. If one is already there, delete it and make a new one.
 
 
 
options {
 
directory "/var/lib/named";
 
auth-nxdomain no;
 
forwarders { 142.204.1.2; 142.204.43.43;};
 
};
 
 
 
zone "localhost" {
 
type master;
 
file "localhost.zone";
 
};
 
 
 
zone "X.168.192.in-addr.arpa" {
 
type master;
 
file "mydb-for-192-168-X";
 
};
 
 
 
zone "example.org" {
 
type master;
 
file "mydb-for-example-dot-org";
 
};
 
 
 
Make a new directory called 'named', like this
 
 
 
mkdir /var/lib/named
 
 
 
Now edit /var/lib/named/localhost.zone and enter the following:
 
$TTL 604800
 
@ IN SOA localhost. root.localhost. (
 
1 ; Serial
 
604800 ; Refresh
 
86400 ; Retry
 
2419200 ; Expire
 
604800 ); Negative Cache TTL
 
;
 
@ IN NS localhost.
 
@ IN A 127.0.0.1
 
 
 
Now edit /var/lib/named/mydb-for-example-dot-org and enter the following: But use your own X value where applicable.
 
 
 
$TTL 604800
 
@ IN SOA localhost. root.localhost. (
 
1 ; Serial
 
604800 ; Refresh
 
86400 ; Retry
 
2419200 ; Expire
 
604800 ); Negative Cache TTL
 
;
 
@ IN NS localhost.
 
f13 IN A 192.168.X.1
 
vm01 IN A 192.168.X.2
 
vm02 IN A 192.168.X.3
 
vm03 IN A 192.168.X.4
 
 
 
Next, edit /var/lib/named/mydb-for-192-168-X and enter the following:
 
 
 
$TTL 604800
 
@ IN SOA localhost. root.localhost. (
 
1 ; Serial
 
604800 ; Refresh
 
86400 ; Retry
 
2419200 ; Expire
 
604800 ); Negative Cache TTL
 
;
 
@ IN NS localhost.
 
1 IN PTR f13.example.org
 
2 IN PTR vm01.example.org
 
3 IN PTR vm02.example.org
 
4 IN PTR vm03.example.org
 
 
 
Now set up your resolver to point to itself. Edit /etc/resolv.conf, delete what's there and enter this data instead. Remember to use your value for X.
 
 
 
nameserver 192.168.X.1
 
domain example.org
 
 
 
Start your DNS server with the command
 
service named start
 
 
 
Check that your name server is running
 
 
 
ps ax | grep named
 
or
 
service named status
 
 
 
When starting or restarting your name server view the log file (/var/log/messages) to ensure it started without error.
 
 
 
Try a few lookups:
 
 
 
host f13.example.org
 
host vm01.example.org
 
host vm02.example.org
 
host vm03.example.org
 
host cbc.ca
 
 
 
Now try a few reverse lookups:
 
 
 
host 192.168.X.1
 
host 192.168.X.2
 
host 192.168.X.3
 
host 192.168.X.4
 
 
 
Part B: Perform these steps on your Intranet machine.
 
Use virt-manager on Fedora 13 to install at least one VM called vm01. Feel free to install several more if you have time. Make sure the host name is set to vm01 and the domain is example.org. You may use vm01 from the previous lab if you wish.
 
On this machine edit the /etc/resolv.conf file and enter the following:
 
 
 
nameserver 192.168.X.1
 
domain example.org
 
 
 
Now try the commands
 
 
 
host f13.example.org
 
host vm01.example.org
 
host vm02.example.org
 
host vm03.example.org
 
host yahoo.ca
 
 
 
And the commands
 
 
 
host 192.168.X.1
 
host 192.168.X.2
 
host 192.168.X.3
 
host 192.168.X.4
 
 
 
Now, still on the second machine, try surfing the web with Firefox. NOTE: you should not need to authenticate yourself through SeneNet on this machine.
 
 
 
Finally, on all machines in your network, experiment with the following commands. Be sure to use several different command options to learn and understand  how they work.
 
 
 
host
 
dig
 
nslookup
 
Part C: Now answer the following questions.
 
 
 
What is your full name and nine digit Seneca ID?
 
Use iptables-save command to show the rules relating to DNS. Only show these rules.
 
Show the log messages generated when starting your DNS server.
 
What is a zone file and what is it used for?
 
Name the zone files used in this lab.
 
What is the purpose of /etc/nsswitch.conf?
 
What is the purpose of /etc/resolv.conf?
 
Under what circumstances does DNS use TCP vs UDP?
 
What is meant by the term "negative cache"?
 
Name 5 top level domains.
 

Latest revision as of 10:38, 14 September 2015

Basic Mail (Postfix) Setup

This lab will show you how to set up a Postfix email server using a Fedora 20 installation.

  • You will need at least two systems to do this lab. If for some reason you have not set up your virtual machines, do so before continuing.
Important.png
Prerequistites
Ensure all machines have been updated and that the clocks are set to the correct date and time.

Testing your network

  • Start Firefox on your host and authenticate yourself on Senenet with your Seneca account.
  • Ensure you can surf the web on your host machine. As your host should be using VM 1 as its DNS server, you will need to start it as well.
  • Ensure you can access the web on your VM2 (you can use wget or lynx for that). NOTE: you should not have to authenticate yourself on the guest.

Reviewing the mail command

Install and configure Postfix on a VM

  • On Vm 2 do the following:
    • Check the status of the sendmail service. If it show up as running or enabled, stop and disable it.
    • Install Postfix and mail
yum install postfix mailx
    • While that is installing, you may wish to read the mail manual page to remind yourself how it works.
    • Edit the Postfix configuration file, /etc/postfix/main.cf, and change the following parameters:
 mydomain = <senecaID>.org
 myorigin = $mydomain
 mynetworks = 127.0.0.0/8, 192.168.X.0/24
 relay_domains =
 inet_interfaces=all
Important.png
Warning
Make sure there are no other uncommented copies of these parameters in the file.
    • Create the database file of mail aliases
 postalias hash:/etc/aliases
    • Start and enable Postfix:
systemctl start postfix.service
systemctl enable postfix.service
    • Check your /var/log/messages file to see that your postfix servers started without error.
      • If there are any errors, correct them before continuing.

Testing mail with the internet

  • Test email from your machine by sending an email to your Seneca account.
mail -s "PART C3" <Your Seneca email address>

Note: <Your Seneca email address> is your Seneca email address.
Note: after you type in your letter, enter a period in the first column on the last line and hit the ENTER key.

  • Check your learn email to see if you got the email (note that it may take a few minutes to arrive, so you may also wish to try an alternate email account if you have one). When you do receive that email make a note of the return address.
  • If you did not receive the mail, check the mail logs on your machine to determine what the error is.
  • Test email from the host by sending an email to your Seneca account.
mail -s "PART C4" -r hacker@evil.com <Your Seneca email address>

Note: after you type in your letter, enter a period in the first column on the last line and hit the ENTER key.

  • Check your Seneca email to see if you got the email. If you did make a note of the return address.
  • Repeat the steps for 'Install and Configure Postfix on a vm' on your VM 3.

Testing email using IP Addresses

  • Adjust your firewall to allow traffic to port 25 on both VMs.
    • Also check your /var/log/maillog file to see the log entries that get created when mail is sent and received, and when something goes wrong.
  • Try sending an email from vm2 to your vm3.
mail -s "PART E2" yyyyyy@[192.168.X.4]

Note: yyyyyy is your Seneca ID
Note: the square brackets around the host IP address

  • Try sending an email from your vm3 to vm2.
mail -s "PART E3" root@[192.168.X.3] 

Test email using host names

  • Use the host and hostname commands to check that each of your machines has the same hostname that the DNS service says they have.
    • Restart postfix if you change the hostname on either mail server.

Now try sending mail to yourself on both machines. For example, as <senecaID> on VM 3, use the command:

$ mail <senecaID>@vm2.<yourdomain>.org

the machine will prompt for a subject: enter "testing" without the quotes.

  • Now enter the body of your letter. When you're done, enter a period (.) in column 1 on the last line of your letter. This will signal end-of-file and your letter will be mailed. You should end up back at the $ prompt. If you mess up use CTRL-C to cancel the email, DO NOT USE CTRL-Z.
  • Use the mailq command on both machines (you will need to be root) to view the mail queue.

Use the mail command to check if you have mail.

Completing the Lab

Upon completion of this lab you should have postfix mail servers running on two machines, and starting automatically when they do. These servers must have sent email both ways between each other (from VM 2 to VM 3, and from VM 3 to VM 2), and to your seneca email (or other external mail server).

Exploration questions:

  1. What did changing the relay_domains parameter do?
  2. What firewall rule or rules, if any, did you have to enter so that email between your VMs would work?
  3. What is the meaning of the square brackets surrounding the IP address in the examples?
  4. What were the results of sending email between the VMs? Show log segments to verify your answers.