We will set up three things in ubuntu machine:-
- Postfix (It will provide SMTP Implementation, which will work as an email transfer agent - MTA)
- Dovecot (It will provide POP3/IMAP service, which will act as an email delivery agent.)
- Mutt (It will work as an email client and will provide a nice interface to write/send/receive emails.)
We will set up ubuntu server as an email server, hence we need to assign an adequate hostname and a fully qualified domain name.
To change the hostname, run the following command:
sudo hostnamectl set-hostname "mailserver-name"
Open another terminal and you will see the hostname has changed.
Next, we will change the fully qualified domain name:
sudo nano /etc/hosts
Go to the terminal and find your IP address by running - ifconfig (run command shown in image if "ifconfig" not found)
Copy the IP address and paste it in the "/etc/hosts" file
The hostname and fully qualified domain name are changed successfully.
Step 1 - Postfix Installation
sudo apt install postfix -y
Change the system mail name from "mail.sourav.com" to "sourav.com" and press Enter.
Verify the installation of Postfix using the following command:
sudo systemctl status postfix
Let's change the location in the configuration file where the emails will be saved.
We will create a folder "Maildir" and will give its path
sudo postconf "home_mailbox = Maildir/"
Step 2 - "Dovecot" Installation
Run:
sudo apt install dovecot-imapd dovecot-pop3d dovecot-core
Verify the installation using
sudo systemctl status dovecot
To reload any service use this:
sudo systemctl reload dovecot sudo systemctl reload postfix
Let's change the location in the configuration file for dovecot also.
sudo nano /etc/dovecot/conf.d/10-mail.conf
Comment the old mail location and uncomment the new one as shown in the image:
Check the changed location using:
doveconf -n
Whenever a new user signs up on the mail server, we want the "Maildir" to be created automatically in the user's home directory. This "Maildir" will work as the Inbox for the user.
To achieve this, we will go to /etc/skel/
Note- Whatever we create in this directory whether a file or folder, gets copied to home when a new user signs up.
cd /etc/skel sudo mkdir -p Maildir/cur Maildir/new Maildir/tmp
All 3 folders are created.
Step 3 - Installing mutt
Run
sudo apt install mutt
Now we want that if anybody signs up then he/she should have access to mutt so that they can get a nice interface to send/receive/write emails.
So we will make all configurations of mutt in the same location - /etc/skel
By doing this every user will get access to mutt without installing it.
sudo mkdir /etc/skel/.mutt
We have created a hidden directory mutt.
Now go inside .mutt and create a file "muttrc"
cd .mutt/ sudo nano muttrc
and paste this content
set imap_user = "" set imap_pass = "" set folder = imaps://mail set spoolfile = +INBOX set realname = '' set from = "$imap_user" set use_from = yes set sort=reverse-date mailboxes = INBOX set timeout=1 set sidebar_visible = yes source ~/.mutt/mutt_colors
Now create another file mutt_colors using command
sudo nano mutt_colors
and copy paste the content
# Colours for items in the index color index brightcyan black ~N # Hmm, don't like this. # color index brightgreen black "~N (~x byers.world)|(~x byers.x)|(~x langly.levallois123.axialys.net)|(~x the.earth.li)" color index brightyellow black ~F color index black green ~T color index brightred black ~D mono index bold ~N mono index bold ~F mono index bold ~T mono index bold ~D # Highlights inside the body of a message. # URLs color body brightgreen black "(http|ftp|news|telnet|finger)://[^ \"\t\r\n]*" color body brightgreen black "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+" mono body bold "(http|ftp|news|telnet|finger)://[^ \"\t\r\n]*" mono body bold "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+" # email addresses color body brightgreen black "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+" mono body bold "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+" # header color header green black "^from:" color header green black "^to:" color header green black "^cc:" color header green black "^date:" color header yellow black "^newsgroups:" color header yellow black "^reply-to:" # color header brightcyan black "^subject:" color header yellow black "^subject:" color header red black "^x-spam-rule:" color header green black "^x-mailer:" color header yellow black "^message-id:" color header yellow black "^Organization:" color header yellow black "^Organisation:" color header yellow black "^User-Agent:" color header yellow black "^message-id: .*pine" color header yellow black "^X-Fnord:" color header yellow black "^X-WebTV-Stationery:" color header yellow black "^X-Message-Flag:" color header yellow black "^X-Spam-Status:" color header yellow black "^X-SpamProbe:" color header red black "^X-SpamProbe: SPAM" # Coloring quoted text - coloring the first 7 levels: color quoted cyan black color quoted1 yellow black color quoted2 red black color quoted3 green black color quoted4 cyan black color quoted5 yellow black color quoted6 red black color quoted7 green black # Default color definitions #color hdrdefault white green color signature brightmagenta black color indicator black cyan color attachment black green color error red black color message white black color search brightwhite magenta # color status brightyellow blue color status blue black color tree brightblue black color normal white black color tilde green black color bold brightyellow black color underline magenta black color markers brightcyan black # Colour definitions when on a mono screen mono bold bold mono underline underline mono indicator reverse
Now set the permission for the directory so that the content in this directory can be copied automatically.
sudo chmod 700 -R /etc/skel/
Step 4 - Creating users
Create two users with names user1 and user2 and set passwords for them.
sudo adduser --gecos "" user1 sudo adduser --gecos "" user2
Now we will switch to user1 and will view the files in the home directory.
Now we will go to this file and we will update the username, password, and real name (signing up) so that the user doesn't have to give the password every time he is sending or receiving mail.
nano .mutt/muttrc
Now open two terminals - one for user1 and one for user2.
Run
mutt
it will open the certificate window. Then press "a" to accept the certificate. Do this for user2 also.
Inboxes for both users are open now.
To send email from user1 to user2:
- Go to user1 terminal where inbox is open
- Press "m" to create a new email.
- Write the email id of user2 "user2@sourav.com" in the To section and press Enter
- Give any subject, press Enter.
- Write the email in the editor, press Ctrl + X, then "y" then Enter.
- Press "y" to send the email.
- Go to user2 terminal where inbox is open.
- Press Enter on the new email received, this will open the email sent by user1.
And, we have setup the mail server successfully!!
Top comments (0)