Difference between revisions of "OPS335 Email Lab"

From CDOT Wiki
Jump to: navigation, search
(Basic Mail (Postfix) Setup)
 
(49 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
[[Category:OPS335]][[Category:OPS335 Labs]]
 
[[Category:OPS335]][[Category:OPS335 Labs]]
 
==Basic Mail (Postfix) Setup==
 
==Basic Mail (Postfix) Setup==
This lab will show you how to set up a Postfix email server using a Fedora 13 installed PC.
+
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. The first could be Fedora on your removable hard drive while the second could be a virtual machine.
+
*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|Your hard drive should have Fedora 13, 64 bit Live edition already installed.<br />You should have at least one VM installed: also Fedora 13, 64 bit Live edition<br />Both your host and guest should have default firewalls enabled.}}
+
{{Admon/important|Prerequistites|Ensure all machines have been updated and that the clocks are set to the correct date and time.}}
PART A - Prerequisites
+
=== Testing your network ===
Your hard drive should have Fedora 13, 64 bit Live edition already installed.
+
*Start Firefox on your host and authenticate yourself on Senenet with your Seneca account.
You should have at least one VM installed: also Fedora 13, 64 bit Live edition.
+
*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.
Both your host and guest should have default firewalls enabled.
+
*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.
Both your host and guest should have SELinux enabled.
 
Both host and guest should have all software updated. [ yum update ]
 
Ensure the clocks on both machines are set to the correct date and time.
 
PART B - Testing your network
 
  
Start Firefox on your host and authenticate yourself on Sene2net with your LEARN account.
+
=== Reviewing the mail command ===
Ensure you can surf the web on your host machine.
 
Start Firefox on your guest.
 
Ensure you can surf the web on your guest. NOTE: you should not have to authenticate yourself on the guest.
 
PART C - Testing email to the outside world using mailx and sendmail
 
  
Sendmail is installed and running by default on Fedora 13 so there is no need to install it.
+
 
Install mailx on both the host and the guest. [ yum install mailx ]
+
 
Test email from the host by sending an email to your LEARN account. [ mail -s "PART C3" xxxxxx@learn.senecac.on.ca ]
+
===Install and configure Postfix on a VM===
Note: xxxxxx is your LEARN ID.
+
*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
 +
 
 +
{{Admon/important|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.<br />
 
Note: after you type in your letter, enter a period in the first column on the last line and hit the ENTER key.
 
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. If you did make a note of the return address.
+
*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.
Test email from the host by sending an email to your LEARN account. [ mail -s "PART C4" -r hacker@evil.com xxxxxx@learn.senecac.on.ca ]
+
*If you did not receive the mail, check the mail logs on your machine to determine what the error is.
Note: xxxxxx is your LEARN ID.
+
*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.
 
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. If you did make a note of the return address.
+
*Check your Seneca email to see if you got the email. If you did make a note of the return address.
Repeat steps 3 and 4 on the guest machine.
+
*Repeat the steps for 'Install and Configure Postfix on a vm'  on your VM 3.
PART D - Install and configure Postfix
 
On both machines do the following:
 
Stop sendmail. [ service sendmail stop ]
 
Install Postfix - yum install postfix
 
Edit the Postfix configuration file, /etc/postfix/main.cf, and change the following lines:
 
mydomain = example.org
 
myorigin = $mydomain
 
inet_interfaces = all
 
mynetworks = 127.0.0.0/8, 192.168.122.0/24
 
relay_domains =
 
Start Postfix [ service postfix start ] on both host and guest machines
 
PART E - Testing email using IP Addresses
 
  
If you have problems with the following you may have to set SELinux to permissive mode and/or adjust your firewall to allow traffic to/from port 25.
+
===Testing email using IP Addresses===
Try sending an email from your guest to your host. [ mail -s "PART E2" yyyyyy@[192.168.122.1] ]
+
*Adjust your firewall to allow traffic to port 25 on both VMs.
Note: yyyyyy is your host ID
+
**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
 
Note: the square brackets around the host IP address
Try sending an email from your host to your guest. [ mail -s "PART E3" zzzzzz@[192.168.122.ZZZ] ]
+
*Try sending an email from your vm3 to vm2.  
Note: zzzzzz is your guest ID
+
mail -s "PART E3" root@[192.168.X.3]  
Note: ZZZ is your guest IP address
 
PART F - Set up a DNS server
 
  
Refer to Lab #3 and set up a DNS server on your host.
+
===Test email using host names===
Set your host name to f13.
+
*Use the host and hostname commands to check that each of your machines has the same hostname that the DNS service says they have.
Set your guest name to vm01.
+
**Restart postfix if you change the hostname on either mail server.
Set your domain name to example.org.
 
Test your DNS on both host and guest to ensure it works properly.
 
PART F - Test email using host names
 
Now try sending mail to yourself on both machines. For example, as joker on f13, use the command:
 
  
$ mail joker@f13
+
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.
 
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 (you will need to be root) to view the mail queue.  
+
*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.
 
Use the mail command to check if you have mail.
PART G - Test your configuration and view your logs
+
 
Restart your postfix servers on both machines.
+
==Completing the Lab==
Check your /var/log/messages file to see that your postfix servers started without error.
+
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).
Send some emails from both guest and host to each other and to the outside world.
+
 
Check your /var/log/maillog file to see that your email messages were sent correctly.
+
Exploration questions:
PART H - Learning the mail command
+
#What did changing the relay_domains parameter do?
Read the mail manual page and learn how it works.
+
#What firewall rule or rules, if any, did you have to enter so that email between your VMs would work?
PART I - Answer the following questions and and email them to your teacher in ASCII text format.
+
#What is the meaning of the square brackets surrounding the IP address in the examples?
What is your full name and 9-digit Seneca student ID?
+
#What were the results of sending email between the VMs? Show log segments to verify your answers.
Include a copy of your main.cf file on vm01 (your guest) with this lab - but delete all commented and blank lines first - like this. [ cat /etc/postfix/main.cf | grep -v ^# | awk 'NF > 0 {print $0}'
 
What is the output of the iptables-save command on both your host and guest machines?
 
What firewall rule or rules, if any, did you have to enter on the guest and/or host so that email to/from each other would work?
 
What is the meaning of the square brackets surrounding the IP address in PART E?
 
What were your results to PART G? Show log segments to verify your answers.
 

Latest revision as of 09: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.